From 1ecf63a46c51dedeb4f2f1216e82a58af9070bc7 Mon Sep 17 00:00:00 2001 From: yulixing Date: Fri, 29 Nov 2019 13:55:14 +0800 Subject: [PATCH] Initial commit --- .babelrc | 18 + .editorconfig | 9 + .gitignore | 13 + .postcssrc.js | 7 + README.md | 37 + build/build.js | 45 + build/check-versions.js | 48 + build/dev-client.js | 9 + build/dev-server.js | 111 + build/utils.js | 117 + build/vue-loader.conf.js | 21 + build/webpack.base.conf.js | 145 + build/webpack.dev.conf.js | 85 + build/webpack.prod.conf.js | 120 + config/dev.env.js | 6 + config/index.js | 68 + config/prod.env.js | 3 + index.html | 11 + package-lock.json | 10141 +++++++++++++++++++++++++++++ package.json | 85 + package.swan.json | 12 + project.config.json | 73 + project.swan.json | 12 + src/App.vue | 50 + src/app.json | 9 + src/components/card.vue | 19 + src/components/list.vue | 12 + src/config/index.js | 3 + src/main.js | 8 + src/pages/details/index.vue | 133 + src/pages/details/main.js | 5 + src/pages/details/main.json | 3 + src/pages/index/index.vue | 262 + src/pages/index/main.js | 12 + src/pages/index/main.json | 1 + src/pages/logs/index.vue | 61 + src/pages/logs/main.js | 5 + src/pages/logs/main.json | 3 + src/pages/result/index.vue | 90 + src/pages/result/main.js | 5 + src/pages/result/main.json | 6 + src/utils/index.js | 24 + static/.gitkeep | 0 static/icon/icon_1.png | Bin 0 -> 16076 bytes static/icon/icon_2.png | Bin 0 -> 17524 bytes static/icon/icon_3.png | Bin 0 -> 17023 bytes static/icon/icon_4.png | Bin 0 -> 16247 bytes static/icon/icon_5.png | Bin 0 -> 17446 bytes static/icon/icon_6.png | Bin 0 -> 16404 bytes static/icon/icon_7.png | Bin 0 -> 18793 bytes static/icon/icon_8.png | Bin 0 -> 15143 bytes static/icon/icon_search.png | Bin 0 -> 3397 bytes static/images/user.png | Bin 0 -> 7110 bytes static/painter/lib/downloader.js | 228 + static/painter/lib/gradient.js | 102 + static/painter/lib/pen.js | 549 ++ static/painter/lib/qrcode.js | 784 +++ static/painter/lib/util.js | 68 + static/painter/painter.js | 258 + static/painter/painter.json | 4 + static/painter/painter.wxml | 1 + static/tabs/home-active.png | Bin 0 -> 614 bytes static/tabs/home.png | Bin 0 -> 474 bytes static/tabs/orders-active.png | Bin 0 -> 141 bytes static/tabs/orders.png | Bin 0 -> 133 bytes 65 files changed, 13901 insertions(+) create mode 100644 .babelrc create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 .postcssrc.js create mode 100644 README.md create mode 100644 build/build.js create mode 100644 build/check-versions.js create mode 100644 build/dev-client.js create mode 100644 build/dev-server.js create mode 100644 build/utils.js create mode 100644 build/vue-loader.conf.js create mode 100644 build/webpack.base.conf.js create mode 100644 build/webpack.dev.conf.js create mode 100644 build/webpack.prod.conf.js create mode 100644 config/dev.env.js create mode 100644 config/index.js create mode 100644 config/prod.env.js create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 package.swan.json create mode 100644 project.config.json create mode 100644 project.swan.json create mode 100644 src/App.vue create mode 100644 src/app.json create mode 100644 src/components/card.vue create mode 100644 src/components/list.vue create mode 100644 src/config/index.js create mode 100644 src/main.js create mode 100644 src/pages/details/index.vue create mode 100644 src/pages/details/main.js create mode 100644 src/pages/details/main.json create mode 100644 src/pages/index/index.vue create mode 100644 src/pages/index/main.js create mode 100644 src/pages/index/main.json create mode 100644 src/pages/logs/index.vue create mode 100644 src/pages/logs/main.js create mode 100644 src/pages/logs/main.json create mode 100644 src/pages/result/index.vue create mode 100644 src/pages/result/main.js create mode 100644 src/pages/result/main.json create mode 100644 src/utils/index.js create mode 100644 static/.gitkeep create mode 100644 static/icon/icon_1.png create mode 100644 static/icon/icon_2.png create mode 100644 static/icon/icon_3.png create mode 100644 static/icon/icon_4.png create mode 100644 static/icon/icon_5.png create mode 100644 static/icon/icon_6.png create mode 100644 static/icon/icon_7.png create mode 100644 static/icon/icon_8.png create mode 100644 static/icon/icon_search.png create mode 100644 static/images/user.png create mode 100644 static/painter/lib/downloader.js create mode 100644 static/painter/lib/gradient.js create mode 100644 static/painter/lib/pen.js create mode 100644 static/painter/lib/qrcode.js create mode 100644 static/painter/lib/util.js create mode 100644 static/painter/painter.js create mode 100644 static/painter/painter.json create mode 100644 static/painter/painter.wxml create mode 100644 static/tabs/home-active.png create mode 100644 static/tabs/home.png create mode 100644 static/tabs/orders-active.png create mode 100644 static/tabs/orders.png diff --git a/.babelrc b/.babelrc new file mode 100644 index 0000000..c06df4d --- /dev/null +++ b/.babelrc @@ -0,0 +1,18 @@ +{ + "presets": [ + ["env", { + "modules": false, + "targets": { + "browsers": ["> 1%", "last 2 versions", "not ie <= 8"] + } + }], + "stage-2" + ], + "plugins": ["transform-runtime"], + "env": { + "test": { + "presets": ["env", "stage-2"], + "plugins": ["istanbul"] + } + } +} diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..9d08a1a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1622bc4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln diff --git a/.postcssrc.js b/.postcssrc.js new file mode 100644 index 0000000..d11cab1 --- /dev/null +++ b/.postcssrc.js @@ -0,0 +1,7 @@ +// https://github.com/michael-ciniawsky/postcss-load-config + +module.exports = { + "plugins": { + "postcss-mpvue-wxss": {} + } +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..706971a --- /dev/null +++ b/README.md @@ -0,0 +1,37 @@ +# maker + +> A Mpvue project + +## Build Setup + +``` bash +# 初始化项目 +vue init mpvue/mpvue-quickstart myproject +cd myproject + +# 安装依赖 +yarn + +# 开发时构建 +npm dev + +# 打包构建 +npm build + +# 指定平台的开发时构建(微信、百度、头条、支付宝) +npm dev:wx +npm dev:swan +npm dev:tt +npm dev:my + +# 指定平台的打包构建 +npm build:wx +npm build:swan +npm build:tt +npm build:my + +# 生成 bundle 分析报告 +npm run build --report +``` + +For detailed explanation on how things work, checkout the [guide](http://vuejs-templates.github.io/webpack/) and [docs for vue-loader](http://vuejs.github.io/vue-loader). diff --git a/build/build.js b/build/build.js new file mode 100644 index 0000000..252681b --- /dev/null +++ b/build/build.js @@ -0,0 +1,45 @@ +require('./check-versions')() + +process.env.NODE_ENV = 'production' +process.env.PLATFORM = process.argv[process.argv.length - 1] || 'wx' + +var ora = require('ora') +var rm = require('rimraf') +var path = require('path') +var chalk = require('chalk') +var webpack = require('webpack') +var config = require('../config') +var webpackConfig = require('./webpack.prod.conf') +var utils = require('./utils') + +var spinner = ora('building for production...') +spinner.start() + +rm(path.join(config.build.assetsRoot, '*'), err => { + if (err) throw err + webpack(webpackConfig, function (err, stats) { + spinner.stop() + if (err) throw err + if (process.env.PLATFORM === 'swan') { + utils.writeFrameworkinfo() + } + process.stdout.write(stats.toString({ + colors: true, + modules: false, + children: false, + chunks: false, + chunkModules: false + }) + '\n\n') + + if (stats.hasErrors()) { + console.log(chalk.red(' Build failed with errors.\n')) + process.exit(1) + } + + console.log(chalk.cyan(' Build complete.\n')) + console.log(chalk.yellow( + ' Tip: built files are meant to be served over an HTTP server.\n' + + ' Opening index.html over file:// won\'t work.\n' + )) + }) +}) diff --git a/build/check-versions.js b/build/check-versions.js new file mode 100644 index 0000000..b3e7e17 --- /dev/null +++ b/build/check-versions.js @@ -0,0 +1,48 @@ +var chalk = require('chalk') +var semver = require('semver') +var packageConfig = require('../package.json') +var shell = require('shelljs') +function exec (cmd) { + return require('child_process').execSync(cmd).toString().trim() +} + +var versionRequirements = [ + { + name: 'node', + currentVersion: semver.clean(process.version), + versionRequirement: packageConfig.engines.node + } +] + +if (shell.which('npm')) { + versionRequirements.push({ + name: 'npm', + currentVersion: exec('npm --version'), + versionRequirement: packageConfig.engines.npm + }) +} + +module.exports = function () { + var warnings = [] + for (var i = 0; i < versionRequirements.length; i++) { + var mod = versionRequirements[i] + if (!semver.satisfies(mod.currentVersion, mod.versionRequirement)) { + warnings.push(mod.name + ': ' + + chalk.red(mod.currentVersion) + ' should be ' + + chalk.green(mod.versionRequirement) + ) + } + } + + if (warnings.length) { + console.log('') + console.log(chalk.yellow('To use this template, you must update following to modules:')) + console.log() + for (var i = 0; i < warnings.length; i++) { + var warning = warnings[i] + console.log(' ' + warning) + } + console.log() + process.exit(1) + } +} diff --git a/build/dev-client.js b/build/dev-client.js new file mode 100644 index 0000000..18aa1e2 --- /dev/null +++ b/build/dev-client.js @@ -0,0 +1,9 @@ +/* eslint-disable */ +require('eventsource-polyfill') +var hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true') + +hotClient.subscribe(function (event) { + if (event.action === 'reload') { + window.location.reload() + } +}) diff --git a/build/dev-server.js b/build/dev-server.js new file mode 100644 index 0000000..96d7cbb --- /dev/null +++ b/build/dev-server.js @@ -0,0 +1,111 @@ +require('./check-versions')() + +process.env.PLATFORM = process.argv[process.argv.length - 1] || 'wx' +var config = require('../config') +if (!process.env.NODE_ENV) { + process.env.NODE_ENV = JSON.parse(config.dev.env.NODE_ENV) +} + +// var opn = require('opn') +var path = require('path') +var express = require('express') +var webpack = require('webpack') +var proxyMiddleware = require('http-proxy-middleware') +var portfinder = require('portfinder') +var webpackConfig = require('./webpack.dev.conf') +var utils = require('./utils') + +// default port where dev server listens for incoming traffic +var port = process.env.PORT || config.dev.port +// automatically open browser, if not set will be false +var autoOpenBrowser = !!config.dev.autoOpenBrowser +// Define HTTP proxies to your custom API backend +// https://github.com/chimurai/http-proxy-middleware +var proxyTable = config.dev.proxyTable + +var app = express() +var compiler = webpack(webpackConfig) +if (process.env.PLATFORM === 'swan') { + utils.writeFrameworkinfo() +} + +// var devMiddleware = require('webpack-dev-middleware')(compiler, { +// publicPath: webpackConfig.output.publicPath, +// quiet: true +// }) + +// var hotMiddleware = require('webpack-hot-middleware')(compiler, { +// log: false, +// heartbeat: 2000 +// }) +// force page reload when html-webpack-plugin template changes +// compiler.plugin('compilation', function (compilation) { +// compilation.plugin('html-webpack-plugin-after-emit', function (data, cb) { +// hotMiddleware.publish({ action: 'reload' }) +// cb() +// }) +// }) + +// proxy api requests +Object.keys(proxyTable).forEach(function (context) { + var options = proxyTable[context] + if (typeof options === 'string') { + options = { target: options } + } + app.use(proxyMiddleware(options.filter || context, options)) +}) + +// handle fallback for HTML5 history API +app.use(require('connect-history-api-fallback')()) + +// serve webpack bundle output +// app.use(devMiddleware) + +// enable hot-reload and state-preserving +// compilation error display +// app.use(hotMiddleware) + +// serve pure static assets +var staticPath = path.posix.join(config.dev.assetsPublicPath, config.dev.assetsSubDirectory) +app.use(staticPath, express.static('./static')) + +// var uri = 'http://localhost:' + port + +var _resolve +var readyPromise = new Promise(resolve => { + _resolve = resolve +}) + +// console.log('> Starting dev server...') +// devMiddleware.waitUntilValid(() => { +// console.log('> Listening at ' + uri + '\n') +// // when env is testing, don't need open it +// if (autoOpenBrowser && process.env.NODE_ENV !== 'testing') { +// opn(uri) +// } +// _resolve() +// }) + +module.exports = new Promise((resolve, reject) => { + portfinder.basePort = port + portfinder.getPortPromise() + .then(newPort => { + if (port !== newPort) { + console.log(`${port}端口被占用,开启新端口${newPort}`) + } + var server = app.listen(newPort, 'localhost') + // for 小程序的文件保存机制 + require('webpack-dev-middleware-hard-disk')(compiler, { + publicPath: webpackConfig.output.publicPath, + quiet: true + }) + resolve({ + ready: readyPromise, + close: () => { + server.close() + } + }) + }).catch(error => { + console.log('没有找到空闲端口,请打开任务管理器杀死进程端口再试', error) + }) +}) diff --git a/build/utils.js b/build/utils.js new file mode 100644 index 0000000..e4ed445 --- /dev/null +++ b/build/utils.js @@ -0,0 +1,117 @@ +var path = require('path') +var fs = require('fs') +var config = require('../config') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var mpvueInfo = require('../node_modules/mpvue/package.json') +var packageInfo = require('../package.json') +var mkdirp = require('mkdirp') + +exports.assetsPath = function (_path) { + var assetsSubDirectory = process.env.NODE_ENV === 'production' + ? config.build.assetsSubDirectory + : config.dev.assetsSubDirectory + return path.posix.join(assetsSubDirectory, _path) +} + +exports.cssLoaders = function (options) { + options = options || {} + + var cssLoader = { + loader: 'css-loader', + options: { + minimize: process.env.NODE_ENV === 'production', + sourceMap: options.sourceMap + } + } + + var postcssLoader = { + loader: 'postcss-loader', + options: { + sourceMap: true + } + } + + var px2rpxLoader = { + loader: 'px2rpx-loader', + options: { + baseDpr: 1, + rpxUnit: 0.5 + } + } + + // generate loader string to be used with extract text plugin + function generateLoaders (loader, loaderOptions) { + var loaders = [cssLoader, px2rpxLoader, postcssLoader] + if (loader) { + loaders.push({ + loader: loader + '-loader', + options: Object.assign({}, loaderOptions, { + sourceMap: options.sourceMap + }) + }) + } + + // Extract CSS when that option is specified + // (which is the case during production build) + if (options.extract) { + return ExtractTextPlugin.extract({ + use: loaders, + fallback: 'vue-style-loader' + }) + } else { + return ['vue-style-loader'].concat(loaders) + } + } + + // https://vue-loader.vuejs.org/en/configurations/extract-css.html + return { + css: generateLoaders(), + wxss: generateLoaders(), + postcss: generateLoaders(), + less: generateLoaders('less'), + sass: generateLoaders('sass', { indentedSyntax: true }), + scss: generateLoaders('sass'), + stylus: generateLoaders('stylus'), + styl: generateLoaders('stylus') + } +} + +// Generate loaders for standalone style files (outside of .vue) +exports.styleLoaders = function (options) { + var output = [] + var loaders = exports.cssLoaders(options) + for (var extension in loaders) { + var loader = loaders[extension] + output.push({ + test: new RegExp('\\.' + extension + '$'), + use: loader + }) + } + return output +} + +const writeFile = async (filePath, content) => { + let dir = path.dirname(filePath) + let exist = fs.existsSync(dir) + if (!exist) { + await mkdirp(dir) + } + await fs.writeFileSync(filePath, content, 'utf8') +} + +exports.writeFrameworkinfo = function () { + var buildInfo = { + 'toolName': mpvueInfo.name, + 'toolFrameWorkVersion': mpvueInfo.version, + 'toolCliVersion': packageInfo.mpvueTemplateProjectVersion || '', + 'createTime': Date.now() + } + + var content = JSON.stringify(buildInfo) + var fileName = '.frameworkinfo' + var rootDir = path.resolve(__dirname, `../${fileName}`) + var distDir = path.resolve(config.build.assetsRoot, `./${fileName}`) + + writeFile(rootDir, content) + writeFile(distDir, content) +} diff --git a/build/vue-loader.conf.js b/build/vue-loader.conf.js new file mode 100644 index 0000000..6e2c04d --- /dev/null +++ b/build/vue-loader.conf.js @@ -0,0 +1,21 @@ +var utils = require('./utils') +var config = require('../config') +// var isProduction = process.env.NODE_ENV === 'production' +// for mp +var isProduction = true + +module.exports = { + loaders: utils.cssLoaders({ + sourceMap: isProduction + ? config.build.productionSourceMap + : config.dev.cssSourceMap, + extract: isProduction + }), + transformToRequire: { + video: 'src', + source: 'src', + img: 'src', + image: 'xlink:href' + }, + fileExt: config.build.fileExt +} diff --git a/build/webpack.base.conf.js b/build/webpack.base.conf.js new file mode 100644 index 0000000..e0a7da5 --- /dev/null +++ b/build/webpack.base.conf.js @@ -0,0 +1,145 @@ +var path = require('path') +var fs = require('fs') +var utils = require('./utils') +var config = require('../config') +var webpack = require('webpack') +var merge = require('webpack-merge') +var vueLoaderConfig = require('./vue-loader.conf') +var MpvuePlugin = require('webpack-mpvue-asset-plugin') +var glob = require('glob') +var CopyWebpackPlugin = require('copy-webpack-plugin') +var relative = require('relative') + +function resolve(dir) { + return path.join(__dirname, '..', dir) +} + +function getEntry(rootSrc) { + var map = {}; + glob.sync(rootSrc + '/pages/**/main.js') + .forEach(file => { + var key = relative(rootSrc, file).replace('.js', ''); + map[key] = file; + }) + return map; +} + +const appEntry = { app: resolve('./src/main.js') } +const pagesEntry = getEntry(resolve('./src'), 'pages/**/main.js') +const entry = Object.assign({}, appEntry, pagesEntry) + +let baseWebpackConfig = { + // 如果要自定义生成的 dist 目录里面的文件路径, + // 可以将 entry 写成 {'toPath': 'fromPath'} 的形式, + // toPath 为相对于 dist 的路径, 例:index/demo,则生成的文件地址为 dist/index/demo.js + entry, + target: require('mpvue-webpack-target'), + output: { + path: config.build.assetsRoot, + jsonpFunction: 'webpackJsonpMpvue', + filename: '[name].js', + publicPath: process.env.NODE_ENV === 'production' + ? config.build.assetsPublicPath + : config.dev.assetsPublicPath + }, + resolve: { + extensions: ['.js', '.vue', '.json'], + alias: { + 'vue': 'mpvue', + '@': resolve('src') + }, + symlinks: false, + aliasFields: ['mpvue', 'weapp', 'browser'], + mainFields: ['browser', 'module', 'main'] + }, + module: { + rules: [ + { + test: /\.vue$/, + loader: 'mpvue-loader', + options: vueLoaderConfig + }, + { + test: /\.js$/, + include: [resolve('src'), resolve('test')], + use: [ + 'babel-loader', + { + loader: 'mpvue-loader', + options: Object.assign({ checkMPEntry: true }, vueLoaderConfig) + }, + ] + }, + { + test: /\.(png|jpe?g|gif|svg)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('img/[name].[ext]') + } + }, + { + test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('media/[name].[ext]') + } + }, + { + test: /\.(woff2?|eot|ttf|otf)(\?.*)?$/, + loader: 'url-loader', + options: { + limit: 10000, + name: utils.assetsPath('fonts/[name].[ext]') + } + }, + { + test: /.less$/, loader: "style-loader!css-loader!less-loader", + } + ] + }, + plugins: [ + // api 统一桥协议方案 + new webpack.DefinePlugin({ + 'mpvue': 'global.mpvue', + 'mpvuePlatform': 'global.mpvuePlatform' + }), + new MpvuePlugin(), + new CopyWebpackPlugin([{ + from: '**/*.json', + to: '' + }], { + context: 'src/' + }), + new CopyWebpackPlugin([ + { + from: path.resolve(__dirname, '../static'), + to: path.resolve(config.build.assetsRoot, './static'), + ignore: ['.*'] + } + ]) + ] +} + +// 针对百度小程序,由于不支持通过 miniprogramRoot 进行自定义构建完的文件的根路径 +// 所以需要将项目根路径下面的 project.swan.json 拷贝到构建目录 +// 然后百度开发者工具将 dist/swan 作为项目根目录打 +const projectConfigMap = { + tt: '../project.config.json', + swan: '../project.swan.json' +} + +const PLATFORM = process.env.PLATFORM +if (/^(swan)|(tt)$/.test(PLATFORM)) { + baseWebpackConfig = merge(baseWebpackConfig, { + plugins: [ + new CopyWebpackPlugin([{ + from: path.resolve(__dirname, projectConfigMap[PLATFORM]), + to: path.resolve(config.build.assetsRoot) + }]) + ] + }) +} + +module.exports = baseWebpackConfig diff --git a/build/webpack.dev.conf.js b/build/webpack.dev.conf.js new file mode 100644 index 0000000..01e7dbc --- /dev/null +++ b/build/webpack.dev.conf.js @@ -0,0 +1,85 @@ +var utils = require('./utils') +var webpack = require('webpack') +var config = require('../config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +// var HtmlWebpackPlugin = require('html-webpack-plugin') +var FriendlyErrorsPlugin = require('friendly-errors-webpack-plugin') +var MpvueVendorPlugin = require('webpack-mpvue-vendor-plugin') + +// copy from ./webpack.prod.conf.js +var path = require('path') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var CopyWebpackPlugin = require('copy-webpack-plugin') +var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') + +// add hot-reload related code to entry chunks +// Object.keys(baseWebpackConfig.entry).forEach(function (name) { +// baseWebpackConfig.entry[name] = ['./build/dev-client'].concat(baseWebpackConfig.entry[name]) +// }) + +module.exports = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.dev.cssSourceMap, + extract: true + }) + }, + // cheap-module-eval-source-map is faster for development + // devtool: '#cheap-module-eval-source-map', + // devtool: '#source-map', + output: { + path: config.build.assetsRoot, + // filename: utils.assetsPath('[name].[chunkhash].js'), + // chunkFilename: utils.assetsPath('[id].[chunkhash].js') + filename: utils.assetsPath('[name].js'), + chunkFilename: utils.assetsPath('[id].js') + }, + plugins: [ + new webpack.DefinePlugin({ + 'process.env': config.dev.env + }), + + // copy from ./webpack.prod.conf.js + // extract css into its own file + new ExtractTextPlugin({ + // filename: utils.assetsPath('[name].[contenthash].css') + filename: utils.assetsPath(`[name].${config.dev.fileExt.style}`) + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: { + safe: true + } + }), + new webpack.optimize.CommonsChunkPlugin({ + name: 'common/vendor', + minChunks: function (module, count) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf('node_modules') >= 0 + ) || count > 1 + } + }), + new webpack.optimize.CommonsChunkPlugin({ + name: 'common/manifest', + chunks: ['common/vendor'] + }), + new MpvueVendorPlugin({ + platform: process.env.PLATFORM + }), + // https://github.com/glenjamin/webpack-hot-middleware#installation--usage + // new webpack.HotModuleReplacementPlugin(), + new webpack.NoEmitOnErrorsPlugin(), + // https://github.com/ampedandwired/html-webpack-plugin + // new HtmlWebpackPlugin({ + // filename: 'index.html', + // template: 'index.html', + // inject: true + // }), + new FriendlyErrorsPlugin() + ] +}) diff --git a/build/webpack.prod.conf.js b/build/webpack.prod.conf.js new file mode 100644 index 0000000..0403bde --- /dev/null +++ b/build/webpack.prod.conf.js @@ -0,0 +1,120 @@ +var path = require('path') +var utils = require('./utils') +var webpack = require('webpack') +var config = require('../config') +var merge = require('webpack-merge') +var baseWebpackConfig = require('./webpack.base.conf') +var UglifyJsPlugin = require('uglifyjs-webpack-plugin') +var CopyWebpackPlugin = require('copy-webpack-plugin') +// var HtmlWebpackPlugin = require('html-webpack-plugin') +var ExtractTextPlugin = require('extract-text-webpack-plugin') +var OptimizeCSSPlugin = require('optimize-css-assets-webpack-plugin') +var MpvueVendorPlugin = require('webpack-mpvue-vendor-plugin') +var env = config.build.env + +var webpackConfig = merge(baseWebpackConfig, { + module: { + rules: utils.styleLoaders({ + sourceMap: config.build.productionSourceMap, + extract: true + }) + }, + devtool: config.build.productionSourceMap ? '#source-map' : false, + output: { + path: config.build.assetsRoot, + // filename: utils.assetsPath('[name].[chunkhash].js'), + // chunkFilename: utils.assetsPath('[id].[chunkhash].js') + filename: utils.assetsPath('[name].js'), + chunkFilename: utils.assetsPath('[id].js') + }, + plugins: [ + // http://vuejs.github.io/vue-loader/en/workflow/production.html + new webpack.DefinePlugin({ + 'process.env': env + }), + // extract css into its own file + new ExtractTextPlugin({ + // filename: utils.assetsPath('[name].[contenthash].css') + filename: utils.assetsPath(`[name].${config.build.fileExt.style}`) + }), + // Compress extracted CSS. We are using this plugin so that possible + // duplicated CSS from different components can be deduped. + new OptimizeCSSPlugin({ + cssProcessorOptions: { + safe: true + } + }), + // generate dist index.html with correct asset hash for caching. + // you can customize output by editing /index.html + // see https://github.com/ampedandwired/html-webpack-plugin + // new HtmlWebpackPlugin({ + // filename: config.build.index, + // template: 'index.html', + // inject: true, + // minify: { + // removeComments: true, + // collapseWhitespace: true, + // removeAttributeQuotes: true + // // more options: + // // https://github.com/kangax/html-minifier#options-quick-reference + // }, + // // necessary to consistently work with multiple chunks via CommonsChunkPlugin + // chunksSortMode: 'dependency' + // }), + // keep module.id stable when vender modules does not change + new webpack.HashedModuleIdsPlugin(), + // split vendor js into its own file + new webpack.optimize.CommonsChunkPlugin({ + name: 'common/vendor', + minChunks: function (module, count) { + // any required modules inside node_modules are extracted to vendor + return ( + module.resource && + /\.js$/.test(module.resource) && + module.resource.indexOf('node_modules') >= 0 + ) || count > 1 + } + }), + // extract webpack runtime and module manifest to its own file in order to + // prevent vendor hash from being updated whenever app bundle is updated + new webpack.optimize.CommonsChunkPlugin({ + name: 'common/manifest', + chunks: ['common/vendor'] + }), + new MpvueVendorPlugin({ + platform: process.env.PLATFORM + }) + ] +}) + +// if (config.build.productionGzip) { +// var CompressionWebpackPlugin = require('compression-webpack-plugin') + +// webpackConfig.plugins.push( +// new CompressionWebpackPlugin({ +// asset: '[path].gz[query]', +// algorithm: 'gzip', +// test: new RegExp( +// '\\.(' + +// config.build.productionGzipExtensions.join('|') + +// ')$' +// ), +// threshold: 10240, +// minRatio: 0.8 +// }) +// ) +// } + +if (config.build.bundleAnalyzerReport) { + var BundleAnalyzerPlugin = require('webpack-bundle-analyzer').BundleAnalyzerPlugin + webpackConfig.plugins.push(new BundleAnalyzerPlugin()) +} + +var useUglifyJs = process.env.PLATFORM !== 'swan' +if (useUglifyJs) { + webpackConfig.plugins.push(new UglifyJsPlugin({ + sourceMap: true + })) +} + +module.exports = webpackConfig diff --git a/config/dev.env.js b/config/dev.env.js new file mode 100644 index 0000000..efead7c --- /dev/null +++ b/config/dev.env.js @@ -0,0 +1,6 @@ +var merge = require('webpack-merge') +var prodEnv = require('./prod.env') + +module.exports = merge(prodEnv, { + NODE_ENV: '"development"' +}) diff --git a/config/index.js b/config/index.js new file mode 100644 index 0000000..00ed16a --- /dev/null +++ b/config/index.js @@ -0,0 +1,68 @@ +// see http://vuejs-templates.github.io/webpack for documentation. +var path = require('path') +var fileExtConfig = { + swan: { + template: 'swan', + script: 'js', + style: 'css', + platform: 'swan' + }, + tt: { + template: 'ttml', + script: 'js', + style: 'ttss', + platform: 'tt' + }, + wx: { + template: 'wxml', + script: 'js', + style: 'wxss', + platform: 'wx' + }, + my: { + template: 'axml', + script: 'js', + style: 'acss', + platform: 'my' + } +} +var fileExt = fileExtConfig[process.env.PLATFORM] + +module.exports = { + build: { + env: require('./prod.env'), + index: path.resolve(__dirname, `../dist/${fileExt.platform}/index.html`), + assetsRoot: path.resolve(__dirname, `../dist/${fileExt.platform}`), + assetsSubDirectory: '', + assetsPublicPath: '/', + productionSourceMap: false, + // Gzip off by default as many popular static hosts such as + // Surge or Netlify already gzip all static assets for you. + // Before setting to `true`, make sure to: + // npm install --save-dev compression-webpack-plugin + productionGzip: false, + productionGzipExtensions: ['js', 'css'], + // Run the build command with an extra argument to + // View the bundle analyzer report after build finishes: + // `npm run build --report` + // Set to `true` or `false` to always turn it on or off + bundleAnalyzerReport: process.env.npm_config_report, + fileExt: fileExt + }, + dev: { + env: require('./dev.env'), + port: 8080, + // 在小程序开发者工具中不需要自动打开浏览器 + autoOpenBrowser: false, + assetsSubDirectory: '', + assetsPublicPath: '/', + proxyTable: {}, + // CSS Sourcemaps off by default because relative paths are "buggy" + // with this option, according to the CSS-Loader README + // (https://github.com/webpack/css-loader#sourcemaps) + // In our experience, they generally work as expected, + // just be aware of this issue when enabling this option. + cssSourceMap: false, + fileExt: fileExt + } +} diff --git a/config/prod.env.js b/config/prod.env.js new file mode 100644 index 0000000..773d263 --- /dev/null +++ b/config/prod.env.js @@ -0,0 +1,3 @@ +module.exports = { + NODE_ENV: '"production"' +} diff --git a/index.html b/index.html new file mode 100644 index 0000000..c5db20b --- /dev/null +++ b/index.html @@ -0,0 +1,11 @@ + + + + + maker + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..8f1a2ed --- /dev/null +++ b/package-lock.json @@ -0,0 +1,10141 @@ +{ + "name": "test", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/q": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz", + "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.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": "5.7.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz", + "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==", + "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.3" + }, + "dependencies": { + "acorn": { + "version": "4.0.13", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-4.0.13.tgz", + "integrity": "sha1-EFSVrlNh1pe9GVyCUZLhrX8lN4c=", + "dev": true + } + } + }, + "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.4.1", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz", + "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==", + "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.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.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" + } + } + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "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": "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" + } + } + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "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-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "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.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=", + "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 + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true, + "optional": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": "~2.1.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==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "requires": { + "inherits": "2.0.1" + } + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true, + "optional": 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 + }, + "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" + } + }, + "async-each": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", + "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true, + "optional": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=", + "dev": true, + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "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, + "optional": true + }, + "aws4": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz", + "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", + "dev": true, + "optional": true + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "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.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.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "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-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=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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=", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.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.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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-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=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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=", + "dev": true, + "requires": { + "babel-helper-bindify-decorators": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-types": "^6.24.1" + } + }, + "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-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=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-loader": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-7.1.5.tgz", + "integrity": "sha512-iCHfbieL5d1LfOQeeVJEUyD9rTwBcP/fcEbRCfempxTDuqrKpu0AZjLAQHEQa3Yqyj9ORKe2iHfoj4rHLf7xpw==", + "dev": true, + "requires": { + "find-cache-dir": "^1.0.0", + "loader-utils": "^1.0.2", + "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.22.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.22.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=", + "dev": true + }, + "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=", + "dev": true + }, + "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=", + "dev": true + }, + "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=", + "dev": true + }, + "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=", + "dev": true + }, + "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=", + "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-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=", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-generators": "^6.5.0", + "babel-runtime": "^6.22.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=", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.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=", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-plugin-syntax-class-properties": "^6.8.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "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=", + "dev": true, + "requires": { + "babel-helper-explode-class": "^6.24.1", + "babel-plugin-syntax-decorators": "^6.13.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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.22.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.22.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.24.1", + "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.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-template": "^6.24.1" + } + }, + "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.22.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.22.0", + "babel-types": "^6.24.1" + } + }, + "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.22.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.22.0", + "babel-types": "^6.24.1" + } + }, + "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.22.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.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "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.22.0", + "babel-template": "^6.24.1" + } + }, + "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.22.0", + "babel-template": "^6.24.1" + } + }, + "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.22.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.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "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.22.0", + "babel-types": "^6.24.1" + } + }, + "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.22.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.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "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.22.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.22.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.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.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=", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.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=", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.8.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.0" + } + }, + "babel-plugin-transform-runtime": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-runtime/-/babel-plugin-transform-runtime-6.23.0.tgz", + "integrity": "sha1-iEkNRGUC6puOfvsP4J7E2ZR5se4=", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "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.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "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.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.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "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.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + } + }, + "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=", + "dev": true, + "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=", + "dev": true, + "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.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.15" + } + }, + "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.4.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" + } + }, + "babelon": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/babelon/-/babelon-1.0.5.tgz", + "integrity": "sha1-jIiAWFrhwpDr7GNsVv72sAkVHXY=", + "dev": true, + "requires": { + "babel-core": "^6.7.2", + "babel-plugin-syntax-object-rest-spread": "^6.5.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.5.2", + "babel-plugin-transform-es2015-shorthand-properties": "^6.5.0", + "babel-plugin-transform-es2015-spread": "^6.6.5", + "babel-plugin-transform-es2015-template-literals": "^6.6.5", + "babel-plugin-transform-object-rest-spread": "^6.6.5", + "babel-plugin-transform-strict-mode": "^6.6.5" + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "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": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==", + "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" + } + }, + "bfj-node4": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.3.1.tgz", + "integrity": "sha512-SOmOsowQWfXc7ybFARsK3C4MCOWzERaOMV/Fl3Tgjs+5dJWyzo3oa127jL44eMbQiAN17J7SvAs2TRxEScTUmg==", + "dev": true, + "requires": { + "bluebird": "^3.5.1", + "check-types": "^7.3.0", + "tryer": "^1.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==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "bluebird": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.1.tgz", + "integrity": "sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg==", + "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" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "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": { + "is-extendable": "^0.1.0" + } + } + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "browserify-aes": { + "version": "1.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" + } + }, + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "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==", + "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-status-codes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", + "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", + "dev": true + }, + "bytes": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", + "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", + "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" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + }, + "camel-case": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz", + "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=", + "dev": true, + "requires": { + "no-case": "^2.2.0", + "upper-case": "^1.1.1" + } + }, + "camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "dev": true + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=", + "dev": true, + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "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=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30001009", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001009.tgz", + "integrity": "sha512-klfjT6Tmyg/1GINznqr1oE89cw08gKHkA8yU801fxZGE4lao1EL7+W1fAXLniGUOS3kSuHT9dE7ZSTgSAs27iQ==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001009", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001009.tgz", + "integrity": "sha512-M3rEqHN6SaVjgo4bIik7HsGcWXsi+lI9WA0p51RPMFx5gXfduyOXWJrc0R4xBkSK1pgNf4CNgy5M+6H+WiEP8g==", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true, + "optional": 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.3", + "lazy-cache": "^1.0.3" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "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" + } + }, + "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" + } + } + } + }, + "check-types": { + "version": "7.4.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.4.0.tgz", + "integrity": "sha512-YbulWHdfP99UfZ73NcUDlNJhEIDgm9Doq9GhpyXbF+7Aegi3CVV7qqMCKTTqJxlvEvnQBp9IA+dxsGN6xK/nSg==", + "dev": true + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "chownr": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", + "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "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" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "^1.1.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "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=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-css": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz", + "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "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-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==", + "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.1", + "right-align": "^0.1.1", + "wordwrap": "0.0.2" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "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 + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=", + "dev": true, + "requires": { + "q": "^1.1.2" + } + }, + "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": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=", + "dev": true, + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=", + "dev": true, + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=", + "dev": true + }, + "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, + "optional": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.17.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz", + "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "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 + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "consolidate": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.14.5.tgz", + "integrity": "sha1-WiUEe8dvcwcmZ8jLUsmJiI9JTGM=", + "dev": true, + "requires": { + "bluebird": "^3.1.1" + } + }, + "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.3", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz", + "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==", + "dev": true, + "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==", + "dev": true + }, + "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==", + "dev": true, + "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==", + "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.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "copy-webpack-plugin": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-4.6.0.tgz", + "integrity": "sha512-Y+SQCF+0NoWQryez2zXn5J5knmr9z/9qSQt7fbL78u83rxmigOy8X5+BFn8CFSuX+nKT8gpYwJX68ekqtQt6ZA==", + "dev": true, + "requires": { + "cacache": "^10.0.4", + "find-cache-dir": "^1.0.0", + "globby": "^7.1.1", + "is-glob": "^4.0.0", + "loader-utils": "^1.1.0", + "minimatch": "^3.0.4", + "p-limit": "^1.0.0", + "serialize-javascript": "^1.4.0" + } + }, + "core-js": { + "version": "2.6.10", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.10.tgz", + "integrity": "sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA==", + "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 + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + }, + "dependencies": { + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "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, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.0.0" + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "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" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", + "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "source-map": "^0.6.1", + "source-map-resolve": "^0.5.2", + "urix": "^0.1.0" + }, + "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 + } + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", + "dev": true + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "css-loader": { + "version": "0.28.11", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-0.28.11.tgz", + "integrity": "sha512-wovHgjAx8ZIMGSL8pTys7edA1ClmzxHeY6n/d97gg5odgsxEgKjULPR0viqyC+FWMCL9sfqoC/QCUBo62tLvPg==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "css-selector-tokenizer": "^0.7.0", + "cssnano": "^3.10.0", + "icss-utils": "^2.1.0", + "loader-utils": "^1.0.2", + "lodash.camelcase": "^4.3.0", + "object-assign": "^4.1.1", + "postcss": "^5.0.6", + "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" + } + }, + "css-select": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz", + "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=", + "dev": true, + "requires": { + "boolbase": "~1.0.0", + "css-what": "2.1", + "domutils": "1.5.1", + "nth-check": "~1.0.1" + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-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==", + "dev": true, + "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=", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + } + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "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 + } + } + }, + "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=", + "dev": true + }, + "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==", + "dev": true + }, + "cssesc": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-0.1.0.tgz", + "integrity": "sha1-yBSQPkViM3GgR3tAEJqq++6t27Q=", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=", + "dev": true, + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.2", + "postcss-unique-selectors": "^4.0.1" + }, + "dependencies": { + "browserslist": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" + } + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + } + }, + "color": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz", + "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==", + "dev": true, + "requires": { + "color-convert": "^1.9.1", + "color-string": "^1.5.2" + } + }, + "color-string": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz", + "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-what": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.2.1.tgz", + "integrity": "sha512-WwOrosiQTvyms+Ti5ZC5vGEK0Vod3FTt1ca+payZqvKuGJF+dq7bG63DstxtN0dpm6FxY27a/zS3Wten+gEtGw==", + "dev": true + }, + "cssesc": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz", + "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==", + "dev": true + }, + "csso": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.0.2.tgz", + "integrity": "sha512-kS7/oeNVXkHWxby5tHVxlhjizRCSv8QdU7hB2FpdAibDU8FjTAolhNjKNTiLzXtUrKT6HwClE81yXwEk1309wg==", + "dev": true, + "requires": { + "css-tree": "1.0.0-alpha.37" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "is-svg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz", + "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "postcss-calc": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz", + "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==", + "dev": true, + "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==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "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=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "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=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "cssesc": "^2.0.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "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==", + "dev": true, + "requires": { + "is-svg": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^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==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "supports-color": { + "version": "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" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + } + } + }, + "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=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=", + "dev": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "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" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=", + "dev": true + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "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 + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dev": true, + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "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, + "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==", + "dev": true, + "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==", + "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" + } + } + } + }, + "defined": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", + "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true, + "optional": true + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.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.0" + } + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "dom-converter": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz", + "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==", + "dev": true, + "requires": { + "utila": "~0.4" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + }, + "dependencies": { + "domelementtype": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz", + "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==", + "dev": true + } + } + }, + "domain-browser": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", + "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", + "dev": true + }, + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "domhandler": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz", + "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==", + "dev": true, + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "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==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexer": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.1.tgz", + "integrity": "sha1-rOb/gIwc5mtX0ev5eXessCM0z8E=", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "optional": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "requires": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "ejs": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/ejs/-/ejs-2.7.2.tgz", + "integrity": "sha512-rHGwtpl67oih3xAHbZlpw5rQAt+YV1mSCu2fUZ9XNrfaGEhom7E+AUiMci+ByP4aSfuAWx7hE0BPuJLMrpXwOw==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.3.306", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.306.tgz", + "integrity": "sha512-frDqXvrIROoYvikSKTIKbHbzO6M3/qC6kCIt/1FOa9kALe++c4VAJnwjSFvf1tYLEUsP2n9XZ4XSCyqc3l7A/A==", + "dev": true + }, + "elliptic": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.1.tgz", + "integrity": "sha512-xvJINNLbTeWQjrl6X+7eQCrIy/YPv5XCpKW6kB5mKvtnGILoLDcySuwomfdzt0BMdLNVnuRNTuzKNHj0bva1Cg==", + "dev": true, + "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" + } + }, + "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.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "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.2", + "memory-fs": "^0.4.0", + "object-assign": "^4.0.1", + "tapable": "^0.2.7" + }, + "dependencies": { + "tapable": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", + "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", + "dev": true + } + } + }, + "entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz", + "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==", + "dev": true + }, + "errno": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz", + "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "error-stack-parser": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.0.4.tgz", + "integrity": "sha512-fZ0KkoxSjLFmhW5lHbUT3tLwy3nX1qEzMYo8koY1vrsAco53CMT1djnBSeC/wUjTEZRhZl9iRw7PaMaxfJ4wzQ==", + "dev": true, + "requires": { + "stackframe": "^1.1.0" + } + }, + "es-abstract": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.16.0.tgz", + "integrity": "sha512-xdQnfykZ9JMEiasTAJZJdMWCQ1Vm00NBw79/AWi7ELfZuuPCSOMDZbT9mkOfSctVtfhb+sAAzrm+j//GjjLHLg==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.0", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.0", + "is-callable": "^1.1.4", + "is-regex": "^1.0.4", + "object-inspect": "^1.6.0", + "object-keys": "^1.1.1", + "string.prototype.trimleft": "^2.1.0", + "string.prototype.trimright": "^2.1.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==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.52", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.52.tgz", + "integrity": "sha512-bWCbE9fbpYQY4CU6hJbJ1vSz70EClMlDgJ7BmwI+zEJhxrwjesZRPglGJlsZhu0334U3hI+gaspwksH9IGD6ag==", + "dev": true, + "requires": { + "es6-iterator": "~2.0.3", + "es6-symbol": "~3.1.2", + "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-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" + } + }, + "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==", + "dev": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "escope": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/escope/-/escope-3.6.0.tgz", + "integrity": "sha1-4Bl16BJ4GhY6ba392AOY3GTIicM=", + "dev": true, + "requires": { + "es6-map": "^0.1.3", + "es6-weak-map": "^2.0.1", + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", + "dev": true + }, + "esrecurse": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz", + "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==", + "dev": true, + "requires": { + "estraverse": "^4.1.0" + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "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" + } + }, + "eventemitter3": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.0.tgz", + "integrity": "sha512-qerSRB0p+UDEssxTtm6EDKcE7W4OaoisfIMl4CngyEhjpYglocpNg6UEqCvemdGhosAsg4sO2dXJOdyBifPGCg==", + "dev": true + }, + "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 + }, + "eventsource-polyfill": { + "version": "0.9.6", + "resolved": "https://registry.npmjs.org/eventsource-polyfill/-/eventsource-polyfill-0.9.6.tgz", + "integrity": "sha1-EODRh/ERsWfyj9q5GIQ859gY8Tw=", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c=", + "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" + } + }, + "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" + } + } + } + }, + "express": { + "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.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" + } + }, + "ext": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.2.0.tgz", + "integrity": "sha512-0ccUQK/9e3NreLFg6K6np8aPyRgwycx+oFGtfx1dSp7Wj00Ozw9r05FgBRlzjf2XBM7LAzwgLyDscRrtSU91hA==", + "dev": true, + "requires": { + "type": "^2.0.0" + }, + "dependencies": { + "type": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.0.0.tgz", + "integrity": "sha512-KBt58xCHry4Cejnc2ISQAF7QY+ORngsWfxezO68+12hKV6lQY8P/psIkcbjeHWn7MqcgciWJyCCevFMJdIXpow==", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "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" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "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" + } + }, + "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" + } + } + } + }, + "extract-text-webpack-plugin": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extract-text-webpack-plugin/-/extract-text-webpack-plugin-3.0.2.tgz", + "integrity": "sha512-bt/LZ4m5Rqt/Crl2HiKuAl/oqg0psx1tsTLkvWbJen1CtD+fftkZhMaQ9HOtY2gWsl2Wq+sABmMVi9z3DhKWQQ==", + "dev": true, + "requires": { + "async": "^2.4.1", + "loader-utils": "^1.1.0", + "schema-utils": "^0.3.0", + "webpack-sources": "^1.0.1" + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true, + "optional": true + }, + "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 + }, + "fast-json-stable-stringify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz", + "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "loader-utils": "^1.0.2", + "schema-utils": "^0.4.5" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "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": { + "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 + }, + "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 + }, + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0" + } + } + } + }, + "filesize": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/filesize/-/filesize-3.6.1.tgz", + "integrity": "sha512-7KjR1vv6qnicaPMi1iiTcI85CyYwRO/PSFCu6SvqL8jN2Wjt/NIYQTFtFs7fSDCYOstUkEWIQGFUg5YZQfjlcg==", + "dev": true + }, + "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" + } + } + } + }, + "finalhandler": { + "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.3", + "statuses": "~1.5.0", + "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" + } + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "follow-redirects": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.9.0.tgz", + "integrity": "sha512-CRcPzsSIbXyVDl0QI01muNDu69S8trU4jArW9LpOt2WtC6LyUJetcIrmfHsRBx7/Jb6GHJUiuqyYxPooFfNt6A==", + "dev": true, + "requires": { + "debug": "^3.0.0" + }, + "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.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true, + "optional": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "optional": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "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=", + "dev": true + }, + "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, + "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=", + "dev": true + }, + "friendly-errors-webpack-plugin": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/friendly-errors-webpack-plugin/-/friendly-errors-webpack-plugin-1.7.0.tgz", + "integrity": "sha512-K27M3VK30wVoOarP651zDmb93R9zF28usW4ocaK3mfQeIEI5BPht/EzZs5E8QLLwbLRJQMwscAjDxYPb1FuNiw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "error-stack-parser": "^2.0.0", + "string-width": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + } + } + }, + "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.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.16.5.tgz", + "integrity": "sha1-GtZh+myGyWCM0bSe/G/Og0k5p1A=", + "dev": true, + "requires": { + "graceful-fs": "^3.0.5", + "jsonfile": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "graceful-fs": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.12.tgz", + "integrity": "sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg==", + "dev": true, + "requires": { + "natives": "^1.1.3" + } + } + } + }, + "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.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=", + "dev": true + }, + "fsevents": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.9.tgz", + "integrity": "sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "^0.12.0" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": 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, + "dev": 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, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.3.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.2.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "0.0.8" + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.0", + "bundled": true, + "dev": 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, + "dev": 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, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "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, + "dev": true, + "optional": true + } + } + }, + "readable-stream": { + "version": "2.3.6", + "bundled": true, + "dev": true, + "optional": 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" + } + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.0", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "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" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.8", + "bundled": true, + "dev": 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, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "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==", + "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 + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "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.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" + } + } + } + }, + "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": "7.1.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz", + "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "^2.0.0", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "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 + }, + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "pify": "^3.0.0" + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true, + "optional": true + }, + "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==", + "dev": true, + "optional": true, + "requires": { + "ajv": "^6.5.5", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "optional": true, + "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": { + "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, + "optional": 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, + "optional": true + } + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", + "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", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "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 + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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.1", + "safe-buffer": "^5.0.1" + } + }, + "hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "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.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.5.tgz", + "integrity": "sha512-kssjab8CvdXfcXMXVcvsXum4Hwdq9XGtRD3TteMEvEbq0LXyiNQr6AprqKqfeaDXze7SxWvRxdpwE6ku7ikLkg==", + "dev": true + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "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==", + "dev": true + }, + "html-minifier": { + "version": "3.5.21", + "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz", + "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==", + "dev": true, + "requires": { + "camel-case": "3.0.x", + "clean-css": "4.2.x", + "commander": "2.17.x", + "he": "1.2.x", + "param-case": "2.1.x", + "relateurl": "0.2.x", + "uglify-js": "3.4.x" + } + }, + "html-webpack-plugin": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz", + "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=", + "dev": true, + "requires": { + "html-minifier": "^3.2.3", + "loader-utils": "^0.2.16", + "lodash": "^4.17.3", + "pretty-error": "^2.0.2", + "tapable": "^1.0.0", + "toposort": "^1.0.0", + "util.promisify": "1.0.0" + }, + "dependencies": { + "big.js": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", + "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==", + "dev": true + }, + "loader-utils": { + "version": "0.2.17", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", + "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", + "dev": true, + "requires": { + "big.js": "^3.1.3", + "emojis-list": "^2.0.0", + "json5": "^0.5.0", + "object-assign": "^4.0.1" + } + } + } + }, + "htmlparser2": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz", + "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==", + "dev": true, + "requires": { + "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": { + "entities": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", + "dev": true + }, + "readable-stream": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz", + "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "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" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.0.tgz", + "integrity": "sha512-84I2iJM/n1d4Hdgc6y2+qY5mDaz2PUVjlg9znE9byl+q0uC3DeByqBGReQu5tpLK0TAqTIXScRUV+dg7+bUPpQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-middleware": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.18.0.tgz", + "integrity": "sha512-Fs25KVMPAIIcgjMZkVHJoKg9VcXcC1C8yb9JUgeDvVXY0S/zgVIhMb+qVswDIgtJe2DfckMSY2d6TuTEutlk6Q==", + "dev": true, + "requires": { + "http-proxy": "^1.16.2", + "is-glob": "^4.0.0", + "lodash": "^4.17.5", + "micromatch": "^3.1.9" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-browserify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", + "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=", + "dev": true + }, + "icss-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-2.1.0.tgz", + "integrity": "sha1-g/Cg7DeL8yRheLbCrZE28TWxyWI=", + "dev": true, + "requires": { + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "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==", + "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" + } + } + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "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.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", + "dev": true, + "optional": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "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.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "interpret": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.2.0.tgz", + "integrity": "sha512-mT34yGKMNceBQUoVn7iCDKDntA7SC6gycMAWzGx1z/CMCTV7b2AAtXlo3nRyHZ1FelRkQbQjprHSYGwzLtkVbw==", + "dev": true + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, + "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==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", + "dev": true + }, + "is-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-arguments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.0.4.tgz", + "integrity": "sha512-xPh0Rmt8NE65sNzvyUmWgI1tz3mKq74lGA0mL8LYZcoIzKOzDh6HmrYm3d18k60nHerC8A9Km8kYu87zfSFnLA==", + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz", + "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA==", + "dev": true + }, + "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=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-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-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 + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-finite": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", + "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "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" + } + }, + "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" + } + } + } + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz", + "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=", + "dev": true, + "requires": { + "has": "^1.0.1" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", + "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", + "dev": true, + "requires": { + "has-symbols": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true, + "optional": true + }, + "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 + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true, + "optional": true + }, + "js-base64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", + "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "dev": true + }, + "js-beautify": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/js-beautify/-/js-beautify-1.10.2.tgz", + "integrity": "sha512-ZtBYyNUYJIsBWERnQP0rPN9KjkrDfJcMjuVGcvXOUJrD1zmOGwhRwQ4msG+HJ+Ni/FA7+sRQEMYVzdTQDvnzvQ==", + "dev": true, + "requires": { + "config-chain": "^1.1.12", + "editorconfig": "^0.15.3", + "glob": "^7.1.3", + "mkdirp": "~0.5.1", + "nopt": "~4.0.1" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha1-mGbfOVECEw449/mWvOtlRDIJwls=", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true, + "optional": true + }, + "jsesc": { + "version": "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-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true, + "optional": 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-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, + "optional": true + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=", + "dev": true + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "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 + }, + "last-call-webpack-plugin": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-2.1.2.tgz", + "integrity": "sha512-CZc+m2xZm51J8qSwdODeiiNeqh8CYkKEq6Rw8IkE4i/4yqf2cJhjQPsA6BtAV970ePRNhwEOXhy2U5xc5Jwh9Q==", + "dev": true, + "requires": { + "lodash": "^4.17.4", + "webpack-sources": "^1.0.1" + } + }, + "lazy-cache": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "dev": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } + }, + "less": { + "version": "3.10.3", + "resolved": "https://registry.npmjs.org/less/-/less-3.10.3.tgz", + "integrity": "sha512-vz32vqfgmoxF1h3K4J+yKCtajH0PWmjkIFgbs5d78E/c/e+UQTnI+lWK+1eQRE95PXM2mC3rJlLSSP9VQHnaow==", + "dev": true, + "requires": { + "clone": "^2.1.2", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "mime": "^1.4.1", + "mkdirp": "^0.5.0", + "promise": "^7.1.1", + "request": "^2.83.0", + "source-map": "~0.6.0" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "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 + } + } + }, + "less-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-5.0.0.tgz", + "integrity": "sha512-bquCU89mO/yWLaUq0Clk7qCsKhsF/TZpJUzETRvJa9KSVEL9SO3ovCvdEHISBhrC81OwC8QSVX7E0bzElZj9cg==", + "dev": true, + "requires": { + "clone": "^2.1.1", + "loader-utils": "^1.1.0", + "pify": "^4.0.1" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "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 + } + } + }, + "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.2", + "parse-json": "^2.2.0", + "pify": "^2.0.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=", + "dev": true + } + } + }, + "loader-runner": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", + "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", + "dev": true + }, + "loader-utils": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", + "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^2.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "dev": true + } + } + }, + "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.15", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz", + "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha1-soqmKIorn8ZRA1x3EfZathkDMaY=", + "dev": true + }, + "lodash.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.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "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==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + } + }, + "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.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz", + "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=", + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "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, + "requires": { + "object-visit": "^1.0.0" + } + }, + "math-expression-evaluator": { + "version": "1.2.17", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz", + "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "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.0.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.3", + "readable-stream": "^2.0.1" + } + }, + "merge-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "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": "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" + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + } + }, + "mime": { + "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.42.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", + "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "dev": true + }, + "mime-types": { + "version": "2.1.25", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", + "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "dev": true, + "requires": { + "mime-db": "1.42.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 + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "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.7" + } + }, + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + }, + "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, + "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": "^2.0.1", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", + "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "dev": true, + "requires": { + "minimist": "0.0.8" + } + }, + "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.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" + } + }, + "mpvue": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mpvue/-/mpvue-2.0.6.tgz", + "integrity": "sha512-73IEH/ZEQsQCaxTSwSkRpF7ADnbLe/HgxyXyCnre6vdJIRZHTbrx3U2gbPUVOSLw8Qk8+ypnPZta7pDZt2LMtQ==" + }, + "mpvue-loader": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mpvue-loader/-/mpvue-loader-2.0.1.tgz", + "integrity": "sha512-05iAwOnjfCKZKmqKy8JYXQeHFsGn8nqAODkVe6EbnS97wafb0TkU24TEer9jtfeBo9fHozgFjI4v96RaBxt4qg==", + "dev": true, + "requires": { + "babelon": "^1.0.5", + "consolidate": "^0.14.0", + "deep-equal": "^1.0.1", + "hash-sum": "^1.0.2", + "js-beautify": "^1.6.14", + "loader-utils": "^1.1.0", + "lru-cache": "^4.1.1", + "mkdirp": "^0.5.1", + "postcss": "^6.0.6", + "postcss-load-config": "^1.1.0", + "postcss-selector-parser": "^2.0.0", + "relative": "^3.0.2", + "resolve": "^1.3.3", + "source-map": "^0.5.6", + "upath": "^1.1.0", + "vue-hot-reload-api": "^2.1.0", + "vue-loader": "^13.0.4", + "vue-style-loader": "^3.0.0", + "vue-template-es2015-compiler": "^1.5.3" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.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 + } + } + }, + "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" + } + }, + "vue-style-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz", + "integrity": "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + } + } + }, + "mpvue-template-compiler": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/mpvue-template-compiler/-/mpvue-template-compiler-2.0.6.tgz", + "integrity": "sha512-gFrveME33Efi1iC6aYZMqBg2IkRL3KW6iJD/wNf30nLTh1fyo/7lcTRKhQRcVf7qmwnqfexDzqsKI0Hd32J+Fw==", + "dev": true, + "requires": { + "de-indent": "^1.0.2", + "he": "^1.1.0" + } + }, + "mpvue-webpack-target": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/mpvue-webpack-target/-/mpvue-webpack-target-1.0.3.tgz", + "integrity": "sha512-TeGn+caEkfqD2/dSEXoMz9TIGGaYVh/jl5XmZ6sMz+UPb3ZMYGFR2oCEITf1aXuYpp7MEGQ9FvT5bpxGxa72FQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "dev": true, + "optional": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natives": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/natives/-/natives-1.1.6.tgz", + "integrity": "sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA==", + "dev": true + }, + "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 + }, + "neo-async": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.1.tgz", + "integrity": "sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw==", + "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 + }, + "no-case": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz", + "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==", + "dev": true, + "requires": { + "lower-case": "^1.1.1" + } + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + }, + "dependencies": { + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + } + } + }, + "node-releases": { + "version": "1.1.40", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.40.tgz", + "integrity": "sha512-r4LPcC5b/bS8BdtWH1fbeK88ib/wg9aqmg6/s3ngNLn2Ewkn/8J6Iw3P9RTlfIAdSdvYvQl2thCY5Y+qTAQ2iQ==", + "dev": true, + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "nopt": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.1.tgz", + "integrity": "sha1-0NRoWv1UFRk8jHUFYC0NF81kR00=", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=", + "dev": true, + "requires": { + "object-assign": "^4.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" + } + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "optional": 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-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" + } + }, + "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" + } + } + } + }, + "object-inspect": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", + "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", + "dev": true + }, + "object-is": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.0.1.tgz", + "integrity": "sha1-CqYOyZiaCz7Xlc9NBvYs8a1lObY=", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "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" + } + }, + "object.getownpropertydescriptors": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz", + "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "es-abstract": "^1.5.1" + } + }, + "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, + "requires": { + "isobject": "^3.0.1" + } + }, + "object.values": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz", + "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.12.0", + "function-bind": "^1.1.1", + "has": "^1.0.3" + } + }, + "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" + } + }, + "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" + } + }, + "opener": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.1.tgz", + "integrity": "sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA==", + "dev": true + }, + "optimize-css-assets-webpack-plugin": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-3.2.1.tgz", + "integrity": "sha512-FSoF15xKSEM2qCE3/y2gH92PysJSBY58Wx/hmSdIzVSOd0vg+FRS28NWZADId1wh6PDlbVt0lfPduV0IBufItQ==", + "dev": true, + "requires": { + "cssnano": "^4.1.10", + "last-call-webpack-plugin": "^2.1.2" + }, + "dependencies": { + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.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==", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.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=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + }, + "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" + } + } + } + }, + "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 + }, + "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 + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "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.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 + }, + "pako": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", + "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "dev": true + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "param-case": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz", + "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=", + "dev": true, + "requires": { + "no-case": "^2.2.0" + } + }, + "parse-asn1": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.5.tgz", + "integrity": "sha512-jkMYn1dcJqF6d5CpU689bq7w/b5ALS9ROVSpQDPrZsqqesUJii9qutvoT5ltGedNXMO2e16YUWIghG9KxaViTQ==", + "dev": true, + "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" + } + }, + "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.2.0" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "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-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "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": "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" + } + }, + "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, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true, + "optional": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "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" + } + }, + "portfinder": { + "version": "1.0.25", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.25.tgz", + "integrity": "sha512-6ElJnHBbxVA1XSLgBp7G1FiCkQdlqGzuF7DswL5tcea+E8UpuvPU7beVAjjRwCioTS9ZluNbu+ZyRvgTsmqEBg==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.1" + }, + "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.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + } + } + }, + "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 + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "dependencies": { + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "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.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=", + "dev": true, + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=", + "dev": true, + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=", + "dev": true, + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=", + "dev": true, + "requires": { + "postcss": "^5.0.14" + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=", + "dev": true, + "requires": { + "postcss": "^5.0.16" + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=", + "dev": true, + "requires": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha1-U56a/J3chiASHr+djDZz4M5Q0oo=", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0", + "postcss-load-options": "^1.2.0", + "postcss-load-plugins": "^2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha1-sJixVZ3awt8EvAuzdfmaXP4rbYw=", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha1-dFdoEWWZrKLwCfrUJrABdQSdjZI=", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.1", + "object-assign": "^4.1.0" + } + }, + "postcss-loader": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-2.1.6.tgz", + "integrity": "sha512-hgiWSc13xVQAq25cVw80CH0l49ZKlAnU1hKPOdRrNj89bokRr/bZF2nT+hebPPF9c9xs8c3gw3Fr2nxtmXYnNg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "postcss": "^6.0.0", + "postcss-load-config": "^2.0.0", + "schema-utils": "^0.4.0" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "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" + } + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "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 + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.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 + }, + "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" + } + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + }, + "postcss-load-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz", + "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "import-cwd": "^2.0.0" + } + }, + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.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 + }, + "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" + } + } + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=", + "dev": true, + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=", + "dev": true, + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "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" + } + } + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha1-99gMOYxaOT+nlkRmvRlQCn1hwGk=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "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==", + "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" + } + } + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha1-1upkmUx5+XtipytCb75gVqGUu5A=", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "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==", + "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" + } + } + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha1-7P+p1+GSUYOJ9CrQ6D9yrsRW6iA=", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "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==", + "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" + } + } + } + }, + "postcss-mpvue-wxss": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/postcss-mpvue-wxss/-/postcss-mpvue-wxss-1.0.2.tgz", + "integrity": "sha512-42p9xz9emgoYrkn3QJHTYLse+NTVOADwyeBeJeeBx1+UfSaTHhAMZ/ncY509MAhDjb9DA3qbaa24GURijRq8xw==", + "dev": true, + "requires": { + "postcss": "^6.0.8", + "postcss-selector-parser": "^2.2.3" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "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==", + "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" + } + } + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=", + "dev": true, + "requires": { + "postcss": "^5.0.5" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.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==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.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 + }, + "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" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=", + "dev": true, + "requires": { + "postcss": "^5.0.4" + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=", + "dev": true, + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + } + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=", + "dev": true + }, + "prettier": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.12.1.tgz", + "integrity": "sha1-wa0g6APndJ+vkFpAnSNn4Gu+cyU=", + "dev": true + }, + "pretty-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz", + "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=", + "dev": true, + "requires": { + "renderkid": "^2.0.1", + "utila": "~0.4" + } + }, + "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 + }, + "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": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "optional": true, + "requires": { + "asap": "~2.0.3" + } + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "forwarded": "~0.1.2", + "ipaddr.js": "1.9.0" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=", + "dev": true + }, + "psl": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.4.0.tgz", + "integrity": "sha512-HZzqCGPecFLyoRj5HLfuDSKYTJkAfB5thKBIkRHtGjWwY7p1dAyveIbXIq4tO0KYfDF2tHqPUgY9SDnGm00uFw==", + "dev": true, + "optional": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "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" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "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 + }, + "px2rpx": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/px2rpx/-/px2rpx-0.5.3.tgz", + "integrity": "sha512-iCvr77ZyceBh3yGqizfqbTK/Yljp4MU5XOh9I+F2tTY559oqRGElW2Yq/tu8N0+Q2VkaZ1wVmLIE2/W33fWFGg==", + "dev": true, + "requires": { + "chalk": "~0.5.1", + "commander": "~2.6.0", + "css": "~2.2.0", + "extend": "~3.0.1", + "fs-extra": "~0.16.3" + }, + "dependencies": { + "ansi-regex": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz", + "integrity": "sha1-DY6UaWej2BQ/k+JOKYUl/BsiNfk=", + "dev": true + }, + "ansi-styles": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz", + "integrity": "sha1-6uy/Zs1waIJ2Cy9GkVgrj1XXp94=", + "dev": true + }, + "chalk": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz", + "integrity": "sha1-Zjs6ZItotV0EaQ1JFnqoN4WPIXQ=", + "dev": true, + "requires": { + "ansi-styles": "^1.1.0", + "escape-string-regexp": "^1.0.0", + "has-ansi": "^0.1.0", + "strip-ansi": "^0.3.0", + "supports-color": "^0.2.0" + } + }, + "commander": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz", + "integrity": "sha1-nfflL7Kgyw+4kFjugMMQQiXzfh0=", + "dev": true + }, + "has-ansi": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz", + "integrity": "sha1-hPJlqujA5qiKEtcCKJS3VoiUxi4=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.0" + } + }, + "strip-ansi": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz", + "integrity": "sha1-JfSOoiynkYfzF0pNuHWTR7sSYiA=", + "dev": true, + "requires": { + "ansi-regex": "^0.2.1" + } + }, + "supports-color": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz", + "integrity": "sha1-2S3iaU6z9nMjlz1649i1W0wiGQo=", + "dev": true + } + } + }, + "px2rpx-loader": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/px2rpx-loader/-/px2rpx-loader-0.1.10.tgz", + "integrity": "sha512-L1L0YLzt943h425VW618ibYNmVsNqTQC58WoMio9jr2txHpgyoF14BzWb6yPJTaucBPnWKNBQ3vkGgXrU15D0Q==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "px2rpx": "^0.5.3" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "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": { + "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.0", + "strict-uri-encode": "^1.0.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 + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.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.1.0", + "http-errors": "1.7.2", + "iconv-lite": "0.4.24", + "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.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=", + "dev": true, + "requires": { + "pify": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "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.0.0", + "read-pkg": "^2.0.0" + } + }, + "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, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "regenerate": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz", + "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==", + "dev": true + }, + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "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.18.0", + "babel-types": "^6.19.0", + "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==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.2.0.tgz", + "integrity": "sha512-ztaw4M1VqgMwl9HlPpOuiYgItcHlunW0He2fE6eNfT6E/CF2FtYi9ofOYe4mKntstYk0Fyh/rDRBdS3AnxjlrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2" + } + }, + "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.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=", + "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 + } + } + }, + "relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true + }, + "relative": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/relative/-/relative-3.0.2.tgz", + "integrity": "sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8=", + "dev": true, + "requires": { + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.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=", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "css-select": "^1.1.0", + "dom-converter": "^0.2", + "htmlparser2": "^3.3.0", + "strip-ansi": "^3.0.0", + "utila": "^0.4.0" + } + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "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.0" + } + }, + "request": { + "version": "2.88.0", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", + "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "dev": true, + "optional": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.0", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.4.3", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "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, + "optional": 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-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha1-UpyczvJzgK3+yaL5ZbZJu+5jZBg=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "resolve": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz", + "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==", + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + }, + "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 + }, + "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 + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "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.1" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "run-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.1.1" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "schema-utils": { + "version": "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.0.0" + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "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", + "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": { + "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 + } + } + }, + "serialize-javascript": { + "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-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, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.1" + } + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "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" + } + } + } + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "setprototypeof": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", + "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "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 + }, + "shelljs": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.3.tgz", + "integrity": "sha512-fc0BKlAWiLpwZljmOvAOTE/gXawtCoNrP5oaY7KIaQbbyHeQVg01pSEuEGvGh3HEdBU4baCD7wQBwADmM/7f7A==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "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 + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "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.0.0" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "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, + "requires": { + "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" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "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 + }, + "spdx-correct": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", + "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", + "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", + "dev": true + }, + "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, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", + "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "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.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "optional": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-5.3.0.tgz", + "integrity": "sha512-XRSIPqLij52MtgoQavH/x/dU1qVKtWUAAZeOHsR9c2Ddi4XerFy3mc1alf+dLJKl9EUIm/Ht+EowFkTUOA6GAQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.1" + } + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "stackframe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.1.0.tgz", + "integrity": "sha512-Vx6W1Yvy+AM1R/ckVwcHQHV147pTPBKWCRLrXMuPrFVfvBUc3os7PR1QLIWCMhPpRg5eX9ojzbQIMLGBwyLjqg==", + "dev": true + }, + "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, + "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=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "stream-shift": { + "version": "1.0.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-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" + } + } + } + }, + "string.prototype.trimleft": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.0.tgz", + "integrity": "sha512-FJ6b7EgdKxxbDxc79cOlok6Afd++TTs5szo+zJTUyow3ycrRfJVE2pq3vcN53XexvKZu/DJMDfeI/qMiZTrjTw==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.1" + } + }, + "string.prototype.trimright": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.0.tgz", + "integrity": "sha512-fXZTSV55dNBwv16uw+hh5jkghxSnc5oHq+5K/gXgizHwAvMetdAJlHqqoFC1FSDVPYWLkAKl2cxpUT41sV7nSg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "function-bind": "^1.1.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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "style-loader": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.0.0.tgz", + "integrity": "sha512-B0dOCFwv7/eY31a5PCieNwMgMhVGFe9w+rh7s/Bx8kfFkrth9zfTZquoYvdw8URgiqxObQKcpW51Ugz1HjfdZw==", + "dev": true, + "requires": { + "loader-utils": "^1.2.3", + "schema-utils": "^2.0.1" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "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": { + "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 + }, + "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 + }, + "schema-utils": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.5.0.tgz", + "integrity": "sha512-32ISrwW2scPXHUSusP8qMg5dLUawKkyV+/qIEV9JdXKx+rsM6mi8vZY8khg2M69Qom16rtroWXD3Ybtiws38gQ==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "ajv-keywords": "^3.4.1" + } + } + } + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "browserslist": { + "version": "4.7.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.7.2.tgz", + "integrity": "sha512-uZavT/gZXJd2UTi9Ov7/Z340WOSQ3+m1iBVRUknf+okKxonL9P83S3ctiBDtuRmRu8PiCHjqyueqQ9HYlJhxiw==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001004", + "electron-to-chromium": "^1.3.295", + "node-releases": "^1.1.38" + } + }, + "postcss": { + "version": "7.0.21", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", + "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2", + "source-map": "^0.6.1", + "supports-color": "^6.1.0" + } + }, + "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=", + "dev": true, + "requires": { + "dot-prop": "^4.1.1", + "indexes-of": "^1.0.1", + "uniq": "^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==", + "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" + } + } + } + }, + "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 + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=", + "dev": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + } + }, + "tapable": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", + "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "time-stamp": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz", + "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==", + "dev": true + }, + "timers-browserify": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.11.tgz", + "integrity": "sha512-60aV6sgJ5YEbzUdn9c8kYGIqOubPoUdqQCul3SBAsRCZ40s6Y5cMcrW4dt3/k/EsbLVJNl9n6Vz3fTc+k2GeKQ==", + "dev": true, + "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=", + "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 + }, + "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, + "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" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "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, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "toidentifier": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", + "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", + "dev": true + }, + "toposort": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz", + "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=", + "dev": true + }, + "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==", + "dev": true, + "optional": true, + "requires": { + "psl": "^1.1.24", + "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, + "optional": true + } + } + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=", + "dev": true + }, + "tryer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.1.tgz", + "integrity": "sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA==", + "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.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true, + "optional": true + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uglify-js": { + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz", + "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==", + "dev": true, + "requires": { + "commander": "~2.19.0", + "source-map": "~0.6.1" + }, + "dependencies": { + "commander": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz", + "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==", + "dev": true + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-1.3.0.tgz", + "integrity": "sha512-ovHIch0AMlxjD/97j9AYovZxG5wnHOPkL7T1GKochBADp/Zwc44pEWNqpKl1Loupp1WhFg7SlYmHZRUfdAacgw==", + "dev": true, + "requires": { + "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" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "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" + } + }, + "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 + }, + "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 + }, + "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 + }, + "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==", + "dev": true, + "requires": { + "ajv": "^6.1.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 + }, + "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" + } + } + } + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true + }, + "unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "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, + "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=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "upper-case": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz", + "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=", + "dev": true + }, + "uri-js": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", + "dev": true, + "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=", + "dev": true + }, + "url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "requires": { + "punycode": "1.3.2", + "querystring": "0.2.0" + }, + "dependencies": { + "punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + } + } + }, + "url-loader": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz", + "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0", + "mime": "^2.0.3", + "schema-utils": "^1.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "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": { + "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 + }, + "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 + }, + "mime": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz", + "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==", + "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" + } + } + } + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "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 + }, + "util.promisify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz", + "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "utila": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true + }, + "uuid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", + "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "dev": true, + "optional": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true + }, + "vendors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz", + "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "optional": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue-hot-reload-api": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.4.tgz", + "integrity": "sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==", + "dev": true + }, + "vue-loader": { + "version": "13.7.3", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-13.7.3.tgz", + "integrity": "sha512-ACCwbfeC6HjY2pnDii+Zer+MZ6sdOtwvLmDXRK/BoD3WNR551V22R6KEagwHoTRJ0ZlIhpCBkptpCU6+Ri/05w==", + "dev": true, + "requires": { + "consolidate": "^0.14.0", + "hash-sum": "^1.0.2", + "loader-utils": "^1.1.0", + "lru-cache": "^4.1.1", + "postcss": "^6.0.8", + "postcss-load-config": "^1.1.0", + "postcss-selector-parser": "^2.0.0", + "prettier": "^1.7.0", + "resolve": "^1.4.0", + "source-map": "^0.6.1", + "vue-hot-reload-api": "^2.2.0", + "vue-style-loader": "^3.0.0", + "vue-template-es2015-compiler": "^1.6.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "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==", + "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" + } + }, + "vue-style-loader": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-3.1.2.tgz", + "integrity": "sha512-ICtVdK/p+qXWpdSs2alWtsXt9YnDoYjQe0w5616j9+/EhjoxZkbun34uWgsMFnC1MhrMMwaWiImz3K2jK1Yp2Q==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + } + } + }, + "vue-style-loader": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz", + "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "vue-template-es2015-compiler": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz", + "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==", + "dev": true + }, + "watchpack": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", + "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "dev": true, + "requires": { + "chokidar": "^2.0.2", + "graceful-fs": "^4.1.2", + "neo-async": "^2.5.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webpack": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-3.12.0.tgz", + "integrity": "sha512-Sw7MdIIOv/nkzPzee4o0EdvCuPmxT98+vVpIvwtcwcF1Q4SDSNp92vwcKc4REe7NItH9f1S4ra9FuQ7yuYZ8bQ==", + "dev": true, + "requires": { + "acorn": "^5.0.0", + "acorn-dynamic-import": "^2.0.0", + "ajv": "^6.1.0", + "ajv-keywords": "^3.1.0", + "async": "^2.1.2", + "enhanced-resolve": "^3.4.0", + "escope": "^3.6.0", + "interpret": "^1.0.0", + "json-loader": "^0.5.4", + "json5": "^0.5.1", + "loader-runner": "^2.3.0", + "loader-utils": "^1.1.0", + "memory-fs": "~0.4.1", + "mkdirp": "~0.5.0", + "node-libs-browser": "^2.0.0", + "source-map": "^0.5.3", + "supports-color": "^4.2.1", + "tapable": "^0.2.7", + "uglifyjs-webpack-plugin": "^0.4.6", + "watchpack": "^1.4.0", + "webpack-sources": "^1.0.1", + "yargs": "^8.0.2" + }, + "dependencies": { + "ajv": { + "version": "6.10.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.2.tgz", + "integrity": "sha512-TXtUUEYHuaTEbLZWIKUr5pmBuhDLy+8KYtPYdcV8qC+pOZL+NKqYwvWSRrVXHn+ZmRRAu8vJTAznH7Oag6RVRw==", + "dev": true, + "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": { + "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 + }, + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=", + "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 + }, + "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" + } + }, + "tapable": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.2.9.tgz", + "integrity": "sha512-2wsvQ+4GwBvLPLWsNfLCDYGsW6xb7aeC6utq2Qh0PFwgEy7K7dsma9Jsmb2zSQj7GvYAyUGSntLtsv++GmgL1A==", + "dev": true + }, + "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.1", + "uglify-to-browserify": "~1.0.0", + "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.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.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.6", + "uglify-js": "^2.8.29", + "webpack-sources": "^1.0.1" + } + } + } + }, + "webpack-bundle-analyzer": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.13.1.tgz", + "integrity": "sha512-rwxyfecTAxoarCC9VlHlIpfQCmmJ/qWD5bpbjkof+7HrNhTNZIwZITxN6CdlYL2axGmwNUQ+tFgcSOiNXMf/sQ==", + "dev": true, + "requires": { + "acorn": "^5.3.0", + "bfj-node4": "^5.2.0", + "chalk": "^2.3.0", + "commander": "^2.13.0", + "ejs": "^2.5.7", + "express": "^4.16.2", + "filesize": "^3.5.11", + "gzip-size": "^4.1.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "opener": "^1.4.3", + "ws": "^4.0.0" + } + }, + "webpack-dev-middleware-hard-disk": { + "version": "1.12.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware-hard-disk/-/webpack-dev-middleware-hard-disk-1.12.1.tgz", + "integrity": "sha512-Xs9EaOuE2JaQ1VNwnZA6iYswhLOvk80PUoI1QBsDxVSuCx7lZ6hCbeCuno+7DWH9Bao5MmAIyDpFWzbT2OEAng==", + "dev": true, + "requires": { + "mime": "^1.3.4", + "path-is-absolute": "^1.0.0", + "range-parser": "^1.0.3", + "time-stamp": "^2.0.0" + } + }, + "webpack-merge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", + "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "webpack-mpvue-asset-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-mpvue-asset-plugin/-/webpack-mpvue-asset-plugin-2.0.0.tgz", + "integrity": "sha512-CN/mTLnFowLJYrkwXNO+28PDDpIBU1VrahA/6Jj/DK2TGKp7MPVGJlsrnz4JXd2Br0ShRMJvP8/cUGc6QSEtNw==", + "dev": true, + "requires": { + "relative": "^3.0.2", + "upath": "^1.1.0" + } + }, + "webpack-mpvue-vendor-plugin": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/webpack-mpvue-vendor-plugin/-/webpack-mpvue-vendor-plugin-2.0.3.tgz", + "integrity": "sha512-N7cCh1wBzFxDTs1sJ05F908zsF/fcz4LFcqnLBuEyYeqEv48UCNcTW1vBxDnELCJdecvCCLIwavlRyiA8KRwQw==", + "dev": true + }, + "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" + }, + "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 + } + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "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": "0.0.2", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "dev": true + }, + "worker-farm": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", + "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", + "dev": true, + "requires": { + "errno": "~0.1.7" + } + }, + "wrap-ansi": { + "version": "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.1", + "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.0" + } + }, + "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.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "ws": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-4.1.0.tgz", + "integrity": "sha512-ZGh/8kF9rrRNffkLFV4AzhvooEclrOH0xaugmqGsIfFgOE/pIz4fMc4Ef+5HSQqTEug2S9JZIWDR47duDSLfaA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0", + "safe-buffer": "~5.1.0" + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "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.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" + }, + "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.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.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.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "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.0" + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + } + } + }, + "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 + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8dfc99b --- /dev/null +++ b/package.json @@ -0,0 +1,85 @@ +{ + "name": "maker", + "version": "1.0.0", + "mpvueTemplateProjectVersion": "0.1.0", + "description": "A Mpvue project", + "author": "yulixing ", + "private": true, + "scripts": { + "dev:wx": "node build/dev-server.js wx", + "start:wx": "npm run dev:wx", + "build:wx": "node build/build.js wx", + "dev:swan": "node build/dev-server.js swan", + "start:swan": "npm run dev:swan", + "build:swan": "node build/build.js swan", + "dev:tt": "node build/dev-server.js tt", + "start:tt": "npm run dev:tt", + "build:tt": "node build/build.js tt", + "dev:my": "node build/dev-server.js my", + "start:my": "npm run dev:my", + "build:my": "node build/build.js my", + "dev": "node build/dev-server.js wx", + "start": "npm run dev", + "build": "node build/build.js wx" + }, + "dependencies": { + "mpvue": "^2.0.0" + }, + "devDependencies": { + "babel-core": "^6.22.1", + "babel-loader": "^7.1.1", + "babel-plugin-transform-runtime": "^6.22.0", + "babel-preset-env": "^1.3.2", + "babel-preset-stage-2": "^6.22.0", + "babel-register": "^6.22.0", + "chalk": "^2.4.0", + "connect-history-api-fallback": "^1.3.0", + "copy-webpack-plugin": "^4.5.1", + "css-loader": "^0.28.11", + "cssnano": "^3.10.0", + "eventsource-polyfill": "^0.9.6", + "express": "^4.16.3", + "extract-text-webpack-plugin": "^3.0.2", + "file-loader": "^1.1.11", + "friendly-errors-webpack-plugin": "^1.7.0", + "glob": "^7.1.2", + "html-webpack-plugin": "^3.2.0", + "http-proxy-middleware": "^0.18.0", + "less": "^3.10.3", + "less-loader": "^5.0.0", + "mkdirp": "^0.5.1", + "mpvue-loader": "^2.0.0", + "mpvue-template-compiler": "^2.0.0", + "mpvue-webpack-target": "^1.0.3", + "optimize-css-assets-webpack-plugin": "^3.2.0", + "ora": "^2.0.0", + "portfinder": "^1.0.13", + "postcss-loader": "^2.1.4", + "postcss-mpvue-wxss": "^1.0.0", + "prettier": "~1.12.1", + "px2rpx-loader": "^0.1.10", + "relative": "^3.0.2", + "rimraf": "^2.6.0", + "semver": "^5.3.0", + "shelljs": "^0.8.1", + "style-loader": "^1.0.0", + "uglifyjs-webpack-plugin": "^1.2.5", + "url-loader": "^1.0.1", + "vue-style-loader": "^4.1.0", + "webpack": "^3.11.0", + "webpack-bundle-analyzer": "^2.2.1", + "webpack-dev-middleware-hard-disk": "^1.12.0", + "webpack-merge": "^4.1.0", + "webpack-mpvue-asset-plugin": "^2.0.0", + "webpack-mpvue-vendor-plugin": "^2.0.0" + }, + "engines": { + "node": ">= 4.0.0", + "npm": ">= 3.0.0" + }, + "browserslist": [ + "> 1%", + "last 2 versions", + "not ie <= 8" + ] +} diff --git a/package.swan.json b/package.swan.json new file mode 100644 index 0000000..7523808 --- /dev/null +++ b/package.swan.json @@ -0,0 +1,12 @@ +{ + "appid": "touristappid", + "setting": { + "urlCheck": false + }, + "condition": { + "swan": { + "current": -1, + "list": [] + } + } +} \ No newline at end of file diff --git a/project.config.json b/project.config.json new file mode 100644 index 0000000..fcde86c --- /dev/null +++ b/project.config.json @@ -0,0 +1,73 @@ +{ + "description": "项目配置文件。", + "setting": { + "urlCheck": false, + "es6": true, + "postcss": true, + "minified": true, + "newFeature": true, + "coverView": true, + "autoAudits": false, + "checkInvalidKey": true, + "checkSiteMap": true, + "uploadWithSourceMap": true, + "babelSetting": { + "ignore": [], + "disablePlugins": [], + "outputPath": "" + } + }, + "miniprogramRoot": "dist/wx/", + "compileType": "miniprogram", + "appid": "wx4d305a3b655ad75f", + "projectname": "maker", + "simulatorType": "wechat", + "simulatorPluginLibVersion": {}, + "condition": { + "search": { + "current": -1, + "list": [] + }, + "conversation": { + "current": -1, + "list": [] + }, + "plugin": { + "current": -1, + "list": [] + }, + "game": { + "currentL": -1, + "list": [] + }, + "gamePlugin": { + "current": -1, + "list": [] + }, + "miniprogram": { + "current": -1, + "list": [ + { + "id": 0, + "name": "答题页", + "pathName": "pages/details/main", + "query": "_id= 5dcbe979f8c239ef95aa9b40", + "scene": null + }, + { + "id": -1, + "name": "结果页", + "pathName": "pages/result/main", + "query": "", + "scene": null + }, + { + "id": -1, + "name": "首页", + "pathName": "pages/index/main", + "scene": null + } + ] + } + } +} \ No newline at end of file diff --git a/project.swan.json b/project.swan.json new file mode 100644 index 0000000..d28f4de --- /dev/null +++ b/project.swan.json @@ -0,0 +1,12 @@ +{ + "appid": "testappid", + "setting": { + "urlCheck": false + }, + "condition": { + "swan": { + "current": -1, + "list": [] + } + } +} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..fdcc882 --- /dev/null +++ b/src/App.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/app.json b/src/app.json new file mode 100644 index 0000000..6ebca7c --- /dev/null +++ b/src/app.json @@ -0,0 +1,9 @@ +{ + "pages": ["pages/details/main", "pages/result/main", "pages/index/main", "pages/logs/main"], + "window": { + "backgroundTextStyle": "light", + "navigationBarBackgroundColor": "#fff", + "navigationBarTitleText": "心理测试", + "navigationBarTextStyle": "black" + } +} diff --git a/src/components/card.vue b/src/components/card.vue new file mode 100644 index 0000000..2518f3d --- /dev/null +++ b/src/components/card.vue @@ -0,0 +1,19 @@ + + + + + diff --git a/src/components/list.vue b/src/components/list.vue new file mode 100644 index 0000000..94289ff --- /dev/null +++ b/src/components/list.vue @@ -0,0 +1,12 @@ + + + + \ No newline at end of file diff --git a/src/config/index.js b/src/config/index.js new file mode 100644 index 0000000..aa08718 --- /dev/null +++ b/src/config/index.js @@ -0,0 +1,3 @@ +export default { + api: 'http://localhost:2333/api/open/test/text' +} \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 0000000..85dbd9e --- /dev/null +++ b/src/main.js @@ -0,0 +1,8 @@ +import Vue from 'vue' +import App from './App' + +Vue.config.productionTip = false +App.mpType = 'app' + +const app = new Vue(App) +app.$mount() diff --git a/src/pages/details/index.vue b/src/pages/details/index.vue new file mode 100644 index 0000000..7615602 --- /dev/null +++ b/src/pages/details/index.vue @@ -0,0 +1,133 @@ + + + + + \ No newline at end of file diff --git a/src/pages/details/main.js b/src/pages/details/main.js new file mode 100644 index 0000000..8fa9146 --- /dev/null +++ b/src/pages/details/main.js @@ -0,0 +1,5 @@ +import Vue from 'vue' +import App from './index' + +const app = new Vue(App) +app.$mount() diff --git a/src/pages/details/main.json b/src/pages/details/main.json new file mode 100644 index 0000000..0ce15ed --- /dev/null +++ b/src/pages/details/main.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "心理测试" +} diff --git a/src/pages/index/index.vue b/src/pages/index/index.vue new file mode 100644 index 0000000..a3edb9d --- /dev/null +++ b/src/pages/index/index.vue @@ -0,0 +1,262 @@ + + + + + + diff --git a/src/pages/index/main.js b/src/pages/index/main.js new file mode 100644 index 0000000..a98ae2d --- /dev/null +++ b/src/pages/index/main.js @@ -0,0 +1,12 @@ +import Vue from 'vue' +import App from './index' + +// add this to handle exception +Vue.config.errorHandler = function (err) { + if (console && console.error) { + console.error(err) + } +} + +const app = new Vue(App) +app.$mount() diff --git a/src/pages/index/main.json b/src/pages/index/main.json new file mode 100644 index 0000000..9e26dfe --- /dev/null +++ b/src/pages/index/main.json @@ -0,0 +1 @@ +{} \ No newline at end of file diff --git a/src/pages/logs/index.vue b/src/pages/logs/index.vue new file mode 100644 index 0000000..4b64ed9 --- /dev/null +++ b/src/pages/logs/index.vue @@ -0,0 +1,61 @@ + + + + + diff --git a/src/pages/logs/main.js b/src/pages/logs/main.js new file mode 100644 index 0000000..8fa9146 --- /dev/null +++ b/src/pages/logs/main.js @@ -0,0 +1,5 @@ +import Vue from 'vue' +import App from './index' + +const app = new Vue(App) +app.$mount() diff --git a/src/pages/logs/main.json b/src/pages/logs/main.json new file mode 100644 index 0000000..12ef72f --- /dev/null +++ b/src/pages/logs/main.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "查看启动日志" +} diff --git a/src/pages/result/index.vue b/src/pages/result/index.vue new file mode 100644 index 0000000..6faa0c4 --- /dev/null +++ b/src/pages/result/index.vue @@ -0,0 +1,90 @@ + + + + + diff --git a/src/pages/result/main.js b/src/pages/result/main.js new file mode 100644 index 0000000..8fa9146 --- /dev/null +++ b/src/pages/result/main.js @@ -0,0 +1,5 @@ +import Vue from 'vue' +import App from './index' + +const app = new Vue(App) +app.$mount() diff --git a/src/pages/result/main.json b/src/pages/result/main.json new file mode 100644 index 0000000..1c9d22f --- /dev/null +++ b/src/pages/result/main.json @@ -0,0 +1,6 @@ +{ + "navigationBarTitleText": "测试结果", + "usingComponents": { + "painter": "/static/painter/painter" +} +} diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..b01e440 --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,24 @@ +function formatNumber (n) { + const str = n.toString() + return str[1] ? str : `0${str}` +} + +export function formatTime (date) { + const year = date.getFullYear() + const month = date.getMonth() + 1 + const day = date.getDate() + + const hour = date.getHours() + const minute = date.getMinutes() + const second = date.getSeconds() + + const t1 = [year, month, day].map(formatNumber).join('/') + const t2 = [hour, minute, second].map(formatNumber).join(':') + + return `${t1} ${t2}` +} + +export default { + formatNumber, + formatTime +} diff --git a/static/.gitkeep b/static/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/static/icon/icon_1.png b/static/icon/icon_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3f0ab1c4d6d7e9c5a73a972730f643e5c41001 GIT binary patch literal 16076 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 literal 0 HcmV?d00001 diff --git a/static/icon/icon_6.png b/static/icon/icon_6.png new file mode 100644 index 0000000000000000000000000000000000000000..28a2a7af93651acd912bbdd25799770636288378 GIT binary patch literal 16404 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

