OSDN Git Service

merge dashboard into dev
authorZhiting Lin <zlin035@uottawa.ca>
Thu, 24 Oct 2019 08:14:00 +0000 (16:14 +0800)
committerZhiting Lin <zlin035@uottawa.ca>
Thu, 24 Oct 2019 08:14:00 +0000 (16:14 +0800)
40 files changed:
.eslintrc.json
README.md
main-process/i18n.js [deleted file]
main.js
modules/i18n.js [new file with mode: 0644]
modules/interface/i18n/desktop.en.i18n.json [moved from main-process/interface/i18n/desktop.en.i18n.json with 100% similarity]
modules/interface/i18n/desktop.zh.i18n.json [moved from main-process/interface/i18n/desktop.zh.i18n.json with 100% similarity]
modules/interface/locales/en/translation.json [moved from src/locales/en/translation.json with 97% similarity]
modules/interface/locales/zh/translation.json [moved from src/locales/zh/translation.json with 97% similarity]
modules/interface/project-tap.i18n [moved from main-process/interface/project-tap.i18n with 100% similarity]
modules/logger.js [moved from main-process/logger.js with 100% similarity]
modules/menus/application-menu.js [moved from main-process/menus/application-menu.js with 97% similarity]
modules/preload.js [moved from main-process/preload.js with 100% similarity]
modules/settings.js [new file with mode: 0644]
package-lock.json
package.json
src/app.js
src/features/app/components/Container.jsx
src/features/app/components/Navigation/Navigation.jsx
src/features/configuration/actions.js
src/features/configuration/components/Index/Index.jsx
src/features/configuration/components/Index/Index.scss
src/features/core/reducers.js
src/features/initialization/components/Index/Index.jsx
src/i18n.js [deleted file]
src/utility/environment.js
src/utility/localStorage.js
static/images/config/join-active.png [deleted file]
static/images/config/join-active.svg
static/images/config/join.png [deleted file]
static/images/config/join.svg
static/images/config/new-active.png [deleted file]
static/images/config/new-active.svg
static/images/config/new.png [deleted file]
static/images/config/new.svg
static/images/config/testnet-active.png [deleted file]
static/images/config/testnet-active.svg
static/images/config/testnet.png [deleted file]
static/images/config/testnet.svg
webpack/webpack.app.js

index 7beef12..c232ee8 100644 (file)
     "semi": ["error", "never"],
     "react/jsx-uses-react": "error",
     "react/jsx-uses-vars": "error"
+  },
+  "globals": {
+    "i18n": true,
+    "beforeEach": true,
+    "document": true,
+    "Promise": true,
+    "require": true,
+    "global": true,
+    "store": true,
+    "exports": true,
+    "module": true,
+    "process": true
   }
 }
index df069e9..66afbae 100644 (file)
--- a/README.md
+++ b/README.md
@@ -16,64 +16,32 @@ Install dependencies:
 npm install
 ```
 
-Start the development server with
-
-```
-npm start
+##### Add Bytomd Deamon
+Add a folder named `bytomd` under the root folder. Put all the bytomd files into that folder.
 ```
+bytom-electron
+│   README.md
+│
+└───bytomd
+│   │   bytomd-darwin_amd64
+│   │   bytomd-linux_386
+│   │   bytomd-linux_amd64
+│   │   bytomd-windows_386.exe
+│   │   bytomd-windows_amd64.exe
+│   │  
+``` 
 
-By default, the development server uses the following environment variables
-with default values to connect to a local Bytom Core instance:
 
+To developer the bytom electron app, run the script.
 ```
-API_URL=http://localhost:3000/api
-PROXY_API_HOST=http://localhost:9888
+DEV=ture electron .
 ```
 
-#### Style Guide
+---
+#### Package
 
-We use `eslint` to maintain a consistent code style. To check the source
-directory with `eslint`, run:
+To package the app for all platform, run the following command. 
 
 ```
-npm run lint src
+npm run package
 ```
-
-### React + Redux
-
-#### ES6
-
-Babel is used to transpile the latest ES6 syntax into a format understood by
-both Node.js and browsers. To get an ES6-compatible REPL (or run a one-off script)
-you can use the `babel-node` command:
-
-`$(npm bin)/babel-node`
-
-#### Redux Actions
-
-To inspect and debug Redux actions, we recommend the "Redux DevTools" Chrome
-extension:
-
-https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd
-
-
-#### Creating new components
-
-To generate a new component with a connected stylesheet, use the following
-command:
-
-```
-npm run generate-component Common/MyComponent
-```
-
-The above command will create two new files in the `src/components` directory:
-
-```
-src/components/Common/MyComponent/MyComponent.jsx
-src/components/Common/MyComponent/MyComponent.scss
-```
-
-with `MyComponent.scss` imported as a stylesheet into `MyComponent.jsx`.
-
-Additionally, if there is an `index.js` file in `src/components/Common`, it
-will appropriately add the newly created component to the index exports.
diff --git a/main-process/i18n.js b/main-process/i18n.js
deleted file mode 100644 (file)
index ec76f88..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
-The i18n module, loads the language files and initializes i18next
-
-@module i18n
-*/
-const fs = require('fs')
-const i18n = require('i18next')
-
-let i18nConf = fs.readFileSync(`${__dirname}/interface/project-tap.i18n`)
-i18nConf = JSON.parse(i18nConf)
-
-const resources = {
-  dev: { translation: require('./interface/i18n/desktop.en.i18n.json') },
-}
-
-// add supported languages
-i18nConf.supported_languages.forEach((lang) => {
-  resources[lang] = { translation: require(`./interface/i18n/desktop.${lang}.i18n.json`) }
-})
-
-/**
-* Given a language code, get best matched code from supported languages.
-*
-* > getBestMatchedLangCode('en-US')
-* 'en'
-* > getBestMatchedLangCode('zh-TW')
-* 'zh-TW'
-* > getBestMatchedLangCode('no-such-code')
-* 'en'
-*/
-i18n.getBestMatchedLangCode = (langCode) => {
-  const codeList = Object.keys(resources)
-  let bestMatchedCode = langCode
-  if (codeList.indexOf(langCode) === -1) {
-    if (codeList.indexOf(langCode.substr(0, 2)) > -1) {
-      bestMatchedCode = langCode.substr(0, 2)
-    } else {
-      bestMatchedCode = 'en'
-    }
-  }
-  return bestMatchedCode
-}
-
-i18n.init({
-  lng:   global.language || 'en',
-  fallbackLng: 'en',
-  resources,
-  interpolation: { prefix: '__', suffix: '__' },
-})
-
-
-module.exports = i18n
diff --git a/main.js b/main.js
index b2eb3fd..f8226b5 100644 (file)
--- a/main.js
+++ b/main.js
@@ -1,19 +1,26 @@
+require('babel-register')
+require('events').EventEmitter.defaultMaxListeners = 100
 const {app, BrowserWindow, ipcMain, shell} = require('electron')
 const spawn = require('child_process').spawn
 const glob = require('glob')
 const url = require('url')
 const path = require('path')
 const fs = require('fs')
-const logger = require('./main-process/logger')
+const logger = require('./modules/logger')
 const log = logger.create('main')
 const bytomdLog = logger.create('bytomd')
+const Settings = require('./modules/settings')
 
-let win, bytomdInit, bytomdMining
+const net = require('net')
+
+let win, bytomdInit, bytomdNode
 
 global.fileExist = false
 global.mining = {isMining: false}
 let startnode = false
 
+Settings.init()
+
 function initialize () {
 
   function createWindow() {
@@ -25,7 +32,7 @@ function initialize () {
       height: 768,
       'webPreferences': {
         'webSecurity': !process.env.DEV_URL,
-        'preload': path.join(__dirname, '/main-process/preload.js')
+        'preload': path.join(__dirname, '/modules/preload.js')
       },
       icon: icon_path
     })
@@ -88,48 +95,33 @@ function initialize () {
       bytomdInit.kill('SIGINT')
       log.info('Kill bytomd Init command...')
     }
-    if(bytomdMining){
-      bytomdMining.kill('SIGINT')
+    if(bytomdNode){
+      bytomdNode.kill('SIGINT')
       const killTimeout = setTimeout(() => {
-        bytomdMining.kill('SIGKILL')
+        bytomdNode.kill('SIGKILL')
       }, 8000 /* 8 seconds */)
 
-      bytomdMining.once('close', () => {
+      bytomdNode.once('close', () => {
         clearTimeout(killTimeout)
-        bytomdMining = null
+        bytomdNode = null
       })
 
       log.info('Kill bytomd Mining command...')
     }
   })
 }
-const bytomdPath = process.env.DEV?
-  path.join(__dirname, '/bytomd/bytomd-darwin_amd64'):
-  glob.sync( path.join(__dirname, '../bytomd/bytomd*'))
-
-let bytomdDataPath
-switch (process.platform){
-  case 'win32':
-    bytomdDataPath = `${app.getPath('appData')}/Bytom`
-    break
-  case 'darwin':
-    bytomdDataPath = `${app.getPath('home')}/Library/Bytom`
-    break
-  case 'linux':
-    bytomdDataPath = `${app.getPath('home')}/.bytom`
-}
 
-function setBytomMining(event) {
-  bytomdMining = spawn( `${bytomdPath}`, ['node', '--web.closed'] )
+function setBytomNode(event) {
+  bytomdNode = spawn( `${Settings.bytomdPath}`, ['node', '--web.closed'] )
 
-  bytomdMining.stdout.on('data', function(data) {
-    bytomdLog.info(`bytomd mining: ${data}`)
+  bytomdNode.stdout.on('data', function(data) {
+    bytomdLog.info(`bytomd node: ${data}`)
   })
 
-  bytomdMining.stderr.on('data', function(data) {
-    bytomdLog.info(`bytomd mining: ${data}`)
-    if(data.includes('msg="Start node')) {
-      if(event){
+  bytomdNode.stderr.on('data', function(data) {
+    bytomdLog.info(`bytomd node: ${data}`)
+    if (data.includes('msg="start node')) {
+      if (event) {
         event.sender.send('ConfiguredNetwork', 'startNode')
       }
       else {
@@ -137,17 +129,17 @@ function setBytomMining(event) {
         win.webContents.send('ConfiguredNetwork', 'startNode')
       }
     }
-  })
 
-  bytomdMining.on('exit', function (code) {
-    bytomdLog.info('bytom Mining exited with code ' + code)
-    app.quit()
+    bytomdNode.on('exit', function (code) {
+      bytomdLog.info('bytom Node exited with code ' + code)
+      app.quit()
+    })
   })
 }
 
 function setBytomInit(event, bytomNetwork) {
   // Init bytomd
-  bytomdInit = spawn(`${bytomdPath}`, ['init', '--chain_id',  `${bytomNetwork}`] )
+  bytomdInit = spawn(`${Settings.bytomdPath}`, ['init', '--chain_id',  `${bytomNetwork}`] )
 
   bytomdInit.stdout.on('data', function(data) {
     bytomdLog.info(`bytomd init: ${data}`)
@@ -159,7 +151,7 @@ function setBytomInit(event, bytomNetwork) {
 
   bytomdInit.on('exit', function (code) {
     event.sender.send('ConfiguredNetwork','init')
-    setBytomMining(event)
+    setBytomNode(event)
     bytomdLog.info('bytom init exited with code ' + code)
   })
 
@@ -169,11 +161,11 @@ function setBytomInit(event, bytomNetwork) {
 }
 
 function bytomd(){
-  const filePath = path.join(`${bytomdDataPath}/config.toml`)
+  const filePath = path.join(`${Settings.bytomdDataPath}/config.toml`)
   if (fs.existsSync(filePath)) {
     log.info('Bytomd Network has been inited')
     global.fileExist = true
-    setBytomMining()
+    setBytomNode()
   }else {
     log.info('Init Bytomd Network...')
     ipcMain.on('bytomdInitNetwork', (event, arg) => {
@@ -184,7 +176,7 @@ function bytomd(){
 
 // Require each JS file in the main-process dir
 function loadMenu () {
-  const files = glob.sync(path.join(__dirname, 'main-process/menus/*.js'))
+  const files = glob.sync(path.join(__dirname, 'modules/menus/*.js'))
   files.forEach((file) => { require(file) })
 }
 
@@ -194,6 +186,7 @@ function setupConfigure(){
   logger.setup(loggerOptions)
 }
 
+
 // Handle Squirrel on Windows startup events
 switch (process.argv[1]) {
   case '--squirrel-install':
diff --git a/modules/i18n.js b/modules/i18n.js
new file mode 100644 (file)
index 0000000..53334b1
--- /dev/null
@@ -0,0 +1,73 @@
+/**
+The i18n module, loads the language files and initializes i18next
+
+@module i18n
+*/
+const i18n = require('i18next')
+const extend = require('lodash/extend')
+
+const LanguageDetector = require('i18next-browser-languagedetector')
+
+
+const supported_languages = ['en', 'zh']
+
+const resources = {
+  dev: { translations: require('./interface/i18n/desktop.en.i18n.json') },
+}
+
+// add supported languages
+supported_languages.forEach((lang) => {
+  const desktopTranslations = require(`./interface/i18n/desktop.${lang}.i18n.json`)
+  const uiTranslations = require(`./interface/locales/${lang}/translation.json`)
+  resources[lang] = { translations: extend(desktopTranslations, uiTranslations) }
+})
+
+/**
+* Given a language code, get best matched code from supported languages.
+*
+* > getBestMatchedLangCode('en-US')
+* 'en'
+* > getBestMatchedLangCode('zh-TW')
+* 'zh-TW'
+* > getBestMatchedLangCode('no-such-code')
+* 'en'
+*/
+i18n.getBestMatchedLangCode = (langCode) => {
+  const codeList = Object.keys(resources)
+  let bestMatchedCode = langCode
+  if (codeList.indexOf(langCode) === -1) {
+    if (codeList.indexOf(langCode.substr(0, 2)) > -1) {
+      bestMatchedCode = langCode.substr(0, 2)
+    } else {
+      bestMatchedCode = 'en'
+    }
+  }
+  return bestMatchedCode
+}
+
+i18n.use(LanguageDetector).init({
+  lng:   global.language,
+  fallbackLng:  'en',
+  resources,
+  interpolation: {
+    escapeValue: false, // not needed for react!!
+    prefix: '__',
+    suffix: '__'
+  },
+  debug: false,
+
+  ns: ['translations'],
+  defaultNS: 'translations',
+
+  detection: {
+    // order and from where user language should be detected
+    order: ['localStorage', 'querystring', 'cookie',  'navigator', 'htmlTag', 'path', 'subdomain']
+  },
+
+  react: {
+    wait: true,
+    bindStore: false
+  }
+})
+
+module.exports = i18n
similarity index 97%
rename from src/locales/en/translation.json
rename to modules/interface/locales/en/translation.json
index 40f6397..4d991b3 100644 (file)
     "createDescription":"This option will create a default account, key password and give you a option to keep you mnemonic.  Warning: key seed words will display only once, it's important to remember your password.",
     "welcome":"Welcome to Bytom __network__"
   },
+  "welcome":{
+    "connect":"Connecting to Bytom Core...",
+    "join":"Joining network",
+    "joining":"Joining network...",
+    "title":"Configure Bytom Core",
+    "mainnetTitle":"Join the Bytom Mainnet",
+    "mainnetMsg":"For common users to enter. Mainnet is the production network, that carry real Bytom transactions.",
+    "testnetTitle":"Join the Bytom Testnet",
+    "testnetMsg":"For developers or bytom testers to enter. Testnet is an alternative Bytom blockchain, and to be used for testing.",
+    "solonetTitle":"Create the Bytom Soloent",
+    "solonetMsg":"For users/developers to run and test wallet's new function. Solonet is a private sandbox blockchain network."
+  },
   "backup":{
     "title":"Backup and Restore",
     "backup":"Back Up",
similarity index 97%
rename from src/locales/zh/translation.json
rename to modules/interface/locales/zh/translation.json
index d8fc708..38a78d3 100644 (file)
     "createDescription":"这个选项将生成默认的挖矿账户和默认密钥。 助记词将会在此生成,您可以选择保留助记词或者跳过。 注意: 助记词只生成一次, 请将密码,助记词妥善保存",
     "welcome":"欢迎来到__network__"
   },
+  "welcome":{
+    "connect":"正在连接到Bytom Core...",
+    "join":"加入网络",
+    "joining":"加入网络...",
+    "title":"配置 Bytom Core",
+    "mainnetTitle":"加入 Bytom 主网",
+    "mainnetMsg":"普通用户选择加入。这是实际的Bytom网络,包含真实的交易信息。",
+    "testnetTitle":"加入 Bytom 测试网络",
+    "testnetMsg":"开发者选择加入。这是Bytom的测试网络,用于Bytom的相关测试。",
+    "solonetTitle":"创建 Bytom 单机网络",
+    "solonetMsg":"创建一个沙盒私有网络供用户运行和测试功能。"
+  },
   "backup":{
     "title":"备份与恢复",
     "backup":"备份",
similarity index 100%
rename from main-process/logger.js
rename to modules/logger.js
similarity index 97%
rename from main-process/menus/application-menu.js
rename to modules/menus/application-menu.js
index 9c36021..db8d34f 100755 (executable)
@@ -1,6 +1,6 @@
 const { Menu, app, shell, ipcMain, dialog , nativeImage} = require('electron')
 const settings = require('electron-settings')
-global.language = settings.get('browserSetting.core.lang') || app.getLocale()
+global.language = settings.get('lang') || app.getLocale()
 const i18n = require('../i18n.js')
 global.i18n = i18n
 const path = require('path')
@@ -130,7 +130,7 @@ let menuTempl = function () {
 
   // LANGUAGE (VIEW)
   const defaultLanguage = i18n.getBestMatchedLangCode(app.getLocale())
-  let currentLanguage = settings.get('browserSetting.core.lang') || defaultLanguage
+  let currentLanguage = settings.get('lang') || defaultLanguage
   const LanguageMenu = [{
     label: i18n.t('desktop.applicationMenu.view.default'),
     type: 'checkbox',
@@ -148,7 +148,7 @@ let menuTempl = function () {
   },{
     label: i18n.t('desktop.applicationMenu.view.langCodes.zh'),
     type: 'checkbox',
-    checked: currentLanguage === 'zh',
+    checked:  currentLanguage.substring(0,2) == 'zh' ,
     click: (item, focusedWindow) => {
       if (focusedWindow) {
         i18n.changeLanguage('zh', (err, t) => {
@@ -162,7 +162,7 @@ let menuTempl = function () {
   },{
     label: i18n.t('desktop.applicationMenu.view.langCodes.en'),
     type: 'checkbox',
-    checked: currentLanguage === 'en',
+    checked: currentLanguage == 'en',
     click: (item, focusedWindow) => {
       if (focusedWindow) {
         i18n.changeLanguage('en', (err, t) => {
@@ -361,7 +361,7 @@ settings.watch('browserSetting.core.btmAmountUnit', newValue => {
   menu.items[3].submenu.items[0].submenu.items[2].checked = ( btmAmountUnit === 'NEU' )
 })
 
-settings.watch('browserSetting.core.lang', newValue => {
+settings.watch('lang', newValue => {
   i18n.changeLanguage(newValue, (err, t) => {
     if (err) return log.error('i18n: something went wrong loading', err)
     createMenu()
similarity index 100%
rename from main-process/preload.js
rename to modules/preload.js
diff --git a/modules/settings.js b/modules/settings.js
new file mode 100644 (file)
index 0000000..1abbc49
--- /dev/null
@@ -0,0 +1,64 @@
+const { app } = require('electron')
+const path = require('path')
+const glob = require('glob')
+
+// import logger from './logger'
+
+let instance = null
+
+class Settings {
+  constructor() {
+    if (!instance) {
+      instance = this
+    }
+
+    return instance
+  }
+
+  init() {
+    // const logLevel = { logLevel: 'info' }
+    // const logFolder = { logFolder: path.join(this.userDataPath, 'logs') }
+    // const loggerOptions = Object.assign('info', logLevel, logFolder)
+    // logger.setup(loggerOptions)
+  }
+
+  get userDataPath() {
+    return app.getPath('userData')
+  }
+
+  get appDataPath() {
+    // Application Support/
+    return app.getPath('appData')
+  }
+
+  get userHomePath() {
+    return app.getPath('home')
+  }
+
+  get bytomdPath() {
+    return process.env.DEV?
+      path.join(__dirname, '../bytomd/bytomd-darwin_amd64'):
+      glob.sync( path.join(__dirname, '../../bytomd/bytomd*'))
+  }
+
+  get bytomdDataPath(){
+    let bytomdDataPath
+    switch (process.platform){
+      case 'win32':
+        bytomdDataPath = `${app.getPath('appData')}/Bytom`
+        break
+      case 'darwin':
+        bytomdDataPath = `${app.getPath('home')}/Library/Application Support/Bytom`
+        break
+      case 'linux':
+        bytomdDataPath = `${app.getPath('home')}/.bytom`
+    }
+    return bytomdDataPath
+  }
+
+  constructUserDataPath(filePath) {
+    return path.join(this.userDataPath, filePath)
+  }
+}
+
+module.exports = new Settings()
index 7fe5250..0fc8c3b 100644 (file)
@@ -1,6 +1,6 @@
 {
   "name": "bytom-wallet",
-  "version": "1.0.2",
+  "version": "1.0.9",
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
     "@types/node": {
       "version": "8.10.29",
       "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.29.tgz",
-      "integrity": "sha512-zbteaWZ2mdduacm0byELwtRyhYE40aK+pAanQk415gr1eRuu67x7QGOLmn8jz5zI8LDK7d0WI/oT6r5Trz4rzQ=="
+      "integrity": "sha512-zbteaWZ2mdduacm0byELwtRyhYE40aK+pAanQk415gr1eRuu67x7QGOLmn8jz5zI8LDK7d0WI/oT6r5Trz4rzQ==",
+      "dev": true
     },
     "abbrev": {
       "version": "1.1.1",
-      "resolved": "http://registry.npm.taobao.org/abbrev/download/abbrev-1.1.1.tgz",
-      "integrity": "sha1-+PLIh60Qv2f2NPAFtph/7TF5qsg=",
+      "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==",
+      "version": "1.3.5",
+      "resolved": "http://registry.npm.taobao.org/accepts/download/accepts-1.3.5.tgz",
+      "integrity": "sha1-63d99gEXI6OxTopywIBcjoZ0a9I=",
       "dev": true,
       "requires": {
-        "mime-types": "2.1.24",
-        "negotiator": "0.6.2"
-      },
-      "dependencies": {
-        "mime-db": {
-          "version": "1.40.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
-          "dev": true
-        },
-        "mime-types": {
-          "version": "2.1.24",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
-          "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
-          "dev": true,
-          "requires": {
-            "mime-db": "1.40.0"
-          }
-        }
+        "mime-types": "2.1.18",
+        "negotiator": "0.6.1"
       }
     },
     "acorn": {
       "version": "5.7.3",
       "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+      "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
       "dev": true
     },
     "acorn-jsx": {
         }
       }
     },
-    "addressparser": {
-      "version": "1.0.1",
-      "resolved": "https://registry.npmjs.org/addressparser/-/addressparser-1.0.1.tgz",
-      "integrity": "sha1-R6++GiqSYhkdtoOOT9HTm0CCF0Y=",
-      "optional": true
-    },
-    "agent-base": {
-      "version": "4.2.1",
-      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz",
-      "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==",
-      "requires": {
-        "es6-promisify": "5.0.0"
-      }
-    },
     "ajv": {
-      "version": "6.10.0",
-      "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.10.0.tgz",
-      "integrity": "sha512-nffhOpkymDECQyR0mnsUtoCE8RlX38G0rYP+wgLWFyZuUyuuojSSvi/+euOiQBIn63whYwYVIIH1TvE3tu4OEg==",
+      "version": "5.5.2",
+      "resolved": "http://registry.npm.taobao.org/ajv/download/ajv-5.5.2.tgz",
+      "integrity": "sha1-c7Xuyj+rZT49P5Qis0GtQiBdyWU=",
       "dev": true,
       "requires": {
-        "fast-deep-equal": "2.0.1",
+        "co": "4.6.0",
+        "fast-deep-equal": "1.1.0",
         "fast-json-stable-stringify": "2.0.0",
-        "json-schema-traverse": "0.4.1",
-        "uri-js": "4.2.2"
+        "json-schema-traverse": "0.3.1"
       }
     },
     "ajv-keywords": {
       "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=",
       "dev": true
     },
-    "amqplib": {
-      "version": "0.5.3",
-      "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.5.3.tgz",
-      "integrity": "sha512-ZOdUhMxcF+u62rPI+hMtU1NBXSDFQ3eCJJrenamtdQ7YYwh7RZJHOIM1gonVbZ5PyVdYH4xqBPje9OYqk7fnqw==",
-      "optional": true,
-      "requires": {
-        "bitsyntax": "0.1.0",
-        "bluebird": "3.5.3",
-        "buffer-more-ints": "1.0.0",
-        "readable-stream": "1.1.14",
-        "safe-buffer": "5.1.2",
-        "url-parse": "1.4.4"
-      },
-      "dependencies": {
-        "bluebird": {
-          "version": "3.5.3",
-          "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.3.tgz",
-          "integrity": "sha512-/qKPUQlaW1OyR51WeCPBvRnAlnZFUJkCSG5HzGnuIqhgyJtF+T94lFnn33eiazjRm2LAHVy2guNnaq48X9SJuw==",
-          "optional": true
-        }
-      }
-    },
     "ansi-align": {
       "version": "2.0.0",
       "resolved": "http://registry.npm.taobao.org/ansi-align/download/ansi-align-2.0.0.tgz",
     },
     "aproba": {
       "version": "1.2.0",
-      "resolved": "http://registry.npm.taobao.org/aproba/download/aproba-1.2.0.tgz",
-      "integrity": "sha1-aALmJk79GMeQobDVF/DyYnvyyUo=",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
       "dev": true
     },
     "are-we-there-yet": {
       "version": "1.1.5",
-      "resolved": "http://registry.npm.taobao.org/are-we-there-yet/download/are-we-there-yet-1.1.5.tgz",
-      "integrity": "sha1-SzXClE8GKov82mZBB2A1D+nd/CE=",
+      "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
+      "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
       "dev": true,
       "requires": {
         "delegates": "1.0.0",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
           "dev": true
         },
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz",
-          "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=",
-          "dev": true
-        },
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz",
-          "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
+          "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.2",
         },
         "string_decoder": {
           "version": "1.1.1",
-          "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
-          "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+          "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.2"
     },
     "argparse": {
       "version": "1.0.10",
-      "resolved": "http://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
-      "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
       "dev": true,
       "requires": {
         "sprintf-js": "1.0.3"
       "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
       "dev": true
     },
+    "array-includes": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.0.3.tgz",
+      "integrity": "sha1-GEtI9i2S10UrsxsyMWXH+L0CJm0=",
+      "dev": true,
+      "requires": {
+        "define-properties": "1.1.2",
+        "es-abstract": "1.11.0"
+      }
+    },
     "array-map": {
       "version": "0.0.0",
       "resolved": "http://registry.npm.taobao.org/array-map/download/array-map-0.0.0.tgz",
       "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=",
       "dev": true
     },
-    "array-union": {
-      "version": "1.0.2",
-      "resolved": "http://registry.npm.taobao.org/array-union/download/array-union-1.0.2.tgz",
-      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
-      "dev": true,
-      "requires": {
-        "define-properties": "1.1.3",
-        "es-abstract": "1.13.0"
-      }
-    },
-    "array-uniq": {
-      "version": "1.0.3",
-      "resolved": "http://registry.npm.taobao.org/array-uniq/download/array-uniq-1.0.3.tgz",
-      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
-      "dev": true
-    },
     "array-unique": {
       "version": "0.2.1",
       "resolved": "http://registry.npm.taobao.org/array-unique/download/array-unique-0.2.1.tgz",
       "integrity": "sha1-odl8yvy8JiXMcPrc6zalDFiwGlM=",
       "dev": true
     },
-    "arrify": {
-      "version": "1.0.1",
-      "resolved": "http://registry.npm.taobao.org/arrify/download/arrify-1.0.1.tgz",
-      "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=",
-      "dev": true
-    },
     "asap": {
       "version": "2.0.6",
       "resolved": "http://registry.npm.taobao.org/asap/download/asap-2.0.6.tgz",
       "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY="
     },
     "asn1": {
-      "version": "0.2.4",
-      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
-      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
-      "dev": true,
-      "requires": {
-        "safer-buffer": "2.1.2"
-      }
+      "version": "0.2.3",
+      "resolved": "http://registry.npm.taobao.org/asn1/download/asn1-0.2.3.tgz",
+      "integrity": "sha1-2sh4dxPJlmhJ/IGAd36+nB3fO4Y=",
+      "dev": true
     },
     "assert": {
-      "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
-      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+      "version": "1.4.1",
+      "resolved": "http://registry.npm.taobao.org/assert/download/assert-1.4.1.tgz",
+      "integrity": "sha1-mZEtWRg2tab1s0XA8H7vwI/GXZE=",
       "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": "http://registry.npm.taobao.org/assert-plus/download/assert-plus-1.0.0.tgz",
-      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU="
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true
     },
     "assertion-error": {
       "version": "1.1.0",
       "integrity": "sha1-5gtrDo8wG9l+U3UhW9pAbIURjAs=",
       "dev": true
     },
-    "ast-types": {
-      "version": "0.12.2",
-      "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.12.2.tgz",
-      "integrity": "sha512-8c83xDLJM/dLDyXNLiR6afRRm4dPKN6KAnKqytRK3DBJul9lA+atxdQkNDkSVPdTqea5HiRq3lnnOIZ0MBpvdg==",
-      "optional": true
-    },
-    "async": {
-      "version": "2.6.1",
-      "resolved": "http://registry.npm.taobao.org/async/download/async-2.6.1.tgz",
-      "integrity": "sha1-skWiPKcZMAROxT+kaqAKPofGphA=",
-      "requires": {
-        "lodash": "4.17.11"
-      }
-    },
     "async-each": {
       "version": "1.0.1",
       "resolved": "http://registry.npm.taobao.org/async-each/download/async-each-1.0.1.tgz",
     "asynckit": {
       "version": "0.4.0",
       "resolved": "http://registry.npm.taobao.org/asynckit/download/asynckit-0.4.0.tgz",
-      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k="
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true
     },
     "atob": {
       "version": "2.1.1",
     "aws-sign2": {
       "version": "0.7.0",
       "resolved": "http://registry.npm.taobao.org/aws-sign2/download/aws-sign2-0.7.0.tgz",
-      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg="
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true
     },
     "aws4": {
-      "version": "1.8.0",
-      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
-      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+      "version": "1.7.0",
+      "resolved": "http://registry.npm.taobao.org/aws4/download/aws4-1.7.0.tgz",
+      "integrity": "sha1-1NDpudv8p3vwjusKikcVUP454ok=",
       "dev": true
     },
     "babel-cli": {
         "commander": "2.15.1",
         "convert-source-map": "1.5.1",
         "fs-readdir-recursive": "1.1.0",
-        "glob": "7.1.3",
+        "glob": "7.1.2",
         "lodash": "4.17.14",
         "output-file-sync": "1.1.2",
         "path-is-absolute": "1.0.1",
         },
         "source-map": {
           "version": "0.5.7",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.5.7.tgz",
           "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
           "dev": true
         }
       "version": "6.22.0",
       "resolved": "http://registry.npm.taobao.org/babel-register/download/babel-register-6.22.0.tgz",
       "integrity": "sha1-ph3YOXX5ykqefW7/MFlJTNXqTGM=",
-      "dev": true,
       "requires": {
         "babel-core": "6.26.3",
         "babel-runtime": "6.26.0",
         "globals": "9.18.0",
         "invariant": "2.2.4",
         "lodash": "4.17.14"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
       }
     },
     "babel-types": {
       "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=",
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/bcrypt-pbkdf/download/bcrypt-pbkdf-1.0.1.tgz",
+      "integrity": "sha1-Y7xdy2EzG5K8Bf1SiVPDNGKgb40=",
       "dev": true,
+      "optional": true,
       "requires": {
         "tweetnacl": "0.14.5"
       }
       "integrity": "sha1-RqoXUftqL5PuXmibsQh9SxTGwgU=",
       "dev": true
     },
-    "bitsyntax": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/bitsyntax/-/bitsyntax-0.1.0.tgz",
-      "integrity": "sha512-ikAdCnrloKmFOugAfxWws89/fPc+nw0OOG1IzIE72uSOg/A3cYptKCjSUhDTuj7fhsJtzkzlv7l3b8PzRHLN0Q==",
-      "optional": true,
-      "requires": {
-        "buffer-more-ints": "1.0.0",
-        "debug": "2.6.9",
-        "safe-buffer": "5.1.2"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "2.6.9",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
-          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
-          "optional": true,
-          "requires": {
-            "ms": "2.0.0"
-          }
-        }
-      }
-    },
-    "bl": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/bl/-/bl-1.1.2.tgz",
-      "integrity": "sha1-/cqHGplxOqANGeO7ukHER4emU5g=",
-      "optional": true,
-      "requires": {
-        "readable-stream": "2.0.6"
-      },
-      "dependencies": {
-        "isarray": {
-          "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
-          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
-          "optional": true
-        },
-        "readable-stream": {
-          "version": "2.0.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
-          "integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
-          "optional": true,
-          "requires": {
-            "core-util-is": "1.0.2",
-            "inherits": "2.0.3",
-            "isarray": "1.0.0",
-            "process-nextick-args": "1.0.7",
-            "string_decoder": "0.10.31",
-            "util-deprecate": "1.0.2"
-          }
-        }
-      }
-    },
     "block-stream": {
       "version": "0.0.9",
       "resolved": "http://registry.npm.taobao.org/block-stream/download/block-stream-0.0.9.tgz",
       }
     },
     "body-parser": {
-      "version": "1.19.0",
-      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
-      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "version": "1.18.2",
+      "resolved": "http://registry.npm.taobao.org/body-parser/download/body-parser-1.18.2.tgz",
+      "integrity": "sha1-h2eKGdhLR9hZuDGZvVm84iKxBFQ=",
       "dev": true,
       "requires": {
-        "bytes": "3.1.0",
+        "bytes": "3.0.0",
         "content-type": "1.0.4",
         "debug": "2.6.9",
         "depd": "1.1.2",
-        "http-errors": "1.7.2",
-        "iconv-lite": "0.4.24",
+        "http-errors": "1.6.3",
+        "iconv-lite": "0.4.19",
         "on-finished": "2.3.0",
-        "qs": "6.7.0",
-        "raw-body": "2.4.0",
-        "type-is": "1.6.18"
+        "qs": "6.5.1",
+        "raw-body": "2.3.2",
+        "type-is": "1.6.16"
       },
       "dependencies": {
-        "bytes": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
-          "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==",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
           "dev": true,
           "requires": {
-            "safer-buffer": "2.1.2"
+            "ms": "2.0.0"
           }
         },
+        "iconv-lite": {
+          "version": "0.4.19",
+          "resolved": "http://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.19.tgz",
+          "integrity": "sha1-90aPYBNfXl2tM5nAqBvpoWA6CCs=",
+          "dev": true
+        },
         "qs": {
           "version": "6.5.1",
           "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.1.tgz",
         }
       }
     },
-    "boom": {
-      "version": "2.10.1",
-      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
-      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
-      "requires": {
-        "hoek": "2.16.3"
-      }
-    },
     "bootstrap-loader": {
       "version": "1.0.10",
       "resolved": "http://registry.npm.taobao.org/bootstrap-loader/download/bootstrap-loader-1.0.10.tgz",
       }
     },
     "braces": {
-      "version": "1.8.5",
-      "resolved": "http://registry.npm.taobao.org/braces/download/braces-1.8.5.tgz",
-      "integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+      "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
       "dev": true,
       "requires": {
-        "expand-range": "1.8.2",
-        "preserve": "0.2.0",
-        "repeat-element": "1.1.2"
+        "fill-range": "7.0.1"
+      },
+      "dependencies": {
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+          "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+          "dev": true,
+          "requires": {
+            "to-regex-range": "5.0.1"
+          }
+        }
       }
     },
     "browserify-aes": {
       "integrity": "sha1-bRu2AbB6TvztlwlBMgkwJ8lbwpg=",
       "dev": true,
       "requires": {
-        "base64-js": "1.3.0",
-        "ieee754": "1.1.13",
+        "base64-js": "1.2.0",
+        "ieee754": "1.1.11",
         "isarray": "1.0.0"
       },
       "dependencies": {
       "integrity": "sha1-TLiDLSNhJYmwQG6eKVbBfwb99TE=",
       "dev": true
     },
-    "buffer-more-ints": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz",
-      "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg=="
-    },
     "builder-util": {
       "version": "5.11.2",
       "resolved": "http://registry.npm.taobao.org/builder-util/download/builder-util-5.11.2.tgz",
         "debug": "3.1.0",
         "fs-extra-p": "4.6.0",
         "is-ci": "1.1.0",
-        "js-yaml": "3.11.0",
+        "js-yaml": "3.13.1",
         "lazy-val": "1.0.3",
         "semver": "5.5.0",
         "source-map-support": "0.5.6",
         "sax": "1.2.4"
       }
     },
-    "buildmail": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/buildmail/-/buildmail-4.0.1.tgz",
-      "integrity": "sha1-h393OLeHKYccmhBeO4N9K+EaenI=",
-      "optional": true,
-      "requires": {
-        "addressparser": "1.0.1",
-        "libbase64": "0.1.0",
-        "libmime": "3.0.0",
-        "libqp": "1.1.0",
-        "nodemailer-fetch": "1.6.0",
-        "nodemailer-shared": "1.1.0",
-        "punycode": "1.4.1"
-      }
-    },
     "builtin-modules": {
       "version": "1.1.1",
       "resolved": "http://registry.npm.taobao.org/builtin-modules/download/builtin-modules-1.1.1.tgz",
     "bytes": {
       "version": "3.0.0",
       "resolved": "http://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
-      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg="
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
     },
     "caller-path": {
       "version": "0.1.0",
       "dev": true,
       "requires": {
         "browserslist": "1.7.7",
-        "caniuse-db": "1.0.30000844",
+        "caniuse-db": "1.0.30000846",
         "lodash.memoize": "4.1.2",
         "lodash.uniq": "4.5.0"
       }
     "caseless": {
       "version": "0.12.0",
       "resolved": "http://registry.npm.taobao.org/caseless/download/caseless-0.12.0.tgz",
-      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true
     },
     "center-align": {
       "version": "0.1.3",
       "integrity": "sha1-cQGTJkuwXHe4yQ0C9aryIhamZ7I=",
       "dev": true
     },
+    "circular-json": {
+      "version": "0.5.9",
+      "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.5.9.tgz",
+      "integrity": "sha512-4ivwqHpIFJZBuhN3g/pEcdbnGUywkBblloGbkglyloVjjR3uT6tieI89MVOfbP2tHX5sgb01FuLgAOzebNlJNQ=="
+    },
     "clap": {
       "version": "1.2.3",
       "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
       "resolved": "http://registry.npm.taobao.org/classnames/download/classnames-2.2.5.tgz",
       "integrity": "sha1-+zgB1FNGdknvNgPH1hoCvRKb3m0="
     },
+    "cli-boxes": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/cli-boxes/download/cli-boxes-1.0.0.tgz",
+      "integrity": "sha1-T6kXw+WclKAEzWH47lCdplFocUM=",
+      "dev": true
+    },
     "cli-cursor": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz",
     "co": {
       "version": "4.6.0",
       "resolved": "http://registry.npm.taobao.org/co/download/co-4.6.0.tgz",
-      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ="
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true
     },
     "coa": {
       "version": "1.0.4",
       "resolved": "http://registry.npm.taobao.org/code-point-at/download/code-point-at-1.1.0.tgz",
       "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
     },
+    "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.4",
+        "color-convert": "1.9.1",
+        "color-string": "0.3.0"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+          "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+          "dev": true
+        }
+      }
+    },
     "color-convert": {
       "version": "1.9.1",
       "resolved": "http://registry.npm.taobao.org/color-convert/download/color-convert-1.9.1.tgz",
     },
     "color-name": {
       "version": "1.1.3",
-      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "resolved": "http://registry.npm.taobao.org/color-name/download/color-name-1.1.3.tgz",
       "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
       "dev": true
     },
       "requires": {
         "color": "0.11.4",
         "css-color-names": "0.0.4",
-        "has": "1.0.3"
+        "has": "1.0.1"
       }
     },
     "colors": {
       "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==",
+      "version": "1.0.6",
+      "resolved": "http://registry.npm.taobao.org/combined-stream/download/combined-stream-1.0.6.tgz",
+      "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=",
       "dev": true,
       "requires": {
         "delayed-stream": "1.0.0"
     "commander": {
       "version": "2.15.1",
       "resolved": "http://registry.npm.taobao.org/commander/download/commander-2.15.1.tgz",
-      "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8="
+      "integrity": "sha1-30boZ9D8Kuxmo0ZitAapzK//Ww8=",
+      "dev": true
     },
     "commondir": {
       "version": "1.0.1",
       "dev": true
     },
     "compressible": {
-      "version": "2.0.17",
-      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.17.tgz",
-      "integrity": "sha512-BGHeLCK1GV7j1bSmQQAi26X+GgWcTjLr/0tzSvMCl3LH1w1IJ4PFSPoV5316b30cneTziC+B1a+3OjoSUcQYmw==",
+      "version": "2.0.13",
+      "resolved": "http://registry.npm.taobao.org/compressible/download/compressible-2.0.13.tgz",
+      "integrity": "sha1-DRAgq5JLL9tNYnmHXH1tq6a6p6k=",
       "dev": true,
       "requires": {
-        "mime-db": "1.40.0"
-      },
-      "dependencies": {
-        "mime-db": {
-          "version": "1.40.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
-          "dev": true
-        }
+        "mime-db": "1.33.0"
       }
     },
     "compression": {
-      "version": "1.7.4",
-      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
-      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+      "version": "1.7.2",
+      "resolved": "http://registry.npm.taobao.org/compression/download/compression-1.7.2.tgz",
+      "integrity": "sha1-qv+81qr4VLROuygDU9WtFlH1mmk=",
       "dev": true,
       "requires": {
-        "accepts": "1.3.7",
+        "accepts": "1.3.5",
         "bytes": "3.0.0",
-        "compressible": "2.0.17",
+        "compressible": "2.0.13",
         "debug": "2.6.9",
-        "on-headers": "1.0.2",
-        "safe-buffer": "5.1.2",
+        "on-headers": "1.0.1",
+        "safe-buffer": "5.1.1",
         "vary": "1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz",
+          "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=",
+          "dev": true
+        }
       }
     },
     "concat-map": {
       "integrity": "sha1-kEvfGUzTEi/Gdcd/xKw9T/D9GjQ=",
       "dev": true,
       "requires": {
-        "buffer-from": "1.1.1",
+        "buffer-from": "1.0.0",
         "inherits": "2.0.3",
         "readable-stream": "2.3.6",
         "typedarray": "0.0.6"
       }
     },
     "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==",
+      "version": "1.5.0",
+      "resolved": "http://registry.npm.taobao.org/connect-history-api-fallback/download/connect-history-api-fallback-1.5.0.tgz",
+      "integrity": "sha1-sGhzk0vF40T+9hGhlqb6rgruAVo=",
       "dev": true
     },
     "console-browserify": {
       "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"
-      }
+      "version": "0.5.2",
+      "resolved": "http://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.2.tgz",
+      "integrity": "sha1-DPaLud318r55YcOoUXjLhdunjLQ=",
+      "dev": true
     },
     "content-type": {
       "version": "1.0.4",
       "integrity": "sha1-uCeAl7m8IpNl3lxiz1/K7YtVmeU="
     },
     "cookie": {
-      "version": "0.4.0",
-      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
-      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+      "version": "0.3.1",
+      "resolved": "http://registry.npm.taobao.org/cookie/download/cookie-0.3.1.tgz",
+      "integrity": "sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s=",
       "dev": true
     },
     "cookie-signature": {
       "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
       "dev": true,
       "requires": {
-        "lru-cache": "4.1.5",
-        "which": "1.3.0"
+        "lru-cache": "4.1.3",
+        "shebang-command": "1.2.0",
+        "which": "1.3.1"
       }
     },
     "crypto-browserify": {
         "autoprefixer": "6.7.7",
         "decamelize": "1.2.0",
         "defined": "1.0.0",
-        "has": "1.0.3",
+        "has": "1.0.1",
         "object-assign": "4.1.1",
         "postcss": "5.2.18",
         "postcss-calc": "5.3.1",
       "requires": {
         "clap": "1.2.3",
         "source-map": "0.5.7"
-      }
-    },
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+          "dev": true
+        }
+      }
+    },
     "currently-unhandled": {
       "version": "0.4.1",
       "resolved": "http://registry.npm.taobao.org/currently-unhandled/download/currently-unhandled-0.4.1.tgz",
       "version": "1.14.1",
       "resolved": "http://registry.npm.taobao.org/dashdash/download/dashdash-1.14.1.tgz",
       "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
       "requires": {
         "assert-plus": "1.0.0"
       }
     },
-    "data-uri-to-buffer": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-2.0.0.tgz",
-      "integrity": "sha512-YbKCNLPPP4inc0E5If4OaalBc7gpaM2MRv77Pv2VThVComLKfbGYtJcdDCViDyp1Wd4SebhHLz94vp91zbK6bw==",
-      "optional": true,
-      "requires": {
-        "@types/node": "8.10.29"
-      }
-    },
     "date-format": {
       "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/date-format/-/date-format-1.2.0.tgz",
+      "resolved": "http://registry.npm.taobao.org/date-format/download/date-format-1.2.0.tgz",
       "integrity": "sha1-YV6CjiM90aubua4JUODOzPpuytg="
     },
     "date-now": {
     "deep-is": {
       "version": "0.1.3",
       "resolved": "http://registry.npm.taobao.org/deep-is/download/deep-is-0.1.3.tgz",
-      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ="
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
     },
     "define-properties": {
       "version": "1.1.2",
         }
       }
     },
-    "degenerator": {
-      "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-1.0.4.tgz",
-      "integrity": "sha1-/PSQo37OJmRk2cxDGrmMWBnO0JU=",
-      "optional": true,
-      "requires": {
-        "ast-types": "0.12.2",
-        "escodegen": "1.11.1",
-        "esprima": "3.1.3"
-      }
-    },
-    "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.1.1"
-      }
-    },
     "defined": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
     "delayed-stream": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/delayed-stream/download/delayed-stream-1.0.0.tgz",
-      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true
     },
     "delegates": {
       "version": "1.0.0",
     "depd": {
       "version": "1.1.2",
       "resolved": "http://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
-      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
     },
     "destroy": {
       "version": "1.0.4",
         "electron-builder-lib": "20.14.7",
         "fs-extra-p": "4.6.0",
         "iconv-lite": "0.4.23",
-        "js-yaml": "3.11.0",
+        "js-yaml": "3.13.1",
         "parse-color": "1.0.0",
         "sanitize-filename": "1.6.1"
       },
             "hosted-git-info": "2.6.0",
             "is-ci": "1.1.0",
             "isbinaryfile": "3.0.2",
-            "js-yaml": "3.11.0",
+            "js-yaml": "3.13.1",
             "lazy-val": "1.0.3",
             "minimatch": "3.0.4",
             "normalize-package-data": "2.4.0",
                 "debug": "3.1.0",
                 "fs-extra-p": "4.6.0",
                 "is-ci": "1.1.0",
-                "js-yaml": "3.11.0",
+                "js-yaml": "3.13.1",
                 "lazy-val": "1.0.3",
                 "semver": "5.5.0",
                 "source-map-support": "0.5.6",
       "integrity": "sha1-3vHxyl1gWdJKdm5YeULCEQbOEnU=",
       "dev": true
     },
-    "double-ended-queue": {
-      "version": "2.1.0-0",
-      "resolved": "https://registry.npmjs.org/double-ended-queue/-/double-ended-queue-2.1.0-0.tgz",
-      "integrity": "sha1-ED01J/0xUo9AGIEwyEHv3XgmTlw=",
-      "optional": true
-    },
     "duplexer": {
       "version": "0.1.1",
       "resolved": "http://registry.npm.taobao.org/duplexer/download/duplexer-0.1.1.tgz",
       "dev": true
     },
     "ecc-jsbn": {
-      "version": "0.1.2",
-      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
-      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/ecc-jsbn/download/ecc-jsbn-0.1.1.tgz",
+      "integrity": "sha1-D8c6ntXw1Tw4GTOYUj735UN3dQU=",
       "dev": true,
+      "optional": true,
       "requires": {
-        "jsbn": "0.1.1",
-        "safer-buffer": "2.1.2"
+        "jsbn": "0.1.1"
       }
     },
     "ee-first": {
         "hosted-git-info": "2.6.0",
         "is-ci": "1.1.0",
         "isbinaryfile": "3.0.2",
-        "js-yaml": "3.11.0",
+        "js-yaml": "3.13.1",
         "lazy-val": "1.0.3",
         "minimatch": "3.0.4",
         "normalize-package-data": "2.4.0",
       }
     },
     "es-abstract": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
-      "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+      "version": "1.11.0",
+      "resolved": "http://registry.npm.taobao.org/es-abstract/download/es-abstract-1.11.0.tgz",
+      "integrity": "sha1-zOh9UY8Elok7GjDNhGGDVTVIBoE=",
       "dev": true,
       "requires": {
-        "es-to-primitive": "1.2.0",
+        "es-to-primitive": "1.1.1",
         "function-bind": "1.1.1",
-        "has": "1.0.3",
-        "is-callable": "1.1.4",
-        "is-regex": "1.0.4",
-        "object-keys": "1.1.1"
+        "has": "1.0.1",
+        "is-callable": "1.1.3",
+        "is-regex": "1.0.4"
       }
     },
     "es-to-primitive": {
-      "version": "1.2.0",
-      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
-      "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/es-to-primitive/download/es-to-primitive-1.1.1.tgz",
+      "integrity": "sha1-RTVSSKiJeQNLZ5Lhm7gfK3l13Q0=",
       "dev": true,
       "requires": {
-        "is-callable": "1.1.4",
+        "is-callable": "1.1.3",
         "is-date-object": "1.0.1",
-        "is-symbol": "1.0.2"
+        "is-symbol": "1.0.1"
       }
     },
+    "es6-promise": {
+      "version": "4.2.4",
+      "resolved": "http://registry.npm.taobao.org/es6-promise/download/es6-promise-4.2.4.tgz",
+      "integrity": "sha1-3EIhwrFlGHYL2MOaUtjzVvwA7Sk=",
+      "dev": true
+    },
     "escape-html": {
       "version": "1.0.3",
       "resolved": "http://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
         "chalk": "2.4.2",
         "concat-stream": "1.6.2",
         "cross-spawn": "5.1.0",
-        "debug": "3.2.6",
+        "debug": "3.1.0",
         "doctrine": "2.1.0",
         "eslint-scope": "3.7.3",
         "eslint-visitor-keys": "1.0.0",
         "esutils": "2.0.2",
         "file-entry-cache": "2.0.0",
         "functional-red-black-tree": "1.0.1",
-        "glob": "7.1.3",
+        "glob": "7.1.2",
         "globals": "11.12.0",
         "ignore": "3.3.10",
         "imurmurhash": "0.1.4",
         "pluralize": "7.0.0",
         "progress": "2.0.3",
         "require-uncached": "1.0.3",
-        "semver": "5.7.0",
+        "semver": "5.5.0",
         "strip-ansi": "4.0.0",
         "strip-json-comments": "2.0.1",
         "table": "4.0.2",
         "text-table": "0.2.0"
       },
       "dependencies": {
-        "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.1.0",
-            "fast-json-stable-stringify": "2.0.0",
-            "json-schema-traverse": "0.3.1"
-          }
-        },
         "ansi-regex": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.3"
+            "color-convert": "1.9.1"
           }
         },
         "chalk": {
             "supports-color": "5.5.0"
           }
         },
-        "cross-spawn": {
-          "version": "5.1.0",
-          "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz",
-          "integrity": "sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk=",
-          "dev": true,
-          "requires": {
-            "lru-cache": "4.1.5",
-            "shebang-command": "1.2.0",
-            "which": "1.3.0"
-          }
-        },
-        "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.2"
-          }
-        },
-        "doctrine": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz",
-          "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==",
-          "dev": true,
-          "requires": {
-            "esutils": "2.0.2"
-          }
-        },
-        "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
-        },
         "globals": {
           "version": "11.12.0",
           "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
           "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
           "dev": true
         },
-        "json-schema-traverse": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
-          "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
-          "dev": true
-        },
-        "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
-        },
         "pluralize": {
           "version": "7.0.0",
           "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-7.0.0.tgz",
         "resolve": "1.11.1"
       },
       "dependencies": {
+        "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"
+          }
+        },
         "loose-envify": {
           "version": "1.4.0",
           "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
     },
     "espree": {
       "version": "3.5.4",
-      "resolved": "http://registry.npm.taobao.org/espree/download/espree-3.5.4.tgz",
-      "integrity": "sha1-sPRHGHyKi+2US4FaZgvd9d610ac=",
+      "resolved": "https://registry.npmjs.org/espree/-/espree-3.5.4.tgz",
+      "integrity": "sha512-yAcIQxtmMiB/jL32dzEp2enBeidsB7xWPLNiw3IIkpVds1P+h7qF9YwJq1yUNzp2OKXgAprs4F61ih66UsoD1A==",
       "dev": true,
       "requires": {
         "acorn": "5.7.3",
     },
     "esrecurse": {
       "version": "4.2.1",
-      "resolved": "http://registry.npm.taobao.org/esrecurse/download/esrecurse-4.2.1.tgz",
-      "integrity": "sha1-AHo7n9vCs7uH5IeeoZyS/b05Qs8=",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.2.1.tgz",
+      "integrity": "sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ==",
       "dev": true,
       "requires": {
         "estraverse": "4.2.0"
     "estraverse": {
       "version": "4.2.0",
       "resolved": "http://registry.npm.taobao.org/estraverse/download/estraverse-4.2.0.tgz",
-      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM="
+      "integrity": "sha1-De4/7TH81GlhjOc0IJn8GvoL2xM=",
+      "dev": true
     },
     "esutils": {
       "version": "2.0.2",
       "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
       "dev": true
     },
+    "event-stream": {
+      "version": "3.3.4",
+      "resolved": "http://registry.npm.taobao.org/event-stream/download/event-stream-3.3.4.tgz",
+      "integrity": "sha1-SrTJoPWlTbkzi0w02Gv86PSzVXE=",
+      "dev": true,
+      "requires": {
+        "duplexer": "0.1.1",
+        "from": "0.1.7",
+        "map-stream": "0.1.0",
+        "pause-stream": "0.0.11",
+        "split": "0.3.3",
+        "stream-combiner": "0.0.4",
+        "through": "2.3.8"
+      }
+    },
     "eventemitter3": {
-      "version": "3.1.2",
-      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
-      "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==",
+      "version": "3.1.0",
+      "resolved": "http://registry.npm.taobao.org/eventemitter3/download/eventemitter3-3.1.0.tgz",
+      "integrity": "sha1-CQtNbNvWRe0Qv3UNS1QHlC17oWM=",
       "dev": true
     },
     "events": {
       "dev": true,
       "requires": {
         "fill-range": "2.2.4"
-      },
-      "dependencies": {
-        "fill-range": {
-          "version": "2.2.4",
-          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
-          "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
-          "dev": true,
-          "requires": {
-            "is-number": "2.1.0",
-            "isobject": "2.1.0",
-            "randomatic": "3.1.1",
-            "repeat-element": "1.1.3",
-            "repeat-string": "1.6.1"
-          }
-        },
-        "is-number": {
-          "version": "2.1.0",
-          "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz",
-          "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
-          "dev": true,
-          "requires": {
-            "kind-of": "3.2.2"
-          }
-        }
       }
     },
     "express": {
-      "version": "4.17.1",
-      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
-      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "version": "4.16.3",
+      "resolved": "http://registry.npm.taobao.org/express/download/express-4.16.3.tgz",
+      "integrity": "sha1-avilAjUNsyRuzEvs9rWjTSL37VM=",
       "dev": true,
       "requires": {
-        "accepts": "1.3.7",
+        "accepts": "1.3.5",
         "array-flatten": "1.1.1",
-        "body-parser": "1.19.0",
-        "content-disposition": "0.5.3",
+        "body-parser": "1.18.2",
+        "content-disposition": "0.5.2",
         "content-type": "1.0.4",
-        "cookie": "0.4.0",
+        "cookie": "0.3.1",
         "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",
+        "finalhandler": "1.1.1",
         "fresh": "0.5.2",
         "merge-descriptors": "1.0.1",
         "methods": "1.1.2",
         "on-finished": "2.3.0",
-        "parseurl": "1.3.3",
+        "parseurl": "1.3.2",
         "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",
+        "proxy-addr": "2.0.3",
+        "qs": "6.5.1",
+        "range-parser": "1.2.0",
+        "safe-buffer": "5.1.1",
+        "send": "0.16.2",
+        "serve-static": "1.13.2",
+        "setprototypeof": "1.1.0",
+        "statuses": "1.4.0",
+        "type-is": "1.6.16",
         "utils-merge": "1.0.1",
         "vary": "1.1.2"
       },
           }
         },
         "qs": {
-          "version": "6.7.0",
-          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
-          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+          "version": "6.5.1",
+          "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.1.tgz",
+          "integrity": "sha1-NJzfbu+J7EXBLX1es/wMhwNDptg=",
+          "dev": true
+        },
+        "safe-buffer": {
+          "version": "5.1.1",
+          "resolved": "http://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.1.tgz",
+          "integrity": "sha1-iTMSr2myEj3vcfV4iQAWce6yyFM=",
+          "dev": true
+        },
+        "statuses": {
+          "version": "1.4.0",
+          "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.4.0.tgz",
+          "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=",
           "dev": true
         }
       }
     "extend": {
       "version": "3.0.2",
       "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g=="
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true
     },
     "external-editor": {
       "version": "2.2.0",
     "extsprintf": {
       "version": "1.3.0",
       "resolved": "http://registry.npm.taobao.org/extsprintf/download/extsprintf-1.3.0.tgz",
-      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU="
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true
     },
     "fast-deep-equal": {
-      "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz",
-      "integrity": "sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk=",
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/fast-deep-equal/download/fast-deep-equal-1.1.0.tgz",
+      "integrity": "sha1-wFNHeBfIa1HaqFPIHgWbcz0CNhQ=",
       "dev": true
     },
     "fast-json-stable-stringify": {
       "version": "2.0.0",
       "resolved": "http://registry.npm.taobao.org/fast-json-stable-stringify/download/fast-json-stable-stringify-2.0.0.tgz",
-      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I="
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+      "dev": true
     },
     "fast-levenshtein": {
       "version": "2.0.6",
       "resolved": "http://registry.npm.taobao.org/fast-levenshtein/download/fast-levenshtein-2.0.6.tgz",
-      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc="
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
     },
     "fastparse": {
       "version": "1.1.2",
         "loader-utils": "0.2.17"
       }
     },
-    "file-uri-to-path": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz",
-      "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==",
-      "optional": true
-    },
     "filename-regex": {
       "version": "2.0.1",
       "resolved": "http://registry.npm.taobao.org/filename-regex/download/filename-regex-2.0.1.tgz",
       "dev": true
     },
     "fill-range": {
-      "version": "7.0.1",
-      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
-      "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz",
+      "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==",
       "dev": true,
       "requires": {
-        "to-regex-range": "5.0.1"
+        "is-number": "2.1.0",
+        "isobject": "2.1.0",
+        "randomatic": "3.1.1",
+        "repeat-element": "1.1.3",
+        "repeat-string": "1.6.1"
       }
     },
     "finalhandler": {
-      "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
-      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "version": "1.1.1",
+      "resolved": "http://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.1.tgz",
+      "integrity": "sha1-7r9O2EAHnIP0JJA4ydcDAIMBsQU=",
       "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",
+        "parseurl": "1.3.2",
+        "statuses": "1.4.0",
         "unpipe": "1.0.0"
       },
       "dependencies": {
       "dependencies": {
         "circular-json": {
           "version": "0.3.3",
-          "resolved": "http://registry.npm.taobao.org/circular-json/download/circular-json-0.3.3.tgz",
-          "integrity": "sha1-gVyZ6oT2gJUp0vRXkb34JxE1LWY=",
+          "resolved": "https://registry.npmjs.org/circular-json/-/circular-json-0.3.3.tgz",
+          "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==",
           "dev": true
         }
       }
       "dev": true
     },
     "follow-redirects": {
-      "version": "1.7.0",
-      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.7.0.tgz",
-      "integrity": "sha512-m/pZQy4Gj287eNy94nivy5wchN3Kp+Q5WgUPNy5lJSZ3sgkVKSYV/ZChMAQVIgx1SqfZ2zBZtPA2YlXIWxxJOQ==",
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/follow-redirects/download/follow-redirects-1.0.0.tgz",
+      "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=",
       "dev": true,
       "requires": {
-        "debug": "3.2.6"
+        "debug": "2.6.9"
       },
       "dependencies": {
         "debug": {
-          "version": "3.2.6",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
-          "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
           "dev": true,
           "requires": {
-            "ms": "2.1.2"
+            "ms": "2.0.0"
           }
-        },
-        "ms": {
-          "version": "2.1.2",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
-          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
-          "dev": true
         }
       }
     },
     "forever-agent": {
       "version": "0.6.1",
       "resolved": "http://registry.npm.taobao.org/forever-agent/download/forever-agent-0.6.1.tgz",
-      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE="
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true
     },
     "form-data": {
-      "version": "2.3.3",
-      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
-      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+      "version": "2.3.2",
+      "resolved": "http://registry.npm.taobao.org/form-data/download/form-data-2.3.2.tgz",
+      "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=",
       "dev": true,
       "requires": {
         "asynckit": "0.4.0",
-        "combined-stream": "1.0.8",
+        "combined-stream": "1.0.6",
         "mime-types": "2.1.18"
       }
     },
     },
     "function-bind": {
       "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
-      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
+      "resolved": "http://registry.npm.taobao.org/function-bind/download/function-bind-1.1.1.tgz",
+      "integrity": "sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=",
       "dev": true
     },
     "functional-red-black-tree": {
     },
     "gaze": {
       "version": "1.1.3",
-      "resolved": "http://registry.npm.taobao.org/gaze/download/gaze-1.1.3.tgz",
-      "integrity": "sha1-xEFzPhO5J6yMD/C0w7Az8ogSkko=",
+      "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz",
+      "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==",
       "dev": true,
       "requires": {
         "globule": "1.2.1"
       "integrity": "sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ=",
       "dev": true
     },
-    "get-uri": {
-      "version": "2.0.3",
-      "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-2.0.3.tgz",
-      "integrity": "sha512-x5j6Ks7FOgLD/GlvjKwgu7wdmMR55iuRHhn8hj/+gA+eSbxQvZ+AEomq+3MgVEZj1vpi738QahGbCCSIDtXtkw==",
-      "optional": true,
-      "requires": {
-        "data-uri-to-buffer": "2.0.0",
-        "debug": "4.1.1",
-        "extend": "3.0.2",
-        "file-uri-to-path": "1.0.0",
-        "ftp": "0.3.10",
-        "readable-stream": "3.2.0"
-      },
-      "dependencies": {
-        "debug": {
-          "version": "4.1.1",
-          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
-          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
-          "optional": true,
-          "requires": {
-            "ms": "2.1.1"
-          }
-        },
-        "extend": {
-          "version": "3.0.2",
-          "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
-          "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
-          "optional": true
-        },
-        "ms": {
-          "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
-          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
-          "optional": true
-        },
-        "readable-stream": {
-          "version": "3.2.0",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.2.0.tgz",
-          "integrity": "sha512-RV20kLjdmpZuTF1INEb9IA3L68Nmi+Ri7ppZqo78wj//Pn62fCoJyV9zalccNzDD/OuJpMG4f+pfMl8+L6QdGw==",
-          "optional": true,
-          "requires": {
-            "inherits": "2.0.3",
-            "string_decoder": "1.2.0",
-            "util-deprecate": "1.0.2"
-          }
-        },
-        "string_decoder": {
-          "version": "1.2.0",
-          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz",
-          "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==",
-          "optional": true,
-          "requires": {
-            "safe-buffer": "5.1.2"
-          }
-        }
-      }
-    },
     "getpass": {
       "version": "0.1.7",
       "resolved": "http://registry.npm.taobao.org/getpass/download/getpass-0.1.7.tgz",
       "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
       "requires": {
         "assert-plus": "1.0.0"
       }
       "integrity": "sha512-g7QtgWF4uYSL5/dn71WxubOrS7JVGCnFPEnoeChJmBnyR9Mw8nGoEwOgJL/RC2Te0WhbsEUCejfH8SZNJ+adYQ==",
       "dev": true,
       "requires": {
-        "glob": "7.1.3",
+        "glob": "7.1.2",
         "lodash": "4.17.14",
         "minimatch": "3.0.4"
       }
     },
+    "got": {
+      "version": "6.7.1",
+      "resolved": "http://registry.npm.taobao.org/got/download/got-6.7.1.tgz",
+      "integrity": "sha1-JAzQV4WpoY5WHcG0S0HHY+8ejbA=",
+      "dev": true,
+      "requires": {
+        "create-error-class": "3.0.2",
+        "duplexer3": "0.1.4",
+        "get-stream": "3.0.0",
+        "is-redirect": "1.0.0",
+        "is-retry-allowed": "1.1.0",
+        "is-stream": "1.1.0",
+        "lowercase-keys": "1.0.1",
+        "safe-buffer": "5.1.2",
+        "timed-out": "4.0.1",
+        "unzip-response": "2.0.1",
+        "url-parse-lax": "1.0.0"
+      }
+    },
     "graceful-fs": {
       "version": "4.1.11",
       "resolved": "http://registry.npm.taobao.org/graceful-fs/download/graceful-fs-4.1.11.tgz",
     "har-schema": {
       "version": "2.0.0",
       "resolved": "http://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
-      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI="
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": 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==",
+      "version": "5.0.3",
+      "resolved": "http://registry.npm.taobao.org/har-validator/download/har-validator-5.0.3.tgz",
+      "integrity": "sha1-ukAsJmGU8VlW7xXg/PJCmT9qff0=",
       "dev": true,
       "requires": {
-        "ajv": "6.10.0",
+        "ajv": "5.5.2",
         "har-schema": "2.0.0"
       }
     },
     "has": {
-      "version": "1.0.3",
-      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
-      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/has/download/has-1.0.1.tgz",
+      "integrity": "sha1-hGFzP1OLCDfJNh45qauelwTcLyg=",
       "dev": true,
       "requires": {
         "function-bind": "1.1.1"
       "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=",
       "dev": true
     },
-    "hawk": {
-      "version": "3.1.3",
-      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
-      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
-      "optional": true,
-      "requires": {
-        "boom": "2.10.1",
-        "cryptiles": "2.0.5",
-        "hoek": "2.16.3",
-        "sntp": "1.0.9"
-      }
-    },
-    "hipchat-notifier": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/hipchat-notifier/-/hipchat-notifier-1.1.0.tgz",
-      "integrity": "sha1-ttJJdVQ3wZEII2d5nTupoPI7Ix4=",
-      "optional": true,
-      "requires": {
-        "lodash": "4.17.11",
-        "request": "2.87.0"
-      }
-    },
     "history": {
       "version": "2.1.2",
       "resolved": "http://registry.npm.taobao.org/history/download/history-2.1.2.tgz",
       "integrity": "sha1-weVybFSIW9GDbBXUESASKh/dcME=",
       "dev": true,
       "requires": {
-        "compression": "1.7.4",
-        "connect-history-api-fallback": "1.6.0",
+        "compression": "1.7.2",
+        "connect-history-api-fallback": "1.5.0",
         "contains-path": "0.1.0",
-        "express": "4.17.1",
+        "express": "4.16.3",
         "extract-text-webpack-plugin": "1.0.1",
         "find-root": "1.1.0",
         "http-proxy-middleware": "0.17.4",
         "rimraf": "2.6.2",
         "webpack": "1.15.0",
         "webpack-dev-middleware": "1.12.2",
-        "webpack-hot-middleware": "2.25.0"
+        "webpack-hot-middleware": "2.22.2"
       }
     },
-    "hoek": {
-      "version": "2.16.3",
-      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
-      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0="
-    },
     "hoist-non-react-statics": {
       "version": "2.5.0",
       "resolved": "http://registry.npm.taobao.org/hoist-non-react-statics/download/hoist-non-react-statics-2.5.0.tgz",
       "dev": true
     },
     "hosted-git-info": {
-      "version": "2.7.1",
-      "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.7.1.tgz",
-      "integrity": "sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w==",
+      "version": "2.6.0",
+      "resolved": "http://registry.npm.taobao.org/hosted-git-info/download/hosted-git-info-2.6.0.tgz",
+      "integrity": "sha1-IyNbKasjDFdqqw1PE/wEawsDgiI=",
       "dev": true
     },
     "html-comment-regex": {
       }
     },
     "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==",
+      "version": "1.6.3",
+      "resolved": "http://registry.npm.taobao.org/http-errors/download/http-errors-1.6.3.tgz",
+      "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=",
       "dev": true,
       "requires": {
         "depd": "1.1.2",
         "inherits": "2.0.3",
-        "setprototypeof": "1.1.1",
-        "statuses": "1.5.0",
-        "toidentifier": "1.0.0"
+        "setprototypeof": "1.1.0",
+        "statuses": "1.5.0"
       }
     },
     "http-proxy": {
       "integrity": "sha1-etOElGWPhGBeL220Q230EPTlvpo=",
       "dev": true,
       "requires": {
-        "eventemitter3": "3.1.2",
-        "follow-redirects": "1.7.0",
+        "eventemitter3": "3.1.0",
+        "follow-redirects": "1.0.0",
         "requires-port": "1.0.0"
       }
     },
-    "http-proxy-agent": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz",
-      "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==",
-      "requires": {
-        "agent-base": "4.2.1",
-        "debug": "3.1.0"
-      }
-    },
     "http-proxy-middleware": {
       "version": "0.17.4",
       "resolved": "http://registry.npm.taobao.org/http-proxy-middleware/download/http-proxy-middleware-0.17.4.tgz",
       "version": "1.2.0",
       "resolved": "http://registry.npm.taobao.org/http-signature/download/http-signature-1.2.0.tgz",
       "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
       "requires": {
         "assert-plus": "1.0.0",
         "jsprim": "1.4.1",
-        "sshpk": "1.16.1"
-      }
-    },
-    "httpntlm": {
-      "version": "1.6.1",
-      "resolved": "https://registry.npmjs.org/httpntlm/-/httpntlm-1.6.1.tgz",
-      "integrity": "sha1-rQFScUOi6Hc8+uapb1hla7UqNLI=",
-      "requires": {
-        "httpreq": "0.4.24",
-        "underscore": "1.7.0"
+        "sshpk": "1.14.1"
       }
     },
-    "httpreq": {
-      "version": "0.4.24",
-      "resolved": "https://registry.npmjs.org/httpreq/-/httpreq-0.4.24.tgz",
-      "integrity": "sha1-QzX/2CzZaWaKOUZckprGHWOTYn8="
-    },
     "https-browserify": {
       "version": "0.0.1",
       "resolved": "http://registry.npm.taobao.org/https-browserify/download/https-browserify-0.0.1.tgz",
       "integrity": "sha1-P5E2XKvmC3ftDruiS0VOPgnZWoI=",
       "dev": true
     },
-    "https-proxy-agent": {
-      "version": "2.2.1",
-      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz",
-      "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==",
-      "requires": {
-        "agent-base": "4.2.1",
-        "debug": "3.1.0"
-      }
-    },
     "i18next": {
       "version": "11.9.1",
       "resolved": "https://registry.npmjs.org/i18next/-/i18next-11.9.1.tgz",
       "dev": true
     },
     "ieee754": {
-      "version": "1.1.13",
-      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz",
-      "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==",
+      "version": "1.1.11",
+      "resolved": "http://registry.npm.taobao.org/ieee754/download/ieee754-1.1.11.tgz",
+      "integrity": "sha1-wWOE/+APW3g1gk5ntvK9RKUilFU=",
       "dev": true
     },
     "ignore": {
       "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
       "dev": true
     },
+    "import-lazy": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/import-lazy/download/import-lazy-2.1.0.tgz",
+      "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=",
+      "dev": true
+    },
     "imurmurhash": {
       "version": "0.1.4",
       "resolved": "http://registry.npm.taobao.org/imurmurhash/download/imurmurhash-0.1.4.tgz",
       "integrity": "sha1-gtwzbSMrkGIXnQWrMpOmYFn9Q10=",
       "dev": true
     },