2SW43_Y>l2}DG-J0WXRvXLU{eI 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 literal 0 HcmV?d00001 diff --git a/static/icon/icon_8.png b/static/icon/icon_8.png new file mode 100644 index 0000000000000000000000000000000000000000..081e36cc9f8fa0d805b4e8973eb0b59f7e979410 GIT binary patch literal 15143 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 bEBZeGnpBC#S#i`V00000NkvXXu0mjfoc3|q literal 0 HcmV?d00001 diff --git a/static/images/user.png b/static/images/user.png new file mode 100644 index 0000000000000000000000000000000000000000..081af6c521815bb7c54725b862b9b0c299308b8a GIT binary patch literal 7110 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 { + if (!(url && util.isValidUrl(url))) { + resolve(url); + return; + } + const file = getFile(url); + + if (file) { + // 检查文件是否正常,不正常需要重新下载 + wx.getSavedFileInfo({ + filePath: file[KEY_PATH], + success: (res) => { + resolve(file[KEY_PATH]); + }, + fail: (error) => { + console.error(`the file is broken, redownload it, ${JSON.stringify(error)}`); + downloadFile(url).then((path) => { + resolve(path); + }, () => { + reject(); + }); + }, + }); + } else { + downloadFile(url).then((path) => { + resolve(path); + }, () => { + reject(); + }); + } + }); + } +} + +function downloadFile(url) { + return new Promise((resolve, reject) => { + wx.downloadFile({ + url: url, + success: function (res) { + if (res.statusCode !== 200) { + console.error(`downloadFile ${url} failed res.statusCode is not 200`); + reject(); + return; + } + const { tempFilePath } = res; + wx.getFileInfo({ + filePath: tempFilePath, + success: (tmpRes) => { + const newFileSize = tmpRes.size; + doLru(newFileSize).then(() => { + saveFile(url, newFileSize, tempFilePath).then((filePath) => { + resolve(filePath); + }); + }, () => { + resolve(tempFilePath); + }); + }, + fail: (error) => { + // 文件大小信息获取失败,则此文件也不要进行存储 + console.error(`getFileInfo ${res.tempFilePath} failed, ${JSON.stringify(error)}`); + resolve(res.tempFilePath); + }, + }); + }, + fail: function (error) { + console.error(`downloadFile failed, ${JSON.stringify(error)} `); + reject(); + }, + }); + }); +} + +function saveFile(key, newFileSize, tempFilePath) { + return new Promise((resolve, reject) => { + wx.saveFile({ + tempFilePath: tempFilePath, + success: (fileRes) => { + const totalSize = savedFiles[KEY_TOTAL_SIZE] ? savedFiles[KEY_TOTAL_SIZE] : 0; + savedFiles[key] = {}; + savedFiles[key][KEY_PATH] = fileRes.savedFilePath; + savedFiles[key][KEY_TIME] = new Date().getTime(); + savedFiles[key][KEY_SIZE] = newFileSize; + savedFiles['totalSize'] = newFileSize + totalSize; + wx.setStorage({ + key: SAVED_FILES_KEY, + data: savedFiles, + }); + resolve(fileRes.savedFilePath); + }, + fail: (error) => { + console.error(`saveFile ${key} failed, then we delete all files, ${JSON.stringify(error)}`); + // 由于 saveFile 成功后,res.tempFilePath 处的文件会被移除,所以在存储未成功时,我们还是继续使用临时文件 + resolve(tempFilePath); + // 如果出现错误,就直接情况本地的所有文件,因为你不知道是不是因为哪次lru的某个文件未删除成功 + reset(); + }, + }); + }); +} + +/** + * 清空所有下载相关内容 + */ +function reset() { + wx.removeStorage({ + key: SAVED_FILES_KEY, + success: () => { + wx.getSavedFileList({ + success: (listRes) => { + removeFiles(listRes.fileList); + }, + fail: (getError) => { + console.error(`getSavedFileList failed, ${JSON.stringify(getError)}`); + }, + }); + }, + }); +} + +function doLru(size) { + return new Promise((resolve, reject) => { + let totalSize = savedFiles[KEY_TOTAL_SIZE] ? savedFiles[KEY_TOTAL_SIZE] : 0; + + if (size + totalSize <= MAX_SPACE_IN_B) { + resolve(); + return; + } + // 如果加上新文件后大小超过最大限制,则进行 lru + const pathsShouldDelete = []; + // 按照最后一次的访问时间,从小到大排序 + const allFiles = JSON.parse(JSON.stringify(savedFiles)); + delete allFiles[KEY_TOTAL_SIZE]; + const sortedKeys = Object.keys(allFiles).sort((a, b) => { + return allFiles[a][KEY_TIME] - allFiles[b][KEY_TIME]; + }); + + for (const sortedKey of sortedKeys) { + totalSize -= savedFiles[sortedKey].size; + pathsShouldDelete.push(savedFiles[sortedKey][KEY_PATH]); + delete savedFiles[sortedKey]; + if (totalSize + size < MAX_SPACE_IN_B) { + break; + } + } + + savedFiles['totalSize'] = totalSize; + + wx.setStorage({ + key: SAVED_FILES_KEY, + data: savedFiles, + success: () => { + // 保证 storage 中不会存在不存在的文件数据 + if (pathsShouldDelete.length > 0) { + removeFiles(pathsShouldDelete); + } + resolve(); + }, + fail: (error) => { + console.error(`doLru setStorage failed, ${JSON.stringify(error)}`); + reject(); + }, + }); + }); +} + +function removeFiles(pathsShouldDelete) { + for (const pathDel of pathsShouldDelete) { + let delPath = pathDel; + if (typeof pathDel === 'object') { + delPath = pathDel.filePath; + } + wx.removeSavedFile({ + filePath: delPath, + fail: (error) => { + console.error(`removeSavedFile ${pathDel} failed, ${JSON.stringify(error)}`); + }, + }); + } +} + +function getFile(key) { + if (!savedFiles[key]) { + return; + } + savedFiles[key]['time'] = new Date().getTime(); + wx.setStorage({ + key: SAVED_FILES_KEY, + data: savedFiles, + }); + return savedFiles[key]; +} diff --git a/static/painter/lib/gradient.js b/static/painter/lib/gradient.js new file mode 100644 index 0000000..f0729e4 --- /dev/null +++ b/static/painter/lib/gradient.js @@ -0,0 +1,102 @@ +/* eslint-disable */ +// 当ctx传入当前文件,const grd = ctx.createCircularGradient() 和 +// const grd = this.ctx.createLinearGradient() 无效,因此只能分开处理 +// 先分析,在外部创建grd,再传入使用就可以 + +!(function () { + + var api = { + isGradient: function(bg) { + if (bg && (bg.startsWith('linear') || bg.startsWith('radial'))) { + return true; + } + return false; + }, + + doGradient: function(bg, width, height, ctx) { + if (bg.startsWith('linear')) { + linearEffect(width, height, bg, ctx); + } else if (bg.startsWith('radial')) { + radialEffect(width, height, bg, ctx); + } + }, + } + + function analizeGrad(string) { + const colorPercents = string.substring(0, string.length - 1).split("%,"); + const colors = []; + const percents = []; + for (let colorPercent of colorPercents) { + colors.push(colorPercent.substring(0, colorPercent.lastIndexOf(" ")).trim()); + percents.push(colorPercent.substring(colorPercent.lastIndexOf(" "), colorPercent.length) / 100); + } + return {colors: colors, percents: percents}; + } + + function radialEffect(width, height, bg, ctx) { + const colorPer = analizeGrad(bg.match(/radial-gradient\((.+)\)/)[1]); + const grd = ctx.createCircularGradient(0, 0, width < height ? height / 2 : width / 2); + for (let i = 0; i < colorPer.colors.length; i++) { + grd.addColorStop(colorPer.percents[i], colorPer.colors[i]); + } + ctx.fillStyle = grd; + //ctx.fillRect(-(width / 2), -(height / 2), width, height); + } + + function analizeLinear(bg, width, height) { + const direction = bg.match(/([-]?\d{1,3})deg/); + const dir = direction && direction[1] ? parseFloat(direction[1]) : 0; + let coordinate; + switch (dir) { + case 0: coordinate = [0, -height / 2, 0, height / 2]; break; + case 90: coordinate = [width / 2, 0, -width / 2, 0]; break; + case -90: coordinate = [-width / 2, 0, width / 2, 0]; break; + case 180: coordinate = [0, height / 2, 0, -height / 2]; break; + case -180: coordinate = [0, -height / 2, 0, height / 2]; break; + default: + let x1 = 0; + let y1 = 0; + let x2 = 0; + let y2 = 0; + if (direction[1] > 0 && direction[1] < 90) { + x1 = (width / 2) - ((width / 2) * Math.tan((90 - direction[1]) * Math.PI * 2 / 360) - height / 2) * Math.sin(2 * (90 - direction[1]) * Math.PI * 2 / 360) / 2; + y2 = Math.tan((90 - direction[1]) * Math.PI * 2 / 360) * x1; + x2 = -x1; + y1 = -y2; + } else if (direction[1] > -180 && direction[1] < -90) { + x1 = -(width / 2) + ((width / 2) * Math.tan((90 - direction[1]) * Math.PI * 2 / 360) - height / 2) * Math.sin(2 * (90 - direction[1]) * Math.PI * 2 / 360) / 2; + y2 = Math.tan((90 - direction[1]) * Math.PI * 2 / 360) * x1; + x2 = -x1; + y1 = -y2; + } else if (direction[1] > 90 && direction[1] < 180) { + x1 = (width / 2) + (-(width / 2) * Math.tan((90 - direction[1]) * Math.PI * 2 / 360) - height / 2) * Math.sin(2 * (90 - direction[1]) * Math.PI * 2 / 360) / 2; + y2 = Math.tan((90 - direction[1]) * Math.PI * 2 / 360) * x1; + x2 = -x1; + y1 = -y2; + } else { + x1 = -(width / 2) - (-(width / 2) * Math.tan((90 - direction[1]) * Math.PI * 2 / 360) - height / 2) * Math.sin(2 * (90 - direction[1]) * Math.PI * 2 / 360) / 2; + y2 = Math.tan((90 - direction[1]) * Math.PI * 2 / 360) * x1; + x2 = -x1; + y1 = -y2; + } + coordinate = [x1, y1, x2, y2]; + break; + } + return coordinate; + } + + function linearEffect(width, height, bg, ctx) { + const param = analizeLinear(bg, width, height); + const grd = ctx.createLinearGradient(param[0], param[1], param[2], param[3]); + const content = bg.match(/linear-gradient\((.+)\)/)[1]; + const colorPer = analizeGrad(content.substring(content.indexOf(',') + 1)); + for (let i = 0; i < colorPer.colors.length; i++) { + grd.addColorStop(colorPer.percents[i], colorPer.colors[i]); + } + ctx.fillStyle = grd + //ctx.fillRect(-(width / 2), -(height / 2), width, height); + } + + module.exports = { api } + +})(); diff --git a/static/painter/lib/pen.js b/static/painter/lib/pen.js new file mode 100644 index 0000000..df63baf --- /dev/null +++ b/static/painter/lib/pen.js @@ -0,0 +1,549 @@ +const QR = require('./qrcode.js'); +const GD = require('./gradient.js'); + +export default class Painter { + constructor(ctx, data) { + this.ctx = ctx; + this.data = data; + this.globalWidth = {}; + this.globalHeight = {}; + } + + paint(callback) { + this.style = { + width: this.data.width.toPx(), + height: this.data.height.toPx(), + }; + this._background(); + for (const view of this.data.views) { + this._drawAbsolute(view); + } + this.ctx.draw(false, () => { + callback(); + }); + } + + _background() { + this.ctx.save(); + const { + width, + height, + } = this.style; + const bg = this.data.background; + this.ctx.translate(width / 2, height / 2); + + this._doClip(this.data.borderRadius, width, height); + if (!bg) { + // 如果未设置背景,则默认使用白色 + this.ctx.fillStyle = '#fff'; + this.ctx.fillRect(-(width / 2), -(height / 2), width, height); + } else if (bg.startsWith('#') || bg.startsWith('rgba') || bg.toLowerCase() === 'transparent') { + // 背景填充颜色 + this.ctx.fillStyle = bg; + this.ctx.fillRect(-(width / 2), -(height / 2), width, height); + } else if (GD.api.isGradient(bg)) { + GD.api.doGradient(bg, width, height, this.ctx); + this.ctx.fillRect(-(width / 2), -(height / 2), width, height); + } else { + // 背景填充图片 + this.ctx.drawImage(bg, -(width / 2), -(height / 2), width, height); + } + this.ctx.restore(); + } + + _drawAbsolute(view) { + // 证明 css 为数组形式,需要合并 + if (view.css && view.css.length) { + /* eslint-disable no-param-reassign */ + view.css = Object.assign(...view.css); + } + switch (view.type) { + case 'image': + this._drawAbsImage(view); + break; + case 'text': + this._fillAbsText(view); + break; + case 'rect': + this._drawAbsRect(view); + break; + case 'qrcode': + this._drawQRCode(view); + break; + default: + break; + } + } + + /** + * 根据 borderRadius 进行裁减 + */ + _doClip(borderRadius, width, height) { + if (borderRadius && width && height) { + const r = Math.min(borderRadius.toPx(), width / 2, height / 2); + // 防止在某些机型上周边有黑框现象,此处如果直接设置 fillStyle 为透明,在 Android 机型上会导致被裁减的图片也变为透明, iOS 和 IDE 上不会 + // globalAlpha 在 1.9.90 起支持,低版本下无效,但把 fillStyle 设为了 white,相对默认的 black 要好点 + this.ctx.globalAlpha = 0; + this.ctx.fillStyle = 'white'; + this.ctx.beginPath(); + this.ctx.arc(-width / 2 + r, -height / 2 + r, r, 1 * Math.PI, 1.5 * Math.PI); + this.ctx.lineTo(width / 2 - r, -height / 2); + this.ctx.arc(width / 2 - r, -height / 2 + r, r, 1.5 * Math.PI, 2 * Math.PI); + this.ctx.lineTo(width / 2, height / 2 - r); + this.ctx.arc(width / 2 - r, height / 2 - r, r, 0, 0.5 * Math.PI); + this.ctx.lineTo(-width / 2 + r, height / 2); + this.ctx.arc(-width / 2 + r, height / 2 - r, r, 0.5 * Math.PI, 1 * Math.PI); + this.ctx.closePath(); + this.ctx.fill(); + // 在 ios 的 6.6.6 版本上 clip 有 bug,禁掉此类型上的 clip,也就意味着,在此版本微信的 ios 设备下无法使用 border 属性 + if (!(getApp().systemInfo && + getApp().systemInfo.version <= '6.6.6' && + getApp().systemInfo.platform === 'ios')) { + this.ctx.clip(); + } + this.ctx.globalAlpha = 1; + } + } + + /** + * 画边框 + */ + _doBorder(view, width, height) { + if (!view.css) { + return; + } + const { + borderRadius, + borderWidth, + borderColor, + } = view.css; + if (!borderWidth) { + return; + } + this.ctx.save(); + this._preProcess(view, true); + let r; + if (borderRadius) { + r = Math.min(borderRadius.toPx(), width / 2, height / 2); + } else { + r = 0; + } + const lineWidth = borderWidth.toPx(); + this.ctx.lineWidth = lineWidth; + this.ctx.strokeStyle = (borderColor || 'black'); + this.ctx.beginPath(); + this.ctx.arc(-width / 2 + r, -height / 2 + r, r + lineWidth / 2, 1 * Math.PI, 1.5 * Math.PI); + this.ctx.lineTo(width / 2 - r, -height / 2 - lineWidth / 2); + this.ctx.arc(width / 2 - r, -height / 2 + r, r + lineWidth / 2, 1.5 * Math.PI, 2 * Math.PI); + this.ctx.lineTo(width / 2 + lineWidth / 2, height / 2 - r); + this.ctx.arc(width / 2 - r, height / 2 - r, r + lineWidth / 2, 0, 0.5 * Math.PI); + this.ctx.lineTo(-width / 2 + r, height / 2 + lineWidth / 2); + this.ctx.arc(-width / 2 + r, height / 2 - r, r + lineWidth / 2, 0.5 * Math.PI, 1 * Math.PI); + this.ctx.closePath(); + this.ctx.stroke(); + this.ctx.restore(); + } + + _preProcess(view, notClip) { + let width = 0; + let height; + let extra; + switch (view.type) { + case 'text': { + const textArray = view.text.split('\n'); + // 处理多个连续的'\n' + for (let i = 0; i < textArray.length; ++i) { + if (textArray[i] === '') { + textArray[i] = ' '; + } + } + const fontWeight = view.css.fontWeight === 'bold' ? 'bold' : 'normal'; + view.css.fontSize = view.css.fontSize ? view.css.fontSize : '20rpx'; + this.ctx.font = `normal ${fontWeight} ${view.css.fontSize.toPx()}px ${view.css.fontFamily ? view.css.fontFamily : 'sans-serif'}`; + // this.ctx.setFontSize(view.css.fontSize.toPx()); + // 计算行数 + let lines = 0; + const linesArray = []; + for (let i = 0; i < textArray.length; ++i) { + const textLength = this.ctx.measureText(textArray[i]).width; + const partWidth = view.css.width ? view.css.width.toPx() : textLength; + const calLines = Math.ceil(textLength / partWidth); + width = partWidth > width ? partWidth : width; + lines += calLines; + linesArray[i] = calLines; + } + lines = view.css.maxLines < lines ? view.css.maxLines : lines; + const lineHeight = view.css.lineHeight ? view.css.lineHeight.toPx() : view.css.fontSize.toPx(); + height = lineHeight * lines; + extra = { + lines: lines, + lineHeight: lineHeight, + textArray: textArray, + linesArray: linesArray, + }; + break; + } + case 'image': { + // image的长宽设置成auto的逻辑处理 + const ratio = getApp().systemInfo.pixelRatio ? getApp().systemInfo.pixelRatio : 2; + // 有css却未设置width或height,则默认为auto + if (view.css) { + if (!view.css.width) { + view.css.width = 'auto'; + } + if (!view.css.height) { + view.css.height = 'auto'; + } + } + if (!view.css || (view.css.width === 'auto' && view.css.height === 'auto')) { + width = Math.round(view.sWidth / ratio); + height = Math.round(view.sHeight / ratio); + } else if (view.css.width === 'auto') { + height = view.css.height.toPx(); + width = view.sWidth / view.sHeight * height; + } else if (view.css.height === 'auto') { + width = view.css.width.toPx(); + height = view.sHeight / view.sWidth * width; + } else { + width = view.css.width.toPx(); + height = view.css.height.toPx(); + } + break; + } + default: + if (!(view.css.width && view.css.height)) { + console.error('You should set width and height'); + return; + } + width = view.css.width.toPx(); + height = view.css.height.toPx(); + break; + } + let x; + if (view.css && view.css.right) { + if (typeof view.css.right === 'string') { + x = this.style.width - view.css.right.toPx(true); + } else { + // 可以用数组方式,把文字长度计算进去 + // [right, 文字id, 乘数(默认 1)] + const rights = view.css.right; + x = this.style.width - rights[0].toPx(true) - this.globalWidth[rights[1]] * (rights[2] || 1); + } + } else if (view.css && view.css.left) { + if (typeof view.css.left === 'string') { + x = view.css.left.toPx(true); + } else { + const lefts = view.css.left; + x = lefts[0].toPx(true) + this.globalWidth[lefts[1]] * (lefts[2] || 1); + } + } else { + x = 0; + } + //const y = view.css && view.css.bottom ? this.style.height - height - view.css.bottom.toPx(true) : (view.css && view.css.top ? view.css.top.toPx(true) : 0); + let y; + if (view.css && view.css.bottom) { + y = this.style.height - height - view.css.bottom.toPx(true); + } else { + if (view.css && view.css.top) { + if (typeof view.css.top === 'string') { + y = view.css.top.toPx(true); + } else { + const tops = view.css.top; + y = tops[0].toPx(true) + this.globalHeight[tops[1]] * (tops[2] || 1); + } + } else { + y = 0 + } + } + + const angle = view.css && view.css.rotate ? this._getAngle(view.css.rotate) : 0; + // 当设置了 right 时,默认 align 用 right,反之用 left + const align = view.css && view.css.align ? view.css.align : (view.css && view.css.right ? 'right' : 'left'); + switch (align) { + case 'center': + this.ctx.translate(x, y + height / 2); + break; + case 'right': + this.ctx.translate(x - width / 2, y + height / 2); + break; + default: + this.ctx.translate(x + width / 2, y + height / 2); + break; + } + this.ctx.rotate(angle); + if (!notClip && view.css && view.css.borderRadius && view.type !== 'rect') { + this._doClip(view.css.borderRadius, width, height); + } + this._doShadow(view); + if (view.id) { + this.globalWidth[view.id] = width; + this.globalHeight[view.id] = height; + } + return { + width: width, + height: height, + x: x, + y: y, + extra: extra, + }; + } + + // 画文字的背景图片 + _doBackground(view) { + this.ctx.save(); + const { + width: rawWidth, + height: rawHeight, + } = this._preProcess(view, true); + + const { + background, + padding, + } = view.css; + let pd = [0, 0, 0, 0]; + if (padding) { + const pdg = padding.split(/\s+/); + if (pdg.length === 1) { + const x = pdg[0].toPx(); + pd = [x, x, x, x]; + } + if (pdg.length === 2) { + const x = pdg[0].toPx(); + const y = pdg[1].toPx(); + pd = [x, y, x, y]; + } + if (pdg.length === 3) { + const x = pdg[0].toPx(); + const y = pdg[1].toPx(); + const z = pdg[2].toPx(); + pd = [x, y, z, y]; + } + if (pdg.length === 4) { + const x = pdg[0].toPx(); + const y = pdg[1].toPx(); + const z = pdg[2].toPx(); + const a = pdg[3].toPx(); + pd = [x, y, z, a]; + } + } + const width = rawWidth + pd[1] + pd[3]; + const height = rawHeight + pd[0] + pd[2]; + this._doClip(view.css.borderRadius, width, height) + if (GD.api.isGradient(background)) { + GD.api.doGradient(background, width, height, this.ctx); + } else { + this.ctx.fillStyle = background; + } + this.ctx.fillRect(-(width / 2), -(height / 2), width, height); + + this.ctx.restore(); + } + + _drawQRCode(view) { + this.ctx.save(); + const { + width, + height, + } = this._preProcess(view); + QR.api.draw(view.content, this.ctx, -width / 2, -height / 2, width, height, view.css.background, view.css.color); + this.ctx.restore(); + this._doBorder(view, width, height); + } + + _drawAbsImage(view) { + if (!view.url) { + return; + } + this.ctx.save(); + const { + width, + height, + } = this._preProcess(view); + // 获得缩放到图片大小级别的裁减框 + let rWidth = view.sWidth; + let rHeight = view.sHeight; + let startX = 0; + let startY = 0; + // 绘画区域比例 + const cp = width / height; + // 原图比例 + const op = view.sWidth / view.sHeight; + if (cp >= op) { + rHeight = rWidth / cp; + startY = Math.round((view.sHeight - rHeight) / 2); + } else { + rWidth = rHeight * cp; + startX = Math.round((view.sWidth - rWidth) / 2); + } + if (view.css && view.css.mode === 'scaleToFill') { + this.ctx.drawImage(view.url, -(width / 2), -(height / 2), width, height); + } else { + this.ctx.drawImage(view.url, startX, startY, rWidth, rHeight, -(width / 2), -(height / 2), width, height); + } + this.ctx.restore(); + this._doBorder(view, width, height); + } + + _fillAbsText(view) { + if (!view.text) { + return; + } + if (view.css.background) { + // 生成背景 + this._doBackground(view); + } + this.ctx.save(); + const { + width, + height, + extra, + } = this._preProcess(view, view.css.background && view.css.borderRadius); + + this.ctx.fillStyle = (view.css.color || 'black'); + const { + lines, + lineHeight, + textArray, + linesArray, + } = extra; + // 如果设置了id,则保留 text 的长度 + if (view.id) { + let textWidth = 0; + for (let i = 0; i < textArray.length; ++i) { + textWidth = this.ctx.measureText(textArray[i]).width > textWidth ? this.ctx.measureText(textArray[i]).width : textWidth; + } + this.globalWidth[view.id] = width ? (textWidth < width ? textWidth : width) : textWidth; + } + let lineIndex = 0; + for (let j = 0; j < textArray.length; ++j) { + const preLineLength = Math.round(textArray[j].length / linesArray[j]); + let start = 0; + let alreadyCount = 0; + for (let i = 0; i < linesArray[j]; ++i) { + // 绘制行数大于最大行数,则直接跳出循环 + if (lineIndex >= lines) { + break; + } + alreadyCount = preLineLength; + let text = textArray[j].substr(start, alreadyCount); + let measuredWith = this.ctx.measureText(text).width; + // 如果测量大小小于width一个字符的大小,则进行补齐,如果测量大小超出 width,则进行减除 + // 如果已经到文本末尾,也不要进行该循环 + while ((start + alreadyCount <= textArray[j].length) && (width - measuredWith > view.css.fontSize.toPx() || measuredWith > width)) { + if (measuredWith < width) { + text = textArray[j].substr(start, ++alreadyCount); + } else { + if (text.length <= 1) { + // 如果只有一个字符时,直接跳出循环 + break; + } + text = textArray[j].substr(start, --alreadyCount); + } + measuredWith = this.ctx.measureText(text).width; + } + start += text.length; + // 如果是最后一行了,发现还有未绘制完的内容,则加... + if (lineIndex === lines - 1 && (j < textArray.length - 1 || start < textArray[j].length)) { + while (this.ctx.measureText(`${text}...`).width > width) { + if (text.length <= 1) { + // 如果只有一个字符时,直接跳出循环 + break; + } + text = text.substring(0, text.length - 1); + } + text += '...'; + measuredWith = this.ctx.measureText(text).width; + } + this.ctx.setTextAlign(view.css.textAlign ? view.css.textAlign : 'left'); + let x; + switch (view.css.textAlign) { + case 'center': + x = 0; + break; + case 'right': + x = (width / 2); + break; + default: + x = -(width / 2); + break; + } + const y = -(height / 2) + (lineIndex === 0 ? view.css.fontSize.toPx() : (view.css.fontSize.toPx() + lineIndex * lineHeight)); + lineIndex++; + if (view.css.textStyle === 'stroke') { + this.ctx.strokeText(text, x, y, measuredWith); + } else { + this.ctx.fillText(text, x, y, measuredWith); + } + const fontSize = view.css.fontSize.toPx(); + if (view.css.textDecoration) { + this.ctx.beginPath(); + if (/\bunderline\b/.test(view.css.textDecoration)) { + this.ctx.moveTo(x, y); + this.ctx.lineTo(x + measuredWith, y); + } + if (/\boverline\b/.test(view.css.textDecoration)) { + this.ctx.moveTo(x, y - fontSize); + this.ctx.lineTo(x + measuredWith, y - fontSize); + } + if (/\bline-through\b/.test(view.css.textDecoration)) { + this.ctx.moveTo(x, y - fontSize / 3); + this.ctx.lineTo(x + measuredWith, y - fontSize / 3); + } + this.ctx.closePath(); + this.ctx.strokeStyle = view.css.color; + this.ctx.stroke(); + } + } + } + this.ctx.restore(); + this._doBorder(view, width, height); + } + + _drawAbsRect(view) { + this.ctx.save(); + const { + width, + height, + } = this._preProcess(view); + if (GD.api.isGradient(view.css.color)) { + GD.api.doGradient(view.css.color, width, height, this.ctx); + } else { + this.ctx.fillStyle = view.css.color; + } + const borderRadius = view.css.borderRadius + const r = borderRadius ? Math.min(borderRadius.toPx(), width / 2, height / 2) : 0; + this.ctx.beginPath(); + this.ctx.arc(-width / 2 + r, -height / 2 + r, r, 1 * Math.PI, 1.5 * Math.PI); //左上角圆弧 + this.ctx.lineTo(width / 2 - r, -height / 2); + this.ctx.arc(width / 2 - r, -height / 2 + r, r, 1.5 * Math.PI, 2 * Math.PI); // 右上角圆弧 + this.ctx.lineTo(width / 2, height / 2 - r); + this.ctx.arc(width / 2 - r, height / 2 - r, r, 0, 0.5 * Math.PI); // 右下角圆弧 + this.ctx.lineTo(-width / 2 + r, height / 2); + this.ctx.arc(-width / 2 + r, height / 2 - r, r, 0.5 * Math.PI, 1 * Math.PI); // 左下角圆弧 + this.ctx.closePath(); + this.ctx.fill(); + this.ctx.restore(); + this._doBorder(view, width, height); + } + + // shadow 支持 (x, y, blur, color), 不支持 spread + // shadow:0px 0px 10px rgba(0,0,0,0.1); + _doShadow(view) { + if (!view.css || !view.css.shadow) { + return; + } + const box = view.css.shadow.replace(/,\s+/g, ',').split(' '); + if (box.length > 4) { + console.error('shadow don\'t spread option'); + return; + } + this.ctx.shadowOffsetX = parseInt(box[0], 10); + this.ctx.shadowOffsetY = parseInt(box[1], 10); + this.ctx.shadowBlur = parseInt(box[2], 10); + this.ctx.shadowColor = box[3]; + } + + _getAngle(angle) { + return Number(angle) * Math.PI / 180; + } +} \ No newline at end of file diff --git a/static/painter/lib/qrcode.js b/static/painter/lib/qrcode.js new file mode 100644 index 0000000..264c202 --- /dev/null +++ b/static/painter/lib/qrcode.js @@ -0,0 +1,784 @@ +/* eslint-disable */ +!(function () { + + // alignment pattern + var adelta = [ + 0, 11, 15, 19, 23, 27, 31, + 16, 18, 20, 22, 24, 26, 28, 20, 22, 24, 24, 26, 28, 28, 22, 24, 24, + 26, 26, 28, 28, 24, 24, 26, 26, 26, 28, 28, 24, 26, 26, 26, 28, 28 + ]; + + // version block + var vpat = [ + 0xc94, 0x5bc, 0xa99, 0x4d3, 0xbf6, 0x762, 0x847, 0x60d, + 0x928, 0xb78, 0x45d, 0xa17, 0x532, 0x9a6, 0x683, 0x8c9, + 0x7ec, 0xec4, 0x1e1, 0xfab, 0x08e, 0xc1a, 0x33f, 0xd75, + 0x250, 0x9d5, 0x6f0, 0x8ba, 0x79f, 0xb0b, 0x42e, 0xa64, + 0x541, 0xc69 + ]; + + // final format bits with mask: level << 3 | mask + var fmtword = [ + 0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976, //L + 0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0, //M + 0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed, //Q + 0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b //H + ]; + + // 4 per version: number of blocks 1,2; data width; ecc width + var eccblocks = [ + 1, 0, 19, 7, 1, 0, 16, 10, 1, 0, 13, 13, 1, 0, 9, 17, + 1, 0, 34, 10, 1, 0, 28, 16, 1, 0, 22, 22, 1, 0, 16, 28, + 1, 0, 55, 15, 1, 0, 44, 26, 2, 0, 17, 18, 2, 0, 13, 22, + 1, 0, 80, 20, 2, 0, 32, 18, 2, 0, 24, 26, 4, 0, 9, 16, + 1, 0, 108, 26, 2, 0, 43, 24, 2, 2, 15, 18, 2, 2, 11, 22, + 2, 0, 68, 18, 4, 0, 27, 16, 4, 0, 19, 24, 4, 0, 15, 28, + 2, 0, 78, 20, 4, 0, 31, 18, 2, 4, 14, 18, 4, 1, 13, 26, + 2, 0, 97, 24, 2, 2, 38, 22, 4, 2, 18, 22, 4, 2, 14, 26, + 2, 0, 116, 30, 3, 2, 36, 22, 4, 4, 16, 20, 4, 4, 12, 24, + 2, 2, 68, 18, 4, 1, 43, 26, 6, 2, 19, 24, 6, 2, 15, 28, + 4, 0, 81, 20, 1, 4, 50, 30, 4, 4, 22, 28, 3, 8, 12, 24, + 2, 2, 92, 24, 6, 2, 36, 22, 4, 6, 20, 26, 7, 4, 14, 28, + 4, 0, 107, 26, 8, 1, 37, 22, 8, 4, 20, 24, 12, 4, 11, 22, + 3, 1, 115, 30, 4, 5, 40, 24, 11, 5, 16, 20, 11, 5, 12, 24, + 5, 1, 87, 22, 5, 5, 41, 24, 5, 7, 24, 30, 11, 7, 12, 24, + 5, 1, 98, 24, 7, 3, 45, 28, 15, 2, 19, 24, 3, 13, 15, 30, + 1, 5, 107, 28, 10, 1, 46, 28, 1, 15, 22, 28, 2, 17, 14, 28, + 5, 1, 120, 30, 9, 4, 43, 26, 17, 1, 22, 28, 2, 19, 14, 28, + 3, 4, 113, 28, 3, 11, 44, 26, 17, 4, 21, 26, 9, 16, 13, 26, + 3, 5, 107, 28, 3, 13, 41, 26, 15, 5, 24, 30, 15, 10, 15, 28, + 4, 4, 116, 28, 17, 0, 42, 26, 17, 6, 22, 28, 19, 6, 16, 30, + 2, 7, 111, 28, 17, 0, 46, 28, 7, 16, 24, 30, 34, 0, 13, 24, + 4, 5, 121, 30, 4, 14, 47, 28, 11, 14, 24, 30, 16, 14, 15, 30, + 6, 4, 117, 30, 6, 14, 45, 28, 11, 16, 24, 30, 30, 2, 16, 30, + 8, 4, 106, 26, 8, 13, 47, 28, 7, 22, 24, 30, 22, 13, 15, 30, + 10, 2, 114, 28, 19, 4, 46, 28, 28, 6, 22, 28, 33, 4, 16, 30, + 8, 4, 122, 30, 22, 3, 45, 28, 8, 26, 23, 30, 12, 28, 15, 30, + 3, 10, 117, 30, 3, 23, 45, 28, 4, 31, 24, 30, 11, 31, 15, 30, + 7, 7, 116, 30, 21, 7, 45, 28, 1, 37, 23, 30, 19, 26, 15, 30, + 5, 10, 115, 30, 19, 10, 47, 28, 15, 25, 24, 30, 23, 25, 15, 30, + 13, 3, 115, 30, 2, 29, 46, 28, 42, 1, 24, 30, 23, 28, 15, 30, + 17, 0, 115, 30, 10, 23, 46, 28, 10, 35, 24, 30, 19, 35, 15, 30, + 17, 1, 115, 30, 14, 21, 46, 28, 29, 19, 24, 30, 11, 46, 15, 30, + 13, 6, 115, 30, 14, 23, 46, 28, 44, 7, 24, 30, 59, 1, 16, 30, + 12, 7, 121, 30, 12, 26, 47, 28, 39, 14, 24, 30, 22, 41, 15, 30, + 6, 14, 121, 30, 6, 34, 47, 28, 46, 10, 24, 30, 2, 64, 15, 30, + 17, 4, 122, 30, 29, 14, 46, 28, 49, 10, 24, 30, 24, 46, 15, 30, + 4, 18, 122, 30, 13, 32, 46, 28, 48, 14, 24, 30, 42, 32, 15, 30, + 20, 4, 117, 30, 40, 7, 47, 28, 43, 22, 24, 30, 10, 67, 15, 30, + 19, 6, 118, 30, 18, 31, 47, 28, 34, 34, 24, 30, 20, 61, 15, 30 + ]; + + // Galois field log table + var glog = [ + 0xff, 0x00, 0x01, 0x19, 0x02, 0x32, 0x1a, 0xc6, 0x03, 0xdf, 0x33, 0xee, 0x1b, 0x68, 0xc7, 0x4b, + 0x04, 0x64, 0xe0, 0x0e, 0x34, 0x8d, 0xef, 0x81, 0x1c, 0xc1, 0x69, 0xf8, 0xc8, 0x08, 0x4c, 0x71, + 0x05, 0x8a, 0x65, 0x2f, 0xe1, 0x24, 0x0f, 0x21, 0x35, 0x93, 0x8e, 0xda, 0xf0, 0x12, 0x82, 0x45, + 0x1d, 0xb5, 0xc2, 0x7d, 0x6a, 0x27, 0xf9, 0xb9, 0xc9, 0x9a, 0x09, 0x78, 0x4d, 0xe4, 0x72, 0xa6, + 0x06, 0xbf, 0x8b, 0x62, 0x66, 0xdd, 0x30, 0xfd, 0xe2, 0x98, 0x25, 0xb3, 0x10, 0x91, 0x22, 0x88, + 0x36, 0xd0, 0x94, 0xce, 0x8f, 0x96, 0xdb, 0xbd, 0xf1, 0xd2, 0x13, 0x5c, 0x83, 0x38, 0x46, 0x40, + 0x1e, 0x42, 0xb6, 0xa3, 0xc3, 0x48, 0x7e, 0x6e, 0x6b, 0x3a, 0x28, 0x54, 0xfa, 0x85, 0xba, 0x3d, + 0xca, 0x5e, 0x9b, 0x9f, 0x0a, 0x15, 0x79, 0x2b, 0x4e, 0xd4, 0xe5, 0xac, 0x73, 0xf3, 0xa7, 0x57, + 0x07, 0x70, 0xc0, 0xf7, 0x8c, 0x80, 0x63, 0x0d, 0x67, 0x4a, 0xde, 0xed, 0x31, 0xc5, 0xfe, 0x18, + 0xe3, 0xa5, 0x99, 0x77, 0x26, 0xb8, 0xb4, 0x7c, 0x11, 0x44, 0x92, 0xd9, 0x23, 0x20, 0x89, 0x2e, + 0x37, 0x3f, 0xd1, 0x5b, 0x95, 0xbc, 0xcf, 0xcd, 0x90, 0x87, 0x97, 0xb2, 0xdc, 0xfc, 0xbe, 0x61, + 0xf2, 0x56, 0xd3, 0xab, 0x14, 0x2a, 0x5d, 0x9e, 0x84, 0x3c, 0x39, 0x53, 0x47, 0x6d, 0x41, 0xa2, + 0x1f, 0x2d, 0x43, 0xd8, 0xb7, 0x7b, 0xa4, 0x76, 0xc4, 0x17, 0x49, 0xec, 0x7f, 0x0c, 0x6f, 0xf6, + 0x6c, 0xa1, 0x3b, 0x52, 0x29, 0x9d, 0x55, 0xaa, 0xfb, 0x60, 0x86, 0xb1, 0xbb, 0xcc, 0x3e, 0x5a, + 0xcb, 0x59, 0x5f, 0xb0, 0x9c, 0xa9, 0xa0, 0x51, 0x0b, 0xf5, 0x16, 0xeb, 0x7a, 0x75, 0x2c, 0xd7, + 0x4f, 0xae, 0xd5, 0xe9, 0xe6, 0xe7, 0xad, 0xe8, 0x74, 0xd6, 0xf4, 0xea, 0xa8, 0x50, 0x58, 0xaf + ]; + + // Galios field exponent table + var gexp = [ + 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1d, 0x3a, 0x74, 0xe8, 0xcd, 0x87, 0x13, 0x26, + 0x4c, 0x98, 0x2d, 0x5a, 0xb4, 0x75, 0xea, 0xc9, 0x8f, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, + 0x9d, 0x27, 0x4e, 0x9c, 0x25, 0x4a, 0x94, 0x35, 0x6a, 0xd4, 0xb5, 0x77, 0xee, 0xc1, 0x9f, 0x23, + 0x46, 0x8c, 0x05, 0x0a, 0x14, 0x28, 0x50, 0xa0, 0x5d, 0xba, 0x69, 0xd2, 0xb9, 0x6f, 0xde, 0xa1, + 0x5f, 0xbe, 0x61, 0xc2, 0x99, 0x2f, 0x5e, 0xbc, 0x65, 0xca, 0x89, 0x0f, 0x1e, 0x3c, 0x78, 0xf0, + 0xfd, 0xe7, 0xd3, 0xbb, 0x6b, 0xd6, 0xb1, 0x7f, 0xfe, 0xe1, 0xdf, 0xa3, 0x5b, 0xb6, 0x71, 0xe2, + 0xd9, 0xaf, 0x43, 0x86, 0x11, 0x22, 0x44, 0x88, 0x0d, 0x1a, 0x34, 0x68, 0xd0, 0xbd, 0x67, 0xce, + 0x81, 0x1f, 0x3e, 0x7c, 0xf8, 0xed, 0xc7, 0x93, 0x3b, 0x76, 0xec, 0xc5, 0x97, 0x33, 0x66, 0xcc, + 0x85, 0x17, 0x2e, 0x5c, 0xb8, 0x6d, 0xda, 0xa9, 0x4f, 0x9e, 0x21, 0x42, 0x84, 0x15, 0x2a, 0x54, + 0xa8, 0x4d, 0x9a, 0x29, 0x52, 0xa4, 0x55, 0xaa, 0x49, 0x92, 0x39, 0x72, 0xe4, 0xd5, 0xb7, 0x73, + 0xe6, 0xd1, 0xbf, 0x63, 0xc6, 0x91, 0x3f, 0x7e, 0xfc, 0xe5, 0xd7, 0xb3, 0x7b, 0xf6, 0xf1, 0xff, + 0xe3, 0xdb, 0xab, 0x4b, 0x96, 0x31, 0x62, 0xc4, 0x95, 0x37, 0x6e, 0xdc, 0xa5, 0x57, 0xae, 0x41, + 0x82, 0x19, 0x32, 0x64, 0xc8, 0x8d, 0x07, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xdd, 0xa7, 0x53, 0xa6, + 0x51, 0xa2, 0x59, 0xb2, 0x79, 0xf2, 0xf9, 0xef, 0xc3, 0x9b, 0x2b, 0x56, 0xac, 0x45, 0x8a, 0x09, + 0x12, 0x24, 0x48, 0x90, 0x3d, 0x7a, 0xf4, 0xf5, 0xf7, 0xf3, 0xfb, 0xeb, 0xcb, 0x8b, 0x0b, 0x16, + 0x2c, 0x58, 0xb0, 0x7d, 0xfa, 0xe9, 0xcf, 0x83, 0x1b, 0x36, 0x6c, 0xd8, 0xad, 0x47, 0x8e, 0x00 + ]; + + // Working buffers: + // data input and ecc append, image working buffer, fixed part of image, run lengths for badness + var strinbuf = [], eccbuf = [], qrframe = [], framask = [], rlens = []; + // Control values - width is based on version, last 4 are from table. + var version, width, neccblk1, neccblk2, datablkw, eccblkwid; + var ecclevel = 2; + // set bit to indicate cell in qrframe is immutable. symmetric around diagonal + function setmask(x, y) { + var bt; + if (x > y) { + bt = x; + x = y; + y = bt; + } + // y*y = 1+3+5... + bt = y; + bt *= y; + bt += y; + bt >>= 1; + bt += x; + framask[bt] = 1; + } + + // enter alignment pattern - black to qrframe, white to mask (later black frame merged to mask) + function putalign(x, y) { + var j; + + qrframe[x + width * y] = 1; + for (j = -2; j < 2; j++) { + qrframe[(x + j) + width * (y - 2)] = 1; + qrframe[(x - 2) + width * (y + j + 1)] = 1; + qrframe[(x + 2) + width * (y + j)] = 1; + qrframe[(x + j + 1) + width * (y + 2)] = 1; + } + for (j = 0; j < 2; j++) { + setmask(x - 1, y + j); + setmask(x + 1, y - j); + setmask(x - j, y - 1); + setmask(x + j, y + 1); + } + } + + //======================================================================== + // Reed Solomon error correction + // exponentiation mod N + function modnn(x) { + while (x >= 255) { + x -= 255; + x = (x >> 8) + (x & 255); + } + return x; + } + + var genpoly = []; + + // Calculate and append ECC data to data block. Block is in strinbuf, indexes to buffers given. + function appendrs(data, dlen, ecbuf, eclen) { + var i, j, fb; + + for (i = 0; i < eclen; i++) + strinbuf[ecbuf + i] = 0; + for (i = 0; i < dlen; i++) { + fb = glog[strinbuf[data + i] ^ strinbuf[ecbuf]]; + if (fb != 255) /* fb term is non-zero */ + for (j = 1; j < eclen; j++) + strinbuf[ecbuf + j - 1] = strinbuf[ecbuf + j] ^ gexp[modnn(fb + genpoly[eclen - j])]; + else + for (j = ecbuf; j < ecbuf + eclen; j++) + strinbuf[j] = strinbuf[j + 1]; + strinbuf[ecbuf + eclen - 1] = fb == 255 ? 0 : gexp[modnn(fb + genpoly[0])]; + } + } + + //======================================================================== + // Frame data insert following the path rules + + // check mask - since symmetrical use half. + function ismasked(x, y) { + var bt; + if (x > y) { + bt = x; + x = y; + y = bt; + } + bt = y; + bt += y * y; + bt >>= 1; + bt += x; + return framask[bt]; + } + + //======================================================================== + // Apply the selected mask out of the 8. + function applymask(m) { + var x, y, r3x, r3y; + + switch (m) { + case 0: + for (y = 0; y < width; y++) + for (x = 0; x < width; x++) + if (!((x + y) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + break; + case 1: + for (y = 0; y < width; y++) + for (x = 0; x < width; x++) + if (!(y & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + break; + case 2: + for (y = 0; y < width; y++) + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!r3x && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + break; + case 3: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = r3y, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!r3x && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 4: + for (y = 0; y < width; y++) + for (r3x = 0, r3y = ((y >> 1) & 1), x = 0; x < width; x++ , r3x++) { + if (r3x == 3) { + r3x = 0; + r3y = !r3y; + } + if (!r3y && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + break; + case 5: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!((x & y & 1) + !(!r3x | !r3y)) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 6: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!(((x & y & 1) + (r3x && (r3x == r3y))) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + case 7: + for (r3y = 0, y = 0; y < width; y++ , r3y++) { + if (r3y == 3) + r3y = 0; + for (r3x = 0, x = 0; x < width; x++ , r3x++) { + if (r3x == 3) + r3x = 0; + if (!(((r3x && (r3x == r3y)) + ((x + y) & 1)) & 1) && !ismasked(x, y)) + qrframe[x + y * width] ^= 1; + } + } + break; + } + return; + } + + // Badness coefficients. + var N1 = 3, N2 = 3, N3 = 40, N4 = 10; + + // Using the table of the length of each run, calculate the amount of bad image + // - long runs or those that look like finders; called twice, once each for X and Y + function badruns(length) { + var i; + var runsbad = 0; + for (i = 0; i <= length; i++) + if (rlens[i] >= 5) + runsbad += N1 + rlens[i] - 5; + // BwBBBwB as in finder + for (i = 3; i < length - 1; i += 2) + if (rlens[i - 2] == rlens[i + 2] + && rlens[i + 2] == rlens[i - 1] + && rlens[i - 1] == rlens[i + 1] + && rlens[i - 1] * 3 == rlens[i] + // white around the black pattern? Not part of spec + && (rlens[i - 3] == 0 // beginning + || i + 3 > length // end + || rlens[i - 3] * 3 >= rlens[i] * 4 || rlens[i + 3] * 3 >= rlens[i] * 4) + ) + runsbad += N3; + return runsbad; + } + + // Calculate how bad the masked image is - blocks, imbalance, runs, or finders. + function badcheck() { + var x, y, h, b, b1; + var thisbad = 0; + var bw = 0; + + // blocks of same color. + for (y = 0; y < width - 1; y++) + for (x = 0; x < width - 1; x++) + if ((qrframe[x + width * y] && qrframe[(x + 1) + width * y] + && qrframe[x + width * (y + 1)] && qrframe[(x + 1) + width * (y + 1)]) // all black + || !(qrframe[x + width * y] || qrframe[(x + 1) + width * y] + || qrframe[x + width * (y + 1)] || qrframe[(x + 1) + width * (y + 1)])) // all white + thisbad += N2; + + // X runs + for (y = 0; y < width; y++) { + rlens[0] = 0; + for (h = b = x = 0; x < width; x++) { + if ((b1 = qrframe[x + width * y]) == b) + rlens[h]++; + else + rlens[++h] = 1; + b = b1; + bw += b ? 1 : -1; + } + thisbad += badruns(h); + } + + // black/white imbalance + if (bw < 0) + bw = -bw; + + var big = bw; + var count = 0; + big += big << 2; + big <<= 1; + while (big > width * width) + big -= width * width, count++; + thisbad += count * N4; + + // Y runs + for (x = 0; x < width; x++) { + rlens[0] = 0; + for (h = b = y = 0; y < width; y++) { + if ((b1 = qrframe[x + width * y]) == b) + rlens[h]++; + else + rlens[++h] = 1; + b = b1; + } + thisbad += badruns(h); + } + return thisbad; + } + + function genframe(instring) { + var x, y, k, t, v, i, j, m; + + // find the smallest version that fits the string + t = instring.length; + version = 0; + do { + version++; + k = (ecclevel - 1) * 4 + (version - 1) * 16; + neccblk1 = eccblocks[k++]; + neccblk2 = eccblocks[k++]; + datablkw = eccblocks[k++]; + eccblkwid = eccblocks[k]; + k = datablkw * (neccblk1 + neccblk2) + neccblk2 - 3 + (version <= 9); + if (t <= k) + break; + } while (version < 40); + + // FIXME - insure that it fits insted of being truncated + width = 17 + 4 * version; + + // allocate, clear and setup data structures + v = datablkw + (datablkw + eccblkwid) * (neccblk1 + neccblk2) + neccblk2; + for (t = 0; t < v; t++) + eccbuf[t] = 0; + strinbuf = instring.slice(0); + + for (t = 0; t < width * width; t++) + qrframe[t] = 0; + + for (t = 0; t < (width * (width + 1) + 1) / 2; t++) + framask[t] = 0; + + // insert finders - black to frame, white to mask + for (t = 0; t < 3; t++) { + k = 0; + y = 0; + if (t == 1) + k = (width - 7); + if (t == 2) + y = (width - 7); + qrframe[(y + 3) + width * (k + 3)] = 1; + for (x = 0; x < 6; x++) { + qrframe[(y + x) + width * k] = 1; + qrframe[y + width * (k + x + 1)] = 1; + qrframe[(y + 6) + width * (k + x)] = 1; + qrframe[(y + x + 1) + width * (k + 6)] = 1; + } + for (x = 1; x < 5; x++) { + setmask(y + x, k + 1); + setmask(y + 1, k + x + 1); + setmask(y + 5, k + x); + setmask(y + x + 1, k + 5); + } + for (x = 2; x < 4; x++) { + qrframe[(y + x) + width * (k + 2)] = 1; + qrframe[(y + 2) + width * (k + x + 1)] = 1; + qrframe[(y + 4) + width * (k + x)] = 1; + qrframe[(y + x + 1) + width * (k + 4)] = 1; + } + } + + // alignment blocks + if (version > 1) { + t = adelta[version]; + y = width - 7; + for (; ;) { + x = width - 7; + while (x > t - 3) { + putalign(x, y); + if (x < t) + break; + x -= t; + } + if (y <= t + 9) + break; + y -= t; + putalign(6, y); + putalign(y, 6); + } + } + + // single black + qrframe[8 + width * (width - 8)] = 1; + + // timing gap - mask only + for (y = 0; y < 7; y++) { + setmask(7, y); + setmask(width - 8, y); + setmask(7, y + width - 7); + } + for (x = 0; x < 8; x++) { + setmask(x, 7); + setmask(x + width - 8, 7); + setmask(x, width - 8); + } + + // reserve mask-format area + for (x = 0; x < 9; x++) + setmask(x, 8); + for (x = 0; x < 8; x++) { + setmask(x + width - 8, 8); + setmask(8, x); + } + for (y = 0; y < 7; y++) + setmask(8, y + width - 7); + + // timing row/col + for (x = 0; x < width - 14; x++) + if (x & 1) { + setmask(8 + x, 6); + setmask(6, 8 + x); + } + else { + qrframe[(8 + x) + width * 6] = 1; + qrframe[6 + width * (8 + x)] = 1; + } + + // version block + if (version > 6) { + t = vpat[version - 7]; + k = 17; + for (x = 0; x < 6; x++) + for (y = 0; y < 3; y++ , k--) + if (1 & (k > 11 ? version >> (k - 12) : t >> k)) { + qrframe[(5 - x) + width * (2 - y + width - 11)] = 1; + qrframe[(2 - y + width - 11) + width * (5 - x)] = 1; + } + else { + setmask(5 - x, 2 - y + width - 11); + setmask(2 - y + width - 11, 5 - x); + } + } + + // sync mask bits - only set above for white spaces, so add in black bits + for (y = 0; y < width; y++) + for (x = 0; x <= y; x++) + if (qrframe[x + width * y]) + setmask(x, y); + + // convert string to bitstream + // 8 bit data to QR-coded 8 bit data (numeric or alphanum, or kanji not supported) + v = strinbuf.length; + + // string to array + for (i = 0; i < v; i++) + eccbuf[i] = strinbuf.charCodeAt(i); + strinbuf = eccbuf.slice(0); + + // calculate max string length + x = datablkw * (neccblk1 + neccblk2) + neccblk2; + if (v >= x - 2) { + v = x - 2; + if (version > 9) + v--; + } + + // shift and repack to insert length prefix + i = v; + if (version > 9) { + strinbuf[i + 2] = 0; + strinbuf[i + 3] = 0; + while (i--) { + t = strinbuf[i]; + strinbuf[i + 3] |= 255 & (t << 4); + strinbuf[i + 2] = t >> 4; + } + strinbuf[2] |= 255 & (v << 4); + strinbuf[1] = v >> 4; + strinbuf[0] = 0x40 | (v >> 12); + } + else { + strinbuf[i + 1] = 0; + strinbuf[i + 2] = 0; + while (i--) { + t = strinbuf[i]; + strinbuf[i + 2] |= 255 & (t << 4); + strinbuf[i + 1] = t >> 4; + } + strinbuf[1] |= 255 & (v << 4); + strinbuf[0] = 0x40 | (v >> 4); + } + // fill to end with pad pattern + i = v + 3 - (version < 10); + while (i < x) { + strinbuf[i++] = 0xec; + // buffer has room if (i == x) break; + strinbuf[i++] = 0x11; + } + + // calculate and append ECC + + // calculate generator polynomial + genpoly[0] = 1; + for (i = 0; i < eccblkwid; i++) { + genpoly[i + 1] = 1; + for (j = i; j > 0; j--) + genpoly[j] = genpoly[j] + ? genpoly[j - 1] ^ gexp[modnn(glog[genpoly[j]] + i)] : genpoly[j - 1]; + genpoly[0] = gexp[modnn(glog[genpoly[0]] + i)]; + } + for (i = 0; i <= eccblkwid; i++) + genpoly[i] = glog[genpoly[i]]; // use logs for genpoly[] to save calc step + + // append ecc to data buffer + k = x; + y = 0; + for (i = 0; i < neccblk1; i++) { + appendrs(y, datablkw, k, eccblkwid); + y += datablkw; + k += eccblkwid; + } + for (i = 0; i < neccblk2; i++) { + appendrs(y, datablkw + 1, k, eccblkwid); + y += datablkw + 1; + k += eccblkwid; + } + // interleave blocks + y = 0; + for (i = 0; i < datablkw; i++) { + for (j = 0; j < neccblk1; j++) + eccbuf[y++] = strinbuf[i + j * datablkw]; + for (j = 0; j < neccblk2; j++) + eccbuf[y++] = strinbuf[(neccblk1 * datablkw) + i + (j * (datablkw + 1))]; + } + for (j = 0; j < neccblk2; j++) + eccbuf[y++] = strinbuf[(neccblk1 * datablkw) + i + (j * (datablkw + 1))]; + for (i = 0; i < eccblkwid; i++) + for (j = 0; j < neccblk1 + neccblk2; j++) + eccbuf[y++] = strinbuf[x + i + j * eccblkwid]; + strinbuf = eccbuf; + + // pack bits into frame avoiding masked area. + x = y = width - 1; + k = v = 1; // up, minus + /* inteleaved data and ecc codes */ + m = (datablkw + eccblkwid) * (neccblk1 + neccblk2) + neccblk2; + for (i = 0; i < m; i++) { + t = strinbuf[i]; + for (j = 0; j < 8; j++ , t <<= 1) { + if (0x80 & t) + qrframe[x + width * y] = 1; + do { // find next fill position + if (v) + x--; + else { + x++; + if (k) { + if (y != 0) + y--; + else { + x -= 2; + k = !k; + if (x == 6) { + x--; + y = 9; + } + } + } + else { + if (y != width - 1) + y++; + else { + x -= 2; + k = !k; + if (x == 6) { + x--; + y -= 8; + } + } + } + } + v = !v; + } while (ismasked(x, y)); + } + } + + // save pre-mask copy of frame + strinbuf = qrframe.slice(0); + t = 0; // best + y = 30000; // demerit + // for instead of while since in original arduino code + // if an early mask was "good enough" it wouldn't try for a better one + // since they get more complex and take longer. + for (k = 0; k < 8; k++) { + applymask(k); // returns black-white imbalance + x = badcheck(); + if (x < y) { // current mask better than previous best? + y = x; + t = k; + } + if (t == 7) + break; // don't increment i to a void redoing mask + qrframe = strinbuf.slice(0); // reset for next pass + } + if (t != k) // redo best mask - none good enough, last wasn't t + applymask(t); + + // add in final mask/ecclevel bytes + y = fmtword[t + ((ecclevel - 1) << 3)]; + // low byte + for (k = 0; k < 8; k++ , y >>= 1) + if (y & 1) { + qrframe[(width - 1 - k) + width * 8] = 1; + if (k < 6) + qrframe[8 + width * k] = 1; + else + qrframe[8 + width * (k + 1)] = 1; + } + // high byte + for (k = 0; k < 7; k++ , y >>= 1) + if (y & 1) { + qrframe[8 + width * (width - 7 + k)] = 1; + if (k) + qrframe[(6 - k) + width * 8] = 1; + else + qrframe[7 + width * 8] = 1; + } + return qrframe; + } + + + + + var _canvas = null; + + var api = { + + get ecclevel() { + return ecclevel; + }, + + set ecclevel(val) { + ecclevel = val; + }, + + get size() { + return _size; + }, + + set size(val) { + _size = val + }, + + get canvas() { + return _canvas; + }, + + set canvas(el) { + _canvas = el; + }, + + getFrame: function (string) { + return genframe(string); + }, + //这里的utf16to8(str)是对Text中的字符串进行转码,让其支持中文 + utf16to8: function (str) { + var out, i, len, c; + + out = ""; + len = str.length; + for (i = 0; i < len; i++) { + c = str.charCodeAt(i); + if ((c >= 0x0001) && (c <= 0x007F)) { + out += str.charAt(i); + } else if (c > 0x07FF) { + out += String.fromCharCode(0xE0 | ((c >> 12) & 0x0F)); + out += String.fromCharCode(0x80 | ((c >> 6) & 0x3F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } else { + out += String.fromCharCode(0xC0 | ((c >> 6) & 0x1F)); + out += String.fromCharCode(0x80 | ((c >> 0) & 0x3F)); + } + } + return out; + }, + /** + * 新增$this参数,传入组件的this,兼容在组件中生成 + * @param bg 目前只能设置颜色值 + */ + draw: function (str, ctx, startX, startY, cavW, cavH, bg, color, $this, ecc) { + var that = this; + ecclevel = ecc || ecclevel; + if (!ctx) { + console.warn('No canvas provided to draw QR code in!') + return; + } + var size = Math.min(cavW, cavH); + str = that.utf16to8(str);//增加中文显示 + + var frame = that.getFrame(str); + var px = size / width; + if (bg) { + ctx.setFillStyle(bg) + ctx.fillRect(startX, startY, cavW, cavW); + } + ctx.setFillStyle(color || 'black'); + for (var i = 0; i < width; i++) { + for (var j = 0; j < width; j++) { + if (frame[j * width + i]) { + ctx.fillRect(startX + px * i, startY + px * j, px, px); + } + } + } + } + } + module.exports = { api } + // exports.draw = api; + +})(); \ No newline at end of file diff --git a/static/painter/lib/util.js b/static/painter/lib/util.js new file mode 100644 index 0000000..292df2a --- /dev/null +++ b/static/painter/lib/util.js @@ -0,0 +1,68 @@ + +function isValidUrl(url) { + return /(ht|f)tp(s?):\/\/([^ \\/]*\.)+[^ \\/]*(:[0-9]+)?\/?/.test(url); +} + +/** + * 深度对比两个对象是否一致 + * from: https://github.com/epoberezkin/fast-deep-equal + * @param {Object} a 对象a + * @param {Object} b 对象b + * @return {Boolean} 是否相同 + */ +/* eslint-disable */ +function equal(a, b) { + if (a === b) return true; + + if (a && b && typeof a == 'object' && typeof b == 'object') { + var arrA = Array.isArray(a) + , arrB = Array.isArray(b) + , i + , length + , key; + + if (arrA && arrB) { + length = a.length; + if (length != b.length) return false; + for (i = length; i-- !== 0;) + if (!equal(a[i], b[i])) return false; + return true; + } + + if (arrA != arrB) return false; + + var dateA = a instanceof Date + , dateB = b instanceof Date; + if (dateA != dateB) return false; + if (dateA && dateB) return a.getTime() == b.getTime(); + + var regexpA = a instanceof RegExp + , regexpB = b instanceof RegExp; + if (regexpA != regexpB) return false; + if (regexpA && regexpB) return a.toString() == b.toString(); + + var keys = Object.keys(a); + length = keys.length; + + if (length !== Object.keys(b).length) + return false; + + for (i = length; i-- !== 0;) + if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; + + for (i = length; i-- !== 0;) { + key = keys[i]; + if (!equal(a[key], b[key])) return false; + } + + return true; + } + + return a!==a && b!==b; +} + +module.exports = { + isValidUrl, + equal +}; + diff --git a/static/painter/painter.js b/static/painter/painter.js new file mode 100644 index 0000000..a434af9 --- /dev/null +++ b/static/painter/painter.js @@ -0,0 +1,258 @@ +import Pen from './lib/pen'; +import Downloader from './lib/downloader'; + +const util = require('./lib/util'); + +const downloader = new Downloader(); + +// 最大尝试的绘制次数 +const MAX_PAINT_COUNT = 5; +Component({ + canvasWidthInPx: 0, + canvasHeightInPx: 0, + paintCount: 0, + /** + * 组件的属性列表 + */ + properties: { + customStyle: { + type: String, + }, + palette: { + type: Object, + observer: function (newVal, oldVal) { + if (this.isNeedRefresh(newVal, oldVal)) { + this.paintCount = 0; + this.startPaint(); + } + }, + }, + widthPixels: { + type: Number, + value: 0 + }, + // 启用脏检查,默认 false + dirty: { + type: Boolean, + value: false, + }, + }, + + data: { + picURL: '', + showCanvas: true, + painterStyle: '', + }, + + methods: { + /** + * 判断一个 object 是否为 空 + * @param {object} object + */ + isEmpty(object) { + for (const i in object) { + return false; + } + return true; + }, + + isNeedRefresh(newVal, oldVal) { + if (!newVal || this.isEmpty(newVal) || (this.data.dirty && util.equal(newVal, oldVal))) { + return false; + } + return true; + }, + + startPaint() { + if (this.isEmpty(this.properties.palette)) { + return; + } + + if (!(getApp().systemInfo && getApp().systemInfo.screenWidth)) { + try { + getApp().systemInfo = wx.getSystemInfoSync(); + } catch (e) { + const error = `Painter get system info failed, ${JSON.stringify(e)}`; + that.triggerEvent('imgErr', { + error: error + }); + console.error(error); + return; + } + } + let screenK = getApp().systemInfo.screenWidth / 750; + setStringPrototype(screenK, 1); + + this.downloadImages().then((palette) => { + const { + width, + height + } = palette; + + if (!width || !height) { + console.error(`You should set width and height correctly for painter, width: ${width}, height: ${height}`); + return; + } + this.canvasWidthInPx = width.toPx(); + if (this.properties.widthPixels) { + // 如果重新设置过像素宽度,则重新设置比例 + setStringPrototype(screenK, this.properties.widthPixels / this.canvasWidthInPx) + this.canvasWidthInPx = this.properties.widthPixels + } + + this.canvasHeightInPx = height.toPx(); + this.setData({ + painterStyle: `width:${this.canvasWidthInPx}px;height:${this.canvasHeightInPx}px;`, + }); + const ctx = wx.createCanvasContext('k-canvas', this); + const pen = new Pen(ctx, palette); + pen.paint(() => { + this.saveImgToLocal(); + }); + }); + }, + + downloadImages() { + return new Promise((resolve, reject) => { + let preCount = 0; + let completeCount = 0; + const paletteCopy = JSON.parse(JSON.stringify(this.properties.palette)); + if (paletteCopy.background) { + preCount++; + downloader.download(paletteCopy.background).then((path) => { + paletteCopy.background = path; + completeCount++; + if (preCount === completeCount) { + resolve(paletteCopy); + } + }, () => { + completeCount++; + if (preCount === completeCount) { + resolve(paletteCopy); + } + }); + } + if (paletteCopy.views) { + for (const view of paletteCopy.views) { + if (view && view.type === 'image' && view.url) { + preCount++; + /* eslint-disable no-loop-func */ + downloader.download(view.url).then((path) => { + view.url = path; + wx.getImageInfo({ + src: view.url, + success: (res) => { + // 获得一下图片信息,供后续裁减使用 + view.sWidth = res.width; + view.sHeight = res.height; + }, + fail: (error) => { + // 如果图片坏了,则直接置空,防止坑爹的 canvas 画崩溃了 + view.url = ""; + console.error(`getImageInfo ${view.url} failed, ${JSON.stringify(error)}`); + }, + complete: () => { + completeCount++; + if (preCount === completeCount) { + resolve(paletteCopy); + } + }, + }); + }, () => { + completeCount++; + if (preCount === completeCount) { + resolve(paletteCopy); + } + }); + } + } + } + if (preCount === 0) { + resolve(paletteCopy); + } + }); + }, + + saveImgToLocal() { + const that = this; + setTimeout(() => { + wx.canvasToTempFilePath({ + canvasId: 'k-canvas', + success: function (res) { + that.getImageInfo(res.tempFilePath); + }, + fail: function (error) { + console.error(`canvasToTempFilePath failed, ${JSON.stringify(error)}`); + that.triggerEvent('imgErr', { + error: error + }); + }, + }, this); + }, 300); + }, + + getImageInfo(filePath) { + const that = this; + wx.getImageInfo({ + src: filePath, + success: (infoRes) => { + if (that.paintCount > MAX_PAINT_COUNT) { + const error = `The result is always fault, even we tried ${MAX_PAINT_COUNT} times`; + console.error(error); + that.triggerEvent('imgErr', { + error: error + }); + return; + } + // 比例相符时才证明绘制成功,否则进行强制重绘制 + if (Math.abs((infoRes.width * that.canvasHeightInPx - that.canvasWidthInPx * infoRes.height) / (infoRes.height * that.canvasHeightInPx)) < 0.01) { + that.triggerEvent('imgOK', { + path: filePath + }); + } else { + that.startPaint(); + } + that.paintCount++; + }, + fail: (error) => { + console.error(`getImageInfo failed, ${JSON.stringify(error)}`); + that.triggerEvent('imgErr', { + error: error + }); + }, + }); + }, + }, +}); + + +function setStringPrototype(screenK, scale) { + /* eslint-disable no-extend-native */ + /** + * 是否支持负数 + * @param {Boolean} minus 是否支持负数 + */ + String.prototype.toPx = function toPx(minus) { + let reg; + if (minus) { + reg = /^-?[0-9]+([.]{1}[0-9]+){0,1}(rpx|px)$/g; + } else { + reg = /^[0-9]+([.]{1}[0-9]+){0,1}(rpx|px)$/g; + } + const results = reg.exec(this); + if (!this || !results) { + console.error(`The size: ${this} is illegal`); + return 0; + } + const unit = results[2]; + const value = parseFloat(this); + + let res = 0; + if (unit === 'rpx') { + res = Math.round(value * screenK * (scale || 1)); + } else if (unit === 'px') { + res = Math.round(value * (scale || 1)); + } + return res; + }; +} \ No newline at end of file diff --git a/static/painter/painter.json b/static/painter/painter.json new file mode 100644 index 0000000..e8cfaaf --- /dev/null +++ b/static/painter/painter.json @@ -0,0 +1,4 @@ +{ + "component": true, + "usingComponents": {} +} \ No newline at end of file diff --git a/static/painter/painter.wxml b/static/painter/painter.wxml new file mode 100644 index 0000000..45a3cca --- /dev/null +++ b/static/painter/painter.wxml @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/static/tabs/home-active.png b/static/tabs/home-active.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f09fa8b586ded4da80bdad4322d1e8a3e8d09c GIT binary patch literal 614 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=3?wxlRx|^tGXXv!u0Yzv#25(7%*;$pO$`kV z9UL4$d}CvvxP^sVmL=B#;Rd0Ro`;|1Ty2 z75_LDAMS5$X>RiST*A8}u?H3eMFrY8*qT;kIDI`C|6ph2?X3|75xRR$;D*WmQ|mk@)p*qBxuizgB}dpT^WAdM7P=JVQU{0{l`?+7X-}TLZ`S$;RO&$S5mf7winqEid#jQOlJLksxvYCEz z>_(v$r)8A47}fE8jfyMj(rMqW*1By?#;ZM+PCU<+NEIoq`;gTg`i&<`NTHH3cw^q8 zf**x5i`Tes%$&3QQn#47*3N3dj44a6^a{OYdN%jQsmKM}54kEItx+g5`n5zTaS@ww zbj@4Vb>H@D^%@CQR|lVszX?nTi`)ndZ7 zSDL@tI?lXXe1(~1-qC~0Hn_I9sDEPbd>xrkxz5DU=i1CR8N-?Y;aSrH4w^6N=oGr& zvp~~1CZcmIV|Y`=iuvrK{!I}qY8s8IjtT}mQXUf{76|{eRJ!{8MEz^#3+&riUe&QB Q0Rx!9)78&qol`;+0NWGrYybcN literal 0 HcmV?d00001 diff --git a/static/tabs/home.png b/static/tabs/home.png new file mode 100644 index 0000000000000000000000000000000000000000..da743e424778b686dfc21c0b383cf1a175793f5d GIT binary patch literal 474 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_=3?wxlRx|^t%mAMdS0KH1?b; z(LY6dw~07vEo)n7XPAMfq1QSzn#K>WEMNy&bn~#I~x={;#?5 zOTUZ844p~$j=tGv(YJo(tzm)KPTwu zOU`nyVAY3bR@Q!)y6hF#^?z4PLd$nZ8ws3g-=pwxs_C(?IG-ttC6}kTOr5~K)|qdq zkf8guKk{jkeoi)XT$2xQd$`I?pX24Aqo~KIt-vNL-uqH9v*5>s=}PYn?PHphc}_1q RU;_*Z22WQ%mvv4FO#oo$*nj{4 literal 0 HcmV?d00001 diff --git a/static/tabs/orders-active.png b/static/tabs/orders-active.png new file mode 100644 index 0000000000000000000000000000000000000000..19d216f9fbc890f819033d329ecb45e6ded1c592 GIT binary patch literal 141 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_@3?!2S6O@1yXMj(LE0F$wG11uA*w*fL4v@oG z666=m;PC858jxe;>EaloaXwjrVMkaagH*pxg8?(!h7V2)6}o2a(b({Fg-yxS!#B%f iY&aI!^XF?RFfuR%N=(u{SN{@Z8H1;*pUXO@geCwd#3vg7 literal 0 HcmV?d00001 diff --git a/static/tabs/orders.png b/static/tabs/orders.png new file mode 100644 index 0000000000000000000000000000000000000000..863f08a117b627e62f2ee6c2854b9577271abd61 GIT binary patch literal 133 zcmeAS@N?(olHy`uVBq!ia0vp^Mj*_{3?x-PN__%SYymzYu0VR`%$apx6+jY