-    "inflection": {
-      "version": "1.12.0",
-      "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.12.0.tgz",
-      "integrity": "sha1-ogCTVlbW9fa8TcdQLhrstwMihBY=",
-      "optional": true
-    },
     "inflight": {
       "version": "1.0.6",
       "resolved": "http://registry.npm.taobao.org/inflight/download/inflight-1.0.6.tgz",
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.3"
+            "color-convert": "1.9.1"
           }
         },
         "chalk": {
       "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=",
       "dev": true
     },
-    "ip": {
-      "version": "1.1.5",
-      "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz",
-      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo="
-    },
     "ipaddr.js": {
-      "version": "1.9.0",
-      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.0.tgz",
-      "integrity": "sha512-M4Sjn6N/+O6/IXSJseKqHoFc+5FdGJ22sXqnjTpdZweHK64MzEPAyQZyEU3R/KRv2GLoa7nNtg/C2Ev6m7z+eA==",
+      "version": "1.6.0",
+      "resolved": "http://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.6.0.tgz",
+      "integrity": "sha1-4/o1e3c9phnybpXwSdBVxyeW+Gs=",
       "dev": true
     },
     "is-absolute-url": {
       "integrity": "sha1-76ouqdqg16suoTqXsritUf776L4=",
       "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-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-builtin-module": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-builtin-module/download/is-builtin-module-1.0.0.tgz",
+      "integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
+      "dev": true,
+      "requires": {
+        "builtin-modules": "1.1.1"
+      }
     },
     "is-callable": {
       "version": "1.1.3",
         "is-extglob": "1.0.0"
       }
     },
-    "is-number": {
-      "version": "7.0.0",
-      "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
-      "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
-      "dev": true
-    },
-    "is-plain-obj": {
-      "version": "1.1.0",
+    "is-installed-globally": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-installed-globally/download/is-installed-globally-0.1.0.tgz",
+      "integrity": "sha1-Df2Y9akRFxbdU13aZJL2e/PSWoA=",
+      "dev": true,
+      "requires": {
+        "global-dirs": "0.1.1",
+        "is-path-inside": "1.0.1"
+      }
+    },
+    "is-npm": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-npm/download/is-npm-1.0.0.tgz",
+      "integrity": "sha1-8vtjpl5JBbQGyGBydloaTceTufQ=",
+      "dev": true
+    },
+    "is-number": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-2.1.0.tgz",
+      "integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
+      "dev": true,
+      "requires": {
+        "kind-of": "3.2.2"
+      }
+    },
+    "is-obj": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-obj/download/is-obj-1.0.1.tgz",
+      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+      "dev": true
+    },
+    "is-path-inside": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-path-inside/download/is-path-inside-1.0.1.tgz",
+      "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "1.0.2"
+      }
+    },
+    "is-plain-obj": {
+      "version": "1.1.0",
       "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
       "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
       "dev": true
       "resolved": "http://registry.npm.taobao.org/is-promise/download/is-promise-2.1.0.tgz",
       "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o="
     },
-    "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.3"
-      }
+    "is-redirect": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/is-redirect/download/is-redirect-1.0.0.tgz",
+      "integrity": "sha1-HQPd7VO9jbDzDCbk+V02/HyH3CQ=",
+      "dev": true
     },
     "is-regex": {
       "version": "1.0.4",
     },
     "is-resolvable": {
       "version": "1.1.0",
-      "resolved": "http://registry.npm.taobao.org/is-resolvable/download/is-resolvable-1.1.0.tgz",
-      "integrity": "sha1-+xj4fOH+uSUWnJpAfBkxijIG7Yg=",
+      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+      "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
       "dev": true
     },
     "is-retry-allowed": {
       }
     },
     "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"
-      }
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/is-symbol/download/is-symbol-1.0.1.tgz",
+      "integrity": "sha1-PMWfAAJRlLarLjjbrmaJJWtmBXI=",
+      "dev": true
     },
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/is-typedarray/download/is-typedarray-1.0.0.tgz",
-      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true
     },
     "is-utf8": {
       "version": "0.2.1",
     "isarray": {
       "version": "0.0.1",
       "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-0.0.1.tgz",
-      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+      "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=",
+      "dev": true
     },
     "isbinaryfile": {
       "version": "3.0.2",
     "isstream": {
       "version": "0.1.2",
       "resolved": "http://registry.npm.taobao.org/isstream/download/isstream-0.1.2.tgz",
-      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo="
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true
     },
     "js-base64": {
       "version": "2.4.5",
       "version": "0.1.1",
       "resolved": "http://registry.npm.taobao.org/jsbn/download/jsbn-0.1.1.tgz",
       "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "jsesc": {
       "version": "1.3.0",
     "json-schema": {
       "version": "0.2.3",
       "resolved": "http://registry.npm.taobao.org/json-schema/download/json-schema-0.2.3.tgz",
-      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM="
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true
     },
     "json-schema-traverse": {
-      "version": "0.4.1",
-      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
-      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "version": "0.3.1",
+      "resolved": "http://registry.npm.taobao.org/json-schema-traverse/download/json-schema-traverse-0.3.1.tgz",
+      "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
       "dev": true
     },
     "json-stable-stringify-without-jsonify": {
     "json-stringify-safe": {
       "version": "5.0.1",
       "resolved": "http://registry.npm.taobao.org/json-stringify-safe/download/json-stringify-safe-5.0.1.tgz",
-      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true
     },
     "json5": {
       "version": "0.5.1",
       "resolved": "http://registry.npm.taobao.org/json5/download/json5-0.5.1.tgz",
       "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE="
     },
+    "jsonfile": {
+      "version": "4.0.0",
+      "resolved": "http://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz",
+      "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
+      "requires": {
+        "graceful-fs": "4.1.11"
+      }
+    },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "http://registry.npm.taobao.org/jsonify/download/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+      "dev": true
+    },
     "jsprim": {
       "version": "1.4.1",
       "resolved": "http://registry.npm.taobao.org/jsprim/download/jsprim-1.4.1.tgz",
       "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
       "requires": {
         "assert-plus": "1.0.0",
         "extsprintf": "1.3.0",
       "version": "0.3.0",
       "resolved": "http://registry.npm.taobao.org/levn/download/levn-0.3.0.tgz",
       "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
       "requires": {
         "prelude-ls": "1.1.2",
         "type-check": "0.3.2"
       }
     },
-    "libbase64": {
-      "version": "0.1.0",
-      "resolved": "https://registry.npmjs.org/libbase64/-/libbase64-0.1.0.tgz",
-      "integrity": "sha1-YjUag5VjrF/1vSbxL2Dpgwu3UeY="
-    },
-    "libmime": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/libmime/-/libmime-3.0.0.tgz",
-      "integrity": "sha1-UaGp50SOy9Ms2lRCFnW7IbwJPaY=",
-      "requires": {
-        "iconv-lite": "0.4.15",
-        "libbase64": "0.1.0",
-        "libqp": "1.1.0"
-      },
-      "dependencies": {
-        "iconv-lite": {
-          "version": "0.4.15",
-          "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.15.tgz",
-          "integrity": "sha1-/iZaIYrGpXz+hUkn6dBMGYJe3es="
-        }
-      }
-    },
-    "libqp": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/libqp/-/libqp-1.1.0.tgz",
-      "integrity": "sha1-9ebgatdLeU+1tbZpiL9yjvHe2+g="
-    },
     "load-json-file": {
       "version": "1.1.0",
       "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-1.1.0.tgz",
       "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
       "dev": true
     },
+    "log4js": {
+      "version": "3.0.6",
+      "resolved": "https://registry.npmjs.org/log4js/-/log4js-3.0.6.tgz",
+      "integrity": "sha512-ezXZk6oPJCWL483zj64pNkMuY/NcRX5MPiB0zE6tjZM137aeusrOnW1ecxgF9cmwMWkBMhjteQxBPoZBh9FDxQ==",
+      "requires": {
+        "circular-json": "0.5.9",
+        "date-format": "1.2.0",
+        "debug": "3.1.0",
+        "rfdc": "1.1.2",
+        "streamroller": "0.7.0"
+      }
+    },
     "longest": {
       "version": "1.0.1",
       "resolved": "http://registry.npm.taobao.org/longest/download/longest-1.0.1.tgz",
         "signal-exit": "3.0.2"
       }
     },
+    "lowercase-keys": {
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/lowercase-keys/download/lowercase-keys-1.0.1.tgz",
+      "integrity": "sha1-b54wtHCE2XGnyCD/FabFFnt0wm8=",
+      "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==",
+      "version": "4.1.3",
+      "resolved": "http://registry.npm.taobao.org/lru-cache/download/lru-cache-4.1.3.tgz",
+      "integrity": "sha1-oRdc80lt/IQ2wVbDNLSVWZK85pw=",
       "dev": true,
       "requires": {
         "pseudomap": "1.0.2",
         "yallist": "2.1.2"
       }
     },
+    "make-dir": {
+      "version": "1.3.0",
+      "resolved": "http://registry.npm.taobao.org/make-dir/download/make-dir-1.3.0.tgz",
+      "integrity": "sha1-ecEDO4BRW9bSTsmTPoYMp17ifww=",
+      "dev": true,
+      "requires": {
+        "pify": "3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
     "map-age-cleaner": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
       "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=",
       "dev": true
     },
+    "map-stream": {
+      "version": "0.1.0",
+      "resolved": "http://registry.npm.taobao.org/map-stream/download/map-stream-0.1.0.tgz",
+      "integrity": "sha1-5WqpTEyAVaFkBKBnS3jyFffI4ZQ=",
+      "dev": true
+    },
     "math-expression-evaluator": {
       "version": "1.2.17",
       "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
         "loud-rejection": "1.6.0",
         "map-obj": "1.0.1",
         "minimist": "1.2.0",
-        "normalize-package-data": "2.5.0",
+        "normalize-package-data": "2.4.0",
         "object-assign": "4.1.1",
         "read-pkg-up": "1.0.1",
         "redent": "1.0.0",
       }
     },
     "mime": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
-      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "version": "2.3.1",
+      "resolved": "http://registry.npm.taobao.org/mime/download/mime-2.3.1.tgz",
+      "integrity": "sha1-sWIcVNY7l8R9PP5/chX31kUXw2k=",
       "dev": true
     },
     "mime-db": {
       "version": "1.33.0",
       "resolved": "http://registry.npm.taobao.org/mime-db/download/mime-db-1.33.0.tgz",
-      "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s="
+      "integrity": "sha1-o0kgUKXLm2NFBUHjnZeI0icng9s=",
+      "dev": true
     },
     "mime-types": {
       "version": "2.1.18",
       "resolved": "http://registry.npm.taobao.org/mime-types/download/mime-types-2.1.18.tgz",
       "integrity": "sha1-bzI/YKg9ERRvgx/xH9ZuL+VQO7g=",
+      "dev": true,
       "requires": {
         "mime-db": "1.33.0"
       }
     },
     "nan": {
       "version": "2.10.0",
-      "resolved": "https://registry.npmjs.org/nan/-/nan-2.10.0.tgz",
-      "integrity": "sha512-bAdJv7fBLhWC+/Bls0Oza+mvTaNQtP+1RyhhhvD95pgUJz6XM5IzgmxOkItJ9tkoCiplvAnXI1tNmmUD/eScyA==",
+      "resolved": "http://registry.npm.taobao.org/nan/download/nan-2.10.0.tgz",
+      "integrity": "sha1-ltDNYQ69WNS03pzAxoKM2pnHVI8=",
       "dev": true,
       "optional": true
     },
       "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==",
+      "version": "0.6.1",
+      "resolved": "http://registry.npm.taobao.org/negotiator/download/negotiator-0.6.1.tgz",
+      "integrity": "sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk=",
       "dev": true
     },
     "neo-async": {
       "dev": true,
       "requires": {
         "fstream": "1.0.12",
-        "glob": "7.1.3",
+        "glob": "7.1.2",
         "graceful-fs": "4.1.11",
         "mkdirp": "0.5.1",
         "nopt": "3.0.6",
         "npmlog": "4.1.2",
         "osenv": "0.1.5",
-        "request": "2.88.0",
+        "request": "2.87.0",
         "rimraf": "2.6.2",
         "semver": "5.3.0",
         "tar": "2.2.2",
-        "which": "1.3.0"
+        "which": "1.3.1"
       },
       "dependencies": {
         "semver": {
       "integrity": "sha1-PicsCBnjCJNeJmdECNevDhSRuDs=",
       "dev": true,
       "requires": {
-        "assert": "1.5.0",
+        "assert": "1.4.1",
         "browserify-zlib": "0.1.4",
         "buffer": "4.9.1",
         "console-browserify": "1.1.0",
         "punycode": "1.4.1",
         "querystring-es3": "0.2.1",
         "readable-stream": "2.3.6",
-        "stream-browserify": "2.0.2",
-        "stream-http": "2.8.3",
+        "stream-browserify": "2.0.1",
+        "stream-http": "2.8.2",
         "string_decoder": "0.10.31",
         "timers-browserify": "2.0.10",
         "tty-browserify": "0.0.0",
         "url": "0.11.0",
-        "util": "0.10.4",
+        "util": "0.10.3",
         "vm-browserify": "0.0.4"
       },
       "dependencies": {
         "cross-spawn": "3.0.1",
         "gaze": "1.1.3",
         "get-stdin": "4.0.1",
-        "glob": "7.1.3",
+        "glob": "7.1.2",
         "in-publish": "2.0.0",
         "lodash": "4.17.14",
         "meow": "3.7.0",
         "true-case-path": "1.0.3"
       },
       "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"
+          }
+        },
+        "aws4": {
+          "version": "1.8.0",
+          "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+          "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+          "dev": true
+        },
+        "cross-spawn": {
+          "version": "3.0.1",
+          "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-3.0.1.tgz",
+          "integrity": "sha1-ElYDfsufDF9549bvE14wdwGEuYI=",
+          "dev": true,
+          "requires": {
+            "lru-cache": "4.1.3",
+            "which": "1.3.1"
+          }
+        },
+        "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
+        },
+        "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,
+          "requires": {
+            "ajv": "6.10.2",
+            "har-schema": "2.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
+        },
+        "mime-db": {
+          "version": "1.40.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
+          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
+          "dev": true
+        },
+        "mime-types": {
+          "version": "2.1.24",
+          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
+          "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
+          "dev": true,
+          "requires": {
+            "mime-db": "1.40.0"
+          }
+        },
         "nan": {
           "version": "2.14.0",
           "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz",
           "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==",
           "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
+        },
+        "request": {
+          "version": "2.88.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
+          "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+          "dev": true,
+          "requires": {
+            "aws-sign2": "0.7.0",
+            "aws4": "1.8.0",
+            "caseless": "0.12.0",
+            "combined-stream": "1.0.6",
+            "extend": "3.0.2",
+            "forever-agent": "0.6.1",
+            "form-data": "2.3.2",
+            "har-validator": "5.1.3",
+            "http-signature": "1.2.0",
+            "is-typedarray": "1.0.0",
+            "isstream": "0.1.2",
+            "json-stringify-safe": "5.0.1",
+            "mime-types": "2.1.24",
+            "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"
+          }
+        },
+        "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,
+          "requires": {
+            "psl": "1.2.0",
+            "punycode": "1.4.1"
+          }
+        },
+        "uuid": {
+          "version": "3.3.2",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+          "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+          "dev": true
         }
       }
     },
-    "nodemailer-direct-transport": {
-      "version": "3.3.2",
-      "resolved": "https://registry.npmjs.org/nodemailer-direct-transport/-/nodemailer-direct-transport-3.3.2.tgz",
-      "integrity": "sha1-6W+vuQNYVglH5WkBfZfmBzilCoY=",
-      "optional": true,
-      "requires": {
-        "nodemailer-shared": "1.1.0",
-        "smtp-connection": "2.12.0"
-      }
-    },
-    "nodemailer-fetch": {
-      "version": "1.6.0",
-      "resolved": "https://registry.npmjs.org/nodemailer-fetch/-/nodemailer-fetch-1.6.0.tgz",
-      "integrity": "sha1-ecSQihwPXzdbc/6IjamCj23JY6Q="
-    },
-    "nodemailer-shared": {
-      "version": "1.1.0",
-      "resolved": "https://registry.npmjs.org/nodemailer-shared/-/nodemailer-shared-1.1.0.tgz",
-      "integrity": "sha1-z1mU4v0mjQD1zw+nZ6CBae2wfsA=",
-      "requires": {
-        "nodemailer-fetch": "1.6.0"
-      }
-    },
-    "nodemailer-smtp-pool": {
-      "version": "2.8.2",
-      "resolved": "https://registry.npmjs.org/nodemailer-smtp-pool/-/nodemailer-smtp-pool-2.8.2.tgz",
-      "integrity": "sha1-LrlNbPhXgLG0clzoU7nL1ejajHI=",
-      "optional": true,
-      "requires": {
-        "nodemailer-shared": "1.1.0",
-        "nodemailer-wellknown": "0.1.10",
-        "smtp-connection": "2.12.0"
-      }
-    },
-    "nodemailer-smtp-transport": {
-      "version": "2.7.2",
-      "resolved": "https://registry.npmjs.org/nodemailer-smtp-transport/-/nodemailer-smtp-transport-2.7.2.tgz",
-      "integrity": "sha1-A9ccdjFPFKx9vHvwM6am0W1n+3c=",
-      "optional": true,
-      "requires": {
-        "nodemailer-shared": "1.1.0",
-        "nodemailer-wellknown": "0.1.10",
-        "smtp-connection": "2.12.0"
-      }
-    },
-    "nodemailer-wellknown": {
-      "version": "0.1.10",
-      "resolved": "https://registry.npmjs.org/nodemailer-wellknown/-/nodemailer-wellknown-0.1.10.tgz",
-      "integrity": "sha1-WG24EB2zDLRDjrVGc3pBqtDPE9U="
-    },
     "nopt": {
       "version": "3.0.6",
       "resolved": "http://registry.npm.taobao.org/nopt/download/nopt-3.0.6.tgz",
       }
     },
     "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==",
+      "version": "2.4.0",
+      "resolved": "http://registry.npm.taobao.org/normalize-package-data/download/normalize-package-data-2.4.0.tgz",
+      "integrity": "sha1-EvlaMH1YNSB1oEkHuErIvpisAS8=",
       "dev": true,
       "requires": {
-        "hosted-git-info": "2.7.1",
-        "resolve": "1.11.0",
-        "semver": "5.7.0",
-        "validate-npm-package-license": "3.0.4"
-      },
-      "dependencies": {
-        "path-parse": {
-          "version": "1.0.6",
-          "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
-          "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
-          "dev": true
-        },
-        "resolve": {
-          "version": "1.11.0",
-          "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.0.tgz",
-          "integrity": "sha512-WL2pBDjqT6pGUNSUzMw00o4T7If+z4H2x3Gz893WoUQ5KW8Vr9txp00ykiP16VBaZF5+j/OcXJHZ9+PCvdiDKw==",
-          "dev": true,
-          "requires": {
-            "path-parse": "1.0.6"
-          }
-        }
+        "hosted-git-info": "2.6.0",
+        "is-builtin-module": "1.0.0",
+        "semver": "5.5.0",
+        "validate-npm-package-license": "3.0.3"
       }
     },
     "normalize-path": {
         }
       }
     },
+    "npm-run-all": {
+      "version": "4.1.3",
+      "resolved": "http://registry.npm.taobao.org/npm-run-all/download/npm-run-all-4.1.3.tgz",
+      "integrity": "sha1-SfFbVaZrtBAWZM4nDLGOcQP48YU=",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "3.2.1",
+        "chalk": "2.4.1",
+        "cross-spawn": "6.0.5",
+        "memorystream": "0.3.1",
+        "minimatch": "3.0.4",
+        "ps-tree": "1.1.0",
+        "read-pkg": "3.0.0",
+        "shell-quote": "1.6.1",
+        "string.prototype.padend": "3.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "cross-spawn": {
+          "version": "6.0.5",
+          "resolved": "http://registry.npm.taobao.org/cross-spawn/download/cross-spawn-6.0.5.tgz",
+          "integrity": "sha1-Sl7Hxk364iw6FBJNus3uhG2Ay8Q=",
+          "dev": true,
+          "requires": {
+            "nice-try": "1.0.4",
+            "path-key": "2.0.1",
+            "semver": "5.5.0",
+            "shebang-command": "1.2.0",
+            "which": "1.3.1"
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "load-json-file": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/load-json-file/download/load-json-file-4.0.0.tgz",
+          "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "4.1.11",
+            "parse-json": "4.0.0",
+            "pify": "3.0.0",
+            "strip-bom": "3.0.0"
+          }
+        },
+        "parse-json": {
+          "version": "4.0.0",
+          "resolved": "http://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz",
+          "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+          "dev": true,
+          "requires": {
+            "error-ex": "1.3.1",
+            "json-parse-better-errors": "1.0.2"
+          }
+        },
+        "path-type": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/path-type/download/path-type-3.0.0.tgz",
+          "integrity": "sha1-zvMdyOCho7sNEFwM2Xzzv0f0428=",
+          "dev": true,
+          "requires": {
+            "pify": "3.0.0"
+          }
+        },
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/pify/download/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        },
+        "read-pkg": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/read-pkg/download/read-pkg-3.0.0.tgz",
+          "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+          "dev": true,
+          "requires": {
+            "load-json-file": "4.0.0",
+            "normalize-package-data": "2.4.0",
+            "path-type": "3.0.0"
+          }
+        },
+        "strip-bom": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/strip-bom/download/strip-bom-3.0.0.tgz",
+          "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
     "npm-run-path": {
       "version": "2.0.2",
       "resolved": "http://registry.npm.taobao.org/npm-run-path/download/npm-run-path-2.0.2.tgz",
     },
     "npmlog": {
       "version": "4.1.2",
-      "resolved": "http://registry.npm.taobao.org/npmlog/download/npmlog-4.1.2.tgz",
-      "integrity": "sha1-CKfyqL9zRgR3mp76StXMcXq7lUs=",
+      "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
+      "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
       "dev": true,
       "requires": {
         "are-we-there-yet": "1.1.5",
       "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
     },
     "oauth-sign": {
-      "version": "0.9.0",
-      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
-      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+      "version": "0.8.2",
+      "resolved": "http://registry.npm.taobao.org/oauth-sign/download/oauth-sign-0.8.2.tgz",
+      "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
       "dev": true
     },
     "object-assign": {
       "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
     },
     "object-keys": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
-      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+      "version": "0.4.0",
+      "resolved": "http://registry.npm.taobao.org/object-keys/download/object-keys-0.4.0.tgz",
+      "integrity": "sha1-KKaq50KN0sOpLz2V8hM13SBOAzY=",
       "dev": true
     },
     "object.assign": {
       "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
       "dev": true,
       "requires": {
-        "define-properties": "1.1.3",
+        "define-properties": "1.1.2",
         "function-bind": "1.1.1",
         "has-symbols": "1.0.0",
         "object-keys": "1.1.1"
+      },
+      "dependencies": {
+        "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.entries": {
         "es-abstract": "1.13.0",
         "function-bind": "1.1.1",
         "has": "1.0.3"
+      },
+      "dependencies": {
+        "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.1.1"
+          }
+        },
+        "es-abstract": {
+          "version": "1.13.0",
+          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+          "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+          "dev": true,
+          "requires": {
+            "es-to-primitive": "1.2.0",
+            "function-bind": "1.1.1",
+            "has": "1.0.3",
+            "is-callable": "1.1.4",
+            "is-regex": "1.0.4",
+            "object-keys": "1.1.1"
+          }
+        },
+        "es-to-primitive": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+          "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+          "dev": true,
+          "requires": {
+            "is-callable": "1.1.4",
+            "is-date-object": "1.0.1",
+            "is-symbol": "1.0.2"
+          }
+        },
+        "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"
+          }
+        },
+        "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-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"
+          }
+        },
+        "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.fromentries": {
       "integrity": "sha512-9iLiI6H083uiqUuvzyY6qrlmc/Gz8hLQFOcb/Ri/0xXFkSNS3ctV+CbE6yM2+AnkYfOB3dGjdzC0wrMLIhQICA==",
       "dev": true,
       "requires": {
-        "define-properties": "1.1.3",
-        "es-abstract": "1.13.0",
+        "define-properties": "1.1.2",
+        "es-abstract": "1.11.0",
         "function-bind": "1.1.1",
-        "has": "1.0.3"
+        "has": "1.0.1"
       }
     },
     "object.omit": {
       "version": "2.0.1",
-      "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz",
+      "resolved": "http://registry.npm.taobao.org/object.omit/download/object.omit-2.0.1.tgz",
       "integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
       "dev": true,
       "requires": {
         "es-abstract": "1.13.0",
         "function-bind": "1.1.1",
         "has": "1.0.3"
+      },
+      "dependencies": {
+        "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.1.1"
+          }
+        },
+        "es-abstract": {
+          "version": "1.13.0",
+          "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+          "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+          "dev": true,
+          "requires": {
+            "es-to-primitive": "1.2.0",
+            "function-bind": "1.1.1",
+            "has": "1.0.3",
+            "is-callable": "1.1.4",
+            "is-regex": "1.0.4",
+            "object-keys": "1.1.1"
+          }
+        },
+        "es-to-primitive": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+          "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+          "dev": true,
+          "requires": {
+            "is-callable": "1.1.4",
+            "is-date-object": "1.0.1",
+            "is-symbol": "1.0.2"
+          }
+        },
+        "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"
+          }
+        },
+        "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-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"
+          }
+        },
+        "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
+        }
       }
     },
     "on-finished": {
       }
     },
     "on-headers": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
-      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+      "version": "1.0.1",
+      "resolved": "http://registry.npm.taobao.org/on-headers/download/on-headers-1.0.1.tgz",
+      "integrity": "sha1-ko9dD0cNSTQmUepnlLCFfBAGk/c=",
       "dev": true
     },
     "once": {
       "version": "0.8.2",
       "resolved": "http://registry.npm.taobao.org/optionator/download/optionator-0.8.2.tgz",
       "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dev": true,
       "requires": {
         "deep-is": "0.1.3",
         "fast-levenshtein": "2.0.6",
     },
     "osenv": {
       "version": "0.1.5",
-      "resolved": "http://registry.npm.taobao.org/osenv/download/osenv-0.1.5.tgz",
-      "integrity": "sha1-hc36+uso6Gd/QW4odZK18/SepBA=",
+      "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
+      "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
       "dev": true,
       "requires": {
         "os-homedir": "1.0.2",
     },
     "output-file-sync": {
       "version": "1.1.2",
-      "resolved": "https://registry.npmjs.org/output-file-sync/-/output-file-sync-1.1.2.tgz",
+      "resolved": "http://registry.npm.taobao.org/output-file-sync/download/output-file-sync-1.1.2.tgz",
       "integrity": "sha1-0KM+7+YaIF+suQCS6CZZjVJFznY=",
       "dev": true,
       "requires": {
       "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
       "dev": true
     },
-    "pac-proxy-agent": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-3.0.0.tgz",
-      "integrity": "sha512-AOUX9jES/EkQX2zRz0AW7lSx9jD//hQS8wFXBvcnd/J2Py9KaMJMqV/LPqJssj1tgGufotb2mmopGPR15ODv1Q==",
-      "optional": true,
-      "requires": {
-        "agent-base": "4.2.1",
-        "debug": "3.1.0",
-        "get-uri": "2.0.3",
-        "http-proxy-agent": "2.1.0",
-        "https-proxy-agent": "2.2.1",
-        "pac-resolver": "3.0.0",
-        "raw-body": "2.3.3",
-        "socks-proxy-agent": "4.0.1"
-      }
-    },
-    "pac-resolver": {
-      "version": "3.0.0",
-      "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-3.0.0.tgz",
-      "integrity": "sha512-tcc38bsjuE3XZ5+4vP96OfhOugrX+JcnpUbhfuc4LuXBLQhoTthOstZeoQJBDnQUDYzYmdImKsbz0xSl1/9qeA==",
-      "optional": true,
-      "requires": {
-        "co": "4.6.0",
-        "degenerator": "1.0.4",
-        "ip": "1.1.5",
-        "netmask": "1.0.6",
-        "thunkify": "2.1.2"
-      }
-    },
     "package-json": {
       "version": "4.0.1",
       "resolved": "http://registry.npm.taobao.org/package-json/download/package-json-4.0.1.tgz",
       "dev": true
     },
     "parseurl": {
-      "version": "1.3.3",
-      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
-      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "version": "1.3.2",
+      "resolved": "http://registry.npm.taobao.org/parseurl/download/parseurl-1.3.2.tgz",
+      "integrity": "sha1-/CidTtiZMRlGDBViUyYs3I3mW/M=",
       "dev": true
     },
     "pascalcase": {
       "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=",
       "dev": true
     },
-    "path-proxy": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/path-proxy/-/path-proxy-1.0.0.tgz",
-      "integrity": "sha1-GOijaFn8nS8aU7SN7hOFQ8Ag3l4=",
-      "optional": true,
-      "requires": {
-        "inflection": "1.3.8"
-      },
-      "dependencies": {
-        "inflection": {
-          "version": "1.3.8",
-          "resolved": "https://registry.npmjs.org/inflection/-/inflection-1.3.8.tgz",
-          "integrity": "sha1-y9Fg2p91sUw8xjV41POWeEvzAU4=",
-          "optional": true
-        }
-      }
-    },
     "path-to-regexp": {
       "version": "0.1.7",
       "resolved": "http://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
     "performance-now": {
       "version": "2.1.0",
       "resolved": "http://registry.npm.taobao.org/performance-now/download/performance-now-2.1.0.tgz",
-      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true
     },
     "pify": {
       "version": "2.3.0",
     "pinkie": {
       "version": "2.0.4",
       "resolved": "http://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz",
-      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA="
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
     },
     "pinkie-promise": {
       "version": "2.0.1",
       "resolved": "http://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
       "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
       "requires": {
         "pinkie": "2.0.4"
       }
       "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
       "dev": true,
       "requires": {
-        "has": "1.0.3",
+        "has": "1.0.1",
         "postcss": "5.2.18",
         "postcss-value-parser": "3.3.0"
       }
       "dev": true,
       "requires": {
         "alphanum-sort": "1.0.2",
-        "has": "1.0.3",
+        "has": "1.0.1",
         "postcss": "5.2.18",
         "postcss-selector-parser": "2.2.3"
       }
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.3"
+            "color-convert": "1.9.1"
           }
         },
         "chalk": {
             "supports-color": "5.5.0"
           }
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
         "supports-color": {
           "version": "5.5.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.3"
+            "color-convert": "1.9.1"
           }
         },
         "chalk": {
             "supports-color": "5.5.0"
           }
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
         "supports-color": {
           "version": "5.5.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.3"
+            "color-convert": "1.9.1"
           }
         },
         "chalk": {
             "supports-color": "5.5.0"
           }
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
         "supports-color": {
           "version": "5.5.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.3"
+            "color-convert": "1.9.1"
           }
         },
         "chalk": {
             "supports-color": "5.5.0"
           }
         },
-        "source-map": {
-          "version": "0.6.1",
-          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
-          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
-          "dev": true
-        },
         "supports-color": {
           "version": "5.5.0",
           "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
       "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
       "dev": true,
       "requires": {
-        "has": "1.0.3",
+        "has": "1.0.1",
         "postcss": "5.2.18",
         "postcss-value-parser": "3.3.0"
       }
       "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
       "dev": true,
       "requires": {
-        "has": "1.0.3",
+        "has": "1.0.1",
         "postcss": "5.2.18",
         "uniqs": "2.0.0"
       }
     "prelude-ls": {
       "version": "1.1.2",
       "resolved": "http://registry.npm.taobao.org/prelude-ls/download/prelude-ls-1.1.2.tgz",
-      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ="
-    },
-    "prepend-http": {
-      "version": "1.0.4",
-      "resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
-      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
       "dev": true
     },
     "prepend-http": {
       "version": "1.0.4",
-      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+      "resolved": "http://registry.npm.taobao.org/prepend-http/download/prepend-http-1.0.4.tgz",
       "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
       "dev": true
     },
       "dev": true
     },
     "process-nextick-args": {
-      "version": "1.0.7",
-      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-1.0.7.tgz",
-      "integrity": "sha1-FQ4gt1ZZCtP5EJPyWk8q2L/zC6M=",
-      "optional": true
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
     },
     "progress": {
       "version": "2.0.3",
         "asap": "2.0.6"
       }
     },
-    "promisify-call": {
-      "version": "2.0.4",
-      "resolved": "https://registry.npmjs.org/promisify-call/-/promisify-call-2.0.4.tgz",
-      "integrity": "sha1-1IwtRWUszM1SgB3ey9UzptS9X7o=",
-      "optional": true,
-      "requires": {
-        "with-callback": "1.0.2"
-      }
-    },
     "prop-types": {
       "version": "15.6.2",
       "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.6.2.tgz",
       "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==",
+      "version": "2.0.3",
+      "resolved": "http://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.3.tgz",
+      "integrity": "sha1-NV8mJQWmIWRrMTCnKOtkfiIFU0E=",
       "dev": true,
       "requires": {
         "forwarded": "0.1.2",
-        "ipaddr.js": "1.9.0"
-      }
-    },
-    "proxy-agent": {
-      "version": "3.0.3",
-      "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-3.0.3.tgz",
-      "integrity": "sha512-PXVVVuH9tiQuxQltFJVSnXWuDtNr+8aNBP6XVDDCDiUuDN8eRCm+ii4/mFWmXWEA0w8jjJSlePa4LXlM4jIzNA==",
-      "optional": true,
-      "requires": {
-        "agent-base": "4.2.1",
-        "debug": "3.1.0",
-        "http-proxy-agent": "2.1.0",
-        "https-proxy-agent": "2.2.1",
-        "lru-cache": "4.1.3",
-        "pac-proxy-agent": "3.0.0",
-        "proxy-from-env": "1.0.0",
-        "socks-proxy-agent": "4.0.1"
+        "ipaddr.js": "1.6.0"
       }
     },
-    "proxy-from-env": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.0.0.tgz",
-      "integrity": "sha1-M8UDmPcOp+uW0h97gXYwpVeRx+4=",
-      "optional": true
-    },
     "prr": {
       "version": "1.0.1",
       "resolved": "http://registry.npm.taobao.org/prr/download/prr-1.0.1.tgz",
     "pseudomap": {
       "version": "1.0.2",
       "resolved": "http://registry.npm.taobao.org/pseudomap/download/pseudomap-1.0.2.tgz",
-      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM="
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
     },
     "psl": {
-      "version": "1.1.32",
-      "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz",
-      "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g==",
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.2.0.tgz",
+      "integrity": "sha512-GEn74ZffufCmkDDLNcl3uuyF/aSD6exEyh1v/ZSdAomB82t6G9hzJVRx0jBmLDW+VfZqks3aScmMw9DszwUalA==",
       "dev": true
     },
     "pump": {
     "punycode": {
       "version": "1.4.1",
       "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-1.4.1.tgz",
-      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4="
+      "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+      "dev": true
     },
     "q": {
       "version": "1.5.1",
     "qs": {
       "version": "6.5.2",
       "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.5.2.tgz",
-      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY="
+      "integrity": "sha1-yzroBuh0BERYTvFUzo7pjUA/PjY=",
+      "dev": true
     },
     "query-string": {
       "version": "3.0.3",
       "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
       "dev": true
     },
-    "querystringify": {
-      "version": "2.1.0",
-      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.1.0.tgz",
-      "integrity": "sha512-sluvZZ1YiTLD5jsqZcDmFyV2EwToyXZBfpoVOmktMmW+VEnhgakFHnasVph65fOjGPTWN0Nw3+XQaSeMayr0kg==",
-      "optional": true
-    },
     "randomatic": {
       "version": "3.1.1",
       "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz",
       "dependencies": {
         "is-number": {
           "version": "4.0.0",
-          "resolved": "http://registry.npm.taobao.org/is-number/download/is-number-4.0.0.tgz",
-          "integrity": "sha1-ACbjf1RU1z41bf5lZGmYZ8an8P8=",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz",
+          "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==",
           "dev": true
         },
         "kind-of": {
           "version": "6.0.2",
-          "resolved": "http://registry.npm.taobao.org/kind-of/download/kind-of-6.0.2.tgz",
-          "integrity": "sha1-ARRrNqYhjmTljzqNZt5df8b20FE=",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz",
+          "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==",
           "dev": true
         }
       }
     },
     "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==",
+      "version": "1.2.0",
+      "resolved": "http://registry.npm.taobao.org/range-parser/download/range-parser-1.2.0.tgz",
+      "integrity": "sha1-9JvmtIeJTdxA3MlKMi9hEJLgDV4=",
       "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"
-      }
-    },
     "rc": {
       "version": "1.2.8",
       "resolved": "http://registry.npm.taobao.org/rc/download/rc-1.2.8.tgz",
         "strip-json-comments": "2.0.1"
       },
       "dependencies": {
-        "bytes": {
-          "version": "3.1.0",
-          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
-          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+        "minimist": {
+          "version": "1.2.0",
+          "resolved": "http://registry.npm.taobao.org/minimist/download/minimist-1.2.0.tgz",
+          "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
           "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"
-          }
+        "strip-json-comments": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/strip-json-comments/download/strip-json-comments-2.0.1.tgz",
+          "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=",
+          "dev": true
         }
       }
     },
         "dotenv": "5.0.1",
         "dotenv-expand": "4.2.0",
         "fs-extra-p": "4.6.0",
-        "js-yaml": "3.11.0",
+        "js-yaml": "3.13.1",
         "json5": "1.0.1",
         "lazy-val": "1.0.3"
       },
       "dev": true,
       "requires": {
         "load-json-file": "1.1.0",
-        "normalize-package-data": "2.5.0",
+        "normalize-package-data": "2.4.0",
         "path-type": "1.1.0"
       }
     },
       "version": "1.1.14",
       "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-1.1.14.tgz",
       "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=",
+      "dev": true,
       "requires": {
         "core-util-is": "1.0.2",
         "inherits": "2.0.3",
     },
     "redent": {
       "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz",
+      "resolved": "http://registry.npm.taobao.org/redent/download/redent-1.0.0.tgz",
       "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=",
       "dev": true,
       "requires": {
         }
       }
     },
-    "redis": {
-      "version": "2.8.0",
-      "resolved": "https://registry.npmjs.org/redis/-/redis-2.8.0.tgz",
-      "integrity": "sha512-M1OkonEQwtRmZv4tEWF2VgpG0JWJ8Fv1PhlgT5+B+uNq2cA3Rt1Yt/ryoR+vQNOQcIEgdCdfH0jr3bDpihAw1A==",
-      "optional": true,
-      "requires": {
-        "double-ended-queue": "2.1.0-0",
-        "redis-commands": "1.4.0",
-        "redis-parser": "2.6.0"
-      }
-    },
-    "redis-commands": {
-      "version": "1.4.0",
-      "resolved": "https://registry.npmjs.org/redis-commands/-/redis-commands-1.4.0.tgz",
-      "integrity": "sha512-cu8EF+MtkwI4DLIT0x9P8qNTLFhQD4jLfxLR0cCNkeGzs87FN6879JOJwNQR/1zD7aSYNbU0hgsV9zGY71Itvw==",
-      "optional": true
-    },
-    "redis-parser": {
-      "version": "2.6.0",
-      "resolved": "https://registry.npmjs.org/redis-parser/-/redis-parser-2.6.0.tgz",
-      "integrity": "sha1-Uu0J2srBCPGmMcB+m2mUHnoZUEs=",
-      "optional": true
-    },
     "redux": {
       "version": "4.0.4",
       "resolved": "https://registry.npmjs.org/redux/-/redux-4.0.4.tgz",
       }
     },
     "request": {
-      "version": "2.88.0",
-      "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
-      "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==",
+      "version": "2.87.0",
+      "resolved": "http://registry.npm.taobao.org/request/download/request-2.87.0.tgz",
+      "integrity": "sha1-MvACNc0I1IK00NaNuTqCnA7VdW4=",
       "dev": true,
       "requires": {
         "aws-sign2": "0.7.0",
-        "aws4": "1.8.0",
+        "aws4": "1.7.0",
         "caseless": "0.12.0",
-        "combined-stream": "1.0.8",
+        "combined-stream": "1.0.6",
         "extend": "3.0.2",
         "forever-agent": "0.6.1",
-        "form-data": "2.3.3",
-        "har-validator": "5.1.3",
+        "form-data": "2.3.2",
+        "har-validator": "5.0.3",
         "http-signature": "1.2.0",
         "is-typedarray": "1.0.0",
         "isstream": "0.1.2",
         "json-stringify-safe": "5.0.1",
-        "mime-types": "2.1.24",
-        "oauth-sign": "0.9.0",
+        "mime-types": "2.1.18",
+        "oauth-sign": "0.8.2",
         "performance-now": "2.1.0",
         "qs": "6.5.2",
         "safe-buffer": "5.1.2",
-        "tough-cookie": "2.4.3",
+        "tough-cookie": "2.3.4",
         "tunnel-agent": "0.6.0",
-        "uuid": "3.3.2"
+        "uuid": "3.2.1"
       },
       "dependencies": {
-        "mime-db": {
-          "version": "1.40.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
-          "dev": true
-        },
-        "mime-types": {
-          "version": "2.1.24",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
-          "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
-          "dev": true,
-          "requires": {
-            "mime-db": "1.40.0"
-          }
-        },
         "uuid": {
-          "version": "3.3.2",
-          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
-          "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/uuid/download/uuid-3.2.1.tgz",
+          "integrity": "sha1-EsUou51Y0LkmXZovbw/ovhf/HxQ=",
           "dev": true
         }
       }
     },
-    "requestretry": {
-      "version": "1.13.0",
-      "resolved": "https://registry.npmjs.org/requestretry/-/requestretry-1.13.0.tgz",
-      "integrity": "sha512-Lmh9qMvnQXADGAQxsXHP4rbgO6pffCfuR8XUBdP9aitJcLQJxhp7YZK4xAVYXnPJ5E52mwrfiKQtKonPL8xsmg==",
-      "optional": true,
-      "requires": {
-        "extend": "3.0.2",
-        "lodash": "4.17.11",
-        "request": "2.87.0",
-        "when": "3.7.8"
-      }
-    },
     "require-directory": {
       "version": "2.1.1",
       "resolved": "http://registry.npm.taobao.org/require-directory/download/require-directory-2.1.1.tgz",
     "requires-port": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
-      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8="
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
     },
     "reselect": {
       "version": "3.0.1",
       "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=",
       "dev": true
     },
+    "rfdc": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.1.2.tgz",
+      "integrity": "sha512-92ktAgvZhBzYTIK0Mja9uen5q5J3NRVMoDkJL2VMwq6SXjVCgqvQeVP2XAaUY6HT+XpQYeLSjb3UoitBryKmdA=="
+    },
     "right-align": {
       "version": "0.1.3",
       "resolved": "http://registry.npm.taobao.org/right-align/download/right-align-0.1.3.tgz",
       "integrity": "sha1-E/vWPNHK8JCLn9k0dq1DpR0eC0k=",
       "dev": true,
       "requires": {
-        "glob": "7.1.3",
+        "glob": "7.1.2",
         "lodash": "4.17.14",
         "scss-tokenizer": "0.2.3",
         "yargs": "7.1.0"
             "wrap-ansi": "2.1.0"
           }
         },
+        "os-locale": {
+          "version": "1.4.0",
+          "resolved": "http://registry.npm.taobao.org/os-locale/download/os-locale-1.4.0.tgz",
+          "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=",
+          "dev": true,
+          "requires": {
+            "lcid": "1.0.0"
+          }
+        },
+        "which-module": {
+          "version": "1.0.0",
+          "resolved": "http://registry.npm.taobao.org/which-module/download/which-module-1.0.0.tgz",
+          "integrity": "sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8=",
+          "dev": true
+        },
         "yargs": {
           "version": "7.1.0",
           "resolved": "http://registry.npm.taobao.org/yargs/download/yargs-7.1.0.tgz",
         "lodash.tail": "4.1.1",
         "neo-async": "2.6.1",
         "pify": "3.0.0",
-        "semver": "5.7.0"
+        "semver": "5.5.0"
       },
       "dependencies": {
         "big.js": {
     },
     "sax": {
       "version": "1.2.4",
-      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
-      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "resolved": "http://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
+      "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=",
       "dev": true
     },
     "scroll-behavior": {
       "integrity": "sha1-v0RNev7rlK1Dw5rS+yYVFifMuio="
     },
     "semver": {
-      "version": "5.7.0",
-      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz",
-      "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==",
-      "dev": true
+      "version": "5.5.0",
+      "resolved": "http://registry.npm.taobao.org/semver/download/semver-5.5.0.tgz",
+      "integrity": "sha1-3Eu8emyp2Rbe5dQ1FvAJK1j3uKs="
+    },
+    "semver-diff": {
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/semver-diff/download/semver-diff-2.1.0.tgz",
+      "integrity": "sha1-S7uEN8jTfksM8aaP1ybsbWRdbTY=",
+      "dev": true,
+      "requires": {
+        "semver": "5.5.0"
+      }
     },
     "send": {
-      "version": "0.17.1",
-      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
-      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "version": "0.16.2",
+      "resolved": "http://registry.npm.taobao.org/send/download/send-0.16.2.tgz",
+      "integrity": "sha1-bsyh4PjBVtFBWXVZhI32RzCmu8E=",
       "dev": true,
       "requires": {
         "debug": "2.6.9",
         "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",
+        "http-errors": "1.6.3",
+        "mime": "1.4.1",
+        "ms": "2.0.0",
         "on-finished": "2.3.0",
-        "range-parser": "1.2.1",
-        "statuses": "1.5.0"
+        "range-parser": "1.2.0",
+        "statuses": "1.4.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==",
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "http://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
+          "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "mime": {
+          "version": "1.4.1",
+          "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.4.1.tgz",
+          "integrity": "sha1-Eh+evEnjdm8xGnbh+hyAA8SwOqY=",
+          "dev": true
+        },
+        "statuses": {
+          "version": "1.4.0",
+          "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.4.0.tgz",
+          "integrity": "sha1-u3PURtonlhBu/MG2AaJT1sRr0Ic=",
           "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==",
+      "version": "1.13.2",
+      "resolved": "http://registry.npm.taobao.org/serve-static/download/serve-static-1.13.2.tgz",
+      "integrity": "sha1-CV6Ecv1bRiN9tQzkhqQ/S4bGzsE=",
       "dev": true,
       "requires": {
         "encodeurl": "1.0.2",
         "escape-html": "1.0.3",
-        "parseurl": "1.3.3",
-        "send": "0.17.1"
+        "parseurl": "1.3.2",
+        "send": "0.16.2"
       }
     },
     "set-blocking": {
       "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU="
     },
     "setprototypeof": {
-      "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
-      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "version": "1.1.0",
+      "resolved": "http://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.0.tgz",
+      "integrity": "sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=",
       "dev": true
     },
     "sha.js": {
       "version": "1.1.2",
       "resolved": "http://registry.npm.taobao.org/single-line-log/download/single-line-log-1.1.2.tgz",
       "integrity": "sha1-wvg/Jzo+GhbtsJlWYdoO1e8DM2Q=",
-      "dev": true,
-      "requires": {
-        "string-width": "1.0.2"
-      }
-    },
-    "slack-node": {
-      "version": "0.2.0",
-      "resolved": "https://registry.npmjs.org/slack-node/-/slack-node-0.2.0.tgz",
-      "integrity": "sha1-3kuN3aqLeT9h29KTgQT9q/N9+jA=",
-      "optional": true,
+      "dev": true,
       "requires": {
-        "requestretry": "1.13.0"
+        "string-width": "1.0.2"
       }
     },
     "slash": {
         "is-plain-obj": "1.1.0"
       }
     },
-    "smart-buffer": {
-      "version": "4.0.2",
-      "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.0.2.tgz",
-      "integrity": "sha512-JDhEpTKzXusOqXZ0BUIdH+CjFdO/CR3tLlf5CN34IypI+xMmXW1uB16OOY8z3cICbJlDAVJzNbwBhNO0wt9OAw=="
-    },
-    "smtp-connection": {
-      "version": "2.12.0",
-      "resolved": "https://registry.npmjs.org/smtp-connection/-/smtp-connection-2.12.0.tgz",
-      "integrity": "sha1-1275EnyyPCJZ7bHoNJwujV4tdME=",
-      "requires": {
-        "httpntlm": "1.6.1",
-        "nodemailer-shared": "1.1.0"
-      }
-    },
-    "sntp": {
-      "version": "1.0.9",
-      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
-      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
-      "optional": true,
-      "requires": {
-        "hoek": "2.16.3"
-      }
-    },
-    "socks": {
-      "version": "2.2.3",
-      "resolved": "https://registry.npmjs.org/socks/-/socks-2.2.3.tgz",
-      "integrity": "sha512-+2r83WaRT3PXYoO/1z+RDEBE7Z2f9YcdQnJ0K/ncXXbV5gJ6wYfNAebYFYiiUjM6E4JyXnPY8cimwyvFYHVUUA==",
-      "requires": {
-        "ip": "1.1.5",
-        "smart-buffer": "4.0.2"
-      }
-    },
-    "socks-proxy-agent": {
-      "version": "4.0.1",
-      "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.1.tgz",
-      "integrity": "sha512-Kezx6/VBguXOsEe5oU3lXYyKMi4+gva72TwJ7pQY5JfqUx2nMk7NXA6z/mpNqIlfQjWYVfeuNvQjexiTaTn6Nw==",
-      "requires": {
-        "agent-base": "4.2.1",
-        "socks": "2.2.3"
-      }
-    },
     "source-list-map": {
       "version": "0.1.8",
       "resolved": "http://registry.npm.taobao.org/source-list-map/download/source-list-map-0.1.8.tgz",
     "source-map": {
       "version": "0.6.1",
       "resolved": "http://registry.npm.taobao.org/source-map/download/source-map-0.6.1.tgz",
-      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM="
+      "integrity": "sha1-dHIq8y6WFOnCh6jQu95IteLxomM=",
+      "dev": true
     },
     "source-map-resolve": {
       "version": "0.5.2",
       }
     },
     "spdx-correct": {
-      "version": "3.1.0",
-      "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz",
-      "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==",
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-correct/download/spdx-correct-3.0.0.tgz",
+      "integrity": "sha1-BaW01xU6GVvJLDxCW2nzsqlSTII=",
       "dev": true,
       "requires": {
         "spdx-expression-parse": "3.0.0",
-        "spdx-license-ids": "3.0.4"
+        "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==",
+      "version": "2.1.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-exceptions/download/spdx-exceptions-2.1.0.tgz",
+      "integrity": "sha1-LHrmEFbHFKW5ubKyr30xHvXHj+k=",
       "dev": true
     },
     "spdx-expression-parse": {
       "integrity": "sha1-meEZt6XaAOBUkcn6M4t5BII7QdA=",
       "dev": true,
       "requires": {
-        "spdx-exceptions": "2.2.0",
-        "spdx-license-ids": "3.0.4"
+        "spdx-exceptions": "2.1.0",
+        "spdx-license-ids": "3.0.0"
       }
     },
     "spdx-license-ids": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.4.tgz",
-      "integrity": "sha512-7j8LYJLeY/Yb6ACbQ7F76qy5jHkp0U6jgBfJsk97bwWlVUnUWsAgpyaCvo17h0/RQGnQ036tVDomiwoI4pDkQA==",
+      "version": "3.0.0",
+      "resolved": "http://registry.npm.taobao.org/spdx-license-ids/download/spdx-license-ids-3.0.0.tgz",
+      "integrity": "sha1-enzShHDMbToc/m1miG9rxDDTrIc=",
+      "dev": true
+    },
+    "speedometer": {
+      "version": "0.1.4",
+      "resolved": "http://registry.npm.taobao.org/speedometer/download/speedometer-0.1.4.tgz",
+      "integrity": "sha1-mHbb0qFp0xFUAtSObqYynIgWpQ0=",
       "dev": true
     },
     "split": {
       "dev": true
     },
     "sshpk": {
-      "version": "1.16.1",
-      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
-      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+      "version": "1.14.1",
+      "resolved": "http://registry.npm.taobao.org/sshpk/download/sshpk-1.14.1.tgz",
+      "integrity": "sha1-Ew9Zde3a2WPx1W+SuaxsUfqfg+s=",
       "dev": true,
       "requires": {
-        "asn1": "0.2.4",
+        "asn1": "0.2.3",
         "assert-plus": "1.0.0",
-        "bcrypt-pbkdf": "1.0.2",
+        "bcrypt-pbkdf": "1.0.1",
         "dashdash": "1.14.1",
-        "ecc-jsbn": "0.1.2",
+        "ecc-jsbn": "0.1.1",
         "getpass": "0.1.7",
         "jsbn": "0.1.1",
-        "safer-buffer": "2.1.2",
         "tweetnacl": "0.14.5"
       }
     },
       "integrity": "sha1-M6qE8Rd6VUjIk1Uzy/6zQgl19aQ=",
       "dev": true
     },
+    "stat-mode": {
+      "version": "0.2.2",
+      "resolved": "http://registry.npm.taobao.org/stat-mode/download/stat-mode-0.2.2.tgz",
+      "integrity": "sha1-5sgLYjEj19gM8TLOU480YokHJQI=",
+      "dev": true
+    },
     "statuses": {
       "version": "1.5.0",
-      "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
+      "resolved": "http://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
       "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
       "dev": true
     },
       "dev": true,
       "requires": {
         "readable-stream": "2.3.6"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+          "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+          "dev": true
+        },
+        "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.2",
+            "inherits": "2.0.3",
+            "isarray": "1.0.0",
+            "process-nextick-args": "2.0.0",
+            "safe-buffer": "5.1.2",
+            "string_decoder": "1.1.1",
+            "util-deprecate": "1.0.2"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+          "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "5.1.2"
+          }
+        }
       }
     },
     "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==",
+      "version": "2.0.1",
+      "resolved": "http://registry.npm.taobao.org/stream-browserify/download/stream-browserify-2.0.1.tgz",
+      "integrity": "sha1-ZiZu5fm9uZQKTkUUyvtDu3Hlyds=",
       "dev": true,
       "requires": {
         "inherits": "2.0.3",
       }
     },
     "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==",
+      "version": "2.8.2",
+      "resolved": "http://registry.npm.taobao.org/stream-http/download/stream-http-2.8.2.tgz",
+      "integrity": "sha1-QSboxrEHAERlkYqi/DVUnndALIc=",
       "dev": true,
       "requires": {
         "builtin-status-codes": "3.0.0",
       "dependencies": {
         "isarray": {
           "version": "1.0.0",
-          "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+          "resolved": "http://registry.npm.taobao.org/isarray/download/isarray-1.0.0.tgz",
           "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
         },
-        "process-nextick-args": {
-          "version": "2.0.0",
-          "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
-          "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
-        },
         "readable-stream": {
           "version": "2.3.6",
-          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+          "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
           "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
           "requires": {
             "core-util-is": "1.0.2",
     "string_decoder": {
       "version": "0.10.31",
       "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-0.10.31.tgz",
-      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
-    },
-    "stringstream": {
-      "version": "0.0.6",
-      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
-      "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
-      "optional": true
+      "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
+      "dev": true
     },
     "strip-ansi": {
       "version": "3.0.1",
         }
       }
     },
+    "supports-color": {
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-2.0.0.tgz",
+      "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc="
+    },
     "svgo": {
       "version": "0.7.2",
       "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
         "string-width": "2.1.1"
       },
       "dependencies": {
-        "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.1.0",
-            "fast-json-stable-stringify": "2.0.0",
-            "json-schema-traverse": "0.3.1"
-          }
-        },
         "ajv-keywords": {
-          "version": "1.5.1",
-          "resolved": "http://registry.npm.taobao.org/ajv-keywords/download/ajv-keywords-1.5.1.tgz",
-          "integrity": "sha1-MU3QpLM2j609/NxU7eYXG4htrzw=",
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-2.1.1.tgz",
+          "integrity": "sha1-YXmX/F9gV2iUxDX5QNgZ4TW4B2I=",
           "dev": true
         },
         "ansi-regex": {
           "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
           "dev": true,
           "requires": {
-            "color-convert": "1.9.3"
+            "color-convert": "1.9.1"
           }
         },
         "chalk": {
             "supports-color": "5.5.0"
           }
         },
-        "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
-        },
         "has-flag": {
           "version": "3.0.0",
           "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
           "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
           "dev": true
         },
-        "json-schema-traverse": {
-          "version": "0.3.1",
-          "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.3.1.tgz",
-          "integrity": "sha1-NJptRMU6Ud6JtAgFxdXlm0F9M0A=",
-          "dev": true
-        },
         "string-width": {
           "version": "2.1.1",
-          "resolved": "http://registry.npm.taobao.org/string-width/download/string-width-2.1.1.tgz",
-          "integrity": "sha1-q5Pyeo3BPSjKyBXEYhQ6bZASrp4=",
+          "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",
         }
       }
     },
-    "thunkify": {
-      "version": "2.1.2",
-      "resolved": "https://registry.npmjs.org/thunkify/-/thunkify-2.1.2.tgz",
-      "integrity": "sha1-+qDp0jDFGsyVyhOjYawFyn4EVT0=",
-      "optional": true
-    },
     "time-stamp": {
-      "version": "2.2.0",
-      "resolved": "https://registry.npmjs.org/time-stamp/-/time-stamp-2.2.0.tgz",
-      "integrity": "sha512-zxke8goJQpBeEgD82CXABeMh0LSJcj7CXEd0OHOg45HgcofF7pxNwZm9+RknpxpDhwN4gFpySkApKfFYfRQnUA==",
+      "version": "2.0.0",
+      "resolved": "http://registry.npm.taobao.org/time-stamp/download/time-stamp-2.0.0.tgz",
+      "integrity": "sha1-lcakRTDhW6jW9KPsuMOj+sRto1c=",
       "dev": true
     },
     "timed-out": {
       "dev": true,
       "requires": {
         "is-number": "7.0.0"
+      },
+      "dependencies": {
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+          "dev": true
+        }
       }
     },
-    "toidentifier": {
-      "version": "1.0.0",
-      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
-      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
-      "dev": true
+    "toml": {
+      "version": "2.3.3",
+      "resolved": "http://registry.npm.taobao.org/toml/download/toml-2.3.3.tgz",
+      "integrity": "sha1-jWg9cpV3yyhiMd/HqK/+WNMXKPs="
     },
     "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==",
+      "version": "2.3.4",
+      "resolved": "http://registry.npm.taobao.org/tough-cookie/download/tough-cookie-2.3.4.tgz",
+      "integrity": "sha1-7GDO44rGdQY//JelwYlwV47oNlU=",
       "dev": true,
       "requires": {
-        "psl": "1.1.32",
         "punycode": "1.4.1"
       }
     },
       "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==",
       "dev": true,
       "requires": {
-        "glob": "7.1.3"
+        "glob": "7.1.2"
+      }
+    },
+    "truncate-utf8-bytes": {
+      "version": "1.0.2",
+      "resolved": "http://registry.npm.taobao.org/truncate-utf8-bytes/download/truncate-utf8-bytes-1.0.2.tgz",
+      "integrity": "sha1-QFkjkJWS1W94pYGENLC3hInKXys=",
+      "dev": true,
+      "requires": {
+        "utf8-byte-length": "1.0.4"
       }
     },
     "tty-browserify": {
       "version": "0.6.0",
       "resolved": "http://registry.npm.taobao.org/tunnel-agent/download/tunnel-agent-0.6.0.tgz",
       "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
       "requires": {
         "safe-buffer": "5.1.2"
       }
       "version": "0.14.5",
       "resolved": "http://registry.npm.taobao.org/tweetnacl/download/tweetnacl-0.14.5.tgz",
       "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
-      "dev": true
+      "dev": true,
+      "optional": true
     },
     "type-check": {
       "version": "0.3.2",
       "resolved": "http://registry.npm.taobao.org/type-check/download/type-check-0.3.2.tgz",
       "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
       "requires": {
         "prelude-ls": "1.1.2"
       }
       "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==",
+      "version": "1.6.16",
+      "resolved": "http://registry.npm.taobao.org/type-is/download/type-is-1.6.16.tgz",
+      "integrity": "sha1-+JzjQVQcZysl7nrjxz3uOyvlAZQ=",
       "dev": true,
       "requires": {
         "media-typer": "0.3.0",
-        "mime-types": "2.1.24"
-      },
-      "dependencies": {
-        "mime-db": {
-          "version": "1.40.0",
-          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
-          "integrity": "sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA==",
-          "dev": true
-        },
-        "mime-types": {
-          "version": "2.1.24",
-          "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.24.tgz",
-          "integrity": "sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ==",
-          "dev": true,
-          "requires": {
-            "mime-db": "1.40.0"
-          }
-        }
+        "mime-types": "2.1.18"
       }
     },
     "typedarray": {
       "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
       "dev": true
     },
+    "unique-string": {
+      "version": "1.0.0",
+      "resolved": "http://registry.npm.taobao.org/unique-string/download/unique-string-1.0.0.tgz",
+      "integrity": "sha1-nhBXzKhRq7kzmPizOuGHuZyuwRo=",
+      "dev": true,
+      "requires": {
+        "crypto-random-string": "1.0.0"
+      }
+    },
+    "universalify": {
+      "version": "0.1.1",
+      "resolved": "http://registry.npm.taobao.org/universalify/download/universalify-0.1.1.tgz",
+      "integrity": "sha1-+nG63UQ3r0wUiEHjs7Fl+enlkLc=",
+      "dev": true
+    },
     "unpipe": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
-      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
     },
     "unzip-response": {
       "version": "2.0.1",
       "integrity": "sha1-0vD3N9FrBhXnKmk17QQhRXLVb5c=",
       "dev": true
     },
+    "update-notifier": {
+      "version": "2.5.0",
+      "resolved": "http://registry.npm.taobao.org/update-notifier/download/update-notifier-2.5.0.tgz",
+      "integrity": "sha1-0HRFk+E/Fh5AassdlAi3LK0Ir/Y=",
+      "dev": true,
+      "requires": {
+        "boxen": "1.3.0",
+        "chalk": "2.4.1",
+        "configstore": "3.1.2",
+        "import-lazy": "2.1.0",
+        "is-ci": "1.1.0",
+        "is-installed-globally": "0.1.0",
+        "is-npm": "1.0.0",
+        "latest-version": "3.1.0",
+        "semver-diff": "2.1.0",
+        "xdg-basedir": "3.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "3.2.1",
+          "resolved": "http://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
+          "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
+          "dev": true,
+          "requires": {
+            "color-convert": "1.9.1"
+          }
+        },
+        "chalk": {
+          "version": "2.4.1",
+          "resolved": "http://registry.npm.taobao.org/chalk/download/chalk-2.4.1.tgz",
+          "integrity": "sha1-GMSasWoDe26wFSzIPjRxM4IVtm4=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "3.2.1",
+            "escape-string-regexp": "1.0.5",
+            "supports-color": "5.4.0"
+          }
+        },
+        "has-flag": {
+          "version": "3.0.0",
+          "resolved": "http://registry.npm.taobao.org/has-flag/download/has-flag-3.0.0.tgz",
+          "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "5.4.0",
+          "resolved": "http://registry.npm.taobao.org/supports-color/download/supports-color-5.4.0.tgz",
+          "integrity": "sha1-HGszdALCE3YF7+GfEP7DkPb6q1Q=",
+          "dev": true,
+          "requires": {
+            "has-flag": "3.0.0"
+          }
+        }
+      }
+    },
     "uri-js": {
       "version": "4.2.2",
-      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
-      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+      "resolved": "http://registry.npm.taobao.org/uri-js/download/uri-js-4.2.2.tgz",
+      "integrity": "sha1-lMVA4f93KVbiKZUHwBCupsiDjrA=",
       "dev": true,
       "requires": {
         "punycode": "2.1.1"
       "dependencies": {
         "punycode": {
           "version": "2.1.1",
-          "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
-          "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+          "resolved": "http://registry.npm.taobao.org/punycode/download/punycode-2.1.1.tgz",
+          "integrity": "sha1-tYsBCsQMIsVldhbI0sLALHv0eew=",
           "dev": true
         }
       }
         }
       }
     },
-    "url-parse": {
-      "version": "1.4.4",
-      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.4.4.tgz",
-      "integrity": "sha512-/92DTTorg4JjktLNLe6GPS2/RvAd/RGr6LuktmWSMLEOa6rjnlrFXNgSbSmkNvCoL2T028A0a1JaJLzRMlFoHg==",
-      "optional": true,
-      "requires": {
-        "querystringify": "2.1.0",
-        "requires-port": "1.0.0"
-      }
-    },
     "url-parse-lax": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/url-parse-lax/download/url-parse-lax-1.0.0.tgz",
     },
     "user-home": {
       "version": "1.1.1",
-      "resolved": "https://registry.npmjs.org/user-home/-/user-home-1.1.1.tgz",
+      "resolved": "http://registry.npm.taobao.org/user-home/download/user-home-1.1.1.tgz",
       "integrity": "sha1-K1viOjK2Onyd640PKNSFcko98ZA=",
       "dev": true
     },
       "dev": true
     },
     "util": {
-      "version": "0.10.4",
-      "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz",
-      "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==",
+      "version": "0.10.3",
+      "resolved": "http://registry.npm.taobao.org/util/download/util-0.10.3.tgz",
+      "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
       "dev": true,
       "requires": {
-        "inherits": "2.0.3"
+        "inherits": "2.0.1"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "http://registry.npm.taobao.org/inherits/download/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "dev": true
+        }
       }
     },
     "util-deprecate": {
     },
     "v8flags": {
       "version": "2.1.1",
-      "resolved": "https://registry.npmjs.org/v8flags/-/v8flags-2.1.1.tgz",
+      "resolved": "http://registry.npm.taobao.org/v8flags/download/v8flags-2.1.1.tgz",
       "integrity": "sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ=",
       "dev": true,
       "requires": {
       }
     },
     "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==",
+      "version": "3.0.3",
+      "resolved": "http://registry.npm.taobao.org/validate-npm-package-license/download/validate-npm-package-license-3.0.3.tgz",
+      "integrity": "sha1-gWQ7y+8b3+zUYjeT3EZIlIupgzg=",
       "dev": true,
       "requires": {
-        "spdx-correct": "3.1.0",
+        "spdx-correct": "3.0.0",
         "spdx-expression-parse": "3.0.0"
       }
     },
       "version": "1.10.0",
       "resolved": "http://registry.npm.taobao.org/verror/download/verror-1.10.0.tgz",
       "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
       "requires": {
         "assert-plus": "1.0.0",
         "core-util-is": "1.0.2",
         "memory-fs": "0.4.1",
         "mime": "1.6.0",
         "path-is-absolute": "1.0.1",
-        "range-parser": "1.2.1",
-        "time-stamp": "2.2.0"
+        "range-parser": "1.2.0",
+        "time-stamp": "2.0.0"
       },
       "dependencies": {
         "isarray": {
             "errno": "0.1.7",
             "readable-stream": "2.3.6"
           }
+        },
+        "mime": {
+          "version": "1.6.0",
+          "resolved": "http://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz",
+          "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=",
+          "dev": true
+        },
+        "process-nextick-args": {
+          "version": "2.0.0",
+          "resolved": "http://registry.npm.taobao.org/process-nextick-args/download/process-nextick-args-2.0.0.tgz",
+          "integrity": "sha1-o31zL0JxtKsa0HDTVQjoKQeI/6o=",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "2.3.6",
+          "resolved": "http://registry.npm.taobao.org/readable-stream/download/readable-stream-2.3.6.tgz",
+          "integrity": "sha1-sRwn2IuP8fvgcGQ8+UsMea4bCq8=",
+          "dev": true,
+          "requires": {
+            "core-util-is": "1.0.2",
+            "inherits": "2.0.3",
+            "isarray": "1.0.0",
+            "process-nextick-args": "2.0.0",
+            "safe-buffer": "5.1.2",
+            "string_decoder": "1.1.1",
+            "util-deprecate": "1.0.2"
+          }
+        },
+        "string_decoder": {
+          "version": "1.1.1",
+          "resolved": "http://registry.npm.taobao.org/string_decoder/download/string_decoder-1.1.1.tgz",
+          "integrity": "sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=",
+          "dev": true,
+          "requires": {
+            "safe-buffer": "5.1.2"
+          }
         }
       }
     },
     "webpack-hot-middleware": {
-      "version": "2.25.0",
-      "resolved": "https://registry.npmjs.org/webpack-hot-middleware/-/webpack-hot-middleware-2.25.0.tgz",
-      "integrity": "sha512-xs5dPOrGPCzuRXNi8F6rwhawWvQQkeli5Ro48PRuQh8pYPCPmNnltP9itiUPT4xI8oW+y0m59lyyeQk54s5VgA==",
+      "version": "2.22.2",
+      "resolved": "http://registry.npm.taobao.org/webpack-hot-middleware/download/webpack-hot-middleware-2.22.2.tgz",
+      "integrity": "sha1-Yjt3zlkfzU4fuZ8YFneBRD5Qr6w=",
       "dev": true,
       "requires": {
         "ansi-html": "0.0.7",
       "resolved": "http://registry.npm.taobao.org/whatwg-fetch/download/whatwg-fetch-2.0.4.tgz",
       "integrity": "sha1-3eal3zFfnTmZGqF2IYU9cguFVm8="
     },
-    "when": {
-      "version": "3.7.8",
-      "resolved": "https://registry.npmjs.org/when/-/when-3.7.8.tgz",
-      "integrity": "sha1-xxMLan6gRpPoQs3J56Hyqjmjn4I=",
-      "optional": true
-    },
     "whet.extend": {
       "version": "0.9.9",
       "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
       "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=",
       "dev": true
     },
-    "with-callback": {
-      "version": "1.0.2",
-      "resolved": "https://registry.npmjs.org/with-callback/-/with-callback-1.0.2.tgz",
-      "integrity": "sha1-oJYpuakgAo1yFAT7Q1vc/1yRvCE=",
-      "optional": true
-    },
     "wordwrap": {
       "version": "1.0.0",
       "resolved": "http://registry.npm.taobao.org/wordwrap/download/wordwrap-1.0.0.tgz",
-      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus="
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true
     },
     "wrap-ansi": {
       "version": "2.1.0",
       "integrity": "sha1-1QH5ezvbQDr4757MIFcxh6rawOk=",
       "dev": true
     },
-    "xregexp": {
-      "version": "2.0.0",
-      "resolved": "https://registry.npmjs.org/xregexp/-/xregexp-2.0.0.tgz",
-      "integrity": "sha1-UqY+VsoLhKfzpfPWGHLxJq16WUM=",
-      "optional": true
-    },
     "xss-filters": {
       "version": "1.2.7",
       "resolved": "http://registry.npm.taobao.org/xss-filters/download/xss-filters-1.2.7.tgz",
     "xtend": {
       "version": "4.0.1",
       "resolved": "http://registry.npm.taobao.org/xtend/download/xtend-4.0.1.tgz",
-      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
+      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
+      "dev": true
     },
     "y18n": {
       "version": "3.2.1",
     "yallist": {
       "version": "2.1.2",
       "resolved": "http://registry.npm.taobao.org/yallist/download/yallist-2.1.2.tgz",
-      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI="
+      "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+      "dev": true
     },
     "yargs": {
       "version": "11.0.0",
index 6387a2b..718a73a 100644 (file)
@@ -11,7 +11,7 @@
     "files": [
       "node_modules/**/*",
       "main.js",
-      "main-process/**/*",
+      "modules/**/*",
       "static/**/*",
       "public/**",
       "!node_modules/electron/",
@@ -60,7 +60,7 @@
     },
     "asar": true
   },
-  "version": "1.0.2",
+  "version": "1.0.9",
   "description": "Bytom Wallet Desktop",
   "main": "main.js",
   "scripts": {
     "postinstall": "npm run build:dll",
     "electron-dev": "DEV_URL=http://localhost:3000/index.html  electron --inspect=5858 main.js .",
     "build": "NODE_ENV=production webpack --config webpack/webpack.app.js ",
-    "build-electron": "NODE_ENV=production MODE=electron webpack --config webpack/webpack.app.js ",
     "lint": "eslint \"src/**\"",
     "start": "hjs-dev-server webpack/webpack.app.js --hot --host 0.0.0.0",
     "generate-component": "babel-node bin/generate.js component",
-    "package": "npm run build-electron && npm-run-all package:* ",
+    "package": "npm run build && npm-run-all package:* ",
     "package:mac": "electron-builder -m ",
     "package:win-32": "ARCH_VARIABLE=386 electron-builder --win --ia32",
     "package:win-64": "ARCH_VARIABLE=amd64 electron-builder --win --x64 ",
   ],
   "dependencies": {
     "babel-polyfill": "~6.16.0",
+    "babel-register": "~6.22.0",
     "bignumber.js": "^7.2.1",
     "bootstrap-sass": "~3.4.1",
     "btoa": "^1.1.2",
     "classnames": "~2.2.5",
     "electron-settings": "~3.1.4",
+    "fetch-ponyfill": "~3.0.2",
     "glob": "~7.1.2",
     "i18next": "^11.9.1",
-    "log4js": "^2.5.3",
-    "fetch-ponyfill": "~3.0.2",
     "i18next-browser-languagedetector": "^2.2.3",
+    "log4js": "^3.0.5",
     "lodash": "~4.17.14",
     "moment": "^2.22.1",
     "moment-timezone": "^0.5.17",
     "babel-preset-es2015": "~6.9.0",
     "babel-preset-react": "~6.5.0",
     "babel-preset-react-hmre": "~1.1.1",
-    "babel-register": "~6.22.0",
     "bootstrap-loader": "~1.0.10",
     "braces": "^3.0.2",
     "chai": "~3.5.0",
     "chai-as-promised": "~6.0.0",
     "command-line-args": "~3.0.1",
     "command-line-commands": "~1.0.4",
-    "electron": "~1.8.3",
-    "electron-builder": "^20.10.0",
     "css-loader": "0.26.1",
+    "electron": "~1.8.8",
+    "electron-builder": "^20.10.0",
     "eslint": "~4.18.2",
     "eslint-plugin-react": "~7.14.2",
     "extend": "~3.0.2",
index 046888b..abc72b6 100644 (file)
@@ -6,7 +6,7 @@ import { render } from 'react-dom'
 import Root from 'Root'
 import configureStore from 'configureStore'
 import { I18nextProvider } from 'react-i18next'
-import i18n from './i18n'
+import i18n from '../modules/i18n.js'
 
 // Set favicon
 let faviconPath = require('!!file?name=favicon.ico!../static/images/favicon.png')
@@ -16,6 +16,7 @@ favicon.rel = 'shortcut icon'
 favicon.href = faviconPath
 document.getElementsByTagName('head')[0].appendChild(favicon)
 
+
 // Start app
 export const store = configureStore()
 render(
index f867e35..5a98c72 100644 (file)
@@ -10,12 +10,12 @@ const CORE_POLLING_TIME = 2 * 1000
 class Container extends React.Component {
   constructor(props) {
     super(props)
-    if(props.location.pathname.includes('index.html')) {
-      this.redirectRoot(props)
-    }
     this.state = {
       noAccountItem: false
     }
+    if(props.location.pathname.includes('index.html')) {
+      this.redirectRoot(props)
+    }
     this.redirectRoot = this.redirectRoot.bind(this)
   }
 
@@ -31,23 +31,18 @@ class Container extends React.Component {
       return
     }
 
-    if (configured) {
+    if(!configured){
+      this.props.showConfiguration()
+    }else if(!accountInit && this.state.noAccountItem){
+      this.props.showInitialization()
+    }else {
       if (location.pathname === '/' ||
-        location.pathname.indexOf('configuration') >= 0 || location.pathname.includes('index.html')) {
-        this.props.showRoot()
-        }
-      } else {
-        this.props.showInitialization()
-      }
-
-    if (accountInit || !this.state.noAccountItem) {
-      if (location.pathname === '/'|| location.pathname.indexOf('initialization') >= 0) {
+        location.pathname.indexOf('configuration') >= 0 ||
+        location.pathname.includes('index.html') ||
+        location.pathname.indexOf('initialization') >= 0) {
         this.props.showRoot()
       }
-    } else {
-      this.props.showInitialization()
     }
-
   }
 
   componentDidMount() {
@@ -59,14 +54,15 @@ class Container extends React.Component {
         this.props.uptdateBtmAmountUnit(arg)
       })
       window.ipcRenderer.on('lang', (event, arg) => {
-        this.props.uptdateLang(arg)
+        this.props.i18n.changeLanguage(arg)
       })
       window.ipcRenderer.on('ConfiguredNetwork', (event, arg) => {
         if(arg === 'startNode'){
           this.props.fetchInfo().then(() => {
-            this.props.fetchAccountItem().then(resp => {
+            this.props.fetchKeyItem().then(resp => {
               if (resp.data.length == 0) {
                 this.setState({noAccountItem: true})
+                this.props.showInitialization()
               }
             })
             this.props.showRoot()
@@ -105,9 +101,7 @@ class Container extends React.Component {
 
   render() {
     let layout
-    const lang = this.props.lang
-
-    const { i18n } = this.props
+    const { t, i18n } = this.props
     i18n.on('languageChanged', function(lng) {
       if(lng === 'zh'){
         moment.locale('zh-cn')
@@ -121,7 +115,7 @@ class Container extends React.Component {
     } else if (!this.props.configured) {
       layout = <Config>{this.props.children}</Config>
     } else if (!this.props.configKnown) {
-      return <Loading>{lang === 'zh'?  '正在连接到Bytom Core...' : 'Connecting to Bytom Core...'}</Loading>
+      return <Loading>{t('welcome.connect')}</Loading>
     } else if (!this.props.accountInit && this.state.noAccountItem){
       layout = <Config>{this.props.children}</Config>
     } else{
@@ -159,8 +153,6 @@ export default connect(
     showConfiguration: () => dispatch(actions.app.showConfiguration()),
     uptdateBtmAmountUnit: (param) => dispatch(actions.core.updateBTMAmountUnit(param)),
     updateConfiguredStatus: () => dispatch(actions.core.updateConfiguredStatus),
-    markFlashDisplayed: (key) => dispatch(actions.app.displayedFlash(key)),
-    fetchAccountItem: () => dispatch(actions.account.fetchItems()),
     showInitialization: () => dispatch(actions.app.showInitialization()),
     fetchKeyItem: () => dispatch(actions.key.fetchItems())
   })
index 3086ad9..5eb69b5 100644 (file)
@@ -100,7 +100,7 @@ class Navigation extends React.Component {
         <ul className={styles.navigation}>
           <li className={styles.navigationTitle}>{ t('crumbName.developer') }</li>
           <li>
-            <a href='/equity' target='_blank'>
+            <a href='http://localhost:9888/equity' target='_blank'>
               {navIcon('transaction', styles)}
               { t('crumbName.equity')}
             </a>
index 8adf57a..1375b5f 100644 (file)
@@ -4,6 +4,8 @@ let actions = {
       window.ipcRenderer.send('bytomdInitNetwork','testnet')
     }else if(data.type == 'mainnet'){
       window.ipcRenderer.send('bytomdInitNetwork','mainnet')
+    }else if(data.type == 'solonet'){
+      window.ipcRenderer.send('bytomdInitNetwork','solonet')
     }
     return (dispatch) => (dispatch)
   }
index 71404ec..57b232e 100644 (file)
@@ -5,6 +5,7 @@ import actions from 'actions'
 import React from 'react'
 import styles from './Index.scss'
 import {connect} from 'react-redux'
+import {withNamespaces} from 'react-i18next'
 
 class Index extends React.Component {
   constructor(props) {
@@ -29,7 +30,7 @@ class Index extends React.Component {
       submitting
     } = this.props
 
-    const lang = this.props.lang
+    const t = this.props.t
 
     const typeChange = (event) => {
       type.onChange(event).value
@@ -51,19 +52,19 @@ class Index extends React.Component {
         type='submit'
         className={`btn btn-primary btn-lg ${styles.submit}`}
         disabled={ !type.value || submitting}>
-          &nbsp;{lang === 'zh' ? '加入网络' :'Joining network'}
+          &nbsp;{t('welcome.join')}
       </button>
     ]
 
     if (submitting) {
       configSubmit.push(<SubmitIndicator
-        text={lang === 'zh' ? '加入网络...' :'Joining network...'}
+        text={t('welcome.joining')}
       />)
     }
 
     return (
       <form  onSubmit={handleSubmit(this.submitWithValidation)} >
-        <h2 className={styles.title}>{lang === 'zh' ? '配置 Bytom Core' : 'Configure Bytom Core' }</h2>
+        <h2 className={styles.title}>{t('welcome.title')}</h2>
 
         <div className={styles.choices}>
 
@@ -74,10 +75,10 @@ class Index extends React.Component {
                     {...typeProps}
                     value='mainnet' />
               <div className={`${styles.choice} ${styles.join}`}>
-                <span className={styles.choice_title}>{lang === 'zh' ? '加入 Bytom 主网' : 'Join the Bytom Mainnet'}</span>
+                <span className={styles.choice_title}>{t('welcome.mainnetTitle')}</span>
 
                 <p>
-                  {lang === 'zh' ? '普通用户选择加入。这是实际的Bytom网络,包含真实的交易信息。' : 'For common users to enter. Mainnet is the production network, that carry real Bytom transactions.'}
+                  {t('welcome.mainnetMsg')}
                 </p>
               </div>
             </label>
@@ -86,18 +87,34 @@ class Index extends React.Component {
           <div className={styles.choice_wrapper}>
             <label>
               <input className={styles.choice_radio_button}
-                    type=' radio'
+                    type='radio'
                     {...typeProps}
                     value='testnet' />
               <div className={`${styles.choice} ${styles.testnet}`}>
-                  <span className={styles.choice_title}>{lang === 'zh' ? '加入 Bytom 测试网络' : 'Join the Bytom Testnet' }</span>
+                  <span className={styles.choice_title}>{t('welcome.testnetTitle') }</span>
 
                   <p>
-                    {lang === 'zh' ? '开发者选择加入。这是Bytom的测试网络,用于Bytom的相关测试。' : 'For developers or bytom testers to enter. Testnet is an alternative Bytom blockchain, and to be used for testing.' }
+                    {t('welcome.testnetMsg')}
                   </p>
               </div>
             </label>
           </div>
+
+          <div className={styles.choice_wrapper}>
+            <label>
+              <input className={styles.choice_radio_button}
+                     type='radio'
+                     {...typeProps}
+                     value='solonet' />
+              <div className={`${styles.choice} ${styles.new}`}>
+                <span className={styles.choice_title}>{t('welcome.solonetTitle') }</span>
+
+                <p>
+                  {t('welcome.solonetMsg')}
+                </p>
+              </div>
+            </label>
+          </div>
         </div>
 
         {type.value &&<div className={`${styles.choices} ${styles.flexCenter}`}>
@@ -123,7 +140,7 @@ const config = {
   ]
 }
 
-export default connect(
+export default  withNamespaces('translations') (connect(
   mapStateToProps,
   mapDispatchToProps
-)(reduxForm(config)(Index))
\ No newline at end of file
+)(reduxForm(config)(Index)))
\ No newline at end of file
index b25197f..acfebfa 100644 (file)
@@ -12,7 +12,7 @@
   justify-content: space-between;
 
   > div {
-    width: 50%;
+    width: 30%;
     min-height: 100%;
   }
 }
@@ -27,8 +27,6 @@
     min-height:100%;
     font-weight: normal;
     width: 100%;
-    margin: 0px 10px;
-    //padding-right: 10px;
   }
 }
 
@@ -43,7 +41,7 @@
   border-radius: $border-radius-base;
   cursor: pointer;
   min-height: 100%;
-  padding: 20px 65px;
+  padding: 20px $grid-gutter-width;
   padding-top: 110px;
   text-align: center;
 
index 30597fa..df61ae7 100644 (file)
@@ -1,5 +1,5 @@
 import { combineReducers } from 'redux'
-import { testnetUrl, mode } from 'utility/environment'
+import { testnetUrl } from 'utility/environment'
 import moment from 'moment'
 import { DeltaSampler } from 'utility/time'
 
@@ -215,14 +215,10 @@ if(window.remote){
   configuredState = window.remote.getGlobal('fileExist')
 }
 export const configured = (state = configuredState, action) => {
-  if( mode === 'electron'){
-    if (action.type == 'SET_CONFIGURED') {
-      return true
-    }
-    return state
-  }else{
+  if (action.type == 'SET_CONFIGURED') {
     return true
   }
+  return state
 }
 
 const mingStatus = (state = false, action) => {
index 9e42fc7..a4ca993 100644 (file)
@@ -113,5 +113,5 @@ class Index extends React.Component {
 export default withNamespaces('translations') (connect(
   (state) => ({
     coreData:state.core.coreData
-  }),
+  })
 )(Index))
diff --git a/src/i18n.js b/src/i18n.js
deleted file mode 100644 (file)
index dfcad38..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-import i18n from 'i18next'
-import LanguageDetector from 'i18next-browser-languagedetector'
-
-import transaction_zh from './locales/zh/translation.json'
-import transaction_en from './locales/en/translation.json'
-
-i18n.use(LanguageDetector).init({
-  // we init with resources
-  resources:{
-    en: {
-      translations: transaction_en
-    },
-    zh: {
-      translations: transaction_zh
-    },
-  },
-  fallbackLng: 'en',
-  debug: false,
-
-  // have a common namespace used around the full app
-  ns: ['translations'],
-  defaultNS: 'translations',
-
-  interpolation: {
-    escapeValue: false, // not needed for react!!
-    prefix: '__',
-    suffix: '__'
-  },
-
-  react: {
-    wait: true,
-    bindStore: false
-  }
-})
-
-export default i18n
index ce9cc61..e919eee 100644 (file)
@@ -7,13 +7,8 @@ import { useRouterHistory } from 'react-router'
 import { createHistory } from 'history'
 
 let apiHost, basename
-if ( process.env.NODE_ENV==='production' &&  process.env.MODE!=='electron' ) {
-  apiHost = window.location.origin
-  basename = '/dashboard'
-} else {
-  apiHost = process.env.API_URL || 'http://localhost:9888'
-  basename = ''
-}
+apiHost = process.env.API_URL || 'http://localhost:9888'
+basename = ''
 
 export const chainClient = () => new chainSdk.Client({
   url: apiHost,
index 12b535a..61b0b6e 100644 (file)
@@ -31,7 +31,6 @@ export const exportState = (store) => () => {
   const browserSetting = {
     core:{
       btmAmountUnit: state.core.btmAmountUnit,
-      lang: state.core.lang
     },
     app:{
       navAdvancedState : state.app.navAdvancedState,
@@ -41,6 +40,7 @@ export const exportState = (store) => () => {
   try {
     localStorage.setItem('reduxState', JSON.stringify(exportable))
     settings.set('browserSetting', browserSetting)
+    settings.set('lang',window.localStorage.getItem('i18nextLng'))
   } catch (err) { /* localstorage not available */ }
 }
 
diff --git a/static/images/config/join-active.png b/static/images/config/join-active.png
deleted file mode 100644 (file)
index c916b0b..0000000
Binary files a/static/images/config/join-active.png and /dev/null differ
index ca9a628..b9d6fee 100644 (file)
@@ -1,65 +1,22 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="800 0 180 180">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="180" height="180" viewBox="0 0 180 180">
   <defs>
-    <style>
-      .cls-1 {
-        clip-path: url(#clip-join-active);
-      }
-
-      .cls-2 {
-        fill: none;
-      }
-
-      .cls-3 {
-        fill: #b9f4ee;
-      }
-
-      .cls-4, .cls-6 {
-        fill: #00bfaa;
-      }
-
-      .cls-5, .cls-6 {
-        stroke: none;
-      }
-    </style>
     <clipPath id="clip-join-active">
-      <rect x="800" width="180" height="180"/>
+      <rect width="180" height="180"/>
     </clipPath>
   </defs>
-  <g id="join-active" class="cls-1">
-    <g id="Path_37" data-name="Path 37" class="cls-2" transform="translate(834.769 26.361)">
-      <path class="cls-5" d="M110.462,95.653V31.884L55.19,0,16.214,22.275V41.251L0,50.676V95.653l55.19,31.884Z"/>
-      <path class="cls-6" d="M 55.19153213500977 124.0728988647461 L 107.4618453979492 93.91986846923828 L 107.4618453979492 33.61700439453125 L 55.18347549438477 3.459365844726562 L 19.21418190002441 24.0161190032959 L 19.21418190002441 41.25068664550781 L 19.21418190002441 42.97682952880859 L 17.72186279296875 43.84432601928711 L 3.00000262260437 52.40212249755859 L 3.00000262260437 93.92115020751953 L 55.19153213500977 124.0728988647461 M 55.1904411315918 127.5369110107422 L 2.69897464022506e-06 95.65264892578125 L 2.69897464022506e-06 50.67596817016602 L 16.21418190002441 41.25068664550781 L 16.21418190002441 22.2752685546875 L 55.1904411315918 7.875976734794676e-06 L 110.4618453979492 31.88422775268555 L 110.4618453979492 95.65264892578125 L 55.1904411315918 127.5369110107422 Z"/>
-    </g>
-    <g id="Path_31" data-name="Path 31" class="cls-3" transform="translate(872 7)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_32" data-name="Path 32" class="cls-3" transform="translate(872 131.7)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_33" data-name="Path 33" class="cls-3" transform="translate(818 100.5)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_36" data-name="Path 36" class="cls-2" transform="translate(818 38.2)">
-      <path class="cls-5" d="M36,31.174V10.391L17.987,0,0,10.391V31.174L17.987,41.565Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_34" data-name="Path 34" class="cls-3" transform="translate(926 100.5)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_35" data-name="Path 35" class="cls-3" transform="translate(926 38.2)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <rect id="Rectangle_3" data-name="Rectangle 3" class="cls-4" width="3" height="88" transform="translate(888.5 46)"/>
-    <rect id="Rectangle_4" data-name="Rectangle 4" class="cls-4" width="3" height="88" transform="translate(927.355 66.701) rotate(60)"/>
-    <rect id="Rectangle_5" data-name="Rectangle 5" class="cls-4" width="3" height="88" transform="translate(928.855 110.701) rotate(120)"/>
-    <g id="Path_38" data-name="Path 38" class="cls-3" transform="translate(872 69)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
+  <g id="join-active" clip-path="url(#clip-join-active)">
+    <g id="Group_3086" data-name="Group 3086">
+      <rect id="Rectangle_3739" data-name="Rectangle 3739" width="180" height="180" fill="none"/>
+      <path id="Subtraction_48" data-name="Subtraction 48" d="M-195.649-2403.7h0l-55.041-31.777v-40.857l1.954,1.128,2.047-1.182v38.6l51.041,29.469,51.042-29.469v-58.937l-51.042-29.469-33.429,19.3v-2.363l-1.954-1.128,35.383-20.429,55.041,31.778v63.557l-55.041,31.777Z" transform="translate(286.394 2557.472)" fill="#1977d6"/>
+      <g id="Group_3085" data-name="Group 3085">
+        <path id="Path_5175" data-name="Path 5175" d="M76.352-110.306,56.693-98.956v22.7l19.659,11.35L96.01-76.256v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5177" data-name="Path 5177" d="M76.352-49.006,56.693-37.656v22.7L76.352-3.606,96.01-14.956v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5179" data-name="Path 5179" d="M129.439-79.656,109.78-68.306v22.7l19.659,11.35L149.1-45.606v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5181" data-name="Path 5181" d="M129.439-140.956l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5183" data-name="Path 5183" d="M76.352-171.606l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5187" data-name="Path 5187" d="M23.264-79.656,3.606-68.306v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+      </g>
+      <path id="Union_125" data-name="Union 125" d="M-200.912-2196.349v-22.7l17.683-10.209v-18.181l-15.707-9.069-15.746,9.09V-2227l-19.659,11.35L-254-2227v-22.7l19.659-11.35,17.683,10.209,15.746-9.091v-18.138l-15.746-9.091-17.683,10.21L-254-2288.3V-2311l19.659-11.35,19.659,11.35v20.42l15.745,9.09,15.708-9.069v-18.181l-17.683-10.209v-22.7l19.659-11.35,19.659,11.35v22.7l-17.683,10.209v18.181l15.708,9.069,15.744-9.09V-2311l19.66-11.35,19.659,11.35v22.7l-19.659,11.351-17.684-10.21-15.745,9.091v18.138l15.745,9.09,17.684-10.209,19.659,11.35v22.7l-19.659,11.35-19.66-11.35v-20.419l-15.745-9.09-15.707,9.069v18.181l17.683,10.209v22.7L-181.254-2185Zm4-20.391v18.082l15.659,9.041,15.658-9.041v-18.082l-15.658-9.041Zm53.087-30.65v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.041Zm-106.175,0v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Zm53.087-30.65v18.082l15.659,9.041,15.658-9.041v-18.082l-15.658-9.041Zm53.087-30.649v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.042Zm-106.175,0v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.042Zm53.087-30.65v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Z" transform="translate(272 2359.211)" fill="#1977d6"/>
     </g>
   </g>
 </svg>
diff --git a/static/images/config/join.png b/static/images/config/join.png
deleted file mode 100644 (file)
index d27f0ce..0000000
Binary files a/static/images/config/join.png and /dev/null differ
index 6f2d992..2bc67df 100644 (file)
@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="800 -200 180 180">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 180 180">
   <defs>
     <style>
       .cls-1 {
       }
 
       .cls-3 {
-        fill: #fff;
+        fill: #a3a9b8;
       }
 
-      .cls-4, .cls-6 {
-        fill: #a3a9b8;
+      .cls-4 {
+        fill: #f2f2f2;
       }
 
-      .cls-5, .cls-6 {
-        stroke: none;
+      .cls-4, .cls-5 {
+        fill-rule: evenodd;
+      }
+
+      .cls-5 {
+        fill: #fff;
       }
     </style>
     <clipPath id="clip-join">
-      <rect x="800" y="-200" width="180" height="180"/>
+      <rect width="180" height="180"/>
     </clipPath>
   </defs>
   <g id="join" class="cls-1">
-    <g id="Path_37" data-name="Path 37" class="cls-2" transform="translate(834.769 -173.639)">
-      <path class="cls-5" d="M110.462,95.653V31.884L55.19,0,16.214,22.275V41.251L0,50.676V95.653l55.19,31.884Z"/>
-      <path class="cls-6" d="M 55.19153213500977 124.0728988647461 L 107.4618453979492 93.91986846923828 L 107.4618453979492 33.61700439453125 L 55.18347549438477 3.459365844726562 L 19.21418190002441 24.0161190032959 L 19.21418190002441 41.25068664550781 L 19.21418190002441 42.97682952880859 L 17.72186279296875 43.84432601928711 L 3.00000262260437 52.40212249755859 L 3.00000262260437 93.92115020751953 L 55.19153213500977 124.0728988647461 M 55.1904411315918 127.5369110107422 L 2.69897464022506e-06 95.65264892578125 L 2.69897464022506e-06 50.67596817016602 L 16.21418190002441 41.25068664550781 L 16.21418190002441 22.2752685546875 L 55.1904411315918 7.875976734794676e-06 L 110.4618453979492 31.88422775268555 L 110.4618453979492 95.65264892578125 L 55.1904411315918 127.5369110107422 Z"/>
-    </g>
-    <g id="Path_31" data-name="Path 31" class="cls-3" transform="translate(872 -193)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_32" data-name="Path 32" class="cls-3" transform="translate(872 -68.3)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_33" data-name="Path 33" class="cls-3" transform="translate(818 -99.5)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_36" data-name="Path 36" class="cls-2" transform="translate(818 -161.8)">
-      <path class="cls-5" d="M36,31.174V10.391L17.987,0,0,10.391V31.174L17.987,41.565Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_34" data-name="Path 34" class="cls-3" transform="translate(926 -99.5)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <g id="Path_35" data-name="Path 35" class="cls-3" transform="translate(926 -161.8)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
-    </g>
-    <path id="Union_1" data-name="Union 1" class="cls-4" d="M-762.645,288V246.6L-798.5,267.3l-1.5-2.6,35.855-20.7L-800,223.3l1.5-2.6,35.855,20.7V200h3v41.4l35.855-20.7,1.5,2.6L-758.145,244l35.855,20.7-1.5,2.6-35.855-20.7V288Z" transform="translate(1651.145 -354)"/>
-    <g id="Path_38" data-name="Path 38" class="cls-3" transform="translate(872 -131)">
-      <path class="cls-5" d="M 17.98735427856445 39.83283233642578 L 1.5 30.30786895751953 L 1.5 11.25695323944092 L 17.98735427856445 1.732007622718811 L 34.5 11.25759506225586 L 34.5 30.30722618103027 L 17.98735427856445 39.83283233642578 Z"/>
-      <path class="cls-6" d="M 17.98791122436523 38.10082244873047 L 33 29.44083786010742 L 33 12.12398433685303 L 17.98791122436523 3.464017629623413 L 3 12.12271690368652 L 3 29.44210433959961 L 17.98791122436523 38.10082244873047 M 17.9868106842041 41.56483459472656 L 0 31.17361450195312 L 0 10.39120578765869 L 17.9868106842041 5.390014848671854e-06 L 36 10.39120578765869 L 36 31.17361450195312 L 17.9868106842041 41.56483459472656 Z"/>
+    <g id="Group_3086" data-name="Group 3086">
+      <rect id="Rectangle_3739" data-name="Rectangle 3739" class="cls-2" width="180" height="180"/>
+      <path id="Subtraction_48" data-name="Subtraction 48" class="cls-3" d="M-195.649-2403.7h0l-55.041-31.777v-40.857l1.954,1.128,2.047-1.182v38.6l51.041,29.469,51.042-29.469v-58.937l-51.042-29.469-33.429,19.3v-2.363l-1.954-1.128,35.383-20.429,55.041,31.778v63.557l-55.041,31.777Z" transform="translate(286.394 2557.472)"/>
+      <g id="Group_3085" data-name="Group 3085">
+        <path id="Path_5175" data-name="Path 5175" class="cls-4" d="M76.352-110.306,56.693-98.956v22.7l19.659,11.35L96.01-76.256v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5177" data-name="Path 5177" class="cls-4" d="M76.352-49.006,56.693-37.656v22.7L76.352-3.606,96.01-14.956v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5179" data-name="Path 5179" class="cls-5" d="M129.439-79.656,109.78-68.306v22.7l19.659,11.35L149.1-45.606v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5181" data-name="Path 5181" class="cls-4" d="M129.439-140.956l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5183" data-name="Path 5183" class="cls-5" d="M76.352-171.606l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5187" data-name="Path 5187" class="cls-5" d="M23.264-79.656,3.606-68.306v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)"/>
+      </g>
+      <path id="Union_125" data-name="Union 125" class="cls-3" d="M-200.912-2196.349v-22.7l17.683-10.209v-18.181l-15.707-9.069-15.746,9.09V-2227l-19.659,11.35L-254-2227v-22.7l19.659-11.35,17.683,10.209,15.746-9.091v-18.138l-15.746-9.091-17.683,10.21L-254-2288.3V-2311l19.659-11.35,19.659,11.35v20.42l15.745,9.09,15.708-9.069v-18.181l-17.683-10.209v-22.7l19.659-11.35,19.659,11.35v22.7l-17.683,10.209v18.181l15.708,9.069,15.744-9.09V-2311l19.66-11.35,19.659,11.35v22.7l-19.659,11.351-17.684-10.21-15.745,9.091v18.138l15.745,9.09,17.684-10.209,19.659,11.35v22.7l-19.659,11.35-19.66-11.35v-20.419l-15.745-9.09-15.707,9.069v18.181l17.683,10.209v22.7L-181.254-2185Zm4-20.391v18.082l15.659,9.041,15.658-9.041v-18.082l-15.658-9.041Zm53.087-30.65v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.041Zm-106.175,0v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Zm53.087-30.65v18.082l15.659,9.041,15.658-9.041v-18.082l-15.658-9.041Zm53.087-30.649v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.042Zm-106.175,0v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.042Zm53.087-30.65v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Z" transform="translate(272 2359.211)"/>
     </g>
   </g>
 </svg>
diff --git a/static/images/config/new-active.png b/static/images/config/new-active.png
deleted file mode 100644 (file)
index efc419d..0000000
Binary files a/static/images/config/new-active.png and /dev/null differ
index 6a36d2d..fe8578c 100644 (file)
@@ -1,30 +1,16 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="400 0 180 180">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="180" height="180" viewBox="0 0 180 180">
   <defs>
-    <style>
-      .cls-1 {
-        clip-path: url(#clip-new-active);
-      }
-
-      .cls-2 {
-        fill: #b9f4ee;
-      }
-
-      .cls-3, .cls-4 {
-        stroke: none;
-      }
-
-      .cls-4 {
-        fill: #00bfaa;
-      }
-    </style>
     <clipPath id="clip-new-active">
-      <rect x="400" width="180" height="180"/>
+      <rect width="180" height="180"/>
     </clipPath>
   </defs>
-  <g id="new-active" class="cls-1">
-    <g id="Path_1" data-name="Path 1" class="cls-2" transform="translate(418 7)">
-      <path class="cls-3" d="M 71.94799041748047 163.9500122070312 L 2 123.540153503418 L 2 42.71916580200195 L 71.94799041748047 2.309344530105591 L 142 42.72000503540039 L 142 123.5393142700195 L 71.94799041748047 163.9500122070312 Z"/>
-      <path class="cls-4" d="M 71.94870758056641 161.6406707763672 L 140 122.3841247558594 L 140 43.87521362304688 L 71.94870758056641 4.618674755096436 L 4 43.87351608276367 L 4 122.3858184814453 L 71.94870758056641 161.6406707763672 M 71.94725036621094 166.2593383789062 L 0 124.6944961547852 L 0 41.56484603881836 L 71.94725036621094 -5.81054700887762e-06 L 144 41.56484603881836 L 144 124.6944961547852 L 71.94725036621094 166.2593383789062 Z"/>
+  <g id="new-active" clip-path="url(#clip-new-active)">
+    <g id="new">
+      <rect id="Rectangle_3739" data-name="Rectangle 3739" width="180" height="180" fill="none"/>
+      <path id="Path_5170" data-name="Path 5170" d="M76.352-171.606l-72.746,42v84l72.746,42,72.746-42v-84Z" transform="translate(13.394 177.606)" fill="#c0defc" fill-rule="evenodd"/>
+      <path id="Path_5171" data-name="Path 5171" d="M149.1-129.606v84l-72.746,42-72.746-42v-84l72.746-42ZM7.606-127.3v79.381L76.352-8.224,145.1-47.915V-127.3L76.352-166.987Z" transform="translate(13.394 177.606)" fill="#1977d6" fill-rule="evenodd"/>
+      <path id="Path_5172" data-name="Path 5172" d="M76.352-110.306,56.693-98.956v22.7l19.659,11.35L96.01-76.256v-22.7Z" transform="translate(13.394 177.606)" fill="#d0e8fa" fill-rule="evenodd"/>
+      <path id="Path_5173" data-name="Path 5173" d="M96.01-98.956v22.7L76.352-64.906,56.693-76.256v-22.7l19.659-11.35ZM60.693-96.646v18.081l15.659,9.041L92.01-78.565V-96.646l-15.659-9.041Z" transform="translate(13.394 177.606)" fill="#1977d6" fill-rule="evenodd"/>
     </g>
   </g>
 </svg>
diff --git a/static/images/config/new.png b/static/images/config/new.png
deleted file mode 100644 (file)
index a941b9a..0000000
Binary files a/static/images/config/new.png and /dev/null differ
index 766cce4..30bb4fe 100644 (file)
@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="400 -200 180 180">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 180 180">
   <defs>
     <style>
       .cls-1 {
@@ -6,25 +6,36 @@
       }
 
       .cls-2 {
+        fill: none;
+      }
+
+      .cls-3 {
         fill: #fff;
       }
 
-      .cls-3, .cls-4 {
-        stroke: none;
+      .cls-3, .cls-4, .cls-5 {
+        fill-rule: evenodd;
       }
 
       .cls-4 {
         fill: #a3a9b8;
       }
+
+      .cls-5 {
+        fill: #f2f2f2;
+      }
     </style>
     <clipPath id="clip-new">
-      <rect x="400" y="-200" width="180" height="180"/>
+      <rect width="180" height="180"/>
     </clipPath>
   </defs>
   <g id="new" class="cls-1">
-    <g id="Path_1" data-name="Path 1" class="cls-2" transform="translate(418 -193)">
-      <path class="cls-3" d="M 71.94799041748047 163.9500122070312 L 2 123.540153503418 L 2 42.71916580200195 L 71.94799041748047 2.309344530105591 L 142 42.72000503540039 L 142 123.5393142700195 L 71.94799041748047 163.9500122070312 Z"/>
-      <path class="cls-4" d="M 71.94870758056641 161.6406707763672 L 140 122.3841247558594 L 140 43.87521362304688 L 71.94870758056641 4.618674755096436 L 4 43.87351608276367 L 4 122.3858184814453 L 71.94870758056641 161.6406707763672 M 71.94725036621094 166.2593383789062 L 0 124.6944961547852 L 0 41.56484603881836 L 71.94725036621094 -5.81054700887762e-06 L 144 41.56484603881836 L 144 124.6944961547852 L 71.94725036621094 166.2593383789062 Z"/>
+    <g id="new-2" data-name="new">
+      <rect id="Rectangle_3739" data-name="Rectangle 3739" class="cls-2" width="180" height="180"/>
+      <path id="Path_5170" data-name="Path 5170" class="cls-3" d="M76.352-171.606l-72.746,42v84l72.746,42,72.746-42v-84Z" transform="translate(13.394 177.606)"/>
+      <path id="Path_5171" data-name="Path 5171" class="cls-4" d="M149.1-129.606v84l-72.746,42-72.746-42v-84l72.746-42ZM7.606-127.3v79.381L76.352-8.224,145.1-47.915V-127.3L76.352-166.987Z" transform="translate(13.394 177.606)"/>
+      <path id="Path_5172" data-name="Path 5172" class="cls-5" d="M76.352-110.306,56.693-98.956v22.7l19.659,11.35L96.01-76.256v-22.7Z" transform="translate(13.394 177.606)"/>
+      <path id="Path_5173" data-name="Path 5173" class="cls-4" d="M96.01-98.956v22.7L76.352-64.906,56.693-76.256v-22.7l19.659-11.35ZM60.693-96.646v18.081l15.659,9.041L92.01-78.565V-96.646l-15.659-9.041Z" transform="translate(13.394 177.606)"/>
     </g>
   </g>
 </svg>
diff --git a/static/images/config/testnet-active.png b/static/images/config/testnet-active.png
deleted file mode 100644 (file)
index b99ec03..0000000
Binary files a/static/images/config/testnet-active.png and /dev/null differ
index 7a053aa..019cea2 100644 (file)
@@ -1,31 +1,21 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="600 0 180 180">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="180" height="180" viewBox="0 0 180 180">
   <defs>
-    <style>
-      .cls-1 {
-        clip-path: url(#clip-testnet-active);
-      }
-
-      .cls-2 {
-        fill: #b9f4ee;
-      }
-
-      .cls-3, .cls-5 {
-        fill: #00bfaa;
-      }
-
-      .cls-4, .cls-5 {
-        stroke: none;
-      }
-    </style>
     <clipPath id="clip-testnet-active">
-      <rect x="600" width="180" height="180"/>
+      <rect width="180" height="180"/>
     </clipPath>
   </defs>
-  <g id="testnet-active" class="cls-1">
-    <g id="Path_1" data-name="Path 1" class="cls-2" transform="translate(618 7)">
-      <path class="cls-4" d="M 71.94799041748047 163.9500122070312 L 2 123.540153503418 L 2 42.71916580200195 L 71.94799041748047 2.309344530105591 L 142 42.72000503540039 L 142 123.5393142700195 L 71.94799041748047 163.9500122070312 Z"/>
-      <path class="cls-5" d="M 71.94870758056641 161.6406707763672 L 140 122.3841247558594 L 140 43.87521362304688 L 71.94870758056641 4.618674755096436 L 4 43.87351608276367 L 4 122.3858184814453 L 71.94870758056641 161.6406707763672 M 71.94725036621094 166.2593383789062 L 0 124.6944961547852 L 0 41.56484603881836 L 71.94725036621094 -5.81054700887762e-06 L 144 41.56484603881836 L 144 124.6944961547852 L 71.94725036621094 166.2593383789062 Z"/>
+  <g id="testnet-active" clip-path="url(#clip-testnet-active)">
+    <g id="Group_3086" data-name="Group 3086">
+      <rect id="Rectangle_3739" data-name="Rectangle 3739" width="180" height="180" fill="none"/>
+      <path id="Subtraction_48" data-name="Subtraction 48" d="M-195.649-2403.7h0l-55.041-31.777v-40.857l1.954,1.128,2.047-1.182v38.6l51.041,29.469,51.042-29.469v-58.937l-51.042-29.469-33.429,19.3v-2.363l-1.954-1.128,35.383-20.429,55.041,31.778v63.557l-55.041,31.777Z" transform="translate(286.394 2557.472)" fill="#1977d6"/>
+      <g id="Group_3085" data-name="Group 3085">
+        <path id="Path_5177" data-name="Path 5177" d="M76.352-49.006,56.693-37.656v22.7L76.352-3.606,96.01-14.956v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5179" data-name="Path 5179" d="M129.439-79.656,109.78-68.306v22.7l19.659,11.35L149.1-45.606v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5181" data-name="Path 5181" d="M129.439-140.956l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5183" data-name="Path 5183" d="M76.352-171.606l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+        <path id="Path_5187" data-name="Path 5187" d="M23.264-79.656,3.606-68.306v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)" fill="#c0defc" fill-rule="evenodd"/>
+      </g>
+      <path id="Union_125" data-name="Union 125" d="M-200.912-2196.349v-22.7l19.659-11.35,19.659,11.35v22.7L-181.254-2185Zm4-20.391v18.082l15.659,9.041,15.658-9.041v-18.082l-15.658-9.041ZM-147.826-2227v-22.7l19.66-11.35,19.659,11.35v22.7l-19.659,11.35Zm4-20.39v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.041ZM-254-2227v-22.7l19.659-11.35,19.659,11.35v22.7l-19.659,11.35Zm4-20.39v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Zm102.174-40.91V-2311l19.66-11.35,19.659,11.35v22.7l-19.659,11.351Zm4-20.389v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.042ZM-254-2288.3V-2311l19.659-11.35,19.659,11.35v22.7l-19.659,11.351Zm4-20.389v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.042Zm49.088-10.26v-22.7l19.659-11.35,19.659,11.35v22.7l-19.659,11.35Zm4-20.39v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Z" transform="translate(272 2359.211)" fill="#1977d6"/>
     </g>
-    <path id="bytom_logo_2" data-name="bytom logo_2" class="cls-3" d="M10.218,24.175l3.511-3.528,9.8,9.8L29,29l1-3.72L34.6,20.646l1.4,1.4-2.952,11L22.044,36ZM2.951,33.048,0,22.043l2.218-2.218,9.607-9.607,3.511,3.511-9.782,9.8L7,29l3.72,1L15.336,34.6,13.956,36ZM20.664,22.254l9.782-9.8L29,7.005l-3.721-1L20.646,1.4l1.4-1.4,11,2.952,2.952,11L24.175,25.781ZM12.47,5.554,7,7l-1,3.72L1.4,15.336,0,13.956l2.952-11L13.956,0l2.2,2.218,9.624,9.607-3.527,3.511Z" transform="translate(672 72)"/>
   </g>
 </svg>
diff --git a/static/images/config/testnet.png b/static/images/config/testnet.png
deleted file mode 100644 (file)
index d6f0bf8..0000000
Binary files a/static/images/config/testnet.png and /dev/null differ
index 174b953..2927ab5 100644 (file)
@@ -1,4 +1,4 @@
-<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="600 -200 180 180">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 180 180">
   <defs>
     <style>
       .cls-1 {
@@ -6,26 +6,41 @@
       }
 
       .cls-2 {
-        fill: #fff;
+        fill: none;
       }
 
-      .cls-3, .cls-5 {
+      .cls-3 {
         fill: #a3a9b8;
       }
 
+      .cls-4 {
+        fill: #f2f2f2;
+      }
+
       .cls-4, .cls-5 {
-        stroke: none;
+        fill-rule: evenodd;
+      }
+
+      .cls-5 {
+        fill: #fff;
       }
     </style>
     <clipPath id="clip-testnet">
-      <rect x="600" y="-200" width="180" height="180"/>
+      <rect width="180" height="180"/>
     </clipPath>
   </defs>
   <g id="testnet" class="cls-1">
-    <g id="Path_1" data-name="Path 1" class="cls-2" transform="translate(618 -193)">
-      <path class="cls-4" d="M 71.94799041748047 163.9500122070312 L 2 123.540153503418 L 2 42.71916580200195 L 71.94799041748047 2.309344530105591 L 142 42.72000503540039 L 142 123.5393142700195 L 71.94799041748047 163.9500122070312 Z"/>
-      <path class="cls-5" d="M 71.94870758056641 161.6406707763672 L 140 122.3841247558594 L 140 43.87521362304688 L 71.94870758056641 4.618674755096436 L 4 43.87351608276367 L 4 122.3858184814453 L 71.94870758056641 161.6406707763672 M 71.94725036621094 166.2593383789062 L 0 124.6944961547852 L 0 41.56484603881836 L 71.94725036621094 -5.81054700887762e-06 L 144 41.56484603881836 L 144 124.6944961547852 L 71.94725036621094 166.2593383789062 Z"/>
+    <g id="Group_3086" data-name="Group 3086">
+      <rect id="Rectangle_3739" data-name="Rectangle 3739" class="cls-2" width="180" height="180"/>
+      <path id="Subtraction_48" data-name="Subtraction 48" class="cls-3" d="M-195.649-2403.7h0l-55.041-31.777v-40.857l1.954,1.128,2.047-1.182v38.6l51.041,29.469,51.042-29.469v-58.937l-51.042-29.469-33.429,19.3v-2.363l-1.954-1.128,35.383-20.429,55.041,31.778v63.557l-55.041,31.777Z" transform="translate(286.394 2557.472)"/>
+      <g id="Group_3085" data-name="Group 3085">
+        <path id="Path_5177" data-name="Path 5177" class="cls-4" d="M76.352-49.006,56.693-37.656v22.7L76.352-3.606,96.01-14.956v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5179" data-name="Path 5179" class="cls-5" d="M129.439-79.656,109.78-68.306v22.7l19.659,11.35L149.1-45.606v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5181" data-name="Path 5181" class="cls-4" d="M129.439-140.956l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5183" data-name="Path 5183" class="cls-5" d="M76.352-171.606l-19.659,11.35v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)"/>
+        <path id="Path_5187" data-name="Path 5187" class="cls-5" d="M23.264-79.656,3.606-68.306v22.7l19.659,11.35,19.659-11.35v-22.7Z" transform="translate(14.394 177.817)"/>
+      </g>
+      <path id="Union_125" data-name="Union 125" class="cls-3" d="M-200.912-2196.349v-22.7l19.659-11.35,19.659,11.35v22.7L-181.254-2185Zm4-20.391v18.082l15.659,9.041,15.658-9.041v-18.082l-15.658-9.041ZM-147.826-2227v-22.7l19.66-11.35,19.659,11.35v22.7l-19.659,11.35Zm4-20.39v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.041ZM-254-2227v-22.7l19.659-11.35,19.659,11.35v22.7l-19.659,11.35Zm4-20.39v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Zm102.174-40.91V-2311l19.66-11.35,19.659,11.35v22.7l-19.659,11.351Zm4-20.389v18.081l15.659,9.041,15.659-9.041v-18.081l-15.659-9.042ZM-254-2288.3V-2311l19.659-11.35,19.659,11.35v22.7l-19.659,11.351Zm4-20.389v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.042Zm49.088-10.26v-22.7l19.659-11.35,19.659,11.35v22.7l-19.659,11.35Zm4-20.39v18.081l15.659,9.041,15.658-9.041v-18.081l-15.658-9.041Z" transform="translate(272 2359.211)"/>
     </g>
-    <path id="bytom_logo_2" data-name="bytom logo_2" class="cls-3" d="M10.218,24.175l3.511-3.528,9.8,9.8L29,29l1-3.72L34.6,20.646l1.4,1.4-2.952,11L22.044,36ZM2.951,33.048,0,22.043l2.218-2.218,9.607-9.607,3.511,3.511-9.782,9.8L7,29l3.72,1L15.336,34.6,13.956,36ZM20.664,22.254l9.782-9.8L29,7.005l-3.721-1L20.646,1.4l1.4-1.4,11,2.952,2.952,11L24.175,25.781ZM12.47,5.554,7,7l-1,3.72L1.4,15.336,0,13.956l2.952-11L13.956,0l2.2,2.218,9.624,9.607-3.527,3.511Z" transform="translate(672 -128)"/>
   </g>
 </svg>
index abc30b4..89efc26 100644 (file)
@@ -12,7 +12,7 @@ var path = require('path')
 let publicPath = '/'
 let outPath = 'public'
 if (process.env.NODE_ENV === 'production') {
-  publicPath = ( process.env.MODE === 'electron' )? '' : '/dashboard/'
+  publicPath = ''
 } else {
   outPath = 'node_modules/dashboard-dlls'
 }
@@ -111,7 +111,6 @@ config.module.noParse = /node_modules\/json-schema\/lib\/validate\.js/
 config.plugins.push(new webpack.DefinePlugin({
   'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'),
   'process.env.API_URL': JSON.stringify(process.env.API_URL),
-  'process.env.MODE': JSON.stringify(process.env.MODE),
   'process.env.PROXY_API_HOST': JSON.stringify(process.env.PROXY_API_HOST),
   'process.env.TESTNET_INFO_URL': JSON.stringify(process.env.TESTNET_INFO_URL),
   'process.env.TESTNET_GENERATOR_URL': JSON.stringify(process.env.TESTNET_GENERATOR_URL),