From 83feeb994ed1e33474c62951356c7f38d3143583 Mon Sep 17 00:00:00 2001
From: zhouhao <787329763@qq.com>
Date: Tue, 04 Jan 2022 15:46:58 +0800
Subject: [PATCH] first

---
 src/utils/jsBridge.js           |  265 
 vue.config.js                   |   15 
 src/router/routes.js            |   35 
 src/utils/formCheckAndComb.js   |  194 
 src/store/mutations-types.js    |   30 
 src/assets/img/detailpark.png   |    0 
 src/assets/img/bg_top.png       |    0 
 src/utils/formValidator.js      |  101 
 src/utils/dateformat.js         |  282 
 src/views/main/addBankcard.vue  |  376 +
 src/assets/img/success.png      |    0 
 src/style/normalize.less        |  219 
 src/store/index.js              |   90 
 src/assets/img/regbg.png        |    0 
 src/style/myVideo.less          |    8 
 src/views/main/queryres.vue     |  145 
 static/agreement5.js            |    8 
 src/views/main/findPreAudit.vue |   56 
 src/router/index.js             |   37 
 static/agreement1.js            |  440 +
 README.md                       |    4 
 src/components/vant_register.js |   90 
 webpack.prod.js                 |   38 
 src/utils/deviceInfo.js         |   84 
 src/views/main/singsuc.vue      |   59 
 src/utils/index.js              |  361 +
 postcss.config.js               |   11 
 src/utils/console.js            |   19 
 src/assets/img/nodata.png       |    0 
 src/style/mixin.less            |   98 
 src/assets/img/bg.png           |    0 
 src/utils/filters.js            |   31 
 .gitignore                      |   13 
 package-lock.json               | 11530 +++++++++++++++++++++++++++++++++
 src/assets/img/minebg.png       |    0 
 src/views/main/signcont.vue     |  205 
 src/assets/img/img_success.png  |    0 
 src/utils/pageBackByAndroid.js  |   36 
 static/agreement2.js            |  226 
 src/store/module/test.js        |   11 
 src/style/myVant.less           |   12 
 src/store/mutations.js          |   75 
 src/api/index.js                |   65 
 src/utils/date.js               |   73 
 src/api/config.js               |  123 
 src/utils/validator.js          |  213 
 src/assets/img/successw.png     |    0 
 src/utils/config.js             |   29 
 src/index.js                    |   70 
 src/style/themes.less           |   52 
 src/style/vant_reset.less       |  199 
 public/index.html               |  101 
 src/assets/img/img_fail1.png    |    0 
 src/assets/img/img_fail.png     |    0 
 src/utils/createUserProtocol.js |   27 
 webpack.dev.js                  |   63 
 src/style/mixins.less           |  139 
 static/README.md                |    8 
 src/utils/camera.js             |  171 
 babel.config.js                 |   15 
 webpack.common.js               |  132 
 src/style/common.less           |  213 
 package.json                    |   69 
 src/utils/IDValidator.js        | 3844 +++++++++++
 src/assets/img/failstatus.png   |    0 
 src/App.vue                     |   55 
 66 files changed, 20,863 insertions(+), 2 deletions(-)

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..d3d5eef
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,13 @@
+node_modules/
+dist/
+npm-debug.log*
+yarn-debug.log*
+yarn-error.log*
+
+# Editor directories and files
+.idea
+.vscode
+*.suo
+*.ntvs*
+*.njsproj
+*.sln
diff --git a/README.md b/README.md
index 3df5e87..7457b3f 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## comn_business
+## sj_cus
 
-佣金垫付进件端
+锁机业务客户活体端
 
diff --git a/babel.config.js b/babel.config.js
new file mode 100644
index 0000000..fe352e4
--- /dev/null
+++ b/babel.config.js
@@ -0,0 +1,15 @@
+const plugins = ["@vue/babel-plugin-transform-vue-jsx"];
+// 生产环境移除console
+if(process.env.NODE_ENV === 'production') {
+  plugins.push("transform-remove-console")
+}
+
+module.exports = {
+    plugins: [
+        ['import', {
+            libraryName: 'vant',
+            libraryDirectory: 'es',
+            style: true
+        }, 'vant']
+    ]
+};
\ No newline at end of file
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..eb9eb40
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,11530 @@
+{
+  "name": "scene_staging",
+  "version": "1.0.0",
+  "lockfileVersion": 1,
+  "requires": true,
+  "dependencies": {
+    "@antv/adjust": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/@antv/adjust/-/adjust-0.1.1.tgz",
+      "integrity": "sha512-9FaMOyBlM4AgoRL0b5o0VhEKAYkexBNUrxV8XmpHU/9NBPJONBOB/NZUlQDqxtLItrt91tCfbAuMQmF529UX2Q==",
+      "requires": {
+        "@antv/util": "~1.3.1"
+      },
+      "dependencies": {
+        "@antv/util": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.3.1.tgz",
+          "integrity": "sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA==",
+          "requires": {
+            "@antv/gl-matrix": "^2.7.1"
+          }
+        }
+      }
+    },
+    "@antv/attr": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/@antv/attr/-/attr-0.1.2.tgz",
+      "integrity": "sha512-QXjP+T2I+pJQcwZx1oCA4tipG43vgeCeKcGGKahlcxb71OBAzjJZm1QbF4frKXcnOqRkxVXtCr70X9TRair3Ew==",
+      "requires": {
+        "@antv/util": "~1.3.1"
+      },
+      "dependencies": {
+        "@antv/util": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.3.1.tgz",
+          "integrity": "sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA==",
+          "requires": {
+            "@antv/gl-matrix": "^2.7.1"
+          }
+        }
+      }
+    },
+    "@antv/f2": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/@antv/f2/-/f2-3.4.1.tgz",
+      "integrity": "sha512-S23YN1Ns2heROHxLHzXzhWla6LNs2uAL0RlMQHbDripVBZUFZi5TKoT0xZorIKM18DcMnffEJqUDrqLQ5jX91g==",
+      "requires": {
+        "@antv/adjust": "~0.1.1",
+        "@antv/attr": "~0.1.0",
+        "@antv/scale": "~0.1.2",
+        "@antv/util": "~1.2.5",
+        "hammerjs": "^2.0.8"
+      }
+    },
+    "@antv/gl-matrix": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/@antv/gl-matrix/-/gl-matrix-2.7.1.tgz",
+      "integrity": "sha512-oOWcVNlpELIKi9x+Mm1Vwbz8pXfkbJKykoCIOJ/dNK79hSIANbpXJ5d3Rra9/wZqK6MC961B7sybFhPlLraT3Q=="
+    },
+    "@antv/scale": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/@antv/scale/-/scale-0.1.3.tgz",
+      "integrity": "sha512-oknlOg4OUqIh8LygrfQttx+OAnNJm2fQ81si4g8aby1WJJwj/TU1gCr+J3loIpKBtBK4VpP/OzTTqg1Ym67SOQ==",
+      "requires": {
+        "@antv/util": "~1.3.1",
+        "fecha": "~2.3.3"
+      },
+      "dependencies": {
+        "@antv/util": {
+          "version": "1.3.1",
+          "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.3.1.tgz",
+          "integrity": "sha512-cbUta0hIJrKEaW3eKoGarz3Ita+9qUPF2YzTj8A6wds/nNiy20G26ztIWHU+5ThLc13B1n5Ik52LbaCaeg9enA==",
+          "requires": {
+            "@antv/gl-matrix": "^2.7.1"
+          }
+        }
+      }
+    },
+    "@antv/util": {
+      "version": "1.2.5",
+      "resolved": "https://registry.npmjs.org/@antv/util/-/util-1.2.5.tgz",
+      "integrity": "sha512-yz1AjXSEjNu9O5kK9pqKq69f/Iliu/IA3XXljUcfrlbUtmUJ0CH1tB5I60vPqfaKaUPhz+/35K+56yqaCsGmqA==",
+      "requires": {
+        "@antv/gl-matrix": "^2.7.1"
+      }
+    },
+    "@babel/code-frame": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.5.5.tgz",
+      "integrity": "sha512-27d4lZoomVyo51VegxI20xZPuSHusqbQag/ztrBC7wegWoQ1nLREPVSKSW8byhTlzTKyNE4ifaTA6lCp7JjpFw==",
+      "dev": true,
+      "requires": {
+        "@babel/highlight": "^7.0.0"
+      }
+    },
+    "@babel/core": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.5.5.tgz",
+      "integrity": "sha512-i4qoSr2KTtce0DmkuuQBV4AuQgGPUcPXMr9L5MyYAtk06z068lQ10a4O009fe5OB/DfNV+h+qqT7ddNV8UnRjg==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.5.5",
+        "@babel/helpers": "^7.5.5",
+        "@babel/parser": "^7.5.5",
+        "@babel/template": "^7.4.4",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5",
+        "convert-source-map": "^1.1.0",
+        "debug": "^4.1.0",
+        "json5": "^2.1.0",
+        "lodash": "^4.17.13",
+        "resolve": "^1.3.2",
+        "semver": "^5.4.1",
+        "source-map": "^0.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/generator": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.5.5.tgz",
+      "integrity": "sha512-ETI/4vyTSxTzGnU2c49XHv2zhExkv9JHLTwDAFz85kmcwuShvYG2H08FwgIguQf4JC75CBnXAUM5PqeF4fj0nQ==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.5.5",
+        "jsesc": "^2.5.1",
+        "lodash": "^4.17.13",
+        "source-map": "^0.5.0",
+        "trim-right": "^1.0.1"
+      }
+    },
+    "@babel/helper-annotate-as-pure": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.0.0.tgz",
+      "integrity": "sha512-3UYcJUj9kvSLbLbUIfQTqzcy5VX7GRZ/CCDrnOaZorFFM01aXp1+GJwuFGV4NDDoAS+mOUyHcO6UD/RfqOks3Q==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-builder-binary-assignment-operator-visitor": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.1.0.tgz",
+      "integrity": "sha512-qNSR4jrmJ8M1VMM9tibvyRAHXQs2PmaksQF7c1CGJNipfe3D8p+wgNwgso/P2A2r2mdgBWAXljNWR0QRZAMW8w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-explode-assignable-expression": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-call-delegate": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-call-delegate/-/helper-call-delegate-7.4.4.tgz",
+      "integrity": "sha512-l79boDFJ8S1c5hvQvG+rc+wHw6IuH7YldmRKsYtpbawsxURu/paVy57FZMomGK22/JckepaikOkY0MoAmdyOlQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.4.4",
+        "@babel/traverse": "^7.4.4",
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/helper-define-map": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-define-map/-/helper-define-map-7.5.5.tgz",
+      "integrity": "sha512-fTfxx7i0B5NJqvUOBBGREnrqbTxRh7zinBANpZXAVDlsZxYdclDp467G1sQ8VZYMnAURY3RpBUAgOYT9GfzHBg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/types": "^7.5.5",
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/helper-explode-assignable-expression": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.1.0.tgz",
+      "integrity": "sha512-NRQpfHrJ1msCHtKjbzs9YcMmJZOg6mQMmGRB+hbamEdG5PNpaSm95275VD92DvJKuyl0s2sFiDmMZ+EnnvufqA==",
+      "dev": true,
+      "requires": {
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-function-name": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.1.0.tgz",
+      "integrity": "sha512-A95XEoCpb3TO+KZzJ4S/5uW5fNe26DjBGqf1o9ucyLyCmi1dXq/B3c8iaWTfBk3VvetUxl16e8tIrd5teOCfGw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-get-function-arity": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.0.0.tgz",
+      "integrity": "sha512-r2DbJeg4svYvt3HOS74U4eWKsUAMRH01Z1ds1zx8KNTPtpTL5JAsdFv8BNyOpVqdFhHkkRDIg5B4AsxmkjAlmQ==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-hoist-variables": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.4.4.tgz",
+      "integrity": "sha512-VYk2/H/BnYbZDDg39hr3t2kKyifAm1W6zHRfhx8jGjIHpQEBv9dry7oQ2f3+J703TLu69nYdxsovl0XYfcnK4w==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/helper-member-expression-to-functions": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.5.5.tgz",
+      "integrity": "sha512-5qZ3D1uMclSNqYcXqiHoA0meVdv+xUEex9em2fqMnrk/scphGlGgg66zjMrPJESPwrFJ6sbfFQYUSa0Mz7FabA==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.5.5"
+      }
+    },
+    "@babel/helper-module-imports": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.0.0.tgz",
+      "integrity": "sha512-aP/hlLq01DWNEiDg4Jn23i+CXxW/owM4WpDLFUbpjxe4NS3BhLVZQ5i7E0ZrxuQ/vwekIeciyamgB1UIYxxM6A==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-module-transforms": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.5.5.tgz",
+      "integrity": "sha512-jBeCvETKuJqeiaCdyaheF40aXnnU1+wkSiUs/IQg3tB85up1LyL8x77ClY8qJpuRJUcXQo+ZtdNESmZl4j56Pw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "@babel/template": "^7.4.4",
+        "@babel/types": "^7.5.5",
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/helper-optimise-call-expression": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.0.0.tgz",
+      "integrity": "sha512-u8nd9NQePYNQV8iPWu/pLLYBqZBa4ZaY1YWRFMuxrid94wKI1QNt67NEZ7GAe5Kc/0LLScbim05xZFWkAdrj9g==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-plugin-utils": {
+      "version": "7.0.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.0.0.tgz",
+      "integrity": "sha512-CYAOUCARwExnEixLdB6sDm2dIJ/YgEAKDM1MOeMeZu9Ld/bDgVo8aiWrXwcY7OBh+1Ea2uUcVRcxKk0GJvW7QA==",
+      "dev": true
+    },
+    "@babel/helper-regex": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-regex/-/helper-regex-7.5.5.tgz",
+      "integrity": "sha512-CkCYQLkfkiugbRDO8eZn6lRuR8kzZoGXCg3149iTk5se7g6qykSpy3+hELSwquhu+TgHn8nkLiBwHvNX8Hofcw==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/helper-remap-async-to-generator": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.1.0.tgz",
+      "integrity": "sha512-3fOK0L+Fdlg8S5al8u/hWE6vhufGSn0bN09xm2LXMy//REAF8kDCrYoOBKYmA8m5Nom+sV9LyLCwrFynA8/slg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-wrap-function": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-replace-supers": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.5.5.tgz",
+      "integrity": "sha512-XvRFWrNnlsow2u7jXDuH4jDDctkxbS7gXssrP4q2nUD606ukXHRvydj346wmNg+zAgpFx4MWf4+usfC93bElJg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-member-expression-to-functions": "^7.5.5",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5"
+      }
+    },
+    "@babel/helper-simple-access": {
+      "version": "7.1.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.1.0.tgz",
+      "integrity": "sha512-Vk+78hNjRbsiu49zAPALxTb+JUQCz1aolpd8osOF16BGnLtseD21nbHgLPGUwrXEurZgiCOUmvs3ExTu4F5x6w==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.1.0",
+        "@babel/types": "^7.0.0"
+      }
+    },
+    "@babel/helper-split-export-declaration": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.4.4.tgz",
+      "integrity": "sha512-Ro/XkzLf3JFITkW6b+hNxzZ1n5OQ80NvIUdmHspih1XAhtN3vPTuUFT4eQnela+2MaZ5ulH+iyP513KJrxbN7Q==",
+      "dev": true,
+      "requires": {
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/helper-wrap-function": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.2.0.tgz",
+      "integrity": "sha512-o9fP1BZLLSrYlxYEYyl2aS+Flun5gtjTIG8iln+XuEzQTs0PLagAGSXUcqruJwD5fM48jzIEggCKpIfWTcR7pQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/template": "^7.1.0",
+        "@babel/traverse": "^7.1.0",
+        "@babel/types": "^7.2.0"
+      }
+    },
+    "@babel/helpers": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.5.5.tgz",
+      "integrity": "sha512-nRq2BUhxZFnfEn/ciJuhklHvFOqjJUD5wpx+1bxUF2axL9C+v4DE/dmp5sT2dKnpOs4orZWzpAZqlCy8QqE/7g==",
+      "dev": true,
+      "requires": {
+        "@babel/template": "^7.4.4",
+        "@babel/traverse": "^7.5.5",
+        "@babel/types": "^7.5.5"
+      }
+    },
+    "@babel/highlight": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.5.0.tgz",
+      "integrity": "sha512-7dV4eu9gBxoM0dAnj/BCFDW9LFU0zvTrkq0ugM7pnHEgguOEeOz1so2ZghEdzviYzQEED0r4EAgpsBChKy1TRQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.0.0",
+        "esutils": "^2.0.2",
+        "js-tokens": "^4.0.0"
+      }
+    },
+    "@babel/parser": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.5.5.tgz",
+      "integrity": "sha512-E5BN68cqR7dhKan1SfqgPGhQ178bkVKpXTPEXnFJBrEt8/DKRZlybmy+IgYLTeN7tp1R5Ccmbm2rBk17sHYU3g==",
+      "dev": true
+    },
+    "@babel/plugin-proposal-async-generator-functions": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.2.0.tgz",
+      "integrity": "sha512-+Dfo/SCQqrwx48ptLVGLdE39YtWRuKc/Y9I5Fy0P1DDBB9lsAHpjcEJQt+4IifuSOSTLBKJObJqMvaO1pIE8LQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0",
+        "@babel/plugin-syntax-async-generators": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-dynamic-import": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.5.0.tgz",
+      "integrity": "sha512-x/iMjggsKTFHYC6g11PL7Qy58IK8H5zqfm9e6hu4z1iH2IRyAp9u9dL80zA6R76yFovETFLKz2VJIC2iIPBuFw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-json-strings": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.2.0.tgz",
+      "integrity": "sha512-MAFV1CA/YVmYwZG0fBQyXhmj0BHCB5egZHCKWIFVv/XCxAeVGIHfos3SwDck4LvCllENIAg7xMKOG5kH0dzyUg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-json-strings": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-object-rest-spread": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.5.5.tgz",
+      "integrity": "sha512-F2DxJJSQ7f64FyTVl5cw/9MWn6naXGdk3Q3UhDbFEEHv+EilCPoeRD3Zh/Utx1CJz4uyKlQ4uH+bJPbEhMV7Zw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-optional-catch-binding": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.2.0.tgz",
+      "integrity": "sha512-mgYj3jCcxug6KUcX4OBoOJz3CMrwRfQELPQ5560F70YQUBZB7uac9fqaWamKR1iWUzGiK2t0ygzjTScZnVz75g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.2.0"
+      }
+    },
+    "@babel/plugin-proposal-unicode-property-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.4.4.tgz",
+      "integrity": "sha512-j1NwnOqMG9mFUOH58JTFsA/+ZYzQLUZ/drqWUqxCYLGeu2JFZL8YrNC9hBxKmWtAuOCHPcRpgv7fhap09Fb4kA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/plugin-syntax-async-generators": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.2.0.tgz",
+      "integrity": "sha512-1ZrIRBv2t0GSlcwVoQ6VgSLpLgiN/FVQUzt9znxo7v2Ov4jJrs8RY8tv0wvDmFN3qIdMKWrmMMW6yZ0G19MfGg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-dynamic-import": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.2.0.tgz",
+      "integrity": "sha512-mVxuJ0YroI/h/tbFTPGZR8cv6ai+STMKNBq0f8hFxsxWjl94qqhsb+wXbpNMDPU3cfR1TIsVFzU3nXyZMqyK4w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-json-strings": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.2.0.tgz",
+      "integrity": "sha512-5UGYnMSLRE1dqqZwug+1LISpA403HzlSfsg6P9VXU6TBjcSHeNlw4DxDx7LgpF+iKZoOG/+uzqoRHTdcUpiZNg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-jsx": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.2.0.tgz",
+      "integrity": "sha512-VyN4QANJkRW6lDBmENzRszvZf3/4AXaj9YR7GwrWeeN9tEBPuXbmDYVU9bYBN0D70zCWVwUy0HWq2553VCb6Hw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-object-rest-spread": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.2.0.tgz",
+      "integrity": "sha512-t0JKGgqk2We+9may3t0xDdmneaXmyxq0xieYcKHxIsrJO64n1OiMWNUtc5gQK1PA0NpdCRrtZp4z+IUaKugrSA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-syntax-optional-catch-binding": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.2.0.tgz",
+      "integrity": "sha512-bDe4xKNhb0LI7IvZHiA13kff0KEfaGX/Hv4lMA9+7TEc63hMNvfKo6ZFpXhKuEp+II/q35Gc4NoMeDZyaUbj9w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-arrow-functions": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz",
+      "integrity": "sha512-ER77Cax1+8/8jCB9fo4Ud161OZzWN5qawi4GusDuRLcDbDG+bIGYY20zb2dfAFdTRGzrfq2xZPvF0R64EHnimg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-async-to-generator": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.5.0.tgz",
+      "integrity": "sha512-mqvkzwIGkq0bEF1zLRRiTdjfomZJDV33AH3oQzHVGkI2VzEmXLpKKOBvEVaFZBJdN0XTyH38s9j/Kiqr68dggg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-remap-async-to-generator": "^7.1.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoped-functions": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.2.0.tgz",
+      "integrity": "sha512-ntQPR6q1/NKuphly49+QiQiTN0O63uOwjdD6dhIjSWBI5xlrbUFh720TIpzBhpnrLfv2tNH/BXvLIab1+BAI0w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-block-scoping": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.5.5.tgz",
+      "integrity": "sha512-82A3CLRRdYubkG85lKwhZB0WZoHxLGsJdux/cOVaJCJpvYFl1LVzAIFyRsa7CvXqW8rBM4Zf3Bfn8PHt5DP0Sg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "lodash": "^4.17.13"
+      }
+    },
+    "@babel/plugin-transform-classes": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.5.5.tgz",
+      "integrity": "sha512-U2htCNK/6e9K7jGyJ++1p5XRU+LJjrwtoiVn9SzRlDT2KubcZ11OOwy3s24TjHxPgxNwonCYP7U2K51uVYCMDg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-define-map": "^7.5.5",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-optimise-call-expression": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.5.5",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "globals": "^11.1.0"
+      }
+    },
+    "@babel/plugin-transform-computed-properties": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.2.0.tgz",
+      "integrity": "sha512-kP/drqTxY6Xt3NNpKiMomfgkNn4o7+vKxK2DDKcBG9sHj51vHqMBGy8wbDS/J4lMxnqs153/T3+DmCEAkC5cpA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-destructuring": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.5.0.tgz",
+      "integrity": "sha512-YbYgbd3TryYYLGyC7ZR+Tq8H/+bCmwoaxHfJHupom5ECstzbRLTch6gOQbhEY9Z4hiCNHEURgq06ykFv9JZ/QQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-dotall-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.4.4.tgz",
+      "integrity": "sha512-P05YEhRc2h53lZDjRPk/OektxCVevFzZs2Gfjd545Wde3k+yFDbXORgl2e0xpbq8mLcKJ7Idss4fAg0zORN/zg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/plugin-transform-duplicate-keys": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.5.0.tgz",
+      "integrity": "sha512-igcziksHizyQPlX9gfSjHkE2wmoCH3evvD2qR5w29/Dk0SMKE/eOI7f1HhBdNhR/zxJDqrgpoDTq5YSLH/XMsQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-exponentiation-operator": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.2.0.tgz",
+      "integrity": "sha512-umh4hR6N7mu4Elq9GG8TOu9M0bakvlsREEC+ialrQN6ABS4oDQ69qJv1VtR3uxlKMCQMCvzk7vr17RHKcjx68A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-builder-binary-assignment-operator-visitor": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-for-of": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.4.4.tgz",
+      "integrity": "sha512-9T/5Dlr14Z9TIEXLXkt8T1DU7F24cbhwhMNUziN3hB1AXoZcdzPcTiKGRn/6iOymDqtTKWnr/BtRKN9JwbKtdQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-function-name": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.4.4.tgz",
+      "integrity": "sha512-iU9pv7U+2jC9ANQkKeNF6DrPy4GBa4NWQtl6dHB4Pb3izX2JOEvDTFarlNsBj/63ZEzNNIAMs3Qw4fNCcSOXJA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-literals": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.2.0.tgz",
+      "integrity": "sha512-2ThDhm4lI4oV7fVQ6pNNK+sx+c/GM5/SaML0w/r4ZB7sAneD/piDJtwdKlNckXeyGK7wlwg2E2w33C/Hh+VFCg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-member-expression-literals": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.2.0.tgz",
+      "integrity": "sha512-HiU3zKkSU6scTidmnFJ0bMX8hz5ixC93b4MHMiYebmk2lUVNGOboPsqQvx5LzooihijUoLR/v7Nc1rbBtnc7FA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-modules-amd": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.5.0.tgz",
+      "integrity": "sha512-n20UsQMKnWrltocZZm24cRURxQnWIvsABPJlw/fvoy9c6AgHZzoelAIzajDHAQrDpuKFFPPcFGd7ChsYuIUMpg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-commonjs": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.5.0.tgz",
+      "integrity": "sha512-xmHq0B+ytyrWJvQTc5OWAC4ii6Dhr0s22STOoydokG51JjWhyYo5mRPXoi+ZmtHQhZZwuXNN+GG5jy5UZZJxIQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.4.4",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-simple-access": "^7.1.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-systemjs": {
+      "version": "7.5.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.5.0.tgz",
+      "integrity": "sha512-Q2m56tyoQWmuNGxEtUyeEkm6qJYFqs4c+XyXH5RAuYxObRNz9Zgj/1g2GMnjYp2EUyEy7YTrxliGCXzecl/vJg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-hoist-variables": "^7.4.4",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "babel-plugin-dynamic-import-node": "^2.3.0"
+      }
+    },
+    "@babel/plugin-transform-modules-umd": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.2.0.tgz",
+      "integrity": "sha512-BV3bw6MyUH1iIsGhXlOK6sXhmSarZjtJ/vMiD9dNmpY8QXFFQTj+6v92pcfy1iqa8DeAfJFwoxcrS/TUZda6sw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-transforms": "^7.1.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-named-capturing-groups-regex": {
+      "version": "7.4.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.4.5.tgz",
+      "integrity": "sha512-z7+2IsWafTBbjNsOxU/Iv5CvTJlr5w4+HGu1HovKYTtgJ362f7kBcQglkfmlspKKZ3bgrbSGvLfNx++ZJgCWsg==",
+      "dev": true,
+      "requires": {
+        "regexp-tree": "^0.1.6"
+      }
+    },
+    "@babel/plugin-transform-new-target": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.4.4.tgz",
+      "integrity": "sha512-r1z3T2DNGQwwe2vPGZMBNjioT2scgWzK9BCnDEh+46z8EEwXBq24uRzd65I7pjtugzPSj921aM15RpESgzsSuA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-object-super": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.5.5.tgz",
+      "integrity": "sha512-un1zJQAhSosGFBduPgN/YFNvWVpRuHKU7IHBglLoLZsGmruJPOo6pbInneflUdmq7YvSVqhpPs5zdBvLnteltQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-replace-supers": "^7.5.5"
+      }
+    },
+    "@babel/plugin-transform-parameters": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.4.4.tgz",
+      "integrity": "sha512-oMh5DUO1V63nZcu/ZVLQFqiihBGo4OpxJxR1otF50GMeCLiRx5nUdtokd+u9SuVJrvvuIh9OosRFPP4pIPnwmw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-call-delegate": "^7.4.4",
+        "@babel/helper-get-function-arity": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-property-literals": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.2.0.tgz",
+      "integrity": "sha512-9q7Dbk4RhgcLp8ebduOpCbtjh7C0itoLYHXd9ueASKAG/is5PQtMR5VJGka9NKqGhYEGn5ITahd4h9QeBMylWQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-regenerator": {
+      "version": "7.4.5",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.4.5.tgz",
+      "integrity": "sha512-gBKRh5qAaCWntnd09S8QC7r3auLCqq5DI6O0DlfoyDjslSBVqBibrMdsqO+Uhmx3+BlOmE/Kw1HFxmGbv0N9dA==",
+      "dev": true,
+      "requires": {
+        "regenerator-transform": "^0.14.0"
+      }
+    },
+    "@babel/plugin-transform-reserved-words": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.2.0.tgz",
+      "integrity": "sha512-fz43fqW8E1tAB3DKF19/vxbpib1fuyCwSPE418ge5ZxILnBhWyhtPgz8eh1RCGGJlwvksHkyxMxh0eenFi+kFw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-shorthand-properties": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.2.0.tgz",
+      "integrity": "sha512-QP4eUM83ha9zmYtpbnyjTLAGKQritA5XW/iG9cjtuOI8s1RuL/3V6a3DeSHfKutJQ+ayUfeZJPcnCYEQzaPQqg==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-spread": {
+      "version": "7.2.2",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.2.2.tgz",
+      "integrity": "sha512-KWfky/58vubwtS0hLqEnrWJjsMGaOeSBn90Ezn5Jeg9Z8KKHmELbP1yGylMlm5N6TPKeY9A2+UaSYLdxahg01w==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-sticky-regex": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.2.0.tgz",
+      "integrity": "sha512-KKYCoGaRAf+ckH8gEL3JHUaFVyNHKe3ASNsZ+AlktgHevvxGigoIttrEJb8iKN03Q7Eazlv1s6cx2B2cQ3Jabw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-template-literals": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.4.4.tgz",
+      "integrity": "sha512-mQrEC4TWkhLN0z8ygIvEL9ZEToPhG5K7KDW3pzGqOfIGZ28Jb0POUkeWcoz8HnHvhFy6dwAT1j8OzqN8s804+g==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-annotate-as-pure": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-typeof-symbol": {
+      "version": "7.2.0",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.2.0.tgz",
+      "integrity": "sha512-2LNhETWYxiYysBtrBTqL8+La0jIoQQnIScUJc74OYvUGRmkskNY4EzLCnjHBzdmb38wqtTaixpo1NctEcvMDZw==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0"
+      }
+    },
+    "@babel/plugin-transform-unicode-regex": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.4.4.tgz",
+      "integrity": "sha512-il+/XdNw01i93+M9J9u4T7/e/Ue/vWfNZE4IRUQjplu2Mqb/AFTDimkw2tdEdSH50wuQXZAbXSql0UphQke+vA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/helper-regex": "^7.4.4",
+        "regexpu-core": "^4.5.4"
+      }
+    },
+    "@babel/preset-env": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.5.5.tgz",
+      "integrity": "sha512-GMZQka/+INwsMz1A5UEql8tG015h5j/qjptpKY2gJ7giy8ohzU710YciJB5rcKsWGWHiW3RUnHib0E5/m3Tp3A==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/helper-plugin-utils": "^7.0.0",
+        "@babel/plugin-proposal-async-generator-functions": "^7.2.0",
+        "@babel/plugin-proposal-dynamic-import": "^7.5.0",
+        "@babel/plugin-proposal-json-strings": "^7.2.0",
+        "@babel/plugin-proposal-object-rest-spread": "^7.5.5",
+        "@babel/plugin-proposal-optional-catch-binding": "^7.2.0",
+        "@babel/plugin-proposal-unicode-property-regex": "^7.4.4",
+        "@babel/plugin-syntax-async-generators": "^7.2.0",
+        "@babel/plugin-syntax-dynamic-import": "^7.2.0",
+        "@babel/plugin-syntax-json-strings": "^7.2.0",
+        "@babel/plugin-syntax-object-rest-spread": "^7.2.0",
+        "@babel/plugin-syntax-optional-catch-binding": "^7.2.0",
+        "@babel/plugin-transform-arrow-functions": "^7.2.0",
+        "@babel/plugin-transform-async-to-generator": "^7.5.0",
+        "@babel/plugin-transform-block-scoped-functions": "^7.2.0",
+        "@babel/plugin-transform-block-scoping": "^7.5.5",
+        "@babel/plugin-transform-classes": "^7.5.5",
+        "@babel/plugin-transform-computed-properties": "^7.2.0",
+        "@babel/plugin-transform-destructuring": "^7.5.0",
+        "@babel/plugin-transform-dotall-regex": "^7.4.4",
+        "@babel/plugin-transform-duplicate-keys": "^7.5.0",
+        "@babel/plugin-transform-exponentiation-operator": "^7.2.0",
+        "@babel/plugin-transform-for-of": "^7.4.4",
+        "@babel/plugin-transform-function-name": "^7.4.4",
+        "@babel/plugin-transform-literals": "^7.2.0",
+        "@babel/plugin-transform-member-expression-literals": "^7.2.0",
+        "@babel/plugin-transform-modules-amd": "^7.5.0",
+        "@babel/plugin-transform-modules-commonjs": "^7.5.0",
+        "@babel/plugin-transform-modules-systemjs": "^7.5.0",
+        "@babel/plugin-transform-modules-umd": "^7.2.0",
+        "@babel/plugin-transform-named-capturing-groups-regex": "^7.4.5",
+        "@babel/plugin-transform-new-target": "^7.4.4",
+        "@babel/plugin-transform-object-super": "^7.5.5",
+        "@babel/plugin-transform-parameters": "^7.4.4",
+        "@babel/plugin-transform-property-literals": "^7.2.0",
+        "@babel/plugin-transform-regenerator": "^7.4.5",
+        "@babel/plugin-transform-reserved-words": "^7.2.0",
+        "@babel/plugin-transform-shorthand-properties": "^7.2.0",
+        "@babel/plugin-transform-spread": "^7.2.0",
+        "@babel/plugin-transform-sticky-regex": "^7.2.0",
+        "@babel/plugin-transform-template-literals": "^7.4.4",
+        "@babel/plugin-transform-typeof-symbol": "^7.2.0",
+        "@babel/plugin-transform-unicode-regex": "^7.4.4",
+        "@babel/types": "^7.5.5",
+        "browserslist": "^4.6.0",
+        "core-js-compat": "^3.1.1",
+        "invariant": "^2.2.2",
+        "js-levenshtein": "^1.1.3",
+        "semver": "^5.5.0"
+      }
+    },
+    "@babel/runtime": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.5.5.tgz",
+      "integrity": "sha512-28QvEGyQyNkB0/m2B4FU7IEZGK2NUrcMtT6BZEFALTguLk+AUT6ofsHtPk5QyjAdUkpMJ+/Em+quwz4HOt30AQ==",
+      "requires": {
+        "regenerator-runtime": "^0.13.2"
+      }
+    },
+    "@babel/template": {
+      "version": "7.4.4",
+      "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.4.4.tgz",
+      "integrity": "sha512-CiGzLN9KgAvgZsnivND7rkA+AeJ9JB0ciPOD4U59GKbQP2iQl+olF1l76kJOupqidozfZ32ghwBEJDhnk9MEcw==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.0.0",
+        "@babel/parser": "^7.4.4",
+        "@babel/types": "^7.4.4"
+      }
+    },
+    "@babel/traverse": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.5.5.tgz",
+      "integrity": "sha512-MqB0782whsfffYfSjH4TM+LMjrJnhCNEDMDIjeTpl+ASaUvxcjoiVCo/sM1GhS1pHOXYfWVCYneLjMckuUxDaQ==",
+      "dev": true,
+      "requires": {
+        "@babel/code-frame": "^7.5.5",
+        "@babel/generator": "^7.5.5",
+        "@babel/helper-function-name": "^7.1.0",
+        "@babel/helper-split-export-declaration": "^7.4.4",
+        "@babel/parser": "^7.5.5",
+        "@babel/types": "^7.5.5",
+        "debug": "^4.1.0",
+        "globals": "^11.1.0",
+        "lodash": "^4.17.13"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.1.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz",
+          "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "@babel/types": {
+      "version": "7.5.5",
+      "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.5.5.tgz",
+      "integrity": "sha512-s63F9nJioLqOlW3UkyMd+BYhXt44YuaFm/VV0VwuteqjYwRrObkU7ra9pY4wAJR3oXi8hJrMcrcJdO/HH33vtw==",
+      "dev": true,
+      "requires": {
+        "esutils": "^2.0.2",
+        "lodash": "^4.17.13",
+        "to-fast-properties": "^2.0.0"
+      }
+    },
+    "@popperjs/core": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npm.taobao.org/@popperjs/core/download/@popperjs/core-2.9.2.tgz?cache=0&sync_timestamp=1617291042068&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40popperjs%2Fcore%2Fdownload%2F%40popperjs%2Fcore-2.9.2.tgz",
+      "integrity": "sha1-rep7aVPLs0ZRdmsFSEaOdDxqI1M="
+    },
+    "@types/glob": {
+      "version": "7.1.3",
+      "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz",
+      "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==",
+      "dev": true,
+      "requires": {
+        "@types/minimatch": "*",
+        "@types/node": "*"
+      }
+    },
+    "@types/minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-1z8k4wzFnNjVK/tlxvrWuK5WMt6mydWWP7+zvH5eFep4oj+UkrfiJTRtjCeBXNpwaA/FYqqtb4/QS4ianFpIRA==",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "12.7.2",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.7.2.tgz",
+      "integrity": "sha512-dyYO+f6ihZEtNPDcWNR1fkoTDf3zAK3lAABDze3mz6POyIercH0lEUawUFXlG8xaQZmm1yEBON/4TsYv/laDYg==",
+      "dev": true
+    },
+    "@types/q": {
+      "version": "1.5.2",
+      "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.2.tgz",
+      "integrity": "sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==",
+      "dev": true
+    },
+    "@vant/icons": {
+      "version": "1.5.3",
+      "resolved": "https://registry.nlark.com/@vant/icons/download/@vant/icons-1.5.3.tgz",
+      "integrity": "sha1-t3efZ79gjUF6gkUvvt5AbfpGtDk="
+    },
+    "@vant/popperjs": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/@vant/popperjs/download/@vant/popperjs-1.1.0.tgz?cache=0&sync_timestamp=1617713172143&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40vant%2Fpopperjs%2Fdownload%2F%40vant%2Fpopperjs-1.1.0.tgz",
+      "integrity": "sha1-tO3uW7+m+xhwWYbjE9T9XxeUKg8=",
+      "requires": {
+        "@popperjs/core": "^2.9.2"
+      }
+    },
+    "@vue/babel-helper-vue-jsx-merge-props": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-1.0.0.tgz",
+      "integrity": "sha512-6tyf5Cqm4m6v7buITuwS+jHzPlIPxbFzEhXR5JGZpbrvOcp1hiQKckd305/3C7C36wFekNTQSxAtgeM0j0yoUw=="
+    },
+    "@vue/babel-plugin-transform-vue-jsx": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-plugin-transform-vue-jsx/-/babel-plugin-transform-vue-jsx-1.0.0.tgz",
+      "integrity": "sha512-U+JNwVQSmaLKjO3lzCUC3cNXxprgezV1N+jOdqbP4xWNaqtWUCJnkjTVcgECM18A/AinDKPcUUeoyhU7yxUxXQ==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "html-tags": "^2.0.0",
+        "lodash.kebabcase": "^4.1.1",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-preset-jsx": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-preset-jsx/-/babel-preset-jsx-1.1.0.tgz",
+      "integrity": "sha512-EeZ9gwEmu79B4A6LMLAw5cPCVYIcbKWgJgJafWtLzh1S+SgERUmTkVQ9Vx4k8zYBiCuxHK3XziZ3VJIMau7THA==",
+      "dev": true,
+      "requires": {
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "@vue/babel-sugar-functional-vue": "^1.0.0",
+        "@vue/babel-sugar-inject-h": "^1.0.0",
+        "@vue/babel-sugar-v-model": "^1.0.0",
+        "@vue/babel-sugar-v-on": "^1.1.0"
+      }
+    },
+    "@vue/babel-sugar-functional-vue": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-functional-vue/-/babel-sugar-functional-vue-1.0.0.tgz",
+      "integrity": "sha512-XE/jNaaorTuhWayCz+QClk5AB9OV5HzrwbzEC6sIUY0J60A28ONQKeTwxfidW42egOkqNH/UU6eE3KLfmiDj0Q==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-inject-h": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-inject-h/-/babel-sugar-inject-h-1.0.0.tgz",
+      "integrity": "sha512-NxWU+DqtbZgfGvd25GPoFMj+rvyQ8ZA1pHj8vIeqRij+vx3sXoKkObjA9ulZunvWw5F6uG9xYy4ytpxab/X+Hg==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0"
+      }
+    },
+    "@vue/babel-sugar-v-model": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-model/-/babel-sugar-v-model-1.0.0.tgz",
+      "integrity": "sha512-Pfg2Al0io66P1eO6zUbRIgpyKCU2qTnumiE0lao/wA/uNdb7Dx5Tfd1W6tO5SsByETPnEs8i8+gawRIXX40rFw==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "camelcase": "^5.0.0",
+        "html-tags": "^2.0.0",
+        "svg-tags": "^1.0.0"
+      }
+    },
+    "@vue/babel-sugar-v-on": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/@vue/babel-sugar-v-on/-/babel-sugar-v-on-1.1.0.tgz",
+      "integrity": "sha512-8DwAj/RLpmrDP4eZ3erJcKcyuLArLUYagNODTsSQrMdG5zmLJoFFtEjODfYRh/XxM2wXv9Wxe+HAB41FQxxwQA==",
+      "dev": true,
+      "requires": {
+        "@babel/plugin-syntax-jsx": "^7.2.0",
+        "@vue/babel-plugin-transform-vue-jsx": "^1.0.0",
+        "camelcase": "^5.0.0"
+      }
+    },
+    "@vue/component-compiler-utils": {
+      "version": "2.6.0",
+      "resolved": "https://registry.npmjs.org/@vue/component-compiler-utils/-/component-compiler-utils-2.6.0.tgz",
+      "integrity": "sha512-IHjxt7LsOFYc0DkTncB7OXJL7UzwOLPPQCfEUNyxL2qt+tF12THV+EO33O1G2Uk4feMSWua3iD39Itszx0f0bw==",
+      "dev": true,
+      "requires": {
+        "consolidate": "^0.15.1",
+        "hash-sum": "^1.0.2",
+        "lru-cache": "^4.1.2",
+        "merge-source-map": "^1.1.0",
+        "postcss": "^7.0.14",
+        "postcss-selector-parser": "^5.0.0",
+        "prettier": "1.16.3",
+        "source-map": "~0.6.1",
+        "vue-template-es2015-compiler": "^1.9.0"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+          "dev": true
+        },
+        "lru-cache": {
+          "version": "4.1.5",
+          "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz",
+          "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==",
+          "dev": true,
+          "requires": {
+            "pseudomap": "^1.0.2",
+            "yallist": "^2.1.2"
+          }
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+          "dev": true,
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "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
+        },
+        "yallist": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz",
+          "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=",
+          "dev": true
+        }
+      }
+    },
+    "@webassemblyjs/ast": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz",
+      "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/floating-point-hex-parser": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz",
+      "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-api-error": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz",
+      "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-buffer": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz",
+      "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-code-frame": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz",
+      "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-fsm": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz",
+      "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-module-context": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz",
+      "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0"
+      }
+    },
+    "@webassemblyjs/helper-wasm-bytecode": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz",
+      "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==",
+      "dev": true
+    },
+    "@webassemblyjs/helper-wasm-section": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz",
+      "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0"
+      }
+    },
+    "@webassemblyjs/ieee754": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz",
+      "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==",
+      "dev": true,
+      "requires": {
+        "@xtuc/ieee754": "^1.2.0"
+      }
+    },
+    "@webassemblyjs/leb128": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz",
+      "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==",
+      "dev": true,
+      "requires": {
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/utf8": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz",
+      "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==",
+      "dev": true
+    },
+    "@webassemblyjs/wasm-edit": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz",
+      "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/helper-wasm-section": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-opt": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "@webassemblyjs/wast-printer": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-gen": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz",
+      "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-opt": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz",
+      "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-buffer": "1.9.0",
+        "@webassemblyjs/wasm-gen": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wasm-parser": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz",
+      "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-wasm-bytecode": "1.9.0",
+        "@webassemblyjs/ieee754": "1.9.0",
+        "@webassemblyjs/leb128": "1.9.0",
+        "@webassemblyjs/utf8": "1.9.0"
+      }
+    },
+    "@webassemblyjs/wast-parser": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz",
+      "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/floating-point-hex-parser": "1.9.0",
+        "@webassemblyjs/helper-api-error": "1.9.0",
+        "@webassemblyjs/helper-code-frame": "1.9.0",
+        "@webassemblyjs/helper-fsm": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@webassemblyjs/wast-printer": {
+      "version": "1.9.0",
+      "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz",
+      "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/wast-parser": "1.9.0",
+        "@xtuc/long": "4.2.2"
+      }
+    },
+    "@xtuc/ieee754": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz",
+      "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==",
+      "dev": true
+    },
+    "@xtuc/long": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz",
+      "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==",
+      "dev": true
+    },
+    "abbrev": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
+      "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==",
+      "dev": true
+    },
+    "accepts": {
+      "version": "1.3.7",
+      "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz",
+      "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==",
+      "dev": true,
+      "requires": {
+        "mime-types": "~2.1.24",
+        "negotiator": "0.6.2"
+      }
+    },
+    "acorn": {
+      "version": "6.4.2",
+      "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz",
+      "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==",
+      "dev": true
+    },
+    "aes-decrypter": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/aes-decrypter/-/aes-decrypter-1.0.3.tgz",
+      "integrity": "sha1-nAa4pUNaWtCduTP4oBSvzxhMw04=",
+      "requires": {
+        "pkcs7": "^0.2.3"
+      }
+    },
+    "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"
+      }
+    },
+    "ajv-errors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz",
+      "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==",
+      "dev": true
+    },
+    "ajv-keywords": {
+      "version": "3.4.1",
+      "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.4.1.tgz",
+      "integrity": "sha512-RO1ibKvd27e6FEShVFfPALuHI3WjSVNeK5FIsmme/LYRNxjKuNj+Dt7bucLa6NdSv3JcVTyMlm9kGR84z1XpaQ==",
+      "dev": true
+    },
+    "alphanum-sort": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz",
+      "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=",
+      "dev": true
+    },
+    "ansi-colors": {
+      "version": "3.2.4",
+      "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz",
+      "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==",
+      "dev": true
+    },
+    "ansi-html": {
+      "version": "0.0.7",
+      "resolved": "https://registry.npm.taobao.org/ansi-html/download/ansi-html-0.0.7.tgz",
+      "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=",
+      "dev": true
+    },
+    "ansi-regex": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
+      "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=",
+      "dev": true
+    },
+    "ansi-styles": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+      "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+      "requires": {
+        "color-convert": "^1.9.0"
+      }
+    },
+    "anymatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz",
+      "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "normalize-path": "^3.0.0",
+        "picomatch": "^2.0.4"
+      }
+    },
+    "aproba": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
+      "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==",
+      "dev": true
+    },
+    "argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "requires": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "arr-diff": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz",
+      "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=",
+      "dev": true
+    },
+    "arr-flatten": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz",
+      "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==",
+      "dev": true
+    },
+    "arr-union": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz",
+      "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=",
+      "dev": true
+    },
+    "array-filter": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-1.0.0.tgz",
+      "integrity": "sha1-uveeYubvTCpMC4MSMtr/7CUfnYM="
+    },
+    "array-find": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/array-find/-/array-find-1.0.0.tgz",
+      "integrity": "sha1-bI4obRHtdoMn+OYuzuhzU8o+eLg="
+    },
+    "array-flatten": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz",
+      "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==",
+      "dev": true
+    },
+    "array-map": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/array-map/-/array-map-0.0.0.tgz",
+      "integrity": "sha1-iKK6tz0c97zVwbEYoAP2b2ZfpmI="
+    },
+    "array-shuffle": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/array-shuffle/-/array-shuffle-1.0.1.tgz",
+      "integrity": "sha1-fqSIKjVrS8pfVF4LblLq9tlxVXo="
+    },
+    "array-union": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz",
+      "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=",
+      "dev": true,
+      "requires": {
+        "array-uniq": "^1.0.1"
+      }
+    },
+    "array-uniq": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz",
+      "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=",
+      "dev": true
+    },
+    "array-unique": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz",
+      "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=",
+      "dev": true
+    },
+    "asap": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
+      "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=",
+      "dev": true,
+      "optional": true
+    },
+    "asn1": {
+      "version": "0.2.4",
+      "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
+      "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "safer-buffer": "~2.1.0"
+      }
+    },
+    "asn1.js": {
+      "version": "5.4.1",
+      "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz",
+      "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0",
+        "safer-buffer": "^2.1.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "assert": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz",
+      "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.1",
+        "util": "0.10.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
+          "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=",
+          "dev": true
+        },
+        "util": {
+          "version": "0.10.3",
+          "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz",
+          "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=",
+          "dev": true,
+          "requires": {
+            "inherits": "2.0.1"
+          }
+        }
+      }
+    },
+    "assert-plus": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
+      "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
+      "dev": true,
+      "optional": true
+    },
+    "assign-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz",
+      "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=",
+      "dev": true
+    },
+    "async": {
+      "version": "2.6.3",
+      "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz",
+      "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.14"
+      }
+    },
+    "async-each": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz",
+      "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==",
+      "dev": true
+    },
+    "async-limiter": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz",
+      "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==",
+      "dev": true
+    },
+    "async-validator": {
+      "version": "1.8.5",
+      "resolved": "https://registry.npmjs.org/async-validator/-/async-validator-1.8.5.tgz",
+      "integrity": "sha512-tXBM+1m056MAX0E8TL2iCjg8WvSyXu0Zc8LNtYqrVeyoL3+esHRZ4SieE9fKQyyU09uONjnMEjrNBMqT0mbvmA==",
+      "requires": {
+        "babel-runtime": "6.x"
+      }
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
+      "dev": true,
+      "optional": true
+    },
+    "atob": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+      "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+      "dev": true
+    },
+    "autoprefixer": {
+      "version": "9.6.1",
+      "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.6.1.tgz",
+      "integrity": "sha512-aVo5WxR3VyvyJxcJC3h4FKfwCQvQWb1tSI5VHNibddCVWrcD1NvlxEweg3TSgiPztMnWfjpy2FURKA2kvDE+Tw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.6.3",
+        "caniuse-lite": "^1.0.30000980",
+        "chalk": "^2.4.2",
+        "normalize-range": "^0.1.2",
+        "num2fraction": "^1.2.2",
+        "postcss": "^7.0.17",
+        "postcss-value-parser": "^4.0.0"
+      }
+    },
+    "autosize": {
+      "version": "3.0.21",
+      "resolved": "https://registry.npmjs.org/autosize/-/autosize-3.0.21.tgz",
+      "integrity": "sha1-8YL0DRd1fZeKE5pMnKQMTA5EhgM="
+    },
+    "aws-sign2": {
+      "version": "0.7.0",
+      "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
+      "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
+      "dev": true,
+      "optional": true
+    },
+    "aws4": {
+      "version": "1.8.0",
+      "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.8.0.tgz",
+      "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==",
+      "dev": true,
+      "optional": true
+    },
+    "axios": {
+      "version": "0.18.1",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-0.18.1.tgz",
+      "integrity": "sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g==",
+      "requires": {
+        "follow-redirects": "1.5.10",
+        "is-buffer": "^2.0.2"
+      }
+    },
+    "babel-helper-vue-jsx-merge-props": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/babel-helper-vue-jsx-merge-props/-/babel-helper-vue-jsx-merge-props-2.0.3.tgz",
+      "integrity": "sha512-gsLiKK7Qrb7zYJNgiXKpXblxbV5ffSwR0f5whkPAaBAR4fhi6bwRZxX9wBlIc5M/v8CCkXUbXZL4N/nSE97cqg=="
+    },
+    "babel-loader": {
+      "version": "8.0.6",
+      "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.0.6.tgz",
+      "integrity": "sha512-4BmWKtBOBm13uoUwd08UwjZlaw3O9GWf456R9j+5YykFZ6LUIjIKLc0zEZf+hauxPOJs96C8k6FvYD09vWzhYw==",
+      "dev": true,
+      "requires": {
+        "find-cache-dir": "^2.0.0",
+        "loader-utils": "^1.0.2",
+        "mkdirp": "^0.5.1",
+        "pify": "^4.0.1"
+      }
+    },
+    "babel-plugin-dynamic-import-node": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.0.tgz",
+      "integrity": "sha512-o6qFkpeQEBxcqt0XYlWzAVxNCSCZdUgcR8IRlhD/8DylxjjO4foPcvTW0GGKa/cVt3rvxZ7o5ippJ+/0nvLhlQ==",
+      "dev": true,
+      "requires": {
+        "object.assign": "^4.1.0"
+      }
+    },
+    "babel-plugin-dynamic-import-webpack": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-webpack/-/babel-plugin-dynamic-import-webpack-1.1.0.tgz",
+      "integrity": "sha512-Q/Vxl3zRwC5/DMyg97Ey2UD/f7ApvO+0zXgzwT3G2N7oajGFroqcUEmXZ23QXJsr0Y+DBVNK57saaUnQhCpllA==",
+      "dev": true
+    },
+    "babel-plugin-import": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.12.0.tgz",
+      "integrity": "sha512-3Fo7sJ2Hm71y1VJS7eMA/E7J5+roKJmzwia5BxzUQREBs6CRylwtvQq8m39W8nplG4Y7rZwOCndh5MzRTSmHpA==",
+      "dev": true,
+      "requires": {
+        "@babel/helper-module-imports": "^7.0.0",
+        "@babel/runtime": "^7.0.0"
+      }
+    },
+    "babel-runtime": {
+      "version": "6.26.0",
+      "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
+      "integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
+      "requires": {
+        "core-js": "^2.4.0",
+        "regenerator-runtime": "^0.11.0"
+      },
+      "dependencies": {
+        "regenerator-runtime": {
+          "version": "0.11.1",
+          "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz",
+          "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg=="
+        }
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
+      "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
+      "dev": true
+    },
+    "base": {
+      "version": "0.11.2",
+      "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz",
+      "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==",
+      "dev": true,
+      "requires": {
+        "cache-base": "^1.0.1",
+        "class-utils": "^0.3.5",
+        "component-emitter": "^1.2.1",
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.1",
+        "mixin-deep": "^1.2.0",
+        "pascalcase": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "base64-arraybuffer": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-0.2.0.tgz",
+      "integrity": "sha512-7emyCsu1/xiBXgQZrscw/8KPRT44I4Yq9Pe6EGs3aPRTsWuggML1/1DTuZUuIaJPIm1FTDUVXl4x/yW8s0kQDQ=="
+    },
+    "base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true
+    },
+    "batch": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npm.taobao.org/batch/download/batch-0.6.1.tgz",
+      "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=",
+      "dev": true
+    },
+    "bcrypt-pbkdf": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
+      "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "tweetnacl": "^0.14.3"
+      }
+    },
+    "big.js": {
+      "version": "5.2.2",
+      "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz",
+      "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==",
+      "dev": true
+    },
+    "binary-extensions": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz",
+      "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==",
+      "dev": true,
+      "optional": true
+    },
+    "bindings": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/bindings/download/bindings-1.5.0.tgz",
+      "integrity": "sha1-EDU8npRTNLwFEabZCzj7x8nFBN8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "file-uri-to-path": "1.0.0"
+      }
+    },
+    "bluebird": {
+      "version": "3.5.5",
+      "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.5.tgz",
+      "integrity": "sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w==",
+      "dev": true
+    },
+    "blueimp-md5": {
+      "version": "2.11.1",
+      "resolved": "https://registry.npmjs.org/blueimp-md5/-/blueimp-md5-2.11.1.tgz",
+      "integrity": "sha512-4UiOAmql2XO0Sws07OVzYdCKK0K2Va5g6AVgYXoGhEQiKrdSOefjUCm1frPk6E+xiIOHRqaFg+TUGo7cClKg5g=="
+    },
+    "bn.js": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz",
+      "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==",
+      "dev": true
+    },
+    "body-parser": {
+      "version": "1.19.0",
+      "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz",
+      "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "content-type": "~1.0.4",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "on-finished": "~2.3.0",
+        "qs": "6.7.0",
+        "raw-body": "2.4.0",
+        "type-is": "~1.6.17"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+          "dev": true
+        }
+      }
+    },
+    "bonjour": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npm.taobao.org/bonjour/download/bonjour-3.5.0.tgz",
+      "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=",
+      "dev": true,
+      "requires": {
+        "array-flatten": "^2.1.0",
+        "deep-equal": "^1.0.1",
+        "dns-equal": "^1.0.0",
+        "dns-txt": "^2.0.2",
+        "multicast-dns": "^6.0.1",
+        "multicast-dns-service-types": "^1.1.0"
+      }
+    },
+    "boolbase": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz",
+      "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=",
+      "dev": true
+    },
+    "boom": {
+      "version": "2.10.1",
+      "resolved": "https://registry.npmjs.org/boom/-/boom-2.10.1.tgz",
+      "integrity": "sha1-OciRjO/1eZ+D+UkqhI9iWt0Mdm8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "braces": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz",
+      "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==",
+      "dev": true,
+      "requires": {
+        "arr-flatten": "^1.1.0",
+        "array-unique": "^0.3.2",
+        "extend-shallow": "^2.0.1",
+        "fill-range": "^4.0.0",
+        "isobject": "^3.0.1",
+        "repeat-element": "^1.1.2",
+        "snapdragon": "^0.8.1",
+        "snapdragon-node": "^2.0.1",
+        "split-string": "^3.0.2",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "brorand": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz",
+      "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=",
+      "dev": true
+    },
+    "browserify-aes": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz",
+      "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==",
+      "dev": true,
+      "requires": {
+        "buffer-xor": "^1.0.3",
+        "cipher-base": "^1.0.0",
+        "create-hash": "^1.1.0",
+        "evp_bytestokey": "^1.0.3",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "browserify-cipher": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz",
+      "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==",
+      "dev": true,
+      "requires": {
+        "browserify-aes": "^1.0.4",
+        "browserify-des": "^1.0.0",
+        "evp_bytestokey": "^1.0.0"
+      }
+    },
+    "browserify-des": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz",
+      "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "des.js": "^1.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "browserify-rsa": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz",
+      "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.0.0",
+        "randombytes": "^2.0.1"
+      }
+    },
+    "browserify-sign": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz",
+      "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^5.1.1",
+        "browserify-rsa": "^4.0.1",
+        "create-hash": "^1.2.0",
+        "create-hmac": "^1.1.7",
+        "elliptic": "^6.5.3",
+        "inherits": "^2.0.4",
+        "parse-asn1": "^5.1.5",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
+      }
+    },
+    "browserify-zlib": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz",
+      "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==",
+      "dev": true,
+      "requires": {
+        "pako": "~1.0.5"
+      }
+    },
+    "browserslist": {
+      "version": "4.6.6",
+      "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.6.6.tgz",
+      "integrity": "sha512-D2Nk3W9JL9Fp/gIcWei8LrERCS+eXu9AM5cfXA8WEZ84lFks+ARnZ0q/R69m2SV3Wjma83QDDPxsNKXUwdIsyA==",
+      "dev": true,
+      "requires": {
+        "caniuse-lite": "^1.0.30000984",
+        "electron-to-chromium": "^1.3.191",
+        "node-releases": "^1.1.25"
+      }
+    },
+    "buffer": {
+      "version": "4.9.2",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz",
+      "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.0.2",
+        "ieee754": "^1.1.4",
+        "isarray": "^1.0.0"
+      }
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==",
+      "dev": true
+    },
+    "buffer-indexof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz",
+      "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==",
+      "dev": true
+    },
+    "buffer-xor": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz",
+      "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=",
+      "dev": true
+    },
+    "builtin-status-codes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz",
+      "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=",
+      "dev": true
+    },
+    "bytes": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.0.0.tgz",
+      "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
+      "dev": true
+    },
+    "cacache": {
+      "version": "11.3.3",
+      "resolved": "https://registry.npmjs.org/cacache/-/cacache-11.3.3.tgz",
+      "integrity": "sha512-p8WcneCytvzPxhDvYp31PD039vi77I12W+/KfR9S8AZbaiARFBCpsPJS+9uhWfeBfeAtW7o/4vt3MUqLkbY6nA==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.5.5",
+        "chownr": "^1.1.1",
+        "figgy-pudding": "^3.5.1",
+        "glob": "^7.1.4",
+        "graceful-fs": "^4.1.15",
+        "lru-cache": "^5.1.1",
+        "mississippi": "^3.0.0",
+        "mkdirp": "^0.5.1",
+        "move-concurrently": "^1.0.1",
+        "promise-inflight": "^1.0.1",
+        "rimraf": "^2.6.3",
+        "ssri": "^6.0.1",
+        "unique-filename": "^1.1.1",
+        "y18n": "^4.0.0"
+      }
+    },
+    "cache-base": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz",
+      "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==",
+      "dev": true,
+      "requires": {
+        "collection-visit": "^1.0.0",
+        "component-emitter": "^1.2.1",
+        "get-value": "^2.0.6",
+        "has-value": "^1.0.0",
+        "isobject": "^3.0.1",
+        "set-value": "^2.0.0",
+        "to-object-path": "^0.3.0",
+        "union-value": "^1.0.0",
+        "unset-value": "^1.0.0"
+      }
+    },
+    "call-bind": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz",
+      "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1",
+        "get-intrinsic": "^1.0.2"
+      }
+    },
+    "caller-callsite": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz",
+      "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=",
+      "dev": true,
+      "requires": {
+        "callsites": "^2.0.0"
+      }
+    },
+    "caller-path": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz",
+      "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=",
+      "dev": true,
+      "requires": {
+        "caller-callsite": "^2.0.0"
+      }
+    },
+    "callsites": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz",
+      "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=",
+      "dev": true
+    },
+    "camel-case": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-3.0.0.tgz",
+      "integrity": "sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0",
+        "upper-case": "^1.1.1"
+      }
+    },
+    "camelcase": {
+      "version": "5.3.1",
+      "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+      "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg=="
+    },
+    "caniuse-api": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz",
+      "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-lite": "^1.0.0",
+        "lodash.memoize": "^4.1.2",
+        "lodash.uniq": "^4.5.0"
+      }
+    },
+    "caniuse-db": {
+      "version": "1.0.30000990",
+      "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000990.tgz",
+      "integrity": "sha512-92QOtfA36W2+PxhE5hNe3hTOSJpmtOs9zuZQUfkKwSiHOpmaus+0rVhSqG6/aAj4w5PujBusIzDksZM81j8tCg==",
+      "dev": true
+    },
+    "caniuse-lite": {
+      "version": "1.0.30000989",
+      "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000989.tgz",
+      "integrity": "sha512-vrMcvSuMz16YY6GSVZ0dWDTJP8jqk3iFQ/Aq5iqblPwxSVVZI+zxDyTX0VPqtQsDnfdrBDcsmhgTEOh5R8Lbpw==",
+      "dev": true
+    },
+    "caseless": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
+      "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
+      "dev": true,
+      "optional": true
+    },
+    "chalk": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+      "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+      "dev": true,
+      "requires": {
+        "ansi-styles": "^3.2.1",
+        "escape-string-regexp": "^1.0.5",
+        "supports-color": "^5.3.0"
+      }
+    },
+    "chokidar": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
+      "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "anymatch": "~3.1.1",
+        "braces": "~3.0.2",
+        "fsevents": "~2.3.1",
+        "glob-parent": "~5.1.0",
+        "is-binary-path": "~2.1.0",
+        "is-glob": "~4.0.1",
+        "normalize-path": "~3.0.0",
+        "readdirp": "~3.5.0"
+      },
+      "dependencies": {
+        "braces": {
+          "version": "3.0.2",
+          "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
+          "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "fill-range": "^7.0.1"
+          }
+        },
+        "fill-range": {
+          "version": "7.0.1",
+          "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
+          "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "to-regex-range": "^5.0.1"
+          }
+        },
+        "glob-parent": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+          "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-glob": "^4.0.1"
+          }
+        },
+        "is-number": {
+          "version": "7.0.0",
+          "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+          "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+          "dev": true,
+          "optional": true
+        },
+        "to-regex-range": {
+          "version": "5.0.1",
+          "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+          "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "is-number": "^7.0.0"
+          }
+        }
+      }
+    },
+    "chownr": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.2.tgz",
+      "integrity": "sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A==",
+      "dev": true
+    },
+    "chrome-trace-event": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz",
+      "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==",
+      "dev": true
+    },
+    "cipher-base": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz",
+      "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "clap": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz",
+      "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.3"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "class-utils": {
+      "version": "0.3.6",
+      "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz",
+      "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "define-property": "^0.2.5",
+        "isobject": "^3.0.0",
+        "static-extend": "^0.1.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "clean-css": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.1.tgz",
+      "integrity": "sha512-4ZxI6dy4lrY6FHzfiy1aEOXgu4LIsW2MhwG0VBKdcoGoH/XLFgaHSdLTGr4O8Be6A8r3MOphEiI8Gc1n0ecf3g==",
+      "dev": true,
+      "requires": {
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "clean-webpack-plugin": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-1.0.1.tgz",
+      "integrity": "sha512-gvwfMsqu3HBgTVvaBa1H3AZKO03CHpr5uP92SPIktP3827EovAitwW+1xoqXyTxCuXnLYpMHG5ytS4AoukHDWA==",
+      "dev": true,
+      "requires": {
+        "rimraf": "^2.6.1"
+      }
+    },
+    "cliui": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+      "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+      "requires": {
+        "string-width": "^3.1.0",
+        "strip-ansi": "^5.2.0",
+        "wrap-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "clone": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz",
+      "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=",
+      "dev": true
+    },
+    "co": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+      "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=",
+      "dev": true,
+      "optional": true
+    },
+    "coa": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz",
+      "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==",
+      "dev": true,
+      "requires": {
+        "@types/q": "^1.5.1",
+        "chalk": "^2.4.1",
+        "q": "^1.1.2"
+      }
+    },
+    "collection-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz",
+      "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=",
+      "dev": true,
+      "requires": {
+        "map-visit": "^1.0.0",
+        "object-visit": "^1.0.0"
+      }
+    },
+    "color": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/color/-/color-3.1.2.tgz",
+      "integrity": "sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^1.9.1",
+        "color-string": "^1.5.2"
+      }
+    },
+    "color-convert": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+      "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+      "requires": {
+        "color-name": "1.1.3"
+      }
+    },
+    "color-name": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+      "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU="
+    },
+    "color-string": {
+      "version": "1.5.3",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.5.3.tgz",
+      "integrity": "sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==",
+      "dev": true,
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "colormin": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz",
+      "integrity": "sha1-6i90IKcrlogaOKrlnsEkpvcpgTM=",
+      "dev": true,
+      "requires": {
+        "color": "^0.11.0",
+        "css-color-names": "0.0.4",
+        "has": "^1.0.1"
+      },
+      "dependencies": {
+        "clone": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz",
+          "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=",
+          "dev": true
+        },
+        "color": {
+          "version": "0.11.4",
+          "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz",
+          "integrity": "sha1-bXtcdPtl6EHNSHkq0e1eB7kE12Q=",
+          "dev": true,
+          "requires": {
+            "clone": "^1.0.2",
+            "color-convert": "^1.3.0",
+            "color-string": "^0.3.0"
+          }
+        },
+        "color-string": {
+          "version": "0.3.0",
+          "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz",
+          "integrity": "sha1-J9RvtnAlxcL6JZk7+/V55HhBuZE=",
+          "dev": true,
+          "requires": {
+            "color-name": "^1.0.0"
+          }
+        }
+      }
+    },
+    "colors": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz",
+      "integrity": "sha1-FopHAXVran9RoSzgyXv6KMCE7WM=",
+      "dev": true
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "2.17.1",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-2.17.1.tgz",
+      "integrity": "sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==",
+      "dev": true
+    },
+    "commondir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz",
+      "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=",
+      "dev": true
+    },
+    "compare-versions": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.5.1.tgz",
+      "integrity": "sha512-9fGPIB7C6AyM18CJJBHt5EnCZDG3oiTJYy0NjfIAGjKpzv0tkxWko7TNQHF5ymqm7IH03tqmeuBxtvD+Izh6mg==",
+      "dev": true
+    },
+    "component-emitter": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
+      "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
+      "dev": true
+    },
+    "compressible": {
+      "version": "2.0.18",
+      "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
+      "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==",
+      "dev": true,
+      "requires": {
+        "mime-db": ">= 1.43.0 < 2"
+      },
+      "dependencies": {
+        "mime-db": {
+          "version": "1.47.0",
+          "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz",
+          "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==",
+          "dev": true
+        }
+      }
+    },
+    "compression": {
+      "version": "1.7.4",
+      "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz",
+      "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.5",
+        "bytes": "3.0.0",
+        "compressible": "~2.0.16",
+        "debug": "2.6.9",
+        "on-headers": "~1.0.2",
+        "safe-buffer": "5.1.2",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
+    "connect-history-api-fallback": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz",
+      "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==",
+      "dev": true
+    },
+    "console-browserify": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz",
+      "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==",
+      "dev": true
+    },
+    "consolidate": {
+      "version": "0.15.1",
+      "resolved": "https://registry.npmjs.org/consolidate/-/consolidate-0.15.1.tgz",
+      "integrity": "sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==",
+      "dev": true,
+      "requires": {
+        "bluebird": "^3.1.1"
+      }
+    },
+    "constants-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz",
+      "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=",
+      "dev": true
+    },
+    "content-disposition": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.3.tgz",
+      "integrity": "sha512-ExO0774ikEObIAEV9kDo50o+79VCUdEB6n6lzKgGwupcVeRlhrj3qGAfwq8G6uBJjkqLrhT0qEYFcWng8z1z0g==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "5.1.2"
+      }
+    },
+    "content-type": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz",
+      "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==",
+      "dev": true
+    },
+    "convert-source-map": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.6.0.tgz",
+      "integrity": "sha512-eFu7XigvxdZ1ETfbgPBohgyQ/Z++C0eEhTor0qRwBw9unw+L0/6V8wkSuGgzdThkiS5lSpdptOQPD8Ak40a+7A==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.1"
+      }
+    },
+    "cookie": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.0.tgz",
+      "integrity": "sha512-+Hp8fLp57wnUSt0tY0tHEXh4voZRDnoIrZPqlo3DPiI4y9lwg/jqx+1Om94/W6ZaPDOUbnjOt/99w66zk+l1Xg==",
+      "dev": true
+    },
+    "cookie-signature": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz",
+      "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=",
+      "dev": true
+    },
+    "copy-concurrently": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz",
+      "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "fs-write-stream-atomic": "^1.0.8",
+        "iferr": "^0.1.5",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.0"
+      }
+    },
+    "copy-descriptor": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz",
+      "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=",
+      "dev": true
+    },
+    "copy-webpack-plugin": {
+      "version": "5.0.4",
+      "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-5.0.4.tgz",
+      "integrity": "sha512-YBuYGpSzoCHSSDGyHy6VJ7SHojKp6WHT4D7ItcQFNAYx2hrwkMe56e97xfVR0/ovDuMTrMffXUiltvQljtAGeg==",
+      "dev": true,
+      "requires": {
+        "cacache": "^11.3.3",
+        "find-cache-dir": "^2.1.0",
+        "glob-parent": "^3.1.0",
+        "globby": "^7.1.1",
+        "is-glob": "^4.0.1",
+        "loader-utils": "^1.2.3",
+        "minimatch": "^3.0.4",
+        "normalize-path": "^3.0.0",
+        "p-limit": "^2.2.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^1.7.0",
+        "webpack-log": "^2.0.0"
+      }
+    },
+    "core-js": {
+      "version": "2.6.9",
+      "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
+      "integrity": "sha512-HOpZf6eXmnl7la+cUdMnLvUxKNqLUzJvgIziQ0DiF3JwSImNphIqdGqzj6hIKyX04MmV0poclQ7+wjWvxQyR2A=="
+    },
+    "core-js-compat": {
+      "version": "3.2.1",
+      "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.2.1.tgz",
+      "integrity": "sha512-MwPZle5CF9dEaMYdDeWm73ao/IflDH+FjeJCWEADcEgFSE9TLimFKwJsfmkwzI8eC0Aj0mgvMDjeQjrElkz4/A==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.6.6",
+        "semver": "^6.3.0"
+      },
+      "dependencies": {
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        }
+      }
+    },
+    "core-util-is": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
+      "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=",
+      "dev": true
+    },
+    "cosmiconfig": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz",
+      "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==",
+      "dev": true,
+      "requires": {
+        "import-fresh": "^2.0.0",
+        "is-directory": "^0.3.1",
+        "js-yaml": "^3.13.1",
+        "parse-json": "^4.0.0"
+      }
+    },
+    "countup.js": {
+      "version": "1.9.3",
+      "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-1.9.3.tgz",
+      "integrity": "sha1-zj5QzXFgRB5HjwfaMYle3MDxyd0="
+    },
+    "create-ecdh": {
+      "version": "4.0.4",
+      "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz",
+      "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "elliptic": "^6.5.3"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "create-hash": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz",
+      "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.1",
+        "inherits": "^2.0.1",
+        "md5.js": "^1.3.4",
+        "ripemd160": "^2.0.1",
+        "sha.js": "^2.4.0"
+      }
+    },
+    "create-hmac": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz",
+      "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==",
+      "dev": true,
+      "requires": {
+        "cipher-base": "^1.0.3",
+        "create-hash": "^1.1.0",
+        "inherits": "^2.0.1",
+        "ripemd160": "^2.0.0",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "cross-spawn": {
+      "version": "6.0.5",
+      "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
+      "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+      "requires": {
+        "nice-try": "^1.0.4",
+        "path-key": "^2.0.1",
+        "semver": "^5.5.0",
+        "shebang-command": "^1.2.0",
+        "which": "^1.2.9"
+      }
+    },
+    "cryptiles": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.5.tgz",
+      "integrity": "sha1-O9/s3GCBR8HGcgL6KR59ylnqo7g=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "boom": "2.x.x"
+      }
+    },
+    "crypto-browserify": {
+      "version": "3.12.0",
+      "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz",
+      "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==",
+      "dev": true,
+      "requires": {
+        "browserify-cipher": "^1.0.0",
+        "browserify-sign": "^4.0.0",
+        "create-ecdh": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "create-hmac": "^1.1.0",
+        "diffie-hellman": "^5.0.0",
+        "inherits": "^2.0.1",
+        "pbkdf2": "^3.0.3",
+        "public-encrypt": "^4.0.0",
+        "randombytes": "^2.0.0",
+        "randomfill": "^1.0.3"
+      }
+    },
+    "css-color-names": {
+      "version": "0.0.4",
+      "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz",
+      "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=",
+      "dev": true
+    },
+    "css-declaration-sorter": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz",
+      "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.1",
+        "timsort": "^0.3.0"
+      }
+    },
+    "css-line-break": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-1.1.1.tgz",
+      "integrity": "sha512-1feNVaM4Fyzdj4mKPIQNL2n70MmuYzAXZ1aytlROFX1JsOo070OsugwGjj7nl6jnDJWHDM8zRZswkmeYVWZJQA==",
+      "requires": {
+        "base64-arraybuffer": "^0.2.0"
+      }
+    },
+    "css-loader": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-2.1.1.tgz",
+      "integrity": "sha512-OcKJU/lt232vl1P9EEDamhoO9iKY3tIjY5GU+XDLblAykTdgs6Ux9P1hTHve8nFKy5KPpOXOsVI/hIwi3841+w==",
+      "dev": true,
+      "requires": {
+        "camelcase": "^5.2.0",
+        "icss-utils": "^4.1.0",
+        "loader-utils": "^1.2.3",
+        "normalize-path": "^3.0.0",
+        "postcss": "^7.0.14",
+        "postcss-modules-extract-imports": "^2.0.0",
+        "postcss-modules-local-by-default": "^2.0.6",
+        "postcss-modules-scope": "^2.1.0",
+        "postcss-modules-values": "^2.0.0",
+        "postcss-value-parser": "^3.3.0",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "css-select": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.0.2.tgz",
+      "integrity": "sha512-dSpYaDVoWaELjvZ3mS6IKZM/y2PMPa/XYoEfYNZePL4U/XgyxZNroHEHReDx/d+VgXh9VbCTtFqLkFbmeqeaRQ==",
+      "dev": true,
+      "requires": {
+        "boolbase": "^1.0.0",
+        "css-what": "^2.1.2",
+        "domutils": "^1.7.0",
+        "nth-check": "^1.0.2"
+      }
+    },
+    "css-select-base-adapter": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz",
+      "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==",
+      "dev": true
+    },
+    "css-tree": {
+      "version": "1.0.0-alpha.33",
+      "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.33.tgz",
+      "integrity": "sha512-SPt57bh5nQnpsTBsx/IXbO14sRc9xXu5MtMAVuo0BaQQmyf0NupNPPSoMaqiAF5tDFafYsTkfeH4Q/HCKXkg4w==",
+      "dev": true,
+      "requires": {
+        "mdn-data": "2.0.4",
+        "source-map": "^0.5.3"
+      }
+    },
+    "css-unit-converter": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/css-unit-converter/-/css-unit-converter-1.1.1.tgz",
+      "integrity": "sha1-2bkoGtz9jO2TW9urqDeGiX9k6ZY=",
+      "dev": true
+    },
+    "css-what": {
+      "version": "2.1.3",
+      "resolved": "https://registry.npmjs.org/css-what/-/css-what-2.1.3.tgz",
+      "integrity": "sha512-a+EPoD+uZiNfh+5fxw2nO9QwFa6nJe2Or35fGY6Ipw1R3R4AGz1d1TEZrCegvw2YTmZ0jXirGYlzxxpYSHwpEg==",
+      "dev": true
+    },
+    "cssesc": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",
+      "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",
+      "dev": true
+    },
+    "cssnano": {
+      "version": "4.1.10",
+      "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz",
+      "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "cssnano-preset-default": "^4.0.7",
+        "is-resolvable": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-preset-default": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.7.tgz",
+      "integrity": "sha512-x0YHHx2h6p0fCl1zY9L9roD7rnlltugGu7zXSKQx6k2rYw0Hi3IqxcoAGF7u9Q5w1nt7vK0ulxV8Lo+EvllGsA==",
+      "dev": true,
+      "requires": {
+        "css-declaration-sorter": "^4.0.1",
+        "cssnano-util-raw-cache": "^4.0.1",
+        "postcss": "^7.0.0",
+        "postcss-calc": "^7.0.1",
+        "postcss-colormin": "^4.0.3",
+        "postcss-convert-values": "^4.0.1",
+        "postcss-discard-comments": "^4.0.2",
+        "postcss-discard-duplicates": "^4.0.2",
+        "postcss-discard-empty": "^4.0.1",
+        "postcss-discard-overridden": "^4.0.1",
+        "postcss-merge-longhand": "^4.0.11",
+        "postcss-merge-rules": "^4.0.3",
+        "postcss-minify-font-values": "^4.0.2",
+        "postcss-minify-gradients": "^4.0.2",
+        "postcss-minify-params": "^4.0.2",
+        "postcss-minify-selectors": "^4.0.2",
+        "postcss-normalize-charset": "^4.0.1",
+        "postcss-normalize-display-values": "^4.0.2",
+        "postcss-normalize-positions": "^4.0.2",
+        "postcss-normalize-repeat-style": "^4.0.2",
+        "postcss-normalize-string": "^4.0.2",
+        "postcss-normalize-timing-functions": "^4.0.2",
+        "postcss-normalize-unicode": "^4.0.1",
+        "postcss-normalize-url": "^4.0.1",
+        "postcss-normalize-whitespace": "^4.0.2",
+        "postcss-ordered-values": "^4.1.2",
+        "postcss-reduce-initial": "^4.0.3",
+        "postcss-reduce-transforms": "^4.0.2",
+        "postcss-svgo": "^4.0.2",
+        "postcss-unique-selectors": "^4.0.1"
+      }
+    },
+    "cssnano-util-get-arguments": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz",
+      "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=",
+      "dev": true
+    },
+    "cssnano-util-get-match": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz",
+      "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=",
+      "dev": true
+    },
+    "cssnano-util-raw-cache": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz",
+      "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "cssnano-util-same-parent": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz",
+      "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==",
+      "dev": true
+    },
+    "csso": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/csso/-/csso-3.5.1.tgz",
+      "integrity": "sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==",
+      "dev": true,
+      "requires": {
+        "css-tree": "1.0.0-alpha.29"
+      },
+      "dependencies": {
+        "css-tree": {
+          "version": "1.0.0-alpha.29",
+          "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.29.tgz",
+          "integrity": "sha512-sRNb1XydwkW9IOci6iB2xmy8IGCj6r/fr+JWitvJ2JxQRPzN3T4AGGVWCMlVmVwM1gtgALJRmGIlWv5ppnGGkg==",
+          "dev": true,
+          "requires": {
+            "mdn-data": "~1.1.0",
+            "source-map": "^0.5.3"
+          }
+        },
+        "mdn-data": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-1.1.4.tgz",
+          "integrity": "sha512-FSYbp3lyKjyj3E7fMl6rYvUdX0FBXaluGqlFoYESWQlyUTq8R+wp0rkFxoYFqZlHCvsUXGjyJmLQSnXToYhOSA==",
+          "dev": true
+        }
+      }
+    },
+    "cyclist": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-0.2.2.tgz",
+      "integrity": "sha1-GzN5LhHpFKL9bW7WRHRkRE5fpkA=",
+      "dev": true
+    },
+    "dashdash": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
+      "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "de-indent": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz",
+      "integrity": "sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0=",
+      "dev": true
+    },
+    "debug": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
+      "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
+      "requires": {
+        "ms": "2.0.0"
+      }
+    },
+    "decamelize": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+      "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA="
+    },
+    "decode-uri-component": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz",
+      "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=",
+      "dev": true
+    },
+    "deep-equal": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz",
+      "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==",
+      "dev": true,
+      "requires": {
+        "is-arguments": "^1.0.4",
+        "is-date-object": "^1.0.1",
+        "is-regex": "^1.0.4",
+        "object-is": "^1.0.1",
+        "object-keys": "^1.1.1",
+        "regexp.prototype.flags": "^1.2.0"
+      }
+    },
+    "deep-is": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz",
+      "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=",
+      "dev": true
+    },
+    "deepmerge": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-2.2.1.tgz",
+      "integrity": "sha512-R9hc1Xa/NOBi9WRVUWg19rl1UB7Tt4kuPd+thNJgFZoxXsTz7ncaPaeIm+40oSGuP33DfMb4sZt1QIGiJzC4EA=="
+    },
+    "default-gateway": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz",
+      "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==",
+      "dev": true,
+      "requires": {
+        "execa": "^1.0.0",
+        "ip-regex": "^2.1.0"
+      }
+    },
+    "define-properties": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
+      "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+      "requires": {
+        "object-keys": "^1.0.12"
+      }
+    },
+    "define-property": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz",
+      "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==",
+      "dev": true,
+      "requires": {
+        "is-descriptor": "^1.0.2",
+        "isobject": "^3.0.1"
+      },
+      "dependencies": {
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "defined": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz",
+      "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=",
+      "dev": true
+    },
+    "del": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz",
+      "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==",
+      "dev": true,
+      "requires": {
+        "@types/glob": "^7.1.1",
+        "globby": "^6.1.0",
+        "is-path-cwd": "^2.0.0",
+        "is-path-in-cwd": "^2.0.0",
+        "p-map": "^2.0.0",
+        "pify": "^4.0.1",
+        "rimraf": "^2.6.3"
+      },
+      "dependencies": {
+        "globby": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npm.taobao.org/globby/download/globby-6.1.0.tgz",
+          "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=",
+          "dev": true,
+          "requires": {
+            "array-union": "^1.0.1",
+            "glob": "^7.0.3",
+            "object-assign": "^4.0.1",
+            "pify": "^2.0.0",
+            "pinkie-promise": "^2.0.0"
+          },
+          "dependencies": {
+            "pify": {
+              "version": "2.3.0",
+              "resolved": "https://registry.npm.taobao.org/pify/download/pify-2.3.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpify%2Fdownload%2Fpify-2.3.0.tgz",
+              "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
+              "dev": true
+            }
+          }
+        }
+      }
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
+      "dev": true,
+      "optional": true
+    },
+    "depd": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
+      "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=",
+      "dev": true
+    },
+    "des.js": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz",
+      "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "destroy": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
+      "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=",
+      "dev": true
+    },
+    "detect-file": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz",
+      "integrity": "sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc=",
+      "dev": true
+    },
+    "detect-node": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz",
+      "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==",
+      "dev": true
+    },
+    "diffie-hellman": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz",
+      "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "miller-rabin": "^4.0.0",
+        "randombytes": "^2.0.0"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "dijkstrajs": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/dijkstrajs/-/dijkstrajs-1.0.1.tgz",
+      "integrity": "sha1-082BIh4+pAdCz83lVtTpnpjdxxs="
+    },
+    "dir-glob": {
+      "version": "2.2.2",
+      "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz",
+      "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==",
+      "dev": true,
+      "requires": {
+        "path-type": "^3.0.0"
+      }
+    },
+    "dns-equal": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/dns-equal/download/dns-equal-1.0.0.tgz",
+      "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=",
+      "dev": true
+    },
+    "dns-packet": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.1.tgz",
+      "integrity": "sha512-0UxfQkMhYAUaZI+xrNZOz/as5KgDU0M/fQ9b6SpkyLbk3GEswDi6PADJVaYJradtRVsRIlF1zLyOodbcTCDzUg==",
+      "dev": true,
+      "requires": {
+        "ip": "^1.1.0",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "dns-txt": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npm.taobao.org/dns-txt/download/dns-txt-2.0.2.tgz",
+      "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=",
+      "dev": true,
+      "requires": {
+        "buffer-indexof": "^1.0.0"
+      }
+    },
+    "dom-converter": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/dom-converter/-/dom-converter-0.2.0.tgz",
+      "integrity": "sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==",
+      "dev": true,
+      "requires": {
+        "utila": "~0.4"
+      }
+    },
+    "dom-serializer": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.1.tgz",
+      "integrity": "sha512-sK3ujri04WyjwQXVoK4PU3y8ula1stq10GJZpqHIUgoGZdsGzAGu65BnU3d08aTVSvO7mGPZUc0wTEDL+qGE0Q==",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^2.0.1",
+        "entities": "^2.0.0"
+      },
+      "dependencies": {
+        "domelementtype": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.0.1.tgz",
+          "integrity": "sha512-5HOHUDsYZWV8FGWN0Njbr/Rn7f/eWSQi1v7+HsUVwXgn8nWWlL64zKDkS0n8ZmQ3mlWOMuXOnR+7Nx/5tMO5AQ==",
+          "dev": true
+        }
+      }
+    },
+    "dom-walk": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/dom-walk/-/dom-walk-0.1.1.tgz",
+      "integrity": "sha1-ZyIm3HTI95mtNTB9+TaroRrNYBg="
+    },
+    "domain-browser": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz",
+      "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==",
+      "dev": true
+    },
+    "domelementtype": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz",
+      "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==",
+      "dev": true
+    },
+    "domhandler": {
+      "version": "2.4.2",
+      "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.2.tgz",
+      "integrity": "sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==",
+      "dev": true,
+      "requires": {
+        "domelementtype": "1"
+      }
+    },
+    "domutils": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz",
+      "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==",
+      "dev": true,
+      "requires": {
+        "dom-serializer": "0",
+        "domelementtype": "1"
+      }
+    },
+    "dot-prop": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz",
+      "integrity": "sha512-tUMXrxlExSW6U2EXiiKGSBVdYgtV8qlHL+C10TsW4PURY/ic+eaysnSkwB4kA/mBlCyy/IKDJ+Lc3wbWeaXtuQ==",
+      "dev": true,
+      "requires": {
+        "is-obj": "^1.0.0"
+      }
+    },
+    "draftlog": {
+      "version": "1.0.12",
+      "resolved": "https://registry.npmjs.org/draftlog/-/draftlog-1.0.12.tgz",
+      "integrity": "sha1-fbajxbYhBrsy3Uo11nvMy2x9naA=",
+      "dev": true
+    },
+    "duplexify": {
+      "version": "3.7.1",
+      "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz",
+      "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "ecc-jsbn": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
+      "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.1.0"
+      }
+    },
+    "ee-first": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
+      "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=",
+      "dev": true
+    },
+    "electron-to-chromium": {
+      "version": "1.3.226",
+      "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.226.tgz",
+      "integrity": "sha512-Qnj+JyUodfuzzPbs66CxO5oz1/bOrIhXh/4qh24GMOYzjuUt0sq7mFlhq78dP68CR38NkZ6KOAfhGP6kElU65A==",
+      "dev": true
+    },
+    "element-ui": {
+      "version": "2.13.0",
+      "resolved": "https://registry.npmjs.org/element-ui/-/element-ui-2.13.0.tgz",
+      "integrity": "sha512-KYsHWsBXYbLELS8cdfvgJTOMSUby3UEjvsPV1V1VmgJ/DdkOAS4z3MiOrPxrT9w2Cc5lZ4eVSQiGhYFR5NVChw==",
+      "requires": {
+        "async-validator": "~1.8.1",
+        "babel-helper-vue-jsx-merge-props": "^2.0.0",
+        "deepmerge": "^1.2.0",
+        "normalize-wheel": "^1.0.1",
+        "resize-observer-polyfill": "^1.5.0",
+        "throttle-debounce": "^1.0.1"
+      },
+      "dependencies": {
+        "deepmerge": {
+          "version": "1.5.2",
+          "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz",
+          "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ=="
+        }
+      }
+    },
+    "elliptic": {
+      "version": "6.5.4",
+      "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz",
+      "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.11.9",
+        "brorand": "^1.1.0",
+        "hash.js": "^1.0.0",
+        "hmac-drbg": "^1.0.1",
+        "inherits": "^2.0.4",
+        "minimalistic-assert": "^1.0.1",
+        "minimalistic-crypto-utils": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "emoji-regex": {
+      "version": "7.0.3",
+      "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+      "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA=="
+    },
+    "emojis-list": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz",
+      "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=",
+      "dev": true
+    },
+    "encodeurl": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
+      "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "enhanced-resolve": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz",
+      "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "memory-fs": "^0.5.0",
+        "tapable": "^1.0.0"
+      },
+      "dependencies": {
+        "memory-fs": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz",
+          "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.3",
+            "readable-stream": "^2.0.1"
+          }
+        }
+      }
+    },
+    "entities": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/entities/-/entities-2.0.0.tgz",
+      "integrity": "sha512-D9f7V0JSRwIxlRI2mjMqufDrRDnx8p+eEOz7aUM9SuvF8gsBzra0/6tbjl1m8eQHrZlYj6PxqE00hZ1SAIKPLw==",
+      "dev": true
+    },
+    "errno": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.7.tgz",
+      "integrity": "sha512-MfrRBDWzIWifgq6tJj60gkAwtLNb6sQPlcFrSOflcP1aFmmruKQ2wRnze/8V6kgyz7H3FF8Npzv78mZ7XLLflg==",
+      "dev": true,
+      "requires": {
+        "prr": "~1.0.1"
+      }
+    },
+    "error-ex": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
+      "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.2.1"
+      }
+    },
+    "es-abstract": {
+      "version": "1.13.0",
+      "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.13.0.tgz",
+      "integrity": "sha512-vDZfg/ykNxQVwup/8E1BZhVzFfBxs9NqMzGcvIJrqg5k2/5Za2bWo40dK2J1pgLngZ7c+Shh8lwYtLGyrwPutg==",
+      "requires": {
+        "es-to-primitive": "^1.2.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "is-callable": "^1.1.4",
+        "is-regex": "^1.0.4",
+        "object-keys": "^1.0.12"
+      }
+    },
+    "es-to-primitive": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.0.tgz",
+      "integrity": "sha512-qZryBOJjV//LaxLTV6UC//WewneB3LcXOL9NP++ozKVXsIIIpm/2c13UDiD9Jp2eThsecw9m3jPqDwTyobcdbg==",
+      "requires": {
+        "is-callable": "^1.1.4",
+        "is-date-object": "^1.0.1",
+        "is-symbol": "^1.0.2"
+      }
+    },
+    "es5-shim": {
+      "version": "4.5.13",
+      "resolved": "https://registry.npmjs.org/es5-shim/-/es5-shim-4.5.13.tgz",
+      "integrity": "sha512-xi6hh6gsvDE0MaW4Vp1lgNEBpVcCXRWfPXj5egDvtgLz4L9MEvNwYEMdJH+JJinWkwa8c3c3o5HduV7dB/e1Hw=="
+    },
+    "escape-html": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
+      "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=",
+      "dev": true
+    },
+    "escape-string-regexp": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+      "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+      "dev": true
+    },
+    "escodegen": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.12.0.tgz",
+      "integrity": "sha512-TuA+EhsanGcme5T3R0L80u4t8CpbXQjegRmf7+FPTJrtCTErXFeelblRgHQa1FofEzqYYJmJ/OqjTwREp9qgmg==",
+      "dev": true,
+      "requires": {
+        "esprima": "^3.1.3",
+        "estraverse": "^4.2.0",
+        "esutils": "^2.0.2",
+        "optionator": "^0.8.1",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "esprima": {
+          "version": "3.1.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-3.1.3.tgz",
+          "integrity": "sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM=",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "eslint-scope": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz",
+      "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==",
+      "dev": true,
+      "requires": {
+        "esrecurse": "^4.1.0",
+        "estraverse": "^4.1.1"
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "esprima-extract-comments": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/esprima-extract-comments/-/esprima-extract-comments-0.2.1.tgz",
+      "integrity": "sha1-kBjY3zf/2V3WFQFajF8Ede10NCM=",
+      "dev": true,
+      "requires": {
+        "esprima": "^2.7.1"
+      },
+      "dependencies": {
+        "esprima": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+          "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+          "dev": true
+        }
+      }
+    },
+    "esrecurse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+      "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+      "dev": true,
+      "requires": {
+        "estraverse": "^5.2.0"
+      },
+      "dependencies": {
+        "estraverse": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz",
+          "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==",
+          "dev": true
+        }
+      }
+    },
+    "estraverse": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz",
+      "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==",
+      "dev": true
+    },
+    "esutils": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+      "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+      "dev": true
+    },
+    "etag": {
+      "version": "1.8.1",
+      "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
+      "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=",
+      "dev": true
+    },
+    "eventemitter3": {
+      "version": "4.0.7",
+      "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz",
+      "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==",
+      "dev": true
+    },
+    "events": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz",
+      "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==",
+      "dev": true
+    },
+    "eventsource": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.0.tgz",
+      "integrity": "sha512-VSJjT5oCNrFvCS6igjzPAt5hBzQ2qPBFIbJ03zLI9SE0mxwZpMw6BfJrbFHm1a141AavMEB8JHmBhWAd66PfCg==",
+      "dev": true,
+      "requires": {
+        "original": "^1.0.0"
+      }
+    },
+    "evp_bytestokey": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz",
+      "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==",
+      "dev": true,
+      "requires": {
+        "md5.js": "^1.3.4",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "execa": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz",
+      "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==",
+      "requires": {
+        "cross-spawn": "^6.0.0",
+        "get-stream": "^4.0.0",
+        "is-stream": "^1.1.0",
+        "npm-run-path": "^2.0.0",
+        "p-finally": "^1.0.0",
+        "signal-exit": "^3.0.0",
+        "strip-eof": "^1.0.0"
+      }
+    },
+    "exif-js": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/exif-js/-/exif-js-2.3.0.tgz",
+      "integrity": "sha1-nRCBm/Vx+HOBPnZAJBJVq5zhqBQ="
+    },
+    "expand-brackets": {
+      "version": "2.1.4",
+      "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz",
+      "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=",
+      "dev": true,
+      "requires": {
+        "debug": "^2.3.3",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "posix-character-classes": "^0.1.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "expand-tilde": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz",
+      "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=",
+      "dev": true,
+      "requires": {
+        "homedir-polyfill": "^1.0.1"
+      }
+    },
+    "express": {
+      "version": "4.17.1",
+      "resolved": "https://registry.npmjs.org/express/-/express-4.17.1.tgz",
+      "integrity": "sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g==",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.7",
+        "array-flatten": "1.1.1",
+        "body-parser": "1.19.0",
+        "content-disposition": "0.5.3",
+        "content-type": "~1.0.4",
+        "cookie": "0.4.0",
+        "cookie-signature": "1.0.6",
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "finalhandler": "~1.1.2",
+        "fresh": "0.5.2",
+        "merge-descriptors": "1.0.1",
+        "methods": "~1.1.2",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "path-to-regexp": "0.1.7",
+        "proxy-addr": "~2.0.5",
+        "qs": "6.7.0",
+        "range-parser": "~1.2.1",
+        "safe-buffer": "5.1.2",
+        "send": "0.17.1",
+        "serve-static": "1.14.1",
+        "setprototypeof": "1.1.1",
+        "statuses": "~1.5.0",
+        "type-is": "~1.6.18",
+        "utils-merge": "1.0.1",
+        "vary": "~1.1.2"
+      },
+      "dependencies": {
+        "array-flatten": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz",
+          "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=",
+          "dev": true
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "qs": {
+          "version": "6.7.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz",
+          "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==",
+          "dev": true
+        }
+      }
+    },
+    "extend": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
+      "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
+      "dev": true,
+      "optional": true
+    },
+    "extend-shallow": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz",
+      "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=",
+      "dev": true,
+      "requires": {
+        "assign-symbols": "^1.0.0",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "extglob": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz",
+      "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==",
+      "dev": true,
+      "requires": {
+        "array-unique": "^0.3.2",
+        "define-property": "^1.0.0",
+        "expand-brackets": "^2.1.4",
+        "extend-shallow": "^2.0.1",
+        "fragment-cache": "^0.2.1",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "extract-comments": {
+      "version": "0.10.1",
+      "resolved": "https://registry.npmjs.org/extract-comments/-/extract-comments-0.10.1.tgz",
+      "integrity": "sha1-i2AxgIovX94c1nv4MXuRggQwRAg=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "esprima-extract-comments": "^0.2.1",
+        "extend-shallow": "^2.0.1",
+        "parse-code-context": "^0.2.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "extsprintf": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
+      "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
+      "dev": true,
+      "optional": true
+    },
+    "fast-deep-equal": {
+      "version": "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
+    },
+    "fast-json-stable-stringify": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz",
+      "integrity": "sha1-1RQsDK7msRifh9OnYREGT4bIu/I=",
+      "dev": true
+    },
+    "fast-levenshtein": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+      "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=",
+      "dev": true
+    },
+    "fastclick": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/fastclick/-/fastclick-1.0.6.tgz",
+      "integrity": "sha1-FhYlsnsaWAZAWTa9qaLBkm0Gvmo="
+    },
+    "faye-websocket": {
+      "version": "0.11.3",
+      "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz",
+      "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==",
+      "dev": true,
+      "requires": {
+        "websocket-driver": ">=0.5.1"
+      }
+    },
+    "fecha": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/fecha/-/fecha-2.3.3.tgz",
+      "integrity": "sha512-lUGBnIamTAwk4znq5BcqsDaxSmZ9nDVJaij6NvRt/Tg4R69gERA+otPKbS86ROw9nxVMw2/mp1fnaiWqbs6Sdg=="
+    },
+    "figgy-pudding": {
+      "version": "3.5.1",
+      "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz",
+      "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==",
+      "dev": true
+    },
+    "file-loader": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-3.0.1.tgz",
+      "integrity": "sha512-4sNIOXgtH/9WZq4NvlfU3Opn5ynUsqBwSLyM+I7UOwdGigTBYfVVQEwe/msZNX/j4pCJTIM14Fsw66Svo1oVrw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.0.2",
+        "schema-utils": "^1.0.0"
+      }
+    },
+    "file-uri-to-path": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/file-uri-to-path/download/file-uri-to-path-1.0.0.tgz",
+      "integrity": "sha1-VTp7hEb/b2hDWcRF8eN6BdrMM90=",
+      "dev": true,
+      "optional": true
+    },
+    "fill-range": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz",
+      "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1",
+        "to-regex-range": "^2.1.0"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "finalhandler": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz",
+      "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "on-finished": "~2.3.0",
+        "parseurl": "~1.3.3",
+        "statuses": "~1.5.0",
+        "unpipe": "~1.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        }
+      }
+    },
+    "find-cache-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz",
+      "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==",
+      "dev": true,
+      "requires": {
+        "commondir": "^1.0.1",
+        "make-dir": "^2.0.0",
+        "pkg-dir": "^3.0.0"
+      }
+    },
+    "find-up": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+      "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+      "requires": {
+        "locate-path": "^3.0.0"
+      }
+    },
+    "findup-sync": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-3.0.0.tgz",
+      "integrity": "sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg==",
+      "dev": true,
+      "requires": {
+        "detect-file": "^1.0.0",
+        "is-glob": "^4.0.0",
+        "micromatch": "^3.0.4",
+        "resolve-dir": "^1.0.1"
+      }
+    },
+    "flatten": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.2.tgz",
+      "integrity": "sha1-2uRqnXj74lKSJYzB54CkHZXAN4I=",
+      "dev": true
+    },
+    "flush-write-stream": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz",
+      "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.3.6"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.5.10",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
+      "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
+      "requires": {
+        "debug": "=3.1.0"
+      }
+    },
+    "for-each": {
+      "version": "0.3.3",
+      "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz",
+      "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==",
+      "requires": {
+        "is-callable": "^1.1.3"
+      }
+    },
+    "for-in": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz",
+      "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=",
+      "dev": true
+    },
+    "forever-agent": {
+      "version": "0.6.1",
+      "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
+      "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
+      "dev": true,
+      "optional": true
+    },
+    "form-data": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
+      "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.6",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "forwarded": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz",
+      "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=",
+      "dev": true
+    },
+    "fragment-cache": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz",
+      "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=",
+      "dev": true,
+      "requires": {
+        "map-cache": "^0.2.2"
+      }
+    },
+    "fresh": {
+      "version": "0.5.2",
+      "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
+      "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=",
+      "dev": true
+    },
+    "from2": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz",
+      "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.0.0"
+      }
+    },
+    "fs-write-stream-atomic": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz",
+      "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=",
+      "dev": true,
+      "requires": {
+        "graceful-fs": "^4.1.2",
+        "iferr": "^0.1.5",
+        "imurmurhash": "^0.1.4",
+        "readable-stream": "1 || 2"
+      }
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "fsevents": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-2.3.2.tgz?cache=0&sync_timestamp=1612536477949&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-2.3.2.tgz",
+      "integrity": "sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=",
+      "dev": true,
+      "optional": true
+    },
+    "function-bind": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
+      "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A=="
+    },
+    "get-caller-file": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+      "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg=="
+    },
+    "get-intrinsic": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz",
+      "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==",
+      "dev": true,
+      "requires": {
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3",
+        "has-symbols": "^1.0.1"
+      },
+      "dependencies": {
+        "has-symbols": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz",
+          "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==",
+          "dev": true
+        }
+      }
+    },
+    "get-stream": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
+      "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "get-value": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz",
+      "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=",
+      "dev": true
+    },
+    "getpass": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
+      "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0"
+      }
+    },
+    "glob": {
+      "version": "7.1.4",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.4.tgz",
+      "integrity": "sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.0.4",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "glob-parent": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz",
+      "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=",
+      "dev": true,
+      "requires": {
+        "is-glob": "^3.1.0",
+        "path-dirname": "^1.0.0"
+      },
+      "dependencies": {
+        "is-glob": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz",
+          "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=",
+          "dev": true,
+          "requires": {
+            "is-extglob": "^2.1.0"
+          }
+        }
+      }
+    },
+    "global": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/global/-/global-4.3.2.tgz",
+      "integrity": "sha1-52mJJopsdMOJCLEwWxD8DjlOnQ8=",
+      "requires": {
+        "min-document": "^2.19.0",
+        "process": "~0.5.1"
+      },
+      "dependencies": {
+        "process": {
+          "version": "0.5.2",
+          "resolved": "https://registry.npmjs.org/process/-/process-0.5.2.tgz",
+          "integrity": "sha1-FjjYqONML0QKkduVq5rrZ3/Bhc8="
+        }
+      }
+    },
+    "global-modules": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-2.0.0.tgz",
+      "integrity": "sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A==",
+      "dev": true,
+      "requires": {
+        "global-prefix": "^3.0.0"
+      },
+      "dependencies": {
+        "global-prefix": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-3.0.0.tgz",
+          "integrity": "sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg==",
+          "dev": true,
+          "requires": {
+            "ini": "^1.3.5",
+            "kind-of": "^6.0.2",
+            "which": "^1.3.1"
+          }
+        }
+      }
+    },
+    "global-prefix": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz",
+      "integrity": "sha1-2/dDxsFJklk8ZVVoy2btMsASLr4=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.2",
+        "homedir-polyfill": "^1.0.1",
+        "ini": "^1.3.4",
+        "is-windows": "^1.0.1",
+        "which": "^1.2.14"
+      }
+    },
+    "globals": {
+      "version": "11.12.0",
+      "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz",
+      "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==",
+      "dev": true
+    },
+    "globby": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/globby/-/globby-7.1.1.tgz",
+      "integrity": "sha1-+yzP+UAfhgCUXfral0QMypcrhoA=",
+      "dev": true,
+      "requires": {
+        "array-union": "^1.0.1",
+        "dir-glob": "^2.0.0",
+        "glob": "^7.1.2",
+        "ignore": "^3.3.5",
+        "pify": "^3.0.0",
+        "slash": "^1.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "graceful-fs": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.2.tgz",
+      "integrity": "sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q==",
+      "dev": true
+    },
+    "hammerjs": {
+      "version": "2.0.8",
+      "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz",
+      "integrity": "sha1-BO93hiz/K7edMPdpIJWTAiK/YPE="
+    },
+    "handle-thing": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz",
+      "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==",
+      "dev": true
+    },
+    "har-schema": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
+      "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
+      "dev": true,
+      "optional": true
+    },
+    "har-validator": {
+      "version": "5.1.3",
+      "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.3.tgz",
+      "integrity": "sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "ajv": "^6.5.5",
+        "har-schema": "^2.0.0"
+      }
+    },
+    "has": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
+      "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+      "requires": {
+        "function-bind": "^1.1.1"
+      }
+    },
+    "has-ansi": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz",
+      "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "has-flag": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+      "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+      "dev": true
+    },
+    "has-symbols": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz",
+      "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q="
+    },
+    "has-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz",
+      "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=",
+      "dev": true,
+      "requires": {
+        "get-value": "^2.0.6",
+        "has-values": "^1.0.0",
+        "isobject": "^3.0.0"
+      }
+    },
+    "has-values": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz",
+      "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "kind-of": "^4.0.0"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz",
+          "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "hash-base": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz",
+      "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.6.0",
+        "safe-buffer": "^5.2.0"
+      },
+      "dependencies": {
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        },
+        "safe-buffer": {
+          "version": "5.2.1",
+          "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+          "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+          "dev": true
+        }
+      }
+    },
+    "hash-sum": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz",
+      "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=",
+      "dev": true
+    },
+    "hash.js": {
+      "version": "1.1.7",
+      "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz",
+      "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "minimalistic-assert": "^1.0.1"
+      }
+    },
+    "hawk": {
+      "version": "3.1.3",
+      "resolved": "https://registry.npmjs.org/hawk/-/hawk-3.1.3.tgz",
+      "integrity": "sha1-B4REvXwWQLD+VA0sm3PVlnjo4cQ=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "boom": "2.x.x",
+        "cryptiles": "2.x.x",
+        "hoek": "2.x.x",
+        "sntp": "1.x.x"
+      }
+    },
+    "he": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz",
+      "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==",
+      "dev": true
+    },
+    "hex-color-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz",
+      "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==",
+      "dev": true
+    },
+    "hmac-drbg": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz",
+      "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=",
+      "dev": true,
+      "requires": {
+        "hash.js": "^1.0.3",
+        "minimalistic-assert": "^1.0.0",
+        "minimalistic-crypto-utils": "^1.0.1"
+      }
+    },
+    "hoek": {
+      "version": "2.16.3",
+      "resolved": "https://registry.npmjs.org/hoek/-/hoek-2.16.3.tgz",
+      "integrity": "sha1-ILt0A9POo5jpHcRxCo/xuCdKJe0=",
+      "dev": true,
+      "optional": true
+    },
+    "homedir-polyfill": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz",
+      "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==",
+      "dev": true,
+      "requires": {
+        "parse-passwd": "^1.0.0"
+      }
+    },
+    "hpack.js": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npm.taobao.org/hpack.js/download/hpack.js-2.1.6.tgz",
+      "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "obuf": "^1.0.0",
+        "readable-stream": "^2.0.1",
+        "wbuf": "^1.1.0"
+      }
+    },
+    "hsl-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz",
+      "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=",
+      "dev": true
+    },
+    "hsla-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz",
+      "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=",
+      "dev": true
+    },
+    "html-comment-regex": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz",
+      "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==",
+      "dev": true
+    },
+    "html-entities": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz",
+      "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==",
+      "dev": true
+    },
+    "html-minifier": {
+      "version": "3.5.21",
+      "resolved": "https://registry.npmjs.org/html-minifier/-/html-minifier-3.5.21.tgz",
+      "integrity": "sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==",
+      "dev": true,
+      "requires": {
+        "camel-case": "3.0.x",
+        "clean-css": "4.2.x",
+        "commander": "2.17.x",
+        "he": "1.2.x",
+        "param-case": "2.1.x",
+        "relateurl": "0.2.x",
+        "uglify-js": "3.4.x"
+      }
+    },
+    "html-tags": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/html-tags/-/html-tags-2.0.0.tgz",
+      "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=",
+      "dev": true
+    },
+    "html-webpack-plugin": {
+      "version": "3.2.0",
+      "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-3.2.0.tgz",
+      "integrity": "sha1-sBq71yOsqqeze2r0SS69oD2d03s=",
+      "dev": true,
+      "requires": {
+        "html-minifier": "^3.2.3",
+        "loader-utils": "^0.2.16",
+        "lodash": "^4.17.3",
+        "pretty-error": "^2.0.2",
+        "tapable": "^1.0.0",
+        "toposort": "^1.0.0",
+        "util.promisify": "1.0.0"
+      },
+      "dependencies": {
+        "big.js": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+          "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+          "dev": true
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        },
+        "loader-utils": {
+          "version": "0.2.17",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+          "dev": true,
+          "requires": {
+            "big.js": "^3.1.3",
+            "emojis-list": "^2.0.0",
+            "json5": "^0.5.0",
+            "object-assign": "^4.0.1"
+          }
+        }
+      }
+    },
+    "html2canvas": {
+      "version": "1.0.0-rc.3",
+      "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.0.0-rc.3.tgz",
+      "integrity": "sha512-nWRk34IO3QopcDYpiPAbRW6VoI10H7uxEhcSFjox0JB6wZOMd6Mak+NqHPLljSFFEOvBjPafyRgcHnuWcFpWvg==",
+      "requires": {
+        "css-line-break": "1.1.1"
+      }
+    },
+    "htmlparser2": {
+      "version": "3.10.1",
+      "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.10.1.tgz",
+      "integrity": "sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==",
+      "dev": true,
+      "requires": {
+        "domelementtype": "^1.3.1",
+        "domhandler": "^2.3.0",
+        "domutils": "^1.5.1",
+        "entities": "^1.1.1",
+        "inherits": "^2.0.1",
+        "readable-stream": "^3.1.1"
+      },
+      "dependencies": {
+        "entities": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz",
+          "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.4.0.tgz",
+          "integrity": "sha512-jItXPLmrSR8jmTRmRWJXCnGJsfy85mB3Wd/uINMXA65yrnFo0cPClFIUWzo2najVNSl+mx7/4W8ttlLWJe99pQ==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "http-deceiver": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npm.taobao.org/http-deceiver/download/http-deceiver-1.2.7.tgz",
+      "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=",
+      "dev": true
+    },
+    "http-errors": {
+      "version": "1.7.2",
+      "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz",
+      "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==",
+      "dev": true,
+      "requires": {
+        "depd": "~1.1.2",
+        "inherits": "2.0.3",
+        "setprototypeof": "1.1.1",
+        "statuses": ">= 1.5.0 < 2",
+        "toidentifier": "1.0.0"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "http-parser-js": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.3.tgz",
+      "integrity": "sha512-t7hjvef/5HEK7RWTdUzVUhl8zkEu+LlaE0IYzdMuvbSDipxBRpOn4Uhw8ZyECEa808iVT8XCjzo6xmYt4CiLZg==",
+      "dev": true
+    },
+    "http-proxy": {
+      "version": "1.18.1",
+      "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz",
+      "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==",
+      "dev": true,
+      "requires": {
+        "eventemitter3": "^4.0.0",
+        "follow-redirects": "^1.0.0",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "http-proxy-middleware": {
+      "version": "0.19.1",
+      "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz",
+      "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==",
+      "dev": true,
+      "requires": {
+        "http-proxy": "^1.17.0",
+        "is-glob": "^4.0.0",
+        "lodash": "^4.17.11",
+        "micromatch": "^3.1.10"
+      }
+    },
+    "http-signature": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
+      "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "jsprim": "^1.2.2",
+        "sshpk": "^1.7.0"
+      }
+    },
+    "https-browserify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz",
+      "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=",
+      "dev": true
+    },
+    "iconv-lite": {
+      "version": "0.4.24",
+      "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
+      "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
+      "dev": true,
+      "requires": {
+        "safer-buffer": ">= 2.1.2 < 3"
+      }
+    },
+    "icss-replace-symbols": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz",
+      "integrity": "sha1-Bupvg2ead0njhs/h/oEq5dsiPe0=",
+      "dev": true
+    },
+    "icss-utils": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz",
+      "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.14"
+      }
+    },
+    "ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true
+    },
+    "iferr": {
+      "version": "0.1.5",
+      "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz",
+      "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=",
+      "dev": true
+    },
+    "ignore": {
+      "version": "3.3.10",
+      "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz",
+      "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==",
+      "dev": true
+    },
+    "image-size": {
+      "version": "0.5.5",
+      "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz",
+      "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=",
+      "dev": true,
+      "optional": true
+    },
+    "import-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz",
+      "integrity": "sha1-qmzzbnInYShcs3HsZRn1PiQ1sKk=",
+      "dev": true,
+      "requires": {
+        "import-from": "^2.1.0"
+      }
+    },
+    "import-fresh": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz",
+      "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=",
+      "dev": true,
+      "requires": {
+        "caller-path": "^2.0.0",
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-from": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz",
+      "integrity": "sha1-M1238qev/VOqpHHUuAId7ja387E=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "import-local": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz",
+      "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==",
+      "dev": true,
+      "requires": {
+        "pkg-dir": "^3.0.0",
+        "resolve-cwd": "^2.0.0"
+      }
+    },
+    "imurmurhash": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+      "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=",
+      "dev": true
+    },
+    "indexes-of": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz",
+      "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=",
+      "dev": true
+    },
+    "individual": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/individual/-/individual-2.0.0.tgz",
+      "integrity": "sha1-gzsJfa0jKU52EXqY+zjg2a1hu5c="
+    },
+    "infer-owner": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz",
+      "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true
+    },
+    "inline-manifest-webpack-plugin": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/inline-manifest-webpack-plugin/-/inline-manifest-webpack-plugin-3.0.1.tgz",
+      "integrity": "sha1-yiFRBjEVKY4v2UtmmrdsfdY+RK0=",
+      "dev": true,
+      "requires": {
+        "source-map-url": "0.4.0"
+      }
+    },
+    "internal-ip": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz",
+      "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==",
+      "dev": true,
+      "requires": {
+        "default-gateway": "^4.2.0",
+        "ipaddr.js": "^1.9.0"
+      }
+    },
+    "interpret": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz",
+      "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==",
+      "dev": true
+    },
+    "invariant": {
+      "version": "2.2.4",
+      "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
+      "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==",
+      "dev": true,
+      "requires": {
+        "loose-envify": "^1.0.0"
+      }
+    },
+    "invert-kv": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz",
+      "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA=="
+    },
+    "ip": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npm.taobao.org/ip/download/ip-1.1.5.tgz",
+      "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=",
+      "dev": true
+    },
+    "ip-regex": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz",
+      "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=",
+      "dev": true
+    },
+    "ipaddr.js": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
+      "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==",
+      "dev": true
+    },
+    "is-absolute-url": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz",
+      "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=",
+      "dev": true
+    },
+    "is-accessor-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz",
+      "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-arguments": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz",
+      "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.0"
+      }
+    },
+    "is-arrayish": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+      "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
+      "dev": true
+    },
+    "is-binary-path": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+      "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "binary-extensions": "^2.0.0"
+      }
+    },
+    "is-buffer": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz",
+      "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw=="
+    },
+    "is-callable": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.4.tgz",
+      "integrity": "sha512-r5p9sxJjYnArLjObpjA4xu5EKI3CuKHkJXMhT7kwbpUyIFD1n5PMAsoPvWnvtZiNz7LjkYDRZhd7FlI0eMijEA=="
+    },
+    "is-color-stop": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz",
+      "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=",
+      "dev": true,
+      "requires": {
+        "css-color-names": "^0.0.4",
+        "hex-color-regex": "^1.1.0",
+        "hsl-regex": "^1.0.0",
+        "hsla-regex": "^1.0.0",
+        "rgb-regex": "^1.0.1",
+        "rgba-regex": "^1.0.0"
+      }
+    },
+    "is-data-descriptor": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz",
+      "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-date-object": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz",
+      "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY="
+    },
+    "is-descriptor": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz",
+      "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==",
+      "dev": true,
+      "requires": {
+        "is-accessor-descriptor": "^0.1.6",
+        "is-data-descriptor": "^0.1.4",
+        "kind-of": "^5.0.0"
+      },
+      "dependencies": {
+        "kind-of": {
+          "version": "5.1.0",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz",
+          "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==",
+          "dev": true
+        }
+      }
+    },
+    "is-directory": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz",
+      "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=",
+      "dev": true
+    },
+    "is-extendable": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz",
+      "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=",
+      "dev": true
+    },
+    "is-extglob": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+      "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+      "dev": true
+    },
+    "is-fullwidth-code-point": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+      "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8="
+    },
+    "is-function": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-function/-/is-function-1.0.1.tgz",
+      "integrity": "sha1-Es+5i2W1fdPRk6MSH19uL0N2ArU="
+    },
+    "is-glob": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
+      "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+      "dev": true,
+      "requires": {
+        "is-extglob": "^2.1.1"
+      }
+    },
+    "is-number": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz",
+      "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "is-obj": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz",
+      "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=",
+      "dev": true
+    },
+    "is-path-cwd": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz",
+      "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==",
+      "dev": true
+    },
+    "is-path-in-cwd": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz",
+      "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==",
+      "dev": true,
+      "requires": {
+        "is-path-inside": "^2.1.0"
+      }
+    },
+    "is-path-inside": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz",
+      "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==",
+      "dev": true,
+      "requires": {
+        "path-is-inside": "^1.0.2"
+      }
+    },
+    "is-plain-obj": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz",
+      "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=",
+      "dev": true
+    },
+    "is-plain-object": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz",
+      "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.1.0.tgz",
+      "integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
+      "dev": true
+    },
+    "is-regex": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.4.tgz",
+      "integrity": "sha1-VRdIm1RwkbCTDglWVM7SXul+lJE=",
+      "requires": {
+        "has": "^1.0.1"
+      }
+    },
+    "is-regexp": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz",
+      "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=",
+      "dev": true
+    },
+    "is-resolvable": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz",
+      "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==",
+      "dev": true
+    },
+    "is-stream": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz",
+      "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ="
+    },
+    "is-svg": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-3.0.0.tgz",
+      "integrity": "sha512-gi4iHK53LR2ujhLVVj+37Ykh9GLqYHX6JOVXbLAucaG/Cqw9xwdFOjDM2qeifLs1sF1npXXFvDu0r5HNgCMrzQ==",
+      "dev": true,
+      "requires": {
+        "html-comment-regex": "^1.1.0"
+      }
+    },
+    "is-symbol": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz",
+      "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==",
+      "requires": {
+        "has-symbols": "^1.0.0"
+      }
+    },
+    "is-typedarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
+      "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
+      "dev": true,
+      "optional": true
+    },
+    "is-windows": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz",
+      "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz",
+      "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=",
+      "dev": true
+    },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=",
+      "dev": true
+    },
+    "isexe": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+      "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA="
+    },
+    "isobject": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz",
+      "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=",
+      "dev": true
+    },
+    "isstream": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
+      "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
+      "dev": true,
+      "optional": true
+    },
+    "js-base64": {
+      "version": "2.5.1",
+      "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz",
+      "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==",
+      "dev": true
+    },
+    "js-levenshtein": {
+      "version": "1.1.6",
+      "resolved": "https://registry.npmjs.org/js-levenshtein/-/js-levenshtein-1.1.6.tgz",
+      "integrity": "sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g==",
+      "dev": true
+    },
+    "js-tokens": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+      "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+      "dev": true
+    },
+    "js-yaml": {
+      "version": "3.13.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz",
+      "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==",
+      "dev": true,
+      "requires": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      }
+    },
+    "jsbn": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
+      "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
+      "dev": true,
+      "optional": true
+    },
+    "jsesc": {
+      "version": "2.5.2",
+      "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz",
+      "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==",
+      "dev": true
+    },
+    "json-parse-better-errors": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+      "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+      "dev": true
+    },
+    "json-schema": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
+      "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
+      "dev": true,
+      "optional": true
+    },
+    "json-schema-traverse": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+      "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+      "dev": true
+    },
+    "json-stable-stringify": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz",
+      "integrity": "sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "jsonify": "~0.0.0"
+      }
+    },
+    "json-stringify-safe": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
+      "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
+      "dev": true,
+      "optional": true
+    },
+    "json3": {
+      "version": "3.3.3",
+      "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz",
+      "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==",
+      "dev": true
+    },
+    "json5": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/json5/-/json5-2.1.0.tgz",
+      "integrity": "sha512-8Mh9h6xViijj36g7Dxi+Y4S6hNGV96vcJZr/SrlHh1LR/pEn/8j/+qIBbs44YKl69Lrfctp4QD+AdWLTMqEZAQ==",
+      "dev": true,
+      "requires": {
+        "minimist": "^1.2.0"
+      }
+    },
+    "jsonify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/jsonify/-/jsonify-0.0.0.tgz",
+      "integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
+      "dev": true,
+      "optional": true
+    },
+    "jsprim": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
+      "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "1.0.0",
+        "extsprintf": "1.3.0",
+        "json-schema": "0.2.3",
+        "verror": "1.10.0"
+      }
+    },
+    "killable": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz",
+      "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==",
+      "dev": true
+    },
+    "kind-of": {
+      "version": "6.0.3",
+      "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz",
+      "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==",
+      "dev": true
+    },
+    "last-call-webpack-plugin": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/last-call-webpack-plugin/-/last-call-webpack-plugin-3.0.0.tgz",
+      "integrity": "sha512-7KI2l2GIZa9p2spzPIVZBYyNKkN+e/SQPpnjlTiPhdbDW3F86tdKKELxKpzJ5sgU19wQWsACULZmpTPYHeWO5w==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.5",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "lcid": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz",
+      "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==",
+      "requires": {
+        "invert-kv": "^2.0.0"
+      }
+    },
+    "less": {
+      "version": "3.9.0",
+      "resolved": "https://registry.npmjs.org/less/-/less-3.9.0.tgz",
+      "integrity": "sha512-31CmtPEZraNUtuUREYjSqRkeETFdyEHSEPAGq4erDlUXtda7pzNmctdljdIagSb589d/qXGWiiP31R5JVf+v0w==",
+      "dev": true,
+      "requires": {
+        "clone": "^2.1.2",
+        "errno": "^0.1.1",
+        "graceful-fs": "^4.1.2",
+        "image-size": "~0.5.0",
+        "mime": "^1.4.1",
+        "mkdirp": "^0.5.0",
+        "promise": "^7.1.1",
+        "request": "^2.83.0",
+        "source-map": "~0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "less-loader": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-4.1.0.tgz",
+      "integrity": "sha512-KNTsgCE9tMOM70+ddxp9yyt9iHqgmSs0yTZc5XH5Wo+g80RWRIYNqE58QJKm/yMud5wZEvz50ugRDuzVIkyahg==",
+      "dev": true,
+      "requires": {
+        "clone": "^2.1.1",
+        "loader-utils": "^1.1.0",
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "levn": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz",
+      "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2"
+      }
+    },
+    "loader-runner": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz",
+      "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==",
+      "dev": true
+    },
+    "loader-utils": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz",
+      "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==",
+      "dev": true,
+      "requires": {
+        "big.js": "^5.2.2",
+        "emojis-list": "^2.0.0",
+        "json5": "^1.0.1"
+      },
+      "dependencies": {
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        }
+      }
+    },
+    "locate-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+      "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+      "requires": {
+        "p-locate": "^3.0.0",
+        "path-exists": "^3.0.0"
+      }
+    },
+    "lodash": {
+      "version": "4.17.15",
+      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.15.tgz",
+      "integrity": "sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A==",
+      "dev": true
+    },
+    "lodash.clonedeep": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz",
+      "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=",
+      "dev": true
+    },
+    "lodash.debounce": {
+      "version": "4.0.8",
+      "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+      "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168="
+    },
+    "lodash.differencewith": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.differencewith/-/lodash.differencewith-4.5.0.tgz",
+      "integrity": "sha1-uvr7yRi1UVTheRdqALsK76rIVLc=",
+      "dev": true
+    },
+    "lodash.isequal": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.isequal/-/lodash.isequal-4.5.0.tgz",
+      "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA=",
+      "dev": true
+    },
+    "lodash.isfunction": {
+      "version": "3.0.9",
+      "resolved": "https://registry.npmjs.org/lodash.isfunction/-/lodash.isfunction-3.0.9.tgz",
+      "integrity": "sha512-AirXNj15uRIMMPihnkInB4i3NHeb4iBtNg9WRWuK2o31S+ePwwNmDPaTL3o7dTJ+VXNZim7rFs4rxN4YU1oUJw==",
+      "dev": true
+    },
+    "lodash.isplainobject": {
+      "version": "4.0.6",
+      "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz",
+      "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=",
+      "dev": true
+    },
+    "lodash.kebabcase": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz",
+      "integrity": "sha1-hImxyw0p/4gZXM7KRI/21swpXDY=",
+      "dev": true
+    },
+    "lodash.memoize": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+      "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=",
+      "dev": true
+    },
+    "lodash.mergewith": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz",
+      "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==",
+      "dev": true
+    },
+    "lodash.throttle": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+      "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ="
+    },
+    "lodash.unionwith": {
+      "version": "4.6.0",
+      "resolved": "https://registry.npmjs.org/lodash.unionwith/-/lodash.unionwith-4.6.0.tgz",
+      "integrity": "sha1-dNFAtcqBRubGQ8NyT1FSU42awfA=",
+      "dev": true
+    },
+    "lodash.uniq": {
+      "version": "4.5.0",
+      "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz",
+      "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=",
+      "dev": true
+    },
+    "loglevel": {
+      "version": "1.7.1",
+      "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz",
+      "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==",
+      "dev": true
+    },
+    "loose-envify": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz",
+      "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==",
+      "dev": true,
+      "requires": {
+        "js-tokens": "^3.0.0 || ^4.0.0"
+      }
+    },
+    "lower-case": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-1.1.4.tgz",
+      "integrity": "sha1-miyr0bno4K6ZOkv31YdcOcQujqw=",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "5.1.1",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+      "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+      "dev": true,
+      "requires": {
+        "yallist": "^3.0.2"
+      }
+    },
+    "m3u8-parser": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/m3u8-parser/-/m3u8-parser-2.1.0.tgz",
+      "integrity": "sha1-yBcDKewc1RXQ1Yu4t2LamJbLA2g="
+    },
+    "make-dir": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz",
+      "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==",
+      "dev": true,
+      "requires": {
+        "pify": "^4.0.1",
+        "semver": "^5.6.0"
+      }
+    },
+    "map-age-cleaner": {
+      "version": "0.1.3",
+      "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz",
+      "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==",
+      "requires": {
+        "p-defer": "^1.0.0"
+      }
+    },
+    "map-cache": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz",
+      "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=",
+      "dev": true
+    },
+    "map-visit": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz",
+      "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=",
+      "dev": true,
+      "requires": {
+        "object-visit": "^1.0.0"
+      }
+    },
+    "math-expression-evaluator": {
+      "version": "1.2.17",
+      "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.2.17.tgz",
+      "integrity": "sha1-3oGf282E3M2PrlnGrreWFbnSZqw=",
+      "dev": true
+    },
+    "md5.js": {
+      "version": "1.3.5",
+      "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz",
+      "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      }
+    },
+    "mdn-data": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz",
+      "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==",
+      "dev": true
+    },
+    "media-typer": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
+      "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=",
+      "dev": true
+    },
+    "mem": {
+      "version": "4.3.0",
+      "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz",
+      "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==",
+      "requires": {
+        "map-age-cleaner": "^0.1.1",
+        "mimic-fn": "^2.0.0",
+        "p-is-promise": "^2.0.0"
+      }
+    },
+    "memory-fs": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz",
+      "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=",
+      "dev": true,
+      "requires": {
+        "errno": "^0.1.3",
+        "readable-stream": "^2.0.1"
+      }
+    },
+    "merge-descriptors": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
+      "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=",
+      "dev": true
+    },
+    "merge-source-map": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz",
+      "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==",
+      "dev": true,
+      "requires": {
+        "source-map": "^0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "methods": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
+      "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=",
+      "dev": true
+    },
+    "micromatch": {
+      "version": "3.1.10",
+      "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz",
+      "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "braces": "^2.3.1",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "extglob": "^2.0.4",
+        "fragment-cache": "^0.2.1",
+        "kind-of": "^6.0.2",
+        "nanomatch": "^1.2.9",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.2"
+      }
+    },
+    "miller-rabin": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz",
+      "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.0.0",
+        "brorand": "^1.0.1"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "mime": {
+      "version": "1.6.0",
+      "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz",
+      "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==",
+      "dev": true
+    },
+    "mime-db": {
+      "version": "1.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"
+      }
+    },
+    "mimic-fn": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+      "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg=="
+    },
+    "min-document": {
+      "version": "2.19.0",
+      "resolved": "https://registry.npmjs.org/min-document/-/min-document-2.19.0.tgz",
+      "integrity": "sha1-e9KC4/WELtKVu3SM3Z8f+iyCRoU=",
+      "requires": {
+        "dom-walk": "^0.1.0"
+      }
+    },
+    "mini-css-extract-plugin": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-0.5.0.tgz",
+      "integrity": "sha512-IuaLjruM0vMKhUUT51fQdQzBYTX49dLj8w68ALEAe2A4iYNpIC4eMac67mt3NzycvjOlf07/kYxJDc0RTl1Wqw==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "webpack-sources": "^1.1.0"
+      }
+    },
+    "minimalistic-assert": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz",
+      "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==",
+      "dev": true
+    },
+    "minimalistic-crypto-utils": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz",
+      "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.0.4",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
+      "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+      "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+      "dev": true
+    },
+    "mississippi": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz",
+      "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==",
+      "dev": true,
+      "requires": {
+        "concat-stream": "^1.5.0",
+        "duplexify": "^3.4.2",
+        "end-of-stream": "^1.1.0",
+        "flush-write-stream": "^1.0.0",
+        "from2": "^2.1.0",
+        "parallel-transform": "^1.1.0",
+        "pump": "^3.0.0",
+        "pumpify": "^1.3.3",
+        "stream-each": "^1.1.0",
+        "through2": "^2.0.0"
+      }
+    },
+    "mixin-deep": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz",
+      "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==",
+      "dev": true,
+      "requires": {
+        "for-in": "^1.0.2",
+        "is-extendable": "^1.0.1"
+      },
+      "dependencies": {
+        "is-extendable": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz",
+          "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==",
+          "dev": true,
+          "requires": {
+            "is-plain-object": "^2.0.4"
+          }
+        }
+      }
+    },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "dev": true,
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=",
+          "dev": true
+        }
+      }
+    },
+    "moment": {
+      "version": "2.29.1",
+      "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.1.tgz",
+      "integrity": "sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ=="
+    },
+    "move-concurrently": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz",
+      "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1",
+        "copy-concurrently": "^1.0.0",
+        "fs-write-stream-atomic": "^1.0.8",
+        "mkdirp": "^0.5.1",
+        "rimraf": "^2.5.4",
+        "run-queue": "^1.0.3"
+      }
+    },
+    "ms": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
+      "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
+    },
+    "multicast-dns": {
+      "version": "6.2.3",
+      "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz",
+      "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==",
+      "dev": true,
+      "requires": {
+        "dns-packet": "^1.3.1",
+        "thunky": "^1.0.2"
+      }
+    },
+    "multicast-dns-service-types": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npm.taobao.org/multicast-dns-service-types/download/multicast-dns-service-types-1.1.0.tgz",
+      "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=",
+      "dev": true
+    },
+    "mux.js": {
+      "version": "4.3.2",
+      "resolved": "https://registry.npmjs.org/mux.js/-/mux.js-4.3.2.tgz",
+      "integrity": "sha512-g0q6DPdvb3yYcoK7ElBGobdSSrhY/RjPt19U7uUc733aqvc5bCS/aCvL9z+448y+IoCZnYDwyZfQBBXMSmGOaQ=="
+    },
+    "nan": {
+      "version": "2.14.2",
+      "resolved": "https://registry.npm.taobao.org/nan/download/nan-2.14.2.tgz",
+      "integrity": "sha1-9TdkAGlRaPTMaUrJOT0MlYXu6hk=",
+      "dev": true,
+      "optional": true
+    },
+    "nanomatch": {
+      "version": "1.2.13",
+      "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz",
+      "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==",
+      "dev": true,
+      "requires": {
+        "arr-diff": "^4.0.0",
+        "array-unique": "^0.3.2",
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "fragment-cache": "^0.2.1",
+        "is-windows": "^1.0.2",
+        "kind-of": "^6.0.2",
+        "object.pick": "^1.3.0",
+        "regex-not": "^1.0.0",
+        "snapdragon": "^0.8.1",
+        "to-regex": "^3.0.1"
+      }
+    },
+    "negotiator": {
+      "version": "0.6.2",
+      "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
+      "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==",
+      "dev": true
+    },
+    "neo-async": {
+      "version": "2.6.2",
+      "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+      "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+      "dev": true
+    },
+    "nice-try": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+      "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ=="
+    },
+    "no-case": {
+      "version": "2.3.2",
+      "resolved": "https://registry.npmjs.org/no-case/-/no-case-2.3.2.tgz",
+      "integrity": "sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==",
+      "dev": true,
+      "requires": {
+        "lower-case": "^1.1.1"
+      }
+    },
+    "node-cli-config": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/node-cli-config/-/node-cli-config-0.0.1.tgz",
+      "integrity": "sha1-r3d02FQCprfLlsH5G7JP3VjXwLA=",
+      "dev": true
+    },
+    "node-forge": {
+      "version": "0.10.0",
+      "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz",
+      "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==",
+      "dev": true
+    },
+    "node-libs-browser": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz",
+      "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==",
+      "dev": true,
+      "requires": {
+        "assert": "^1.1.1",
+        "browserify-zlib": "^0.2.0",
+        "buffer": "^4.3.0",
+        "console-browserify": "^1.1.0",
+        "constants-browserify": "^1.0.0",
+        "crypto-browserify": "^3.11.0",
+        "domain-browser": "^1.1.1",
+        "events": "^3.0.0",
+        "https-browserify": "^1.0.0",
+        "os-browserify": "^0.3.0",
+        "path-browserify": "0.0.1",
+        "process": "^0.11.10",
+        "punycode": "^1.2.4",
+        "querystring-es3": "^0.2.0",
+        "readable-stream": "^2.3.3",
+        "stream-browserify": "^2.0.1",
+        "stream-http": "^2.7.2",
+        "string_decoder": "^1.0.0",
+        "timers-browserify": "^2.0.4",
+        "tty-browserify": "0.0.0",
+        "url": "^0.11.0",
+        "util": "^0.11.0",
+        "vm-browserify": "^1.0.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true
+        }
+      }
+    },
+    "node-releases": {
+      "version": "1.1.27",
+      "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.27.tgz",
+      "integrity": "sha512-9iXUqHKSGo6ph/tdXVbHFbhRVQln4ZDTIBJCzsa90HimnBYc5jw8RWYt4wBYFHehGyC3koIz5O4mb2fHrbPOuA==",
+      "dev": true,
+      "requires": {
+        "semver": "^5.3.0"
+      }
+    },
+    "nopt": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz",
+      "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=",
+      "dev": true,
+      "requires": {
+        "abbrev": "1"
+      }
+    },
+    "normalize-path": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+      "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+      "dev": true
+    },
+    "normalize-range": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",
+      "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=",
+      "dev": true
+    },
+    "normalize-url": {
+      "version": "3.3.0",
+      "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz",
+      "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==",
+      "dev": true
+    },
+    "normalize-wheel": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/normalize-wheel/-/normalize-wheel-1.0.1.tgz",
+      "integrity": "sha1-rsiGr/2wRQcNhWRH32Ls+GFG7EU="
+    },
+    "npm-run-path": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz",
+      "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=",
+      "requires": {
+        "path-key": "^2.0.0"
+      }
+    },
+    "nth-check": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz",
+      "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==",
+      "dev": true,
+      "requires": {
+        "boolbase": "~1.0.0"
+      }
+    },
+    "num2fraction": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz",
+      "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=",
+      "dev": true
+    },
+    "oauth-sign": {
+      "version": "0.9.0",
+      "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
+      "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
+      "dev": true,
+      "optional": true
+    },
+    "object-assign": {
+      "version": "4.1.1",
+      "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
+      "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
+    },
+    "object-copy": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz",
+      "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=",
+      "dev": true,
+      "requires": {
+        "copy-descriptor": "^0.1.0",
+        "define-property": "^0.2.5",
+        "kind-of": "^3.0.3"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "object-is": {
+      "version": "1.1.5",
+      "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz",
+      "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "object-keys": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+      "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA=="
+    },
+    "object-visit": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz",
+      "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.0"
+      }
+    },
+    "object.assign": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
+      "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "function-bind": "^1.1.1",
+        "has-symbols": "^1.0.0",
+        "object-keys": "^1.0.11"
+      }
+    },
+    "object.getownpropertydescriptors": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.0.3.tgz",
+      "integrity": "sha1-h1jIRvW0B62rDyNuCYbxSwUcqhY=",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "es-abstract": "^1.5.1"
+      }
+    },
+    "object.pick": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz",
+      "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=",
+      "dev": true,
+      "requires": {
+        "isobject": "^3.0.1"
+      }
+    },
+    "object.values": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.0.tgz",
+      "integrity": "sha512-8mf0nKLAoFX6VlNVdhGj31SVYpaNFtUnuoOXWyFEstsWRgU837AK+JYM0iAxwkSzGRbwn8cbFmgbyxj1j4VbXg==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.12.0",
+        "function-bind": "^1.1.1",
+        "has": "^1.0.3"
+      }
+    },
+    "obuf": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz",
+      "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==",
+      "dev": true
+    },
+    "on-finished": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
+      "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
+      "dev": true,
+      "requires": {
+        "ee-first": "1.1.1"
+      }
+    },
+    "on-headers": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz",
+      "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "opn": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz",
+      "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==",
+      "dev": true,
+      "requires": {
+        "is-wsl": "^1.1.0"
+      }
+    },
+    "optimize-css-assets-webpack-plugin": {
+      "version": "5.0.3",
+      "resolved": "https://registry.npmjs.org/optimize-css-assets-webpack-plugin/-/optimize-css-assets-webpack-plugin-5.0.3.tgz",
+      "integrity": "sha512-q9fbvCRS6EYtUKKSwI87qm2IxlyJK5b4dygW1rKUBT6mMDhdG5e5bZT63v6tnJR9F9FB/H5a0HTmtw+laUBxKA==",
+      "dev": true,
+      "requires": {
+        "cssnano": "^4.1.10",
+        "last-call-webpack-plugin": "^3.0.0"
+      }
+    },
+    "optionator": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
+      "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=",
+      "dev": true,
+      "requires": {
+        "deep-is": "~0.1.3",
+        "fast-levenshtein": "~2.0.4",
+        "levn": "~0.3.0",
+        "prelude-ls": "~1.1.2",
+        "type-check": "~0.3.2",
+        "wordwrap": "~1.0.0"
+      }
+    },
+    "original": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz",
+      "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==",
+      "dev": true,
+      "requires": {
+        "url-parse": "^1.4.3"
+      }
+    },
+    "os-browserify": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz",
+      "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=",
+      "dev": true
+    },
+    "os-locale": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz",
+      "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==",
+      "requires": {
+        "execa": "^1.0.0",
+        "lcid": "^2.0.0",
+        "mem": "^4.0.0"
+      }
+    },
+    "p-defer": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz",
+      "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww="
+    },
+    "p-finally": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz",
+      "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4="
+    },
+    "p-is-promise": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz",
+      "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg=="
+    },
+    "p-limit": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.0.tgz",
+      "integrity": "sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ==",
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+      "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+      "requires": {
+        "p-limit": "^2.0.0"
+      }
+    },
+    "p-map": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz",
+      "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==",
+      "dev": true
+    },
+    "p-retry": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz",
+      "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==",
+      "dev": true,
+      "requires": {
+        "retry": "^0.12.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ=="
+    },
+    "pako": {
+      "version": "1.0.11",
+      "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz",
+      "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==",
+      "dev": true
+    },
+    "parallel-transform": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.1.0.tgz",
+      "integrity": "sha1-1BDwZbBdojCB/NEPKIVMKb2jOwY=",
+      "dev": true,
+      "requires": {
+        "cyclist": "~0.2.2",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.1.5"
+      }
+    },
+    "param-case": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/param-case/-/param-case-2.1.1.tgz",
+      "integrity": "sha1-35T9jPZTHs915r75oIWPvHK+Ikc=",
+      "dev": true,
+      "requires": {
+        "no-case": "^2.2.0"
+      }
+    },
+    "parse-asn1": {
+      "version": "5.1.6",
+      "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz",
+      "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==",
+      "dev": true,
+      "requires": {
+        "asn1.js": "^5.2.0",
+        "browserify-aes": "^1.0.0",
+        "evp_bytestokey": "^1.0.0",
+        "pbkdf2": "^3.0.3",
+        "safe-buffer": "^5.1.1"
+      }
+    },
+    "parse-code-context": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/parse-code-context/-/parse-code-context-0.2.2.tgz",
+      "integrity": "sha1-FEuK+3IZSC1+iMHranZVlvOmrA0=",
+      "dev": true
+    },
+    "parse-headers": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.2.tgz",
+      "integrity": "sha512-/LypJhzFmyBIDYP9aDVgeyEb5sQfbfY5mnDq4hVhlQ69js87wXfmEI5V3xI6vvXasqebp0oCytYFLxsBVfCzSg==",
+      "requires": {
+        "for-each": "^0.3.3",
+        "string.prototype.trim": "^1.1.2"
+      }
+    },
+    "parse-json": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+      "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+      "dev": true,
+      "requires": {
+        "error-ex": "^1.3.1",
+        "json-parse-better-errors": "^1.0.1"
+      }
+    },
+    "parse-passwd": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz",
+      "integrity": "sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY=",
+      "dev": true
+    },
+    "parse5": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/parse5/-/parse5-3.0.3.tgz",
+      "integrity": "sha512-rgO9Zg5LLLkfJF9E6CCmXlSE4UVceloys8JrFqCcHloC3usd/kJCyPDwH2SOlzix2j3xaP9sUX3e8+kvkuleAA==",
+      "dev": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "parseurl": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz",
+      "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==",
+      "dev": true
+    },
+    "pascalcase": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz",
+      "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=",
+      "dev": true
+    },
+    "path-browserify": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz",
+      "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==",
+      "dev": true
+    },
+    "path-dirname": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz",
+      "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+      "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU="
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "path-is-inside": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npm.taobao.org/path-is-inside/download/path-is-inside-1.0.2.tgz",
+      "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=",
+      "dev": true
+    },
+    "path-key": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+      "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A="
+    },
+    "path-parse": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
+      "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
+      "dev": true
+    },
+    "path-to-regexp": {
+      "version": "0.1.7",
+      "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
+      "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=",
+      "dev": true
+    },
+    "path-type": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+      "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+      "dev": true,
+      "requires": {
+        "pify": "^3.0.0"
+      },
+      "dependencies": {
+        "pify": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+          "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+          "dev": true
+        }
+      }
+    },
+    "pbkdf2": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz",
+      "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==",
+      "dev": true,
+      "requires": {
+        "create-hash": "^1.1.2",
+        "create-hmac": "^1.1.4",
+        "ripemd160": "^2.0.1",
+        "safe-buffer": "^5.0.1",
+        "sha.js": "^2.4.8"
+      }
+    },
+    "performance-now": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
+      "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
+      "dev": true,
+      "optional": true
+    },
+    "picomatch": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz",
+      "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==",
+      "dev": true,
+      "optional": true
+    },
+    "pify": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz",
+      "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==",
+      "dev": true
+    },
+    "pinkie": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npm.taobao.org/pinkie/download/pinkie-2.0.4.tgz",
+      "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=",
+      "dev": true
+    },
+    "pinkie-promise": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npm.taobao.org/pinkie-promise/download/pinkie-promise-2.0.1.tgz",
+      "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
+      "dev": true,
+      "requires": {
+        "pinkie": "^2.0.0"
+      }
+    },
+    "pkcs7": {
+      "version": "0.2.3",
+      "resolved": "https://registry.npmjs.org/pkcs7/-/pkcs7-0.2.3.tgz",
+      "integrity": "sha1-ItYGZtAQZcXyRDkJjkpIMEUic74="
+    },
+    "pkg-dir": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz",
+      "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==",
+      "dev": true,
+      "requires": {
+        "find-up": "^3.0.0"
+      }
+    },
+    "pngjs": {
+      "version": "3.4.0",
+      "resolved": "https://registry.npmjs.org/pngjs/-/pngjs-3.4.0.tgz",
+      "integrity": "sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w=="
+    },
+    "portfinder": {
+      "version": "1.0.28",
+      "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz",
+      "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==",
+      "dev": true,
+      "requires": {
+        "async": "^2.6.2",
+        "debug": "^3.1.1",
+        "mkdirp": "^0.5.5"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+          "dev": true
+        },
+        "mkdirp": {
+          "version": "0.5.5",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        },
+        "ms": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+          "dev": true
+        }
+      }
+    },
+    "posix-character-classes": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz",
+      "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=",
+      "dev": true
+    },
+    "postcss": {
+      "version": "7.0.17",
+      "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.17.tgz",
+      "integrity": "sha512-546ZowA+KZ3OasvQZHsbuEpysvwTZNGJv9EfyCQdsIDltPSWHAeTQ5fQy/Npi2ZDtLI3zs7Ps/p6wThErhm9fQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "source-map": "^0.6.1",
+        "supports-color": "^6.1.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        }
+      }
+    },
+    "postcss-calc": {
+      "version": "7.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.1.tgz",
+      "integrity": "sha512-oXqx0m6tb4N3JGdmeMSc/i91KppbYsFZKdH0xMOqK8V1rJlzrKlTdokz8ozUXLVejydRN6u2IddxpcijRj2FqQ==",
+      "dev": true,
+      "requires": {
+        "css-unit-converter": "^1.1.1",
+        "postcss": "^7.0.5",
+        "postcss-selector-parser": "^5.0.0-rc.4",
+        "postcss-value-parser": "^3.3.1"
+      },
+      "dependencies": {
+        "cssesc": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-2.0.0.tgz",
+          "integrity": "sha512-MsCAG1z9lPdoO/IUMLSBWBSVxVtJ1395VGIQ+Fc2gNdkQ1hNDnQdw3YhA71WJCBW1vdwA0cAnk/DnW6bqoEUYg==",
+          "dev": true
+        },
+        "postcss-selector-parser": {
+          "version": "5.0.0",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-5.0.0.tgz",
+          "integrity": "sha512-w+zLE5Jhg6Liz8+rQOWEAwtwkyqpfnmsinXjXg6cY7YIONZZtgvE0v2O0uhQBs0peNomOJwWRKt6JBfTdTd3OQ==",
+          "dev": true,
+          "requires": {
+            "cssesc": "^2.0.0",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-colormin": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz",
+      "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "color": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-convert-values": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz",
+      "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-discard-comments": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz",
+      "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-duplicates": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz",
+      "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-empty": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz",
+      "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-overridden": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz",
+      "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-discard-unused": {
+      "version": "2.2.3",
+      "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz",
+      "integrity": "sha1-vOMLLMWR/8Y0Mitfs0ZLbZNPRDM=",
+      "dev": true,
+      "requires": {
+        "postcss": "^5.0.14",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-filter-plugins": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz",
+      "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^5.0.4"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-load-config": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-2.1.0.tgz",
+      "integrity": "sha512-4pV3JJVPLd5+RueiVVB+gFOAa7GWc25XQcMp86Zexzke69mKf6Nx9LRcQywdz7yZI9n1udOxmLuAwTBypypF8Q==",
+      "dev": true,
+      "requires": {
+        "cosmiconfig": "^5.0.0",
+        "import-cwd": "^2.0.0"
+      }
+    },
+    "postcss-loader": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-3.0.0.tgz",
+      "integrity": "sha512-cLWoDEY5OwHcAjDnkyRQzAXfs2jrKjXpO/HQFcc5b5u/r7aa471wdmChmwfnv7x2u840iat/wi0lQ5nbRgSkUA==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "postcss": "^7.0.0",
+        "postcss-load-config": "^2.0.0",
+        "schema-utils": "^1.0.0"
+      }
+    },
+    "postcss-merge-idents": {
+      "version": "2.1.7",
+      "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz",
+      "integrity": "sha1-TFUwMTwI4dWzu/PSu8dH4njuonA=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.1",
+        "postcss": "^5.0.10",
+        "postcss-value-parser": "^3.1.1"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-merge-longhand": {
+      "version": "4.0.11",
+      "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz",
+      "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==",
+      "dev": true,
+      "requires": {
+        "css-color-names": "0.0.4",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "stylehacks": "^4.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-merge-rules": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz",
+      "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "cssnano-util-same-parent": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0",
+        "vendors": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-message-helpers": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz",
+      "integrity": "sha1-pPL0+rbk/gAvCu0ABHjN9S+bpg4=",
+      "dev": true
+    },
+    "postcss-minify-font-values": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz",
+      "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-gradients": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz",
+      "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "is-color-stop": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-params": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz",
+      "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "browserslist": "^4.0.0",
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-minify-selectors": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz",
+      "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "postcss-modules-extract-imports": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz",
+      "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.5"
+      }
+    },
+    "postcss-modules-local-by-default": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-2.0.6.tgz",
+      "integrity": "sha512-oLUV5YNkeIBa0yQl7EYnxMgy4N6noxmiwZStaEJUSe2xPMcdNc8WmBQuQCx18H5psYbVxz8zoHk0RAAYZXP9gA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0",
+        "postcss-value-parser": "^3.3.1"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-modules-scope": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.1.0.tgz",
+      "integrity": "sha512-91Rjps0JnmtUB0cujlc8KIKCsJXWjzuxGeT/+Q2i2HXKZ7nBUeF9YQTZZTNvHVoNYj1AthsjnGLtqDUE0Op79A==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.6",
+        "postcss-selector-parser": "^6.0.0"
+      }
+    },
+    "postcss-modules-values": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-2.0.0.tgz",
+      "integrity": "sha512-Ki7JZa7ff1N3EIMlPnGTZfUMe69FFwiQPnVSXC9mnn3jozCRBYIxiZd44yJOV2AmabOo4qFf8s0dC/+lweG7+w==",
+      "dev": true,
+      "requires": {
+        "icss-replace-symbols": "^1.1.0",
+        "postcss": "^7.0.6"
+      }
+    },
+    "postcss-normalize-charset": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz",
+      "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-normalize-display-values": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz",
+      "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-positions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz",
+      "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-repeat-style": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz",
+      "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-string": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz",
+      "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-timing-functions": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz",
+      "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-unicode": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz",
+      "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-url": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz",
+      "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==",
+      "dev": true,
+      "requires": {
+        "is-absolute-url": "^2.0.0",
+        "normalize-url": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-normalize-whitespace": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz",
+      "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==",
+      "dev": true,
+      "requires": {
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-ordered-values": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz",
+      "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-arguments": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-pxtorem": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-pxtorem/-/postcss-pxtorem-4.0.1.tgz",
+      "integrity": "sha1-nGTQ7+SIVHPMHLAwXG/8PrtFsc0=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.0",
+        "postcss": "^5.2.10"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-reduce-idents": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz",
+      "integrity": "sha1-wsbSDMlYKE9qv75j92Cb9AkFmtM=",
+      "dev": true,
+      "requires": {
+        "postcss": "^5.0.4",
+        "postcss-value-parser": "^3.0.2"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "postcss-reduce-initial": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz",
+      "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "caniuse-api": "^3.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0"
+      }
+    },
+    "postcss-reduce-transforms": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz",
+      "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==",
+      "dev": true,
+      "requires": {
+        "cssnano-util-get-match": "^4.0.0",
+        "has": "^1.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-selector-parser": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.2.tgz",
+      "integrity": "sha512-36P2QR59jDTOAiIkqEprfJDsoNrvwFei3eCqKd1Y0tUsBimsq39BLp7RD+JWny3WgB1zGhJX8XVePwm9k4wdBg==",
+      "dev": true,
+      "requires": {
+        "cssesc": "^3.0.0",
+        "indexes-of": "^1.0.1",
+        "uniq": "^1.0.1"
+      }
+    },
+    "postcss-svgo": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.2.tgz",
+      "integrity": "sha512-C6wyjo3VwFm0QgBy+Fu7gCYOkCmgmClghO+pjcxvrcBKtiKt0uCF+hvbMO1fyv5BMImRK90SMb+dwUnfbGd+jw==",
+      "dev": true,
+      "requires": {
+        "is-svg": "^3.0.0",
+        "postcss": "^7.0.0",
+        "postcss-value-parser": "^3.0.0",
+        "svgo": "^1.0.0"
+      },
+      "dependencies": {
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        }
+      }
+    },
+    "postcss-unique-selectors": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz",
+      "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==",
+      "dev": true,
+      "requires": {
+        "alphanum-sort": "^1.0.0",
+        "postcss": "^7.0.0",
+        "uniqs": "^2.0.0"
+      }
+    },
+    "postcss-value-parser": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz",
+      "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==",
+      "dev": true
+    },
+    "postcss-zindex": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz",
+      "integrity": "sha1-0hCd3AVbka9n/EyzsCWUZjnSryI=",
+      "dev": true,
+      "requires": {
+        "has": "^1.0.1",
+        "postcss": "^5.0.4",
+        "uniqs": "^2.0.0"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        }
+      }
+    },
+    "prelude-ls": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
+      "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
+      "dev": true
+    },
+    "prepend-http": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz",
+      "integrity": "sha1-1PRWKwzjaW5BrFLQ4ALlemNdxtw=",
+      "dev": true
+    },
+    "prettier": {
+      "version": "1.16.3",
+      "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.16.3.tgz",
+      "integrity": "sha512-kn/GU6SMRYPxUakNXhpP0EedT/KmaPzr0H5lIsDogrykbaxOpOfAFfk5XA7DZrJyMAv1wlMV3CPcZruGXVVUZw==",
+      "dev": true
+    },
+    "pretty-error": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-2.1.1.tgz",
+      "integrity": "sha1-X0+HyPkeWuPzuoerTPXgOxoX8aM=",
+      "dev": true,
+      "requires": {
+        "renderkid": "^2.0.1",
+        "utila": "~0.4"
+      }
+    },
+    "private": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz",
+      "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==",
+      "dev": true
+    },
+    "process": {
+      "version": "0.11.10",
+      "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz",
+      "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI="
+    },
+    "process-nextick-args": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
+      "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==",
+      "dev": true
+    },
+    "progress": {
+      "version": "1.1.8",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
+      "integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
+      "dev": true
+    },
+    "progress-bar-webpack-plugin": {
+      "version": "1.12.1",
+      "resolved": "https://registry.npmjs.org/progress-bar-webpack-plugin/-/progress-bar-webpack-plugin-1.12.1.tgz",
+      "integrity": "sha512-tVbPB5xBbqNwdH3mwcxzjL1r1Vrm/xGu93OsqVSAbCaXGoKFvfWIh0gpMDpn2kYsPVRSAIK0pBkP9Vfs+JJibQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^1.1.1",
+        "object.assign": "^4.0.1",
+        "progress": "^1.1.8"
+      },
+      "dependencies": {
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          }
+        },
+        "supports-color": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+          "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+          "dev": true
+        }
+      }
+    },
+    "promise": {
+      "version": "7.3.1",
+      "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz",
+      "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asap": "~2.0.3"
+      }
+    },
+    "promise-inflight": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz",
+      "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=",
+      "dev": true
+    },
+    "proxy-addr": {
+      "version": "2.0.6",
+      "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.6.tgz",
+      "integrity": "sha512-dh/frvCBVmSsDYzw6n926jv974gddhkFPfiN8hPOi30Wax25QZyZEGveluCgliBnqmuM+UJmBErbAUFIoDbjOw==",
+      "dev": true,
+      "requires": {
+        "forwarded": "~0.1.2",
+        "ipaddr.js": "1.9.1"
+      }
+    },
+    "prr": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz",
+      "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=",
+      "dev": true
+    },
+    "pseudomap": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz",
+      "integrity": "sha1-8FKijacOYYkX7wqKw0wa5aaChrM=",
+      "dev": true
+    },
+    "psl": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/psl/-/psl-1.3.0.tgz",
+      "integrity": "sha512-avHdspHO+9rQTLbv1RO+MPYeP/SzsCoxofjVnHanETfQhTJrmB0HlDoW+EiN/R+C0BZ+gERab9NY0lPN2TxNag==",
+      "dev": true,
+      "optional": true
+    },
+    "public-encrypt": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz",
+      "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==",
+      "dev": true,
+      "requires": {
+        "bn.js": "^4.1.0",
+        "browserify-rsa": "^4.0.0",
+        "create-hash": "^1.1.0",
+        "parse-asn1": "^5.0.0",
+        "randombytes": "^2.0.1",
+        "safe-buffer": "^5.1.2"
+      },
+      "dependencies": {
+        "bn.js": {
+          "version": "4.12.0",
+          "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz",
+          "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==",
+          "dev": true
+        }
+      }
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "pumpify": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz",
+      "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==",
+      "dev": true,
+      "requires": {
+        "duplexify": "^3.6.0",
+        "inherits": "^2.0.3",
+        "pump": "^2.0.0"
+      },
+      "dependencies": {
+        "pump": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz",
+          "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==",
+          "dev": true,
+          "requires": {
+            "end-of-stream": "^1.1.0",
+            "once": "^1.3.1"
+          }
+        }
+      }
+    },
+    "punycode": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
+      "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+      "dev": true
+    },
+    "q": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz",
+      "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=",
+      "dev": true
+    },
+    "qr.js": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/qr.js/-/qr.js-0.0.0.tgz",
+      "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8="
+    },
+    "qrcode": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/qrcode/-/qrcode-1.4.1.tgz",
+      "integrity": "sha512-3JhHQJkKqJL4PfoM6t+B40f0GWv9eNJAJmuNx2X/sHEOLvMyvEPN8GfbdN1qmr19O8N2nLraOzeWjXocHz1S4w==",
+      "requires": {
+        "dijkstrajs": "^1.0.1",
+        "isarray": "^2.0.1",
+        "pngjs": "^3.3.0",
+        "yargs": "^13.2.4"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "2.0.5",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+          "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw=="
+        }
+      }
+    },
+    "qs": {
+      "version": "6.5.2",
+      "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
+      "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
+      "dev": true,
+      "optional": true
+    },
+    "query-string": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz",
+      "integrity": "sha1-u7aTucqRXCMlFbIosaArYJBD2+s=",
+      "dev": true,
+      "requires": {
+        "object-assign": "^4.1.0",
+        "strict-uri-encode": "^1.0.0"
+      }
+    },
+    "querystring": {
+      "version": "0.2.0",
+      "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz",
+      "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=",
+      "dev": true
+    },
+    "querystring-es3": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz",
+      "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=",
+      "dev": true
+    },
+    "querystringify": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz",
+      "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==",
+      "dev": true
+    },
+    "randombytes": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz",
+      "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "randomfill": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz",
+      "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==",
+      "dev": true,
+      "requires": {
+        "randombytes": "^2.0.5",
+        "safe-buffer": "^5.1.0"
+      }
+    },
+    "range-parser": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz",
+      "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==",
+      "dev": true
+    },
+    "raw-body": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz",
+      "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==",
+      "dev": true,
+      "requires": {
+        "bytes": "3.1.0",
+        "http-errors": "1.7.2",
+        "iconv-lite": "0.4.24",
+        "unpipe": "1.0.0"
+      },
+      "dependencies": {
+        "bytes": {
+          "version": "3.1.0",
+          "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz",
+          "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==",
+          "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.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
+    "readdirp": {
+      "version": "3.5.0",
+      "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
+      "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "picomatch": "^2.2.1"
+      }
+    },
+    "reduce-css-calc": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz",
+      "integrity": "sha1-dHyRTgSWFKTJz7umKYca0dKSdxY=",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^0.4.2",
+        "math-expression-evaluator": "^1.2.14",
+        "reduce-function-call": "^1.0.1"
+      },
+      "dependencies": {
+        "balanced-match": {
+          "version": "0.4.2",
+          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+          "dev": true
+        }
+      }
+    },
+    "reduce-function-call": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.2.tgz",
+      "integrity": "sha1-WiAL+S4ON3UXUv5FsKszD9S2vpk=",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^0.4.2"
+      },
+      "dependencies": {
+        "balanced-match": {
+          "version": "0.4.2",
+          "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz",
+          "integrity": "sha1-yz8+PHMtwPAe5wtAPzAuYddwmDg=",
+          "dev": true
+        }
+      }
+    },
+    "regenerate": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.0.tgz",
+      "integrity": "sha512-1G6jJVDWrt0rK99kBjvEtziZNCICAuvIPkSiUFIQxVP06RCVpq3dmDo2oi6ABpYaDYaTRr67BEhL8r1wgEZZKg==",
+      "dev": true
+    },
+    "regenerate-unicode-properties": {
+      "version": "8.1.0",
+      "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.1.0.tgz",
+      "integrity": "sha512-LGZzkgtLY79GeXLm8Dp0BVLdQlWICzBnJz/ipWUgo59qBaZ+BHtq51P2q1uVZlppMuUAT37SDk39qUbjTWB7bA==",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0"
+      }
+    },
+    "regenerator-runtime": {
+      "version": "0.13.3",
+      "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.3.tgz",
+      "integrity": "sha512-naKIZz2GQ8JWh///G7L3X6LaQUAMp2lvb1rvwwsURe/VXwD6VMfr+/1NuNw3ag8v2kY1aQ/go5SNn79O9JU7yw=="
+    },
+    "regenerator-transform": {
+      "version": "0.14.1",
+      "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.1.tgz",
+      "integrity": "sha512-flVuee02C3FKRISbxhXl9mGzdbWUVHubl1SMaknjxkFB1/iqpJhArQUvRxOOPEc/9tAiX0BaQ28FJH10E4isSQ==",
+      "dev": true,
+      "requires": {
+        "private": "^0.1.6"
+      }
+    },
+    "regex-not": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz",
+      "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "regexp-tree": {
+      "version": "0.1.11",
+      "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.11.tgz",
+      "integrity": "sha512-7/l/DgapVVDzZobwMCCgMlqiqyLFJ0cduo/j+3BcDJIB+yJdsYCfKuI3l/04NV+H/rfNRdPIDbXNZHM9XvQatg==",
+      "dev": true
+    },
+    "regexp.prototype.flags": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz",
+      "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==",
+      "dev": true,
+      "requires": {
+        "call-bind": "^1.0.2",
+        "define-properties": "^1.1.3"
+      }
+    },
+    "regexpu-core": {
+      "version": "4.5.5",
+      "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.5.5.tgz",
+      "integrity": "sha512-FpI67+ky9J+cDizQUJlIlNZFKual/lUkFr1AG6zOCpwZ9cLrg8UUVakyUQJD7fCDIe9Z2nwTQJNPyonatNmDFQ==",
+      "dev": true,
+      "requires": {
+        "regenerate": "^1.4.0",
+        "regenerate-unicode-properties": "^8.1.0",
+        "regjsgen": "^0.5.0",
+        "regjsparser": "^0.6.0",
+        "unicode-match-property-ecmascript": "^1.0.4",
+        "unicode-match-property-value-ecmascript": "^1.1.0"
+      }
+    },
+    "regjsgen": {
+      "version": "0.5.0",
+      "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.0.tgz",
+      "integrity": "sha512-RnIrLhrXCX5ow/E5/Mh2O4e/oa1/jW0eaBKTSy3LaCj+M3Bqvm97GWDp2yUtzIs4LEn65zR2yiYGFqb2ApnzDA==",
+      "dev": true
+    },
+    "regjsparser": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.0.tgz",
+      "integrity": "sha512-RQ7YyokLiQBomUJuUG8iGVvkgOLxwyZM8k6d3q5SAXpg4r5TZJZigKFvC6PpD+qQ98bCDC5YelPeA3EucDoNeQ==",
+      "dev": true,
+      "requires": {
+        "jsesc": "~0.5.0"
+      },
+      "dependencies": {
+        "jsesc": {
+          "version": "0.5.0",
+          "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz",
+          "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=",
+          "dev": true
+        }
+      }
+    },
+    "relateurl": {
+      "version": "0.2.7",
+      "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz",
+      "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=",
+      "dev": true
+    },
+    "remove-trailing-separator": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
+      "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
+      "dev": true
+    },
+    "renderkid": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-2.0.3.tgz",
+      "integrity": "sha512-z8CLQp7EZBPCwCnncgf9C4XAi3WR0dv+uWu/PjIyhhAb5d6IJ/QZqlHFprHeKT+59//V6BNUsLbvN8+2LarxGA==",
+      "dev": true,
+      "requires": {
+        "css-select": "^1.1.0",
+        "dom-converter": "^0.2",
+        "htmlparser2": "^3.3.0",
+        "strip-ansi": "^3.0.0",
+        "utila": "^0.4.0"
+      },
+      "dependencies": {
+        "css-select": {
+          "version": "1.2.0",
+          "resolved": "https://registry.npmjs.org/css-select/-/css-select-1.2.0.tgz",
+          "integrity": "sha1-KzoRBTnFNV8c2NMUYj6HCxIeyFg=",
+          "dev": true,
+          "requires": {
+            "boolbase": "~1.0.0",
+            "css-what": "2.1",
+            "domutils": "1.5.1",
+            "nth-check": "~1.0.1"
+          }
+        },
+        "domutils": {
+          "version": "1.5.1",
+          "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
+          "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=",
+          "dev": true,
+          "requires": {
+            "dom-serializer": "0",
+            "domelementtype": "1"
+          }
+        }
+      }
+    },
+    "repeat-element": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz",
+      "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==",
+      "dev": true
+    },
+    "repeat-string": {
+      "version": "1.6.1",
+      "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz",
+      "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=",
+      "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,
+      "optional": true,
+      "requires": {
+        "aws-sign2": "~0.7.0",
+        "aws4": "^1.8.0",
+        "caseless": "~0.12.0",
+        "combined-stream": "~1.0.6",
+        "extend": "~3.0.2",
+        "forever-agent": "~0.6.1",
+        "form-data": "~2.3.2",
+        "har-validator": "~5.1.0",
+        "http-signature": "~1.2.0",
+        "is-typedarray": "~1.0.0",
+        "isstream": "~0.1.2",
+        "json-stringify-safe": "~5.0.1",
+        "mime-types": "~2.1.19",
+        "oauth-sign": "~0.9.0",
+        "performance-now": "^2.1.0",
+        "qs": "~6.5.2",
+        "safe-buffer": "^5.1.2",
+        "tough-cookie": "~2.4.3",
+        "tunnel-agent": "^0.6.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "require-directory": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+      "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I="
+    },
+    "require-main-filename": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+      "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg=="
+    },
+    "requires-port": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/requires-port/download/requires-port-1.0.0.tgz",
+      "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=",
+      "dev": true
+    },
+    "resize-observer-polyfill": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz",
+      "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg=="
+    },
+    "resolve": {
+      "version": "1.12.0",
+      "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.12.0.tgz",
+      "integrity": "sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w==",
+      "dev": true,
+      "requires": {
+        "path-parse": "^1.0.6"
+      }
+    },
+    "resolve-cwd": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz",
+      "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=",
+      "dev": true,
+      "requires": {
+        "resolve-from": "^3.0.0"
+      }
+    },
+    "resolve-dir": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz",
+      "integrity": "sha1-eaQGRMNivoLybv/nOcm7U4IEb0M=",
+      "dev": true,
+      "requires": {
+        "expand-tilde": "^2.0.0",
+        "global-modules": "^1.0.0"
+      },
+      "dependencies": {
+        "global-modules": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
+          "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==",
+          "dev": true,
+          "requires": {
+            "global-prefix": "^1.0.1",
+            "is-windows": "^1.0.1",
+            "resolve-dir": "^1.0.0"
+          }
+        }
+      }
+    },
+    "resolve-from": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
+      "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+      "dev": true
+    },
+    "resolve-url": {
+      "version": "0.2.1",
+      "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz",
+      "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=",
+      "dev": true
+    },
+    "ret": {
+      "version": "0.1.15",
+      "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz",
+      "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==",
+      "dev": true
+    },
+    "retry": {
+      "version": "0.12.0",
+      "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
+      "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=",
+      "dev": true
+    },
+    "rgb-regex": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz",
+      "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=",
+      "dev": true
+    },
+    "rgba-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz",
+      "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "2.7.1",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
+      "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "ripemd160": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz",
+      "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==",
+      "dev": true,
+      "requires": {
+        "hash-base": "^3.0.0",
+        "inherits": "^2.0.1"
+      }
+    },
+    "run-queue": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz",
+      "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=",
+      "dev": true,
+      "requires": {
+        "aproba": "^1.1.1"
+      }
+    },
+    "rust-result": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/rust-result/-/rust-result-1.0.0.tgz",
+      "integrity": "sha1-NMdbLm3Dn+WHXlveyFteD5FTb3I=",
+      "requires": {
+        "individual": "^2.0.0"
+      }
+    },
+    "safe-buffer": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
+      "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==",
+      "dev": true
+    },
+    "safe-json-parse": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-4.0.0.tgz",
+      "integrity": "sha1-fA9XjPzNEtM6ccDgVBPi7KFx6qw=",
+      "requires": {
+        "rust-result": "^1.0.0"
+      }
+    },
+    "safe-regex": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz",
+      "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=",
+      "dev": true,
+      "requires": {
+        "ret": "~0.1.10"
+      }
+    },
+    "safer-buffer": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+      "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+      "dev": true
+    },
+    "sax": {
+      "version": "1.2.4",
+      "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
+      "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==",
+      "dev": true
+    },
+    "schema-utils": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz",
+      "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==",
+      "dev": true,
+      "requires": {
+        "ajv": "^6.1.0",
+        "ajv-errors": "^1.0.0",
+        "ajv-keywords": "^3.1.0"
+      }
+    },
+    "select-hose": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npm.taobao.org/select-hose/download/select-hose-2.0.0.tgz",
+      "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=",
+      "dev": true
+    },
+    "selfsigned": {
+      "version": "1.10.11",
+      "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.11.tgz",
+      "integrity": "sha512-aVmbPOfViZqOZPgRBT0+3u4yZFHpmnIghLMlAcb5/xhp5ZtB/RVnKhz5vl2M32CLXAqR4kha9zfhNg0Lf/sxKA==",
+      "dev": true,
+      "requires": {
+        "node-forge": "^0.10.0"
+      }
+    },
+    "semver": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
+      "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ=="
+    },
+    "send": {
+      "version": "0.17.1",
+      "resolved": "https://registry.npmjs.org/send/-/send-0.17.1.tgz",
+      "integrity": "sha512-BsVKsiGcQMFwT8UxypobUKyv7irCNRHk1T0G680vk88yf6LBByGcZJOTJCrTP2xVN6yI+XjPJcNuE3V4fT9sAg==",
+      "dev": true,
+      "requires": {
+        "debug": "2.6.9",
+        "depd": "~1.1.2",
+        "destroy": "~1.0.4",
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "etag": "~1.8.1",
+        "fresh": "0.5.2",
+        "http-errors": "~1.7.2",
+        "mime": "1.6.0",
+        "ms": "2.1.1",
+        "on-finished": "~2.3.0",
+        "range-parser": "~1.2.1",
+        "statuses": "~1.5.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          },
+          "dependencies": {
+            "ms": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz",
+              "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=",
+              "dev": true
+            }
+          }
+        },
+        "ms": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz",
+          "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==",
+          "dev": true
+        }
+      }
+    },
+    "serialize-javascript": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-1.7.0.tgz",
+      "integrity": "sha512-ke8UG8ulpFOxO8f8gRYabHQe/ZntKlcig2Mp+8+URDP1D8vJZ0KUt7LYo07q25Z/+JVSgpr/cui9PIp5H6/+nA==",
+      "dev": true
+    },
+    "serve-index": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npm.taobao.org/serve-index/download/serve-index-1.9.1.tgz",
+      "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=",
+      "dev": true,
+      "requires": {
+        "accepts": "~1.3.4",
+        "batch": "0.6.1",
+        "debug": "2.6.9",
+        "escape-html": "~1.0.3",
+        "http-errors": "~1.6.2",
+        "mime-types": "~2.1.17",
+        "parseurl": "~1.3.2"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "http-errors": {
+          "version": "1.6.3",
+          "resolved": "https://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.0",
+            "statuses": ">= 1.4.0 < 2"
+          }
+        },
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        },
+        "setprototypeof": {
+          "version": "1.1.0",
+          "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz",
+          "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==",
+          "dev": true
+        }
+      }
+    },
+    "serve-static": {
+      "version": "1.14.1",
+      "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.1.tgz",
+      "integrity": "sha512-JMrvUwE54emCYWlTI+hGrGv5I8dEwmco/00EvkzIIsR7MqrHonbD9pO2MOfFnpFntl7ecpZs+3mW+XbQZu9QCg==",
+      "dev": true,
+      "requires": {
+        "encodeurl": "~1.0.2",
+        "escape-html": "~1.0.3",
+        "parseurl": "~1.3.3",
+        "send": "0.17.1"
+      }
+    },
+    "set-blocking": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+      "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
+    },
+    "set-value": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz",
+      "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "is-extendable": "^0.1.1",
+        "is-plain-object": "^2.0.3",
+        "split-string": "^3.0.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "setimmediate": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz",
+      "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=",
+      "dev": true
+    },
+    "setprototypeof": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz",
+      "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==",
+      "dev": true
+    },
+    "sha.js": {
+      "version": "2.4.11",
+      "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz",
+      "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.1",
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "shake.js": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/shake.js/-/shake.js-1.2.2.tgz",
+      "integrity": "sha1-sqxWCoKr5o14oCliOnCI4bMLrP8="
+    },
+    "shebang-command": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+      "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+      "requires": {
+        "shebang-regex": "^1.0.0"
+      }
+    },
+    "shebang-regex": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+      "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM="
+    },
+    "shvl": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/shvl/-/shvl-1.3.1.tgz",
+      "integrity": "sha512-+rRPP46hloYUAEImJcqprUgXu+05Ikqr4h4V+w5i2zJy37nAqtkQKufs3+3S2fDq6JNRrHMIQhB/Vaex+jgAAw=="
+    },
+    "signal-exit": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz",
+      "integrity": "sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0="
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      },
+      "dependencies": {
+        "is-arrayish": {
+          "version": "0.3.2",
+          "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+          "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+          "dev": true
+        }
+      }
+    },
+    "slash": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz",
+      "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=",
+      "dev": true
+    },
+    "snapdragon": {
+      "version": "0.8.2",
+      "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz",
+      "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==",
+      "dev": true,
+      "requires": {
+        "base": "^0.11.1",
+        "debug": "^2.2.0",
+        "define-property": "^0.2.5",
+        "extend-shallow": "^2.0.1",
+        "map-cache": "^0.2.2",
+        "source-map": "^0.5.6",
+        "source-map-resolve": "^0.5.0",
+        "use": "^3.1.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "dev": true,
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        },
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "snapdragon-node": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz",
+      "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^1.0.0",
+        "isobject": "^3.0.0",
+        "snapdragon-util": "^3.0.1"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz",
+          "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^1.0.0"
+          }
+        },
+        "is-accessor-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz",
+          "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-data-descriptor": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz",
+          "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==",
+          "dev": true,
+          "requires": {
+            "kind-of": "^6.0.0"
+          }
+        },
+        "is-descriptor": {
+          "version": "1.0.2",
+          "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz",
+          "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==",
+          "dev": true,
+          "requires": {
+            "is-accessor-descriptor": "^1.0.0",
+            "is-data-descriptor": "^1.0.0",
+            "kind-of": "^6.0.2"
+          }
+        }
+      }
+    },
+    "snapdragon-util": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz",
+      "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.2.0"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "sntp": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz",
+      "integrity": "sha1-ZUEYTMkK7qbG57NeJlkIJEPGYZg=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "hoek": "2.x.x"
+      }
+    },
+    "sockjs": {
+      "version": "0.3.21",
+      "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.21.tgz",
+      "integrity": "sha512-DhbPFGpxjc6Z3I+uX07Id5ZO2XwYsWOrYjaSeieES78cq+JaJvVe5q/m1uvjIQhXinhIeCFRH6JgXe+mvVMyXw==",
+      "dev": true,
+      "requires": {
+        "faye-websocket": "^0.11.3",
+        "uuid": "^3.4.0",
+        "websocket-driver": "^0.7.4"
+      },
+      "dependencies": {
+        "uuid": {
+          "version": "3.4.0",
+          "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
+          "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
+          "dev": true
+        }
+      }
+    },
+    "sockjs-client": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.5.1.tgz",
+      "integrity": "sha512-VnVAb663fosipI/m6pqRXakEOw7nvd7TUgdr3PlR/8V2I95QIdwT8L4nMxhyU8SmDBHYXU1TOElaKOmKLfYzeQ==",
+      "dev": true,
+      "requires": {
+        "debug": "^3.2.6",
+        "eventsource": "^1.0.7",
+        "faye-websocket": "^0.11.3",
+        "inherits": "^2.0.4",
+        "json3": "^3.3.3",
+        "url-parse": "^1.5.1"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "3.2.7",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz",
+          "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==",
+          "dev": true,
+          "requires": {
+            "ms": "^2.1.1"
+          }
+        },
+        "ms": {
+          "version": "2.1.3",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+          "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+          "dev": true
+        }
+      }
+    },
+    "sort-keys": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz",
+      "integrity": "sha1-RBttTTRnmPG05J6JIK37oOVD+a0=",
+      "dev": true,
+      "requires": {
+        "is-plain-obj": "^1.0.0"
+      }
+    },
+    "source-list-map": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz",
+      "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==",
+      "dev": true
+    },
+    "source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+      "dev": true
+    },
+    "source-map-resolve": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz",
+      "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==",
+      "dev": true,
+      "requires": {
+        "atob": "^2.1.2",
+        "decode-uri-component": "^0.2.0",
+        "resolve-url": "^0.2.1",
+        "source-map-url": "^0.4.0",
+        "urix": "^0.1.0"
+      }
+    },
+    "source-map-support": {
+      "version": "0.5.19",
+      "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz",
+      "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==",
+      "dev": true,
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "source-map": "^0.6.0"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "source-map-url": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz",
+      "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=",
+      "dev": true
+    },
+    "spdy": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz",
+      "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "handle-thing": "^2.0.0",
+        "http-deceiver": "^1.2.7",
+        "select-hose": "^2.0.0",
+        "spdy-transport": "^3.0.0"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        }
+      }
+    },
+    "spdy-transport": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz",
+      "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.0",
+        "detect-node": "^2.0.4",
+        "hpack.js": "^2.1.6",
+        "obuf": "^1.1.2",
+        "readable-stream": "^3.0.6",
+        "wbuf": "^1.7.3"
+      },
+      "dependencies": {
+        "debug": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "ms": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+          "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+          "dev": true
+        },
+        "readable-stream": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+          "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+          "dev": true,
+          "requires": {
+            "inherits": "^2.0.3",
+            "string_decoder": "^1.1.1",
+            "util-deprecate": "^1.0.1"
+          }
+        }
+      }
+    },
+    "split-string": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz",
+      "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^3.0.0"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "sshpk": {
+      "version": "1.16.1",
+      "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
+      "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "asn1": "~0.2.3",
+        "assert-plus": "^1.0.0",
+        "bcrypt-pbkdf": "^1.0.0",
+        "dashdash": "^1.12.0",
+        "ecc-jsbn": "~0.1.1",
+        "getpass": "^0.1.1",
+        "jsbn": "~0.1.0",
+        "safer-buffer": "^2.0.2",
+        "tweetnacl": "~0.14.0"
+      }
+    },
+    "ssri": {
+      "version": "6.0.1",
+      "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz",
+      "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==",
+      "dev": true,
+      "requires": {
+        "figgy-pudding": "^3.5.1"
+      }
+    },
+    "stable": {
+      "version": "0.1.8",
+      "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz",
+      "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==",
+      "dev": true
+    },
+    "static-extend": {
+      "version": "0.1.2",
+      "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz",
+      "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=",
+      "dev": true,
+      "requires": {
+        "define-property": "^0.2.5",
+        "object-copy": "^0.1.0"
+      },
+      "dependencies": {
+        "define-property": {
+          "version": "0.2.5",
+          "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz",
+          "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=",
+          "dev": true,
+          "requires": {
+            "is-descriptor": "^0.1.0"
+          }
+        }
+      }
+    },
+    "statuses": {
+      "version": "1.5.0",
+      "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz?cache=0&sync_timestamp=1609654066899&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fstatuses%2Fdownload%2Fstatuses-1.5.0.tgz",
+      "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=",
+      "dev": true
+    },
+    "stream-browserify": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz",
+      "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==",
+      "dev": true,
+      "requires": {
+        "inherits": "~2.0.1",
+        "readable-stream": "^2.0.2"
+      }
+    },
+    "stream-each": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz",
+      "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "stream-shift": "^1.0.0"
+      }
+    },
+    "stream-http": {
+      "version": "2.8.3",
+      "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz",
+      "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==",
+      "dev": true,
+      "requires": {
+        "builtin-status-codes": "^3.0.0",
+        "inherits": "^2.0.1",
+        "readable-stream": "^2.3.6",
+        "to-arraybuffer": "^1.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "stream-shift": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.0.tgz",
+      "integrity": "sha1-1cdSgl5TZ+eG944Y5EXqIjoVWVI=",
+      "dev": true
+    },
+    "strict-uri-encode": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz",
+      "integrity": "sha1-J5siXfHVgrH1TmWt3UNS4Y+qBxM=",
+      "dev": true
+    },
+    "string-width": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+      "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+      "requires": {
+        "emoji-regex": "^7.0.1",
+        "is-fullwidth-code-point": "^2.0.0",
+        "strip-ansi": "^5.1.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "string.prototype.trim": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.0.tgz",
+      "integrity": "sha512-9EIjYD/WdlvLpn987+ctkLf0FfvBefOCuiEr2henD8X+7jfwPnyvTdmW8OJhj5p+M0/96mBdynLWkxUr+rHlpg==",
+      "requires": {
+        "define-properties": "^1.1.3",
+        "es-abstract": "^1.13.0",
+        "function-bind": "^1.1.1"
+      }
+    },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "stringstream": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.6.tgz",
+      "integrity": "sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA==",
+      "dev": true,
+      "optional": true
+    },
+    "strip-ansi": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+      "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
+      "dev": true,
+      "requires": {
+        "ansi-regex": "^2.0.0"
+      }
+    },
+    "strip-comments": {
+      "version": "0.4.4",
+      "resolved": "https://registry.npmjs.org/strip-comments/-/strip-comments-0.4.4.tgz",
+      "integrity": "sha1-ucqvxP6QX5bAkd+J+achXyqmKcY=",
+      "dev": true,
+      "requires": {
+        "extend-shallow": "^2.0.1",
+        "extract-comments": "^0.10.1"
+      },
+      "dependencies": {
+        "extend-shallow": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz",
+          "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=",
+          "dev": true,
+          "requires": {
+            "is-extendable": "^0.1.0"
+          }
+        }
+      }
+    },
+    "strip-css-comments": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/strip-css-comments/-/strip-css-comments-3.0.0.tgz",
+      "integrity": "sha1-elYl7/iisibPiUehElTaluE9rok=",
+      "dev": true,
+      "requires": {
+        "is-regexp": "^1.0.0"
+      }
+    },
+    "strip-eof": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
+      "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8="
+    },
+    "style-loader": {
+      "version": "0.23.1",
+      "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-0.23.1.tgz",
+      "integrity": "sha512-XK+uv9kWwhZMZ1y7mysB+zoihsEj4wneFWAS5qoiLwzW0WzSqMrrsIy+a3zkQJq0ipFtBpX5W3MqyRIBF/WFGg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "schema-utils": "^1.0.0"
+      }
+    },
+    "style-resources-loader": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/style-resources-loader/-/style-resources-loader-1.2.1.tgz",
+      "integrity": "sha512-ekId7AwZRW429UjQo02CJTt0Y8GwoT9zidvJLq4lRTJbu0cghv9XNRmt9mS4MR41+gZwMRT0EpFzP68HDWLbXQ==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.2",
+        "is-callable": "^1.1.4",
+        "is-plain-object": "^2.0.4",
+        "is-promise": "^2.1.0",
+        "loader-utils": "^1.1.0"
+      }
+    },
+    "stylehacks": {
+      "version": "4.0.3",
+      "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz",
+      "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==",
+      "dev": true,
+      "requires": {
+        "browserslist": "^4.0.0",
+        "postcss": "^7.0.0",
+        "postcss-selector-parser": "^3.0.0"
+      },
+      "dependencies": {
+        "postcss-selector-parser": {
+          "version": "3.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.1.tgz",
+          "integrity": "sha1-T4dfSvsMllc9XPTXQBGu4lCn6GU=",
+          "dev": true,
+          "requires": {
+            "dot-prop": "^4.1.1",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        }
+      }
+    },
+    "supports-color": {
+      "version": "5.5.0",
+      "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+      "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+      "dev": true,
+      "requires": {
+        "has-flag": "^3.0.0"
+      }
+    },
+    "svg-tags": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/svg-tags/-/svg-tags-1.0.0.tgz",
+      "integrity": "sha1-WPcc7jvVGbWdSyqEO2x95krAR2Q=",
+      "dev": true
+    },
+    "svgo": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.0.tgz",
+      "integrity": "sha512-MLfUA6O+qauLDbym+mMZgtXCGRfIxyQoeH6IKVcFslyODEe/ElJNwr0FohQ3xG4C6HK6bk3KYPPXwHVJk3V5NQ==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.1",
+        "coa": "^2.0.2",
+        "css-select": "^2.0.0",
+        "css-select-base-adapter": "^0.1.1",
+        "css-tree": "1.0.0-alpha.33",
+        "csso": "^3.5.1",
+        "js-yaml": "^3.13.1",
+        "mkdirp": "~0.5.1",
+        "object.values": "^1.1.0",
+        "sax": "~1.2.4",
+        "stable": "^0.1.8",
+        "unquote": "~1.1.1",
+        "util.promisify": "~1.0.0"
+      }
+    },
+    "tapable": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz",
+      "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==",
+      "dev": true
+    },
+    "terser": {
+      "version": "4.8.0",
+      "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz",
+      "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==",
+      "dev": true,
+      "requires": {
+        "commander": "^2.20.0",
+        "source-map": "~0.6.1",
+        "source-map-support": "~0.5.12"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.20.3",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz",
+          "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==",
+          "dev": true
+        },
+        "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
+        }
+      }
+    },
+    "terser-webpack-plugin": {
+      "version": "1.4.5",
+      "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz",
+      "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==",
+      "dev": true,
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^4.0.0",
+        "source-map": "^0.6.1",
+        "terser": "^4.1.2",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "12.0.4",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz",
+          "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "serialize-javascript": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz",
+          "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==",
+          "dev": true,
+          "requires": {
+            "randombytes": "^2.1.0"
+          }
+        },
+        "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
+        }
+      }
+    },
+    "throttle-debounce": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/throttle-debounce/-/throttle-debounce-1.1.0.tgz",
+      "integrity": "sha512-XH8UiPCQcWNuk2LYePibW/4qL97+ZQ1AN3FNXwZRBNPPowo/NRU5fAlDCSNBJIYCKbioZfuYtMhG4quqoJhVzg=="
+    },
+    "through2": {
+      "version": "2.0.5",
+      "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz",
+      "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==",
+      "dev": true,
+      "requires": {
+        "readable-stream": "~2.3.6",
+        "xtend": "~4.0.1"
+      }
+    },
+    "thunky": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz",
+      "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==",
+      "dev": true
+    },
+    "timers-browserify": {
+      "version": "2.0.12",
+      "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz",
+      "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==",
+      "dev": true,
+      "requires": {
+        "setimmediate": "^1.0.4"
+      }
+    },
+    "timsort": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz",
+      "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=",
+      "dev": true
+    },
+    "to-arraybuffer": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz",
+      "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=",
+      "dev": true
+    },
+    "to-fast-properties": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
+      "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=",
+      "dev": true
+    },
+    "to-object-path": {
+      "version": "0.3.0",
+      "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz",
+      "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=",
+      "dev": true,
+      "requires": {
+        "kind-of": "^3.0.2"
+      },
+      "dependencies": {
+        "is-buffer": {
+          "version": "1.1.6",
+          "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz",
+          "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==",
+          "dev": true
+        },
+        "kind-of": {
+          "version": "3.2.2",
+          "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz",
+          "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
+          "dev": true,
+          "requires": {
+            "is-buffer": "^1.1.5"
+          }
+        }
+      }
+    },
+    "to-regex": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz",
+      "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==",
+      "dev": true,
+      "requires": {
+        "define-property": "^2.0.2",
+        "extend-shallow": "^3.0.2",
+        "regex-not": "^1.0.2",
+        "safe-regex": "^1.1.0"
+      }
+    },
+    "to-regex-range": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz",
+      "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=",
+      "dev": true,
+      "requires": {
+        "is-number": "^3.0.0",
+        "repeat-string": "^1.6.1"
+      }
+    },
+    "toidentifier": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz",
+      "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==",
+      "dev": true
+    },
+    "toposort": {
+      "version": "1.0.7",
+      "resolved": "https://registry.npmjs.org/toposort/-/toposort-1.0.7.tgz",
+      "integrity": "sha1-LmhELZ9k7HILjMieZEOsbKqVACk=",
+      "dev": true
+    },
+    "touch": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/touch/-/touch-1.0.0.tgz",
+      "integrity": "sha1-RJy+LbrlqMgDjjDXH6D/RklHxN4=",
+      "dev": true,
+      "requires": {
+        "nopt": "~1.0.10"
+      }
+    },
+    "tough-cookie": {
+      "version": "2.4.3",
+      "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz",
+      "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "psl": "^1.1.24",
+        "punycode": "^1.4.1"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true,
+          "optional": true
+        }
+      }
+    },
+    "trim-right": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz",
+      "integrity": "sha1-yy4SAwZ+DI3h9hQJS5/kVwTqYAM=",
+      "dev": true
+    },
+    "tsml": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/tsml/-/tsml-1.0.1.tgz",
+      "integrity": "sha1-ifghi52eJX9H1/a1bQHFpNLGj8M="
+    },
+    "tty-browserify": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz",
+      "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "tweetnacl": {
+      "version": "0.14.5",
+      "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
+      "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
+      "dev": true,
+      "optional": true
+    },
+    "type-check": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz",
+      "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=",
+      "dev": true,
+      "requires": {
+        "prelude-ls": "~1.1.2"
+      }
+    },
+    "type-is": {
+      "version": "1.6.18",
+      "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz",
+      "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==",
+      "dev": true,
+      "requires": {
+        "media-typer": "0.3.0",
+        "mime-types": "~2.1.24"
+      }
+    },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
+      "dev": true
+    },
+    "uglify-js": {
+      "version": "3.4.10",
+      "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.4.10.tgz",
+      "integrity": "sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==",
+      "dev": true,
+      "requires": {
+        "commander": "~2.19.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "commander": {
+          "version": "2.19.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.19.0.tgz",
+          "integrity": "sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "uglifyjs-webpack-plugin": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/uglifyjs-webpack-plugin/-/uglifyjs-webpack-plugin-2.2.0.tgz",
+      "integrity": "sha512-mHSkufBmBuJ+KHQhv5H0MXijtsoA1lynJt1lXOaotja8/I0pR4L9oGaPIZw+bQBOFittXZg9OC1sXSGO9D9ZYg==",
+      "dev": true,
+      "requires": {
+        "cacache": "^12.0.2",
+        "find-cache-dir": "^2.1.0",
+        "is-wsl": "^1.1.0",
+        "schema-utils": "^1.0.0",
+        "serialize-javascript": "^1.7.0",
+        "source-map": "^0.6.1",
+        "uglify-js": "^3.6.0",
+        "webpack-sources": "^1.4.0",
+        "worker-farm": "^1.7.0"
+      },
+      "dependencies": {
+        "cacache": {
+          "version": "12.0.2",
+          "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.2.tgz",
+          "integrity": "sha512-ifKgxH2CKhJEg6tNdAwziu6Q33EvuG26tYcda6PT3WKisZcYDXsnEdnRv67Po3yCzFfaSoMjGZzJyD2c3DT1dg==",
+          "dev": true,
+          "requires": {
+            "bluebird": "^3.5.5",
+            "chownr": "^1.1.1",
+            "figgy-pudding": "^3.5.1",
+            "glob": "^7.1.4",
+            "graceful-fs": "^4.1.15",
+            "infer-owner": "^1.0.3",
+            "lru-cache": "^5.1.1",
+            "mississippi": "^3.0.0",
+            "mkdirp": "^0.5.1",
+            "move-concurrently": "^1.0.1",
+            "promise-inflight": "^1.0.1",
+            "rimraf": "^2.6.3",
+            "ssri": "^6.0.1",
+            "unique-filename": "^1.1.1",
+            "y18n": "^4.0.0"
+          }
+        },
+        "commander": {
+          "version": "2.20.0",
+          "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.0.tgz",
+          "integrity": "sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ==",
+          "dev": true
+        },
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        },
+        "uglify-js": {
+          "version": "3.6.0",
+          "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.6.0.tgz",
+          "integrity": "sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg==",
+          "dev": true,
+          "requires": {
+            "commander": "~2.20.0",
+            "source-map": "~0.6.1"
+          }
+        }
+      }
+    },
+    "underscore": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
+      "integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==",
+      "dev": true
+    },
+    "unicode-canonical-property-names-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz",
+      "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==",
+      "dev": true
+    },
+    "unicode-match-property-ecmascript": {
+      "version": "1.0.4",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz",
+      "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==",
+      "dev": true,
+      "requires": {
+        "unicode-canonical-property-names-ecmascript": "^1.0.4",
+        "unicode-property-aliases-ecmascript": "^1.0.4"
+      }
+    },
+    "unicode-match-property-value-ecmascript": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.1.0.tgz",
+      "integrity": "sha512-hDTHvaBk3RmFzvSl0UVrUmC3PuW9wKVnpoUDYH0JDkSIovzw+J5viQmeYHxVSBptubnr7PbH2e0fnpDRQnQl5g==",
+      "dev": true
+    },
+    "unicode-property-aliases-ecmascript": {
+      "version": "1.0.5",
+      "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.0.5.tgz",
+      "integrity": "sha512-L5RAqCfXqAwR3RriF8pM0lU0w4Ryf/GgzONwi6KnL1taJQa7x1TCxdJnILX59WIGOwR57IVxn7Nej0fz1Ny6fw==",
+      "dev": true
+    },
+    "union-value": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
+      "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==",
+      "dev": true,
+      "requires": {
+        "arr-union": "^3.1.0",
+        "get-value": "^2.0.6",
+        "is-extendable": "^0.1.1",
+        "set-value": "^2.0.1"
+      }
+    },
+    "uniq": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz",
+      "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=",
+      "dev": true
+    },
+    "uniqs": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz",
+      "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=",
+      "dev": true
+    },
+    "unique-filename": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz",
+      "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==",
+      "dev": true,
+      "requires": {
+        "unique-slug": "^2.0.0"
+      }
+    },
+    "unique-slug": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz",
+      "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==",
+      "dev": true,
+      "requires": {
+        "imurmurhash": "^0.1.4"
+      }
+    },
+    "unpipe": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
+      "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=",
+      "dev": true
+    },
+    "unquote": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz",
+      "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=",
+      "dev": true
+    },
+    "unset-value": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
+      "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=",
+      "dev": true,
+      "requires": {
+        "has-value": "^0.3.1",
+        "isobject": "^3.0.0"
+      },
+      "dependencies": {
+        "has-value": {
+          "version": "0.3.1",
+          "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz",
+          "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=",
+          "dev": true,
+          "requires": {
+            "get-value": "^2.0.3",
+            "has-values": "^0.1.4",
+            "isobject": "^2.0.0"
+          },
+          "dependencies": {
+            "isobject": {
+              "version": "2.1.0",
+              "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz",
+              "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=",
+              "dev": true,
+              "requires": {
+                "isarray": "1.0.0"
+              }
+            }
+          }
+        },
+        "has-values": {
+          "version": "0.1.4",
+          "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz",
+          "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=",
+          "dev": true
+        }
+      }
+    },
+    "upath": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz",
+      "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==",
+      "dev": true
+    },
+    "upper-case": {
+      "version": "1.1.3",
+      "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-1.1.3.tgz",
+      "integrity": "sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg=",
+      "dev": true
+    },
+    "uri-js": {
+      "version": "4.2.2",
+      "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
+      "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==",
+      "dev": true,
+      "requires": {
+        "punycode": "^2.1.0"
+      }
+    },
+    "urix": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz",
+      "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=",
+      "dev": true
+    },
+    "url": {
+      "version": "0.11.0",
+      "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz",
+      "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=",
+      "dev": true,
+      "requires": {
+        "punycode": "1.3.2",
+        "querystring": "0.2.0"
+      },
+      "dependencies": {
+        "punycode": {
+          "version": "1.3.2",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz",
+          "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=",
+          "dev": true
+        }
+      }
+    },
+    "url-loader": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/url-loader/-/url-loader-1.1.2.tgz",
+      "integrity": "sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==",
+      "dev": true,
+      "requires": {
+        "loader-utils": "^1.1.0",
+        "mime": "^2.0.3",
+        "schema-utils": "^1.0.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.4.4",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.4.4.tgz",
+          "integrity": "sha512-LRxmNwziLPT828z+4YkNzloCFC2YM4wrB99k+AV5ZbEyfGNWfG8SO1FUXLmLDBSo89NrJZ4DIWeLjy1CHGhMGA==",
+          "dev": true
+        }
+      }
+    },
+    "url-parse": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.1.tgz",
+      "integrity": "sha512-HOfCOUJt7iSYzEx/UqgtwKRMC6EU91NFhsCHMv9oM03VJcVo2Qrp8T8kI9D7amFf1cu+/3CEhgb3rF9zL7k85Q==",
+      "dev": true,
+      "requires": {
+        "querystringify": "^2.1.1",
+        "requires-port": "^1.0.0"
+      }
+    },
+    "url-toolkit": {
+      "version": "2.1.6",
+      "resolved": "https://registry.npmjs.org/url-toolkit/-/url-toolkit-2.1.6.tgz",
+      "integrity": "sha512-UaZ2+50am4HwrV2crR/JAf63Q4VvPYphe63WGeoJxeu8gmOm0qxPt+KsukfakPNrX9aymGNEkkaoICwn+OuvBw=="
+    },
+    "use": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz",
+      "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==",
+      "dev": true
+    },
+    "util": {
+      "version": "0.11.1",
+      "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz",
+      "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==",
+      "dev": true,
+      "requires": {
+        "inherits": "2.0.3"
+      },
+      "dependencies": {
+        "inherits": {
+          "version": "2.0.3",
+          "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+          "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=",
+          "dev": true
+        }
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "util.promisify": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.0.tgz",
+      "integrity": "sha512-i+6qA2MPhvoKLuxnJNpXAGhg7HphQOSUq2LKMZD0m15EiskXUkMvKdF4Uui0WYeCUGea+o2cw/ZuwehtfsrNkA==",
+      "dev": true,
+      "requires": {
+        "define-properties": "^1.1.2",
+        "object.getownpropertydescriptors": "^2.0.3"
+      }
+    },
+    "utila": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz",
+      "integrity": "sha1-ihagXURWV6Oupe7MWxKk+lN5dyw=",
+      "dev": true
+    },
+    "utils-merge": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
+      "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=",
+      "dev": true
+    },
+    "uuid": {
+      "version": "3.3.2",
+      "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
+      "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==",
+      "dev": true
+    },
+    "v8-compile-cache": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz",
+      "integrity": "sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==",
+      "dev": true
+    },
+    "validator": {
+      "version": "9.4.1",
+      "resolved": "https://registry.npmjs.org/validator/-/validator-9.4.1.tgz",
+      "integrity": "sha512-YV5KjzvRmSyJ1ee/Dm5UED0G+1L4GZnLN3w6/T+zZm8scVua4sOhYKWTUrKa0H/tMiJyO9QLHMPN+9mB/aMunA=="
+    },
+    "vanilla-masker": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/vanilla-masker/-/vanilla-masker-1.2.0.tgz",
+      "integrity": "sha1-woMOnZlKX+zSJhUGR3wnB/5Yl1Y="
+    },
+    "vant": {
+      "version": "2.12.19",
+      "resolved": "https://registry.nlark.com/vant/download/vant-2.12.19.tgz?cache=0&sync_timestamp=1621244290278&other_urls=https%3A%2F%2Fregistry.nlark.com%2Fvant%2Fdownload%2Fvant-2.12.19.tgz",
+      "integrity": "sha1-WFi2/gEVupXcOAjwcPShvwyUkMc=",
+      "requires": {
+        "@babel/runtime": "7.x",
+        "@vant/icons": "^1.5.3",
+        "@vant/popperjs": "^1.0.0",
+        "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0",
+        "vue-lazyload": "1.2.3"
+      }
+    },
+    "vary": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
+      "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=",
+      "dev": true
+    },
+    "vendors": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.3.tgz",
+      "integrity": "sha512-fOi47nsJP5Wqefa43kyWSg80qF+Q3XA6MUkgi7Hp1HQaKDQW4cQrK2D0P7mmbFtsV1N89am55Yru/nyEwRubcw==",
+      "dev": true
+    },
+    "verror": {
+      "version": "1.10.0",
+      "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
+      "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "assert-plus": "^1.0.0",
+        "core-util-is": "1.0.2",
+        "extsprintf": "^1.2.0"
+      }
+    },
+    "video.js": {
+      "version": "6.13.0",
+      "resolved": "https://registry.npmjs.org/video.js/-/video.js-6.13.0.tgz",
+      "integrity": "sha512-36/JR/GhPQSZj0o+GNbhcEYv/b0SkV9SQsjlodAnzMQYN0TA7VhmqrKPYMCi1NGRYu7S9W3OaFCFoUxkYfSVlg==",
+      "requires": {
+        "babel-runtime": "^6.9.2",
+        "global": "4.3.2",
+        "safe-json-parse": "4.0.0",
+        "tsml": "1.0.1",
+        "videojs-font": "2.1.0",
+        "videojs-ie8": "1.1.2",
+        "videojs-vtt.js": "0.12.6",
+        "xhr": "2.4.0"
+      }
+    },
+    "videojs-contrib-hls": {
+      "version": "5.15.0",
+      "resolved": "https://registry.npmjs.org/videojs-contrib-hls/-/videojs-contrib-hls-5.15.0.tgz",
+      "integrity": "sha512-18zbMYZ0XRBKTPEayA9bFTWWrqhT9b4G8+zf0czJLD7Epe5PcK1I/3dflTHQeQ5rwlWir+/XnFU3sMg/B2MMcw==",
+      "requires": {
+        "aes-decrypter": "1.0.3",
+        "global": "^4.3.0",
+        "m3u8-parser": "2.1.0",
+        "mux.js": "4.3.2",
+        "url-toolkit": "^2.1.3",
+        "video.js": "^5.19.1 || ^6.2.0",
+        "videojs-contrib-media-sources": "4.7.2",
+        "webwackify": "0.1.6"
+      }
+    },
+    "videojs-contrib-media-sources": {
+      "version": "4.7.2",
+      "resolved": "https://registry.npmjs.org/videojs-contrib-media-sources/-/videojs-contrib-media-sources-4.7.2.tgz",
+      "integrity": "sha512-e6iCHWBFuV05EGo7v+pS9iepObXnJ9joms467gzi8ZjpKVb3ifha9M0Ja24Rd8JfvYpzjltsgDVtGFDvIg4hQQ==",
+      "requires": {
+        "global": "^4.3.0",
+        "mux.js": "4.3.2",
+        "video.js": "^5.17.0 || ^6.2.0",
+        "webwackify": "0.1.6"
+      }
+    },
+    "videojs-flash": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/videojs-flash/-/videojs-flash-2.2.1.tgz",
+      "integrity": "sha512-mHu6TD12EKkxMvr8tg4AcfV/DuVLff427nneoZom3N9Dd2bv0sJOWwdLPQH1v5BCuAuXAVuAOba56ovTl+G3tQ==",
+      "requires": {
+        "global": "^4.4.0",
+        "video.js": "^6 || ^7",
+        "videojs-swf": "5.4.2"
+      },
+      "dependencies": {
+        "global": {
+          "version": "4.4.0",
+          "resolved": "https://registry.npmjs.org/global/-/global-4.4.0.tgz",
+          "integrity": "sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==",
+          "requires": {
+            "min-document": "^2.19.0",
+            "process": "^0.11.10"
+          }
+        }
+      }
+    },
+    "videojs-font": {
+      "version": "2.1.0",
+      "resolved": "https://registry.npmjs.org/videojs-font/-/videojs-font-2.1.0.tgz",
+      "integrity": "sha1-olkwpn9snPvyu4jay4xrRR8JM3k="
+    },
+    "videojs-hotkeys": {
+      "version": "0.2.25",
+      "resolved": "https://registry.npmjs.org/videojs-hotkeys/-/videojs-hotkeys-0.2.25.tgz",
+      "integrity": "sha512-XgMjWiqGlmAjuHtpP529A2voVh++z46FSD0XeSy+65yeuTZOd+w2CJmfrL4jPpGm+MME5l9lOLfVpoEeDaBa1Q=="
+    },
+    "videojs-ie8": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/videojs-ie8/-/videojs-ie8-1.1.2.tgz",
+      "integrity": "sha1-oj09hgitcZK2nGB3/E64SJmNNdk=",
+      "requires": {
+        "es5-shim": "^4.5.1"
+      }
+    },
+    "videojs-swf": {
+      "version": "5.4.2",
+      "resolved": "https://registry.npmjs.org/videojs-swf/-/videojs-swf-5.4.2.tgz",
+      "integrity": "sha512-FGg+Csioa8/A/EacvFefBdb9Z0rSiMlheHDunZnN3xXfUF43jvjawcWFQnZvrv1Cs1nE1LBrHyUZjF7j2mKOLw=="
+    },
+    "videojs-vtt.js": {
+      "version": "0.12.6",
+      "resolved": "https://registry.npmjs.org/videojs-vtt.js/-/videojs-vtt.js-0.12.6.tgz",
+      "integrity": "sha512-XFXeGBQiljnElMhwCcZst0RDbZn2n8LU7ZScXryd3a00OaZsHAjdZu/7/RdSr7Z1jHphd45FnOvOQkGK4YrWCQ==",
+      "requires": {
+        "global": "^4.3.1"
+      }
+    },
+    "vm-browserify": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz",
+      "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==",
+      "dev": true
+    },
+    "vue": {
+      "version": "2.6.10",
+      "resolved": "https://registry.npmjs.org/vue/-/vue-2.6.10.tgz",
+      "integrity": "sha512-ImThpeNU9HbdZL3utgMCq0oiMzAkt1mcgy3/E6zWC/G6AaQoeuFdsl9nDhTDU3X1R6FK7nsIUuRACVcjI+A2GQ=="
+    },
+    "vue-hot-reload-api": {
+      "version": "2.3.3",
+      "resolved": "https://registry.npmjs.org/vue-hot-reload-api/-/vue-hot-reload-api-2.3.3.tgz",
+      "integrity": "sha512-KmvZVtmM26BQOMK1rwUZsrqxEGeKiYSZGA7SNWE6uExx8UX/cj9hq2MRV/wWC3Cq6AoeDGk57rL9YMFRel/q+g==",
+      "dev": true
+    },
+    "vue-i18n": {
+      "version": "8.14.0",
+      "resolved": "https://registry.npmjs.org/vue-i18n/-/vue-i18n-8.14.0.tgz",
+      "integrity": "sha512-utI1Rvc8i+fmmUkkKRmHaf4QQ87s7rGVL5ZZLsKvvRzmgaIr1l+GfGxxxRmsZxHpPlgeB8OxoUZ4noqZgDL6xg=="
+    },
+    "vue-lazyload": {
+      "version": "1.2.3",
+      "resolved": "https://registry.npm.taobao.org/vue-lazyload/download/vue-lazyload-1.2.3.tgz",
+      "integrity": "sha1-kB+ewVx+bKeHgaK65KNDaGve2yw="
+    },
+    "vue-loader": {
+      "version": "15.7.0",
+      "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-15.7.0.tgz",
+      "integrity": "sha512-x+NZ4RIthQOxcFclEcs8sXGEWqnZHodL2J9Vq+hUz+TDZzBaDIh1j3d9M2IUlTjtrHTZy4uMuRdTi8BGws7jLA==",
+      "dev": true,
+      "requires": {
+        "@vue/component-compiler-utils": "^2.5.1",
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.1.0",
+        "vue-hot-reload-api": "^2.3.0",
+        "vue-style-loader": "^4.1.0"
+      }
+    },
+    "vue-router": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-3.1.2.tgz",
+      "integrity": "sha512-WssQEHSEvIS1/CI4CO2T8LJdoK4Q9Ngox28K7FDNMTfzNTk2WS5D0dDlqYCaPG+AG4Z8wJkn1KrBc7AhspZJUQ=="
+    },
+    "vue-style-loader": {
+      "version": "4.1.2",
+      "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.2.tgz",
+      "integrity": "sha512-0ip8ge6Gzz/Bk0iHovU9XAUQaFt/G2B61bnWa2tCcqqdgfHs1lF9xXorFbE55Gmy92okFT+8bfmySuUOu13vxQ==",
+      "dev": true,
+      "requires": {
+        "hash-sum": "^1.0.2",
+        "loader-utils": "^1.0.2"
+      }
+    },
+    "vue-template-compiler": {
+      "version": "2.6.10",
+      "resolved": "https://registry.npmjs.org/vue-template-compiler/-/vue-template-compiler-2.6.10.tgz",
+      "integrity": "sha512-jVZkw4/I/HT5ZMvRnhv78okGusqe0+qH2A0Em0Cp8aq78+NK9TII263CDVz2QXZsIT+yyV/gZc/j/vlwa+Epyg==",
+      "dev": true,
+      "requires": {
+        "de-indent": "^1.0.2",
+        "he": "^1.1.0"
+      }
+    },
+    "vue-template-es2015-compiler": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/vue-template-es2015-compiler/-/vue-template-es2015-compiler-1.9.1.tgz",
+      "integrity": "sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==",
+      "dev": true
+    },
+    "vue-video-player": {
+      "version": "5.0.2",
+      "resolved": "https://registry.npmjs.org/vue-video-player/-/vue-video-player-5.0.2.tgz",
+      "integrity": "sha512-IZXeRGGSX4YIp54G0Q5cB7iqh6Ok6Dpa2jRkjdyvMWw7MShJuh54/d5QNb1CZ+CvZUzX/TH7osnpir7mBNcFvQ==",
+      "requires": {
+        "object-assign": "^4.1.1",
+        "video.js": "^6.6.0",
+        "videojs-contrib-hls": "^5.12.2",
+        "videojs-flash": "^2.1.0",
+        "videojs-hotkeys": "^0.2.20"
+      }
+    },
+    "vuex": {
+      "version": "3.1.1",
+      "resolved": "https://registry.npmjs.org/vuex/-/vuex-3.1.1.tgz",
+      "integrity": "sha512-ER5moSbLZuNSMBFnEBVGhQ1uCBNJslH9W/Dw2W7GZN23UQA69uapP5GTT9Vm8Trc0PzBSVt6LzF3hGjmv41xcg=="
+    },
+    "vuex-persistedstate": {
+      "version": "2.5.4",
+      "resolved": "https://registry.npmjs.org/vuex-persistedstate/-/vuex-persistedstate-2.5.4.tgz",
+      "integrity": "sha512-XYJhKIwO+ZVlTaXyxKxnplrJ88Fnvk5aDw753bxzRw5/yMKLQ6lq9CDCBex2fwZaQcLibhtgJOxGCHjy9GLSlQ==",
+      "requires": {
+        "deepmerge": "^2.1.0",
+        "shvl": "^1.3.0"
+      }
+    },
+    "vux": {
+      "version": "2.9.2",
+      "resolved": "https://registry.npmjs.org/vux/-/vux-2.9.2.tgz",
+      "integrity": "sha512-Ve8PabP4U2R10GZZPFXMa6fXxk5n2OBr0VSlBcSA/aavCSe2E4hR6Jzllg5jObvmUuhLSBP/wq8Ko+2Ik+O0nA==",
+      "requires": {
+        "@antv/f2": "^3.1.4-beta.2",
+        "array-filter": "^1.0.0",
+        "array-find": "^1.0.0",
+        "array-map": "^0.0.0",
+        "array-shuffle": "^1.0.1",
+        "autosize": "^3.0.20",
+        "axios": "^0.15.3",
+        "big.js": "^3.1.3",
+        "blueimp-md5": "^2.6.0",
+        "countup.js": "^1.8.1",
+        "fastclick": "^1.0.6",
+        "lodash.debounce": "^4.0.8",
+        "lodash.throttle": "^4.1.1",
+        "object-assign": "^4.1.0",
+        "qr.js": "0.0.0",
+        "shake.js": "^1.2.2",
+        "validator": "^9.3.0",
+        "vanilla-masker": "^1.2.0",
+        "vux-blazy": "^1.6.4",
+        "vux-xscroll": "^3.1.10",
+        "x-photoswipe": "^4.1.3-rc.1"
+      },
+      "dependencies": {
+        "axios": {
+          "version": "0.15.3",
+          "resolved": "https://registry.npmjs.org/axios/-/axios-0.15.3.tgz",
+          "integrity": "sha1-LJ1jiy4ZGgjqHWzJiOrda6W9wFM=",
+          "requires": {
+            "follow-redirects": "1.0.0"
+          }
+        },
+        "big.js": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+          "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q=="
+        },
+        "debug": {
+          "version": "2.6.9",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz",
+          "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==",
+          "requires": {
+            "ms": "2.0.0"
+          }
+        },
+        "follow-redirects": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.0.0.tgz",
+          "integrity": "sha1-jjQpjL0uF28lTv/sdaHHjMhJ/Tc=",
+          "requires": {
+            "debug": "^2.2.0"
+          }
+        }
+      }
+    },
+    "vux-blazy": {
+      "version": "1.6.4",
+      "resolved": "https://registry.npmjs.org/vux-blazy/-/vux-blazy-1.6.4.tgz",
+      "integrity": "sha1-4zBz2QLgo4RO8aRjzOPKLgqrR78="
+    },
+    "vux-loader": {
+      "version": "1.2.9",
+      "resolved": "https://registry.npmjs.org/vux-loader/-/vux-loader-1.2.9.tgz",
+      "integrity": "sha512-AjaD08eyeflQgGwAVJjcwA245h2hTJgXR5pRfLajgmIeEXpbzXs41FnuKLig5U2EQpYyMJ7/f/2Rdlr7cYrIOA==",
+      "dev": true,
+      "requires": {
+        "acorn": "^5.1.2",
+        "compare-versions": "^3.1.0",
+        "cssnano": "^3.7.4",
+        "draftlog": "^1.0.10",
+        "escodegen": "^1.9.0",
+        "inline-manifest-webpack-plugin": "^3.0.1",
+        "js-yaml": "^3.6.1",
+        "less": "^2.7.1",
+        "loader-utils": "^0.2.15",
+        "node-cli-config": "^0.0.1",
+        "parse5": "^3.0.2",
+        "progress-bar-webpack-plugin": "^1.9.3",
+        "strip-comments": "^0.4.4",
+        "strip-css-comments": "^3.0.0",
+        "touch": "^1.0.0",
+        "underscore": "^1.8.3",
+        "uuid": "^3.0.1",
+        "webpack-merge": "^1.1.2",
+        "webpack-sources": "^0.1.2"
+      },
+      "dependencies": {
+        "acorn": {
+          "version": "5.7.3",
+          "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.3.tgz",
+          "integrity": "sha512-T/zvzYRfbVojPWahDsE5evJdHb3oJoQfFbsrKM7w5Zcs++Tr257tia3BmMP8XYVjp1S9RZXQMh7gao96BlqZOw==",
+          "dev": true
+        },
+        "ajv": {
+          "version": "4.11.8",
+          "resolved": "https://registry.npmjs.org/ajv/-/ajv-4.11.8.tgz",
+          "integrity": "sha1-gv+wKynmYq5TvcIK8VlHcGc5xTY=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "co": "^4.6.0",
+            "json-stable-stringify": "^1.0.1"
+          }
+        },
+        "ansi-styles": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
+          "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
+          "dev": true
+        },
+        "assert-plus": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz",
+          "integrity": "sha1-104bh+ev/A24qttwIfP+SBAasjQ=",
+          "dev": true,
+          "optional": true
+        },
+        "autoprefixer": {
+          "version": "6.7.7",
+          "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz",
+          "integrity": "sha1-Hb0cg1ZY41zj+ZhAmdsAWFx4IBQ=",
+          "dev": true,
+          "requires": {
+            "browserslist": "^1.7.6",
+            "caniuse-db": "^1.0.30000634",
+            "normalize-range": "^0.1.2",
+            "num2fraction": "^1.2.2",
+            "postcss": "^5.2.16",
+            "postcss-value-parser": "^3.2.3"
+          }
+        },
+        "aws-sign2": {
+          "version": "0.6.0",
+          "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.6.0.tgz",
+          "integrity": "sha1-FDQt0428yU0OW4fXY81jYSwOeU8=",
+          "dev": true,
+          "optional": true
+        },
+        "big.js": {
+          "version": "3.2.0",
+          "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz",
+          "integrity": "sha512-+hN/Zh2D08Mx65pZ/4g5bsmNiZUuChDiQfTUQ7qJr4/kuopCr88xZsAXv6mBoZEsUI4OuGHlX59qE94K2mMW8Q==",
+          "dev": true
+        },
+        "browserslist": {
+          "version": "1.7.7",
+          "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz",
+          "integrity": "sha1-C9dnBCWL6CmyOYu1Dkti0aFmsLk=",
+          "dev": true,
+          "requires": {
+            "caniuse-db": "^1.0.30000639",
+            "electron-to-chromium": "^1.2.7"
+          }
+        },
+        "caniuse-api": {
+          "version": "1.6.1",
+          "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz",
+          "integrity": "sha1-tTTnxzTE+B7F++isoq0kNUuWLGw=",
+          "dev": true,
+          "requires": {
+            "browserslist": "^1.3.6",
+            "caniuse-db": "^1.0.30000529",
+            "lodash.memoize": "^4.1.2",
+            "lodash.uniq": "^4.5.0"
+          }
+        },
+        "chalk": {
+          "version": "1.1.3",
+          "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
+          "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
+          "dev": true,
+          "requires": {
+            "ansi-styles": "^2.2.1",
+            "escape-string-regexp": "^1.0.2",
+            "has-ansi": "^2.0.0",
+            "strip-ansi": "^3.0.0",
+            "supports-color": "^2.0.0"
+          },
+          "dependencies": {
+            "supports-color": {
+              "version": "2.0.0",
+              "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
+              "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
+              "dev": true
+            }
+          }
+        },
+        "coa": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz",
+          "integrity": "sha1-qe8VNmDWqGqL3sAomlxoTSF0Mv0=",
+          "dev": true,
+          "requires": {
+            "q": "^1.1.2"
+          }
+        },
+        "cssnano": {
+          "version": "3.10.0",
+          "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz",
+          "integrity": "sha1-Tzj2zqK5sX+gFJDyPx3GjqZcHDg=",
+          "dev": true,
+          "requires": {
+            "autoprefixer": "^6.3.1",
+            "decamelize": "^1.1.2",
+            "defined": "^1.0.0",
+            "has": "^1.0.1",
+            "object-assign": "^4.0.1",
+            "postcss": "^5.0.14",
+            "postcss-calc": "^5.2.0",
+            "postcss-colormin": "^2.1.8",
+            "postcss-convert-values": "^2.3.4",
+            "postcss-discard-comments": "^2.0.4",
+            "postcss-discard-duplicates": "^2.0.1",
+            "postcss-discard-empty": "^2.0.1",
+            "postcss-discard-overridden": "^0.1.1",
+            "postcss-discard-unused": "^2.2.1",
+            "postcss-filter-plugins": "^2.0.0",
+            "postcss-merge-idents": "^2.1.5",
+            "postcss-merge-longhand": "^2.0.1",
+            "postcss-merge-rules": "^2.0.3",
+            "postcss-minify-font-values": "^1.0.2",
+            "postcss-minify-gradients": "^1.0.1",
+            "postcss-minify-params": "^1.0.4",
+            "postcss-minify-selectors": "^2.0.4",
+            "postcss-normalize-charset": "^1.1.0",
+            "postcss-normalize-url": "^3.0.7",
+            "postcss-ordered-values": "^2.1.0",
+            "postcss-reduce-idents": "^2.2.2",
+            "postcss-reduce-initial": "^1.0.0",
+            "postcss-reduce-transforms": "^1.0.3",
+            "postcss-svgo": "^2.1.1",
+            "postcss-unique-selectors": "^2.0.2",
+            "postcss-value-parser": "^3.2.3",
+            "postcss-zindex": "^2.0.1"
+          }
+        },
+        "csso": {
+          "version": "2.3.2",
+          "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz",
+          "integrity": "sha1-3dUsWHAz9J6Utx/FVWnyUuj/X4U=",
+          "dev": true,
+          "requires": {
+            "clap": "^1.0.9",
+            "source-map": "^0.5.3"
+          }
+        },
+        "esprima": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz",
+          "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=",
+          "dev": true
+        },
+        "form-data": {
+          "version": "2.1.4",
+          "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.1.4.tgz",
+          "integrity": "sha1-M8GDrPGTJ27KqYFDpp6Uv+4XUNE=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "asynckit": "^0.4.0",
+            "combined-stream": "^1.0.5",
+            "mime-types": "^2.1.12"
+          }
+        },
+        "har-schema": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-1.0.5.tgz",
+          "integrity": "sha1-0mMTX0MwfALGAq/I/pWXDAFRNp4=",
+          "dev": true,
+          "optional": true
+        },
+        "har-validator": {
+          "version": "4.2.1",
+          "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-4.2.1.tgz",
+          "integrity": "sha1-M0gdDxu/9gDdID11gSpqX7oALio=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "ajv": "^4.9.1",
+            "har-schema": "^1.0.5"
+          }
+        },
+        "has-flag": {
+          "version": "1.0.0",
+          "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz",
+          "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=",
+          "dev": true
+        },
+        "http-signature": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.1.1.tgz",
+          "integrity": "sha1-33LiZwZs0Kxn+3at+OE0qPvPkb8=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "assert-plus": "^0.2.0",
+            "jsprim": "^1.2.2",
+            "sshpk": "^1.7.0"
+          }
+        },
+        "is-svg": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz",
+          "integrity": "sha1-z2EJDaDZ77yrhyLeum8DIgjbsOk=",
+          "dev": true,
+          "requires": {
+            "html-comment-regex": "^1.1.0"
+          }
+        },
+        "json5": {
+          "version": "0.5.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz",
+          "integrity": "sha1-Hq3nrMASA0rYTiOWdn6tn6VJWCE=",
+          "dev": true
+        },
+        "less": {
+          "version": "2.7.3",
+          "resolved": "https://registry.npmjs.org/less/-/less-2.7.3.tgz",
+          "integrity": "sha512-KPdIJKWcEAb02TuJtaLrhue0krtRLoRoo7x6BNJIBelO00t/CCdJQUnHW5V34OnHMWzIktSalJxRO+FvytQlCQ==",
+          "dev": true,
+          "requires": {
+            "errno": "^0.1.1",
+            "graceful-fs": "^4.1.2",
+            "image-size": "~0.5.0",
+            "mime": "^1.2.11",
+            "mkdirp": "^0.5.0",
+            "promise": "^7.1.1",
+            "request": "2.81.0",
+            "source-map": "^0.5.3"
+          }
+        },
+        "loader-utils": {
+          "version": "0.2.17",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz",
+          "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=",
+          "dev": true,
+          "requires": {
+            "big.js": "^3.1.3",
+            "emojis-list": "^2.0.0",
+            "json5": "^0.5.0",
+            "object-assign": "^4.0.1"
+          }
+        },
+        "normalize-url": {
+          "version": "1.9.1",
+          "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz",
+          "integrity": "sha1-LMDWazHqIwNkWENuNiDYWVTGbDw=",
+          "dev": true,
+          "requires": {
+            "object-assign": "^4.0.1",
+            "prepend-http": "^1.0.0",
+            "query-string": "^4.1.0",
+            "sort-keys": "^1.0.0"
+          }
+        },
+        "oauth-sign": {
+          "version": "0.8.2",
+          "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.8.2.tgz",
+          "integrity": "sha1-Rqarfwrq2N6unsBWV4C31O/rnUM=",
+          "dev": true,
+          "optional": true
+        },
+        "performance-now": {
+          "version": "0.2.0",
+          "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-0.2.0.tgz",
+          "integrity": "sha1-M+8wxcd9TqIcWlOGnZG1bY8lVeU=",
+          "dev": true,
+          "optional": true
+        },
+        "postcss": {
+          "version": "5.2.18",
+          "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+          "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
+          "dev": true,
+          "requires": {
+            "chalk": "^1.1.3",
+            "js-base64": "^2.1.9",
+            "source-map": "^0.5.6",
+            "supports-color": "^3.2.3"
+          }
+        },
+        "postcss-calc": {
+          "version": "5.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz",
+          "integrity": "sha1-d7rnypKK2FcW4v2kLyYb98HWW14=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.2",
+            "postcss-message-helpers": "^2.0.0",
+            "reduce-css-calc": "^1.2.6"
+          }
+        },
+        "postcss-colormin": {
+          "version": "2.2.2",
+          "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz",
+          "integrity": "sha1-ZjFBfV8OkJo9fsJrJMio0eT5bks=",
+          "dev": true,
+          "requires": {
+            "colormin": "^1.0.5",
+            "postcss": "^5.0.13",
+            "postcss-value-parser": "^3.2.3"
+          }
+        },
+        "postcss-convert-values": {
+          "version": "2.6.1",
+          "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz",
+          "integrity": "sha1-u9hZPFwf0uPRwyK7kl3K6Nrk1i0=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.11",
+            "postcss-value-parser": "^3.1.2"
+          }
+        },
+        "postcss-discard-comments": {
+          "version": "2.0.4",
+          "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz",
+          "integrity": "sha1-vv6J+v1bPazlzM5Rt2uBUUvgDj0=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.14"
+          }
+        },
+        "postcss-discard-duplicates": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz",
+          "integrity": "sha1-uavye4isGIFYpesSq8riAmO5GTI=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4"
+          }
+        },
+        "postcss-discard-empty": {
+          "version": "2.1.0",
+          "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz",
+          "integrity": "sha1-0rS9nVztXr2Nyt52QMfXzX9PkrU=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.14"
+          }
+        },
+        "postcss-discard-overridden": {
+          "version": "0.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz",
+          "integrity": "sha1-ix6vVU9ob7KIzYdMVWZ7CqNmjVg=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.16"
+          }
+        },
+        "postcss-merge-longhand": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz",
+          "integrity": "sha1-I9kM0Sewp3mUkVMyc5A0oaTz1lg=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4"
+          }
+        },
+        "postcss-merge-rules": {
+          "version": "2.1.2",
+          "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz",
+          "integrity": "sha1-0d9d+qexrMO+VT8OnhDofGG19yE=",
+          "dev": true,
+          "requires": {
+            "browserslist": "^1.5.2",
+            "caniuse-api": "^1.5.2",
+            "postcss": "^5.0.4",
+            "postcss-selector-parser": "^2.2.2",
+            "vendors": "^1.0.0"
+          }
+        },
+        "postcss-minify-font-values": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz",
+          "integrity": "sha1-S1jttWZB66fIR0qzUmyv17vey2k=",
+          "dev": true,
+          "requires": {
+            "object-assign": "^4.0.1",
+            "postcss": "^5.0.4",
+            "postcss-value-parser": "^3.0.2"
+          }
+        },
+        "postcss-minify-gradients": {
+          "version": "1.0.5",
+          "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz",
+          "integrity": "sha1-Xb2hE3NwP4PPtKPqOIHY11/15uE=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.12",
+            "postcss-value-parser": "^3.3.0"
+          }
+        },
+        "postcss-minify-params": {
+          "version": "1.2.2",
+          "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz",
+          "integrity": "sha1-rSzgcTc7lDs9kwo/pZo1jCjW8fM=",
+          "dev": true,
+          "requires": {
+            "alphanum-sort": "^1.0.1",
+            "postcss": "^5.0.2",
+            "postcss-value-parser": "^3.0.2",
+            "uniqs": "^2.0.0"
+          }
+        },
+        "postcss-minify-selectors": {
+          "version": "2.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz",
+          "integrity": "sha1-ssapjAByz5G5MtGkllCBFDEXNb8=",
+          "dev": true,
+          "requires": {
+            "alphanum-sort": "^1.0.2",
+            "has": "^1.0.1",
+            "postcss": "^5.0.14",
+            "postcss-selector-parser": "^2.0.0"
+          }
+        },
+        "postcss-normalize-charset": {
+          "version": "1.1.1",
+          "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz",
+          "integrity": "sha1-757nEhLX/nWceO0WL2HtYrXLk/E=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.5"
+          }
+        },
+        "postcss-normalize-url": {
+          "version": "3.0.8",
+          "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz",
+          "integrity": "sha1-EI90s/L82viRov+j6kWSJ5/HgiI=",
+          "dev": true,
+          "requires": {
+            "is-absolute-url": "^2.0.0",
+            "normalize-url": "^1.4.0",
+            "postcss": "^5.0.14",
+            "postcss-value-parser": "^3.2.3"
+          }
+        },
+        "postcss-ordered-values": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz",
+          "integrity": "sha1-7sbCpntsQSqNsgQud/6NpD+VwR0=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4",
+            "postcss-value-parser": "^3.0.1"
+          }
+        },
+        "postcss-reduce-initial": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz",
+          "integrity": "sha1-aPgGlfBF0IJjqHmtJA343WT2ROo=",
+          "dev": true,
+          "requires": {
+            "postcss": "^5.0.4"
+          }
+        },
+        "postcss-reduce-transforms": {
+          "version": "1.0.4",
+          "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz",
+          "integrity": "sha1-/3b02CEkN7McKYpC0uFEQCV3GuE=",
+          "dev": true,
+          "requires": {
+            "has": "^1.0.1",
+            "postcss": "^5.0.8",
+            "postcss-value-parser": "^3.0.1"
+          }
+        },
+        "postcss-selector-parser": {
+          "version": "2.2.3",
+          "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz",
+          "integrity": "sha1-+UN3iGBsPJrO4W/+jYsWKX8nu5A=",
+          "dev": true,
+          "requires": {
+            "flatten": "^1.0.2",
+            "indexes-of": "^1.0.1",
+            "uniq": "^1.0.1"
+          }
+        },
+        "postcss-svgo": {
+          "version": "2.1.6",
+          "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz",
+          "integrity": "sha1-tt8YqmE7Zm4TPwittSGcJoSsEI0=",
+          "dev": true,
+          "requires": {
+            "is-svg": "^2.0.0",
+            "postcss": "^5.0.14",
+            "postcss-value-parser": "^3.2.3",
+            "svgo": "^0.7.0"
+          }
+        },
+        "postcss-unique-selectors": {
+          "version": "2.0.2",
+          "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz",
+          "integrity": "sha1-mB1X0p3csz57Hf4f1DuGSfkzyh0=",
+          "dev": true,
+          "requires": {
+            "alphanum-sort": "^1.0.1",
+            "postcss": "^5.0.4",
+            "uniqs": "^2.0.0"
+          }
+        },
+        "postcss-value-parser": {
+          "version": "3.3.1",
+          "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz",
+          "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==",
+          "dev": true
+        },
+        "punycode": {
+          "version": "1.4.1",
+          "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz",
+          "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=",
+          "dev": true,
+          "optional": true
+        },
+        "qs": {
+          "version": "6.4.0",
+          "resolved": "https://registry.npmjs.org/qs/-/qs-6.4.0.tgz",
+          "integrity": "sha1-E+JtKK1rD/qpExLNO/cI7TUecjM=",
+          "dev": true,
+          "optional": true
+        },
+        "request": {
+          "version": "2.81.0",
+          "resolved": "https://registry.npmjs.org/request/-/request-2.81.0.tgz",
+          "integrity": "sha1-xpKJRqDgbF+Nb4qTM0af/aRimKA=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "aws-sign2": "~0.6.0",
+            "aws4": "^1.2.1",
+            "caseless": "~0.12.0",
+            "combined-stream": "~1.0.5",
+            "extend": "~3.0.0",
+            "forever-agent": "~0.6.1",
+            "form-data": "~2.1.1",
+            "har-validator": "~4.2.1",
+            "hawk": "~3.1.3",
+            "http-signature": "~1.1.0",
+            "is-typedarray": "~1.0.0",
+            "isstream": "~0.1.2",
+            "json-stringify-safe": "~5.0.1",
+            "mime-types": "~2.1.7",
+            "oauth-sign": "~0.8.1",
+            "performance-now": "^0.2.0",
+            "qs": "~6.4.0",
+            "safe-buffer": "^5.0.1",
+            "stringstream": "~0.0.4",
+            "tough-cookie": "~2.3.0",
+            "tunnel-agent": "^0.6.0",
+            "uuid": "^3.0.0"
+          }
+        },
+        "source-list-map": {
+          "version": "0.1.8",
+          "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-0.1.8.tgz",
+          "integrity": "sha1-xVCyq1Qn9rPyH1r+rYjE9Vh7IQY=",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "3.2.3",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz",
+          "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=",
+          "dev": true,
+          "requires": {
+            "has-flag": "^1.0.0"
+          }
+        },
+        "svgo": {
+          "version": "0.7.2",
+          "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz",
+          "integrity": "sha1-n1dyQTlSE1xv779Ar+ak+qiLS7U=",
+          "dev": true,
+          "requires": {
+            "coa": "~1.0.1",
+            "colors": "~1.1.2",
+            "csso": "~2.3.1",
+            "js-yaml": "~3.7.0",
+            "mkdirp": "~0.5.1",
+            "sax": "~1.2.1",
+            "whet.extend": "~0.9.9"
+          },
+          "dependencies": {
+            "js-yaml": {
+              "version": "3.7.0",
+              "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz",
+              "integrity": "sha1-XJZ93YN6m/3KXy3oQlOr6KHAO4A=",
+              "dev": true,
+              "requires": {
+                "argparse": "^1.0.7",
+                "esprima": "^2.6.0"
+              }
+            }
+          }
+        },
+        "tough-cookie": {
+          "version": "2.3.4",
+          "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.3.4.tgz",
+          "integrity": "sha512-TZ6TTfI5NtZnuyy/Kecv+CnoROnyXn2DN97LontgQpCwsX2XyLYCC0ENhYkehSOwAp8rTQKc/NUIF7BkQ5rKLA==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "punycode": "^1.4.1"
+          }
+        },
+        "webpack-merge": {
+          "version": "1.1.2",
+          "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-1.1.2.tgz",
+          "integrity": "sha1-SfKmi6X9NLsTwzjBhMcCjZOENDI=",
+          "dev": true,
+          "requires": {
+            "lodash.clonedeep": "^4.5.0",
+            "lodash.differencewith": "^4.5.0",
+            "lodash.isequal": "^4.4.0",
+            "lodash.isfunction": "^3.0.8",
+            "lodash.isplainobject": "^4.0.6",
+            "lodash.mergewith": "^4.6.0",
+            "lodash.unionwith": "^4.6.0"
+          }
+        },
+        "webpack-sources": {
+          "version": "0.1.5",
+          "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-0.1.5.tgz",
+          "integrity": "sha1-qh86vw8NdNtxEcQOUAuE+WZkB1A=",
+          "dev": true,
+          "requires": {
+            "source-list-map": "~0.1.7",
+            "source-map": "~0.5.3"
+          }
+        }
+      }
+    },
+    "vux-xscroll": {
+      "version": "3.1.12",
+      "resolved": "https://registry.npmjs.org/vux-xscroll/-/vux-xscroll-3.1.12.tgz",
+      "integrity": "sha1-41Ln+dxfn+6SU9szHJZ91Ws7yVA="
+    },
+    "watchpack": {
+      "version": "1.7.5",
+      "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz",
+      "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==",
+      "dev": true,
+      "requires": {
+        "chokidar": "^3.4.1",
+        "graceful-fs": "^4.1.2",
+        "neo-async": "^2.5.0",
+        "watchpack-chokidar2": "^2.0.1"
+      }
+    },
+    "watchpack-chokidar2": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz",
+      "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "chokidar": "^2.1.8"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "dev": true,
+              "optional": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+          "dev": true,
+          "optional": true
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.1",
+            "braces": "^2.3.2",
+            "fsevents": "^1.2.7",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.3",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "normalize-path": "^3.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.2.1",
+            "upath": "^1.1.1"
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://registry.npm.taobao.org/fsevents/download/fsevents-1.2.13.tgz?cache=0&sync_timestamp=1612536477949&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Ffsevents%2Fdownload%2Ffsevents-1.2.13.tgz",
+          "integrity": "sha1-8yXLBFVZJCi88Rs4M3DvcOO/zDg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "bindings": "^1.5.0",
+            "nan": "^2.12.1"
+          }
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "binary-extensions": "^1.0.0"
+          }
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          }
+        }
+      }
+    },
+    "wbuf": {
+      "version": "1.7.3",
+      "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz",
+      "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==",
+      "dev": true,
+      "requires": {
+        "minimalistic-assert": "^1.0.0"
+      }
+    },
+    "webpack": {
+      "version": "4.46.0",
+      "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.46.0.tgz",
+      "integrity": "sha512-6jJuJjg8znb/xRItk7bkT0+Q7AHCYjjFnvKIWQPkNIOyRqoCGvkOs0ipeQzrqz4l5FtN5ZI/ukEHroeX/o1/5Q==",
+      "dev": true,
+      "requires": {
+        "@webassemblyjs/ast": "1.9.0",
+        "@webassemblyjs/helper-module-context": "1.9.0",
+        "@webassemblyjs/wasm-edit": "1.9.0",
+        "@webassemblyjs/wasm-parser": "1.9.0",
+        "acorn": "^6.4.1",
+        "ajv": "^6.10.2",
+        "ajv-keywords": "^3.4.1",
+        "chrome-trace-event": "^1.0.2",
+        "enhanced-resolve": "^4.5.0",
+        "eslint-scope": "^4.0.3",
+        "json-parse-better-errors": "^1.0.2",
+        "loader-runner": "^2.4.0",
+        "loader-utils": "^1.2.3",
+        "memory-fs": "^0.4.1",
+        "micromatch": "^3.1.10",
+        "mkdirp": "^0.5.3",
+        "neo-async": "^2.6.1",
+        "node-libs-browser": "^2.2.1",
+        "schema-utils": "^1.0.0",
+        "tapable": "^1.1.3",
+        "terser-webpack-plugin": "^1.4.3",
+        "watchpack": "^1.7.4",
+        "webpack-sources": "^1.4.1"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "1.2.5",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
+          "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==",
+          "dev": true
+        },
+        "mkdirp": {
+          "version": "0.5.5",
+          "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
+          "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.5"
+          }
+        }
+      }
+    },
+    "webpack-cli": {
+      "version": "3.3.12",
+      "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.12.tgz",
+      "integrity": "sha512-NVWBaz9k839ZH/sinurM+HcDvJOTXwSjYp1ku+5XKeOC03z8v5QitnK/x+lAxGXFyhdayoIf/GOpv85z3/xPag==",
+      "dev": true,
+      "requires": {
+        "chalk": "^2.4.2",
+        "cross-spawn": "^6.0.5",
+        "enhanced-resolve": "^4.1.1",
+        "findup-sync": "^3.0.0",
+        "global-modules": "^2.0.0",
+        "import-local": "^2.0.0",
+        "interpret": "^1.4.0",
+        "loader-utils": "^1.4.0",
+        "supports-color": "^6.1.0",
+        "v8-compile-cache": "^2.1.1",
+        "yargs": "^13.3.2"
+      },
+      "dependencies": {
+        "emojis-list": {
+          "version": "3.0.0",
+          "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz",
+          "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==",
+          "dev": true
+        },
+        "json5": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
+          "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==",
+          "dev": true,
+          "requires": {
+            "minimist": "^1.2.0"
+          }
+        },
+        "loader-utils": {
+          "version": "1.4.0",
+          "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz",
+          "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==",
+          "dev": true,
+          "requires": {
+            "big.js": "^5.2.2",
+            "emojis-list": "^3.0.0",
+            "json5": "^1.0.1"
+          }
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "yargs": {
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "webpack-dev-middleware": {
+      "version": "3.7.3",
+      "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.3.tgz",
+      "integrity": "sha512-djelc/zGiz9nZj/U7PTBi2ViorGJXEWo/3ltkPbDyxCXhhEXkW0ce99falaok4TPj+AsxLiXJR0EBOb0zh9fKQ==",
+      "dev": true,
+      "requires": {
+        "memory-fs": "^0.4.1",
+        "mime": "^2.4.4",
+        "mkdirp": "^0.5.1",
+        "range-parser": "^1.2.1",
+        "webpack-log": "^2.0.0"
+      },
+      "dependencies": {
+        "mime": {
+          "version": "2.5.2",
+          "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz",
+          "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==",
+          "dev": true
+        }
+      }
+    },
+    "webpack-dev-server": {
+      "version": "3.11.2",
+      "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.2.tgz",
+      "integrity": "sha512-A80BkuHRQfCiNtGBS1EMf2ChTUs0x+B3wGDFmOeT4rmJOHhHTCH2naNxIHhmkr0/UillP4U3yeIyv1pNp+QDLQ==",
+      "dev": true,
+      "requires": {
+        "ansi-html": "0.0.7",
+        "bonjour": "^3.5.0",
+        "chokidar": "^2.1.8",
+        "compression": "^1.7.4",
+        "connect-history-api-fallback": "^1.6.0",
+        "debug": "^4.1.1",
+        "del": "^4.1.1",
+        "express": "^4.17.1",
+        "html-entities": "^1.3.1",
+        "http-proxy-middleware": "0.19.1",
+        "import-local": "^2.0.0",
+        "internal-ip": "^4.3.0",
+        "ip": "^1.1.5",
+        "is-absolute-url": "^3.0.3",
+        "killable": "^1.0.1",
+        "loglevel": "^1.6.8",
+        "opn": "^5.5.0",
+        "p-retry": "^3.0.1",
+        "portfinder": "^1.0.26",
+        "schema-utils": "^1.0.0",
+        "selfsigned": "^1.10.8",
+        "semver": "^6.3.0",
+        "serve-index": "^1.9.1",
+        "sockjs": "^0.3.21",
+        "sockjs-client": "^1.5.0",
+        "spdy": "^4.0.2",
+        "strip-ansi": "^3.0.1",
+        "supports-color": "^6.1.0",
+        "url": "^0.11.0",
+        "webpack-dev-middleware": "^3.7.2",
+        "webpack-log": "^2.0.0",
+        "ws": "^6.2.1",
+        "yargs": "^13.3.2"
+      },
+      "dependencies": {
+        "anymatch": {
+          "version": "2.0.0",
+          "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz",
+          "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==",
+          "dev": true,
+          "requires": {
+            "micromatch": "^3.1.4",
+            "normalize-path": "^2.1.1"
+          },
+          "dependencies": {
+            "normalize-path": {
+              "version": "2.1.1",
+              "resolved": "https://registry.npm.taobao.org/normalize-path/download/normalize-path-2.1.1.tgz",
+              "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
+              "dev": true,
+              "requires": {
+                "remove-trailing-separator": "^1.0.1"
+              }
+            }
+          }
+        },
+        "binary-extensions": {
+          "version": "1.13.1",
+          "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz",
+          "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==",
+          "dev": true
+        },
+        "chokidar": {
+          "version": "2.1.8",
+          "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz",
+          "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==",
+          "dev": true,
+          "requires": {
+            "anymatch": "^2.0.0",
+            "async-each": "^1.0.1",
+            "braces": "^2.3.2",
+            "fsevents": "^1.2.7",
+            "glob-parent": "^3.1.0",
+            "inherits": "^2.0.3",
+            "is-binary-path": "^1.0.0",
+            "is-glob": "^4.0.0",
+            "normalize-path": "^3.0.0",
+            "path-is-absolute": "^1.0.0",
+            "readdirp": "^2.2.1",
+            "upath": "^1.1.1"
+          }
+        },
+        "debug": {
+          "version": "4.3.1",
+          "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
+          "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
+          "dev": true,
+          "requires": {
+            "ms": "2.1.2"
+          }
+        },
+        "fsevents": {
+          "version": "1.2.13",
+          "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz",
+          "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==",
+          "dev": true,
+          "optional": true,
+          "requires": {
+            "bindings": "^1.5.0",
+            "nan": "^2.12.1"
+          }
+        },
+        "is-absolute-url": {
+          "version": "3.0.3",
+          "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz",
+          "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==",
+          "dev": true
+        },
+        "is-binary-path": {
+          "version": "1.0.1",
+          "resolved": "https://registry.npm.taobao.org/is-binary-path/download/is-binary-path-1.0.1.tgz",
+          "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
+          "dev": true,
+          "requires": {
+            "binary-extensions": "^1.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
+        },
+        "readdirp": {
+          "version": "2.2.1",
+          "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz",
+          "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==",
+          "dev": true,
+          "requires": {
+            "graceful-fs": "^4.1.11",
+            "micromatch": "^3.1.10",
+            "readable-stream": "^2.0.2"
+          }
+        },
+        "semver": {
+          "version": "6.3.0",
+          "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
+          "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
+          "dev": true
+        },
+        "supports-color": {
+          "version": "6.1.0",
+          "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz",
+          "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==",
+          "dev": true,
+          "requires": {
+            "has-flag": "^3.0.0"
+          }
+        },
+        "yargs": {
+          "version": "13.3.2",
+          "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
+          "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+          "dev": true,
+          "requires": {
+            "cliui": "^5.0.0",
+            "find-up": "^3.0.0",
+            "get-caller-file": "^2.0.1",
+            "require-directory": "^2.1.1",
+            "require-main-filename": "^2.0.0",
+            "set-blocking": "^2.0.0",
+            "string-width": "^3.0.0",
+            "which-module": "^2.0.0",
+            "y18n": "^4.0.0",
+            "yargs-parser": "^13.1.2"
+          }
+        },
+        "yargs-parser": {
+          "version": "13.1.2",
+          "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
+          "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+          "dev": true,
+          "requires": {
+            "camelcase": "^5.0.0",
+            "decamelize": "^1.2.0"
+          }
+        }
+      }
+    },
+    "webpack-log": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz",
+      "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==",
+      "dev": true,
+      "requires": {
+        "ansi-colors": "^3.0.0",
+        "uuid": "^3.3.2"
+      }
+    },
+    "webpack-merge": {
+      "version": "4.2.1",
+      "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.1.tgz",
+      "integrity": "sha512-4p8WQyS98bUJcCvFMbdGZyZmsKuWjWVnVHnAS3FFg0HDaRVrPbkivx2RYCre8UiemD67RsiFFLfn4JhLAin8Vw==",
+      "dev": true,
+      "requires": {
+        "lodash": "^4.17.5"
+      }
+    },
+    "webpack-sources": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz",
+      "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==",
+      "dev": true,
+      "requires": {
+        "source-list-map": "^2.0.0",
+        "source-map": "~0.6.1"
+      },
+      "dependencies": {
+        "source-map": {
+          "version": "0.6.1",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+          "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+          "dev": true
+        }
+      }
+    },
+    "websocket-driver": {
+      "version": "0.7.4",
+      "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz",
+      "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==",
+      "dev": true,
+      "requires": {
+        "http-parser-js": ">=0.5.1",
+        "safe-buffer": ">=5.1.0",
+        "websocket-extensions": ">=0.1.1"
+      }
+    },
+    "websocket-extensions": {
+      "version": "0.1.4",
+      "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz",
+      "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==",
+      "dev": true
+    },
+    "webwackify": {
+      "version": "0.1.6",
+      "resolved": "https://registry.npmjs.org/webwackify/-/webwackify-0.1.6.tgz",
+      "integrity": "sha512-pGcw1T3HpNnM/UTRQqqRkkkzythSLts05mB+7Gr00B+0VbL0m39dFL5g20rSIEUt9Wrpw+/8k+snxRlUFHhcqA=="
+    },
+    "whet.extend": {
+      "version": "0.9.9",
+      "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz",
+      "integrity": "sha1-+HfVv2SMl+WqVC+twW1qJZucEaE=",
+      "dev": true
+    },
+    "which": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+      "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+      "requires": {
+        "isexe": "^2.0.0"
+      }
+    },
+    "which-module": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
+      "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho="
+    },
+    "wordwrap": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+      "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=",
+      "dev": true
+    },
+    "worker-farm": {
+      "version": "1.7.0",
+      "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz",
+      "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==",
+      "dev": true,
+      "requires": {
+        "errno": "~0.1.7"
+      }
+    },
+    "wrap-ansi": {
+      "version": "5.1.0",
+      "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+      "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+      "requires": {
+        "ansi-styles": "^3.2.0",
+        "string-width": "^3.0.0",
+        "strip-ansi": "^5.0.0"
+      },
+      "dependencies": {
+        "ansi-regex": {
+          "version": "4.1.0",
+          "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
+          "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg=="
+        },
+        "strip-ansi": {
+          "version": "5.2.0",
+          "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+          "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+          "requires": {
+            "ansi-regex": "^4.1.0"
+          }
+        }
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "ws": {
+      "version": "6.2.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.1.tgz",
+      "integrity": "sha512-GIyAXC2cB7LjvpgMt9EKS2ldqr0MTrORaleiOno6TweZ6r3TKtoFQWay/2PceJ3RuBasOHzXNn5Lrw1X0bEjqA==",
+      "dev": true,
+      "requires": {
+        "async-limiter": "~1.0.0"
+      }
+    },
+    "x-photoswipe": {
+      "version": "4.1.3-rc.1",
+      "resolved": "https://registry.npmjs.org/x-photoswipe/-/x-photoswipe-4.1.3-rc.1.tgz",
+      "integrity": "sha512-ok+x+1ufLuBT9dfM5P2FcRefwNniQoVwwfBhGa5gLn8NrSTzNah2p4IElMLwzXuKLtyH4yb+z3IsdDef3FOL5A=="
+    },
+    "xhr": {
+      "version": "2.4.0",
+      "resolved": "https://registry.npmjs.org/xhr/-/xhr-2.4.0.tgz",
+      "integrity": "sha1-4W5mpF+GmGHu76tBbV7/ci3ECZM=",
+      "requires": {
+        "global": "~4.3.0",
+        "is-function": "^1.0.1",
+        "parse-headers": "^2.0.0",
+        "xtend": "^4.0.0"
+      }
+    },
+    "xtend": {
+      "version": "4.0.2",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz",
+      "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ=="
+    },
+    "y18n": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz",
+      "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w=="
+    },
+    "yallist": {
+      "version": "3.0.3",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz",
+      "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==",
+      "dev": true
+    },
+    "yargs": {
+      "version": "13.2.4",
+      "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.2.4.tgz",
+      "integrity": "sha512-HG/DWAJa1PAnHT9JAhNa8AbAv3FPaiLzioSjCcmuXXhP8MlpHO5vwls4g4j6n30Z74GVQj8Xa62dWVx1QCGklg==",
+      "requires": {
+        "cliui": "^5.0.0",
+        "find-up": "^3.0.0",
+        "get-caller-file": "^2.0.1",
+        "os-locale": "^3.1.0",
+        "require-directory": "^2.1.1",
+        "require-main-filename": "^2.0.0",
+        "set-blocking": "^2.0.0",
+        "string-width": "^3.0.0",
+        "which-module": "^2.0.0",
+        "y18n": "^4.0.0",
+        "yargs-parser": "^13.1.0"
+      }
+    },
+    "yargs-parser": {
+      "version": "13.1.1",
+      "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz",
+      "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==",
+      "requires": {
+        "camelcase": "^5.0.0",
+        "decamelize": "^1.2.0"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..107a017
--- /dev/null
+++ b/package.json
@@ -0,0 +1,69 @@
+{
+  "name": "scene_staging",
+  "version": "1.0.0",
+  "description": "停车场",
+  "main": "webpack.common.js",
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1",
+    "build": "webpack --env.production --config webpack.prod.js",
+    "dev": "webpack-dev-server --open --config webpack.dev.js"
+  },
+  "keywords": [],
+  "author": "xq",
+  "license": "ISC",
+  "devDependencies": {
+    "@babel/core": "^7.3.4",
+    "@babel/preset-env": "^7.3.4",
+    "@vue/babel-helper-vue-jsx-merge-props": "^1.0.0-beta.3",
+    "@vue/babel-preset-jsx": "^1.0.0-beta.3",
+    "autoprefixer": "^9.4.10",
+    "babel-loader": "^8.0.0-beta.0",
+    "babel-plugin-dynamic-import-webpack": "^1.1.0",
+    "babel-plugin-import": "^1.12.0",
+    "clean-webpack-plugin": "^1.0.1",
+    "copy-webpack-plugin": "^5.0.2",
+    "css-loader": "^2.1.0",
+    "cssnano": "^4.1.10",
+    "file-loader": "^3.0.1",
+    "html-webpack-plugin": "^3.2.0",
+    "less": "^3.9.0",
+    "less-loader": "^4.1.0",
+    "mini-css-extract-plugin": "^0.5.0",
+    "optimize-css-assets-webpack-plugin": "^5.0.1",
+    "postcss-loader": "^3.0.0",
+    "postcss-pxtorem": "^4.0.1",
+    "style-loader": "^0.23.1",
+    "style-resources-loader": "^1.2.1",
+    "uglifyjs-webpack-plugin": "^2.1.2",
+    "url-loader": "^1.1.2",
+    "vue-loader": "^15.7.0",
+    "vue-template-compiler": "^2.6.10",
+    "vux-loader": "^1.2.9",
+    "webpack": "^4.46.0",
+    "webpack-cli": "^3.3.12",
+    "webpack-dev-server": "^3.11.2",
+    "webpack-merge": "^4.2.1"
+  },
+  "dependencies": {
+    "axios": "^0.18.0",
+    "blueimp-md5": "^2.11.1",
+    "element-ui": "^2.13.0",
+    "exif-js": "^2.3.0",
+    "html2canvas": "^1.0.0-rc.3",
+    "moment": "^2.29.1",
+    "qrcode": "^1.4.1",
+    "vant": "^2.12.19",
+    "vue": "^2.6.10",
+    "vue-i18n": "^8.14.0",
+    "vue-router": "^3.0.2",
+    "vue-video-player": "^5.0.2",
+    "vuex": "^3.1.0",
+    "vuex-persistedstate": "^2.5.4",
+    "vux": "^2.9.2"
+  },
+  "browserslist": [
+    "last 1 version",
+    "> 1%",
+    "IE 10"
+  ]
+}
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 0000000..4177fb7
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,11 @@
+module.exports = {
+    plugins: {
+      'autoprefixer': {},
+      //默认不开启rem配置
+      'postcss-pxtorem': {
+        rootValue: 50,
+        mediaQuery:true, //允许在媒体查询中转换px
+        propList: ['*'],//px 大写 Px 就不会被转换
+      }
+    }
+  }
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
new file mode 100644
index 0000000..169aaa3
--- /dev/null
+++ b/public/index.html
@@ -0,0 +1,101 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-13 18:10:18
+ * @LastEditors: wen丶
+ * @LastEditTime: 2021-01-27 10:26:28
+ * @Description:
+ -->
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+    <meta charset="UTF-8">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no,maximum-scale=1.0">
+    <meta http-equiv="X-UA-Compatible" content="ie=edge,chrome=1">
+    <title>签约</title>
+    <link rel="stylesheet" href="https://at.alicdn.com/t/font_1351259_9f4tnx487aa.css">
+    <link rel="stylesheet" href="https://at.alicdn.com/t/font_772985_eb4yiklmyk.css">
+    <link rel="stylesheet" href="//at.alicdn.com/t/font_1351259_2bjudp60ygk.css">
+    <link rel="stylesheet" href="//at.alicdn.com/t/font_1351259_rg7lh167259.css">
+    <link rel="stylesheet" href="//at.alicdn.com/t/font_1351259_se186hqx3s.css">
+    <link rel="stylesheet" href="//at.alicdn.com/t/font_2456081_vidjr15rrg.css">
+    <script src="https://res.wx.qq.com/open/js/jweixin-1.4.0.js"></script>
+    <script>
+        if (navigator.userAgent.indexOf('AlipayClient') > -1 || navigator.userAgent.indexOf('mPaaSClient') > -1) {
+            document.writeln('<script src="https://appx/web-view.min.js"' + '>' + '<' + '/' + 'script>');
+        }
+    </script>
+    <script>
+        (function (doc, win) {
+            var docEl = doc.documentElement,
+                isIOS = navigator.userAgent.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/),
+                dpr = isIOS ? Math.min(win.devicePixelRatio, 3) : 1,
+                dpr = window.top === window.self ? dpr : 1, //被iframe引用时,禁止缩放
+                dpr = 1,
+                scale = 1 / dpr,
+                resizeEvt = 'orientationchange' in window ? 'orientationchange' : 'resize';
+            docEl.dataset.dpr = dpr;
+            var metaEl = doc.createElement('meta');
+            metaEl.name = 'viewport';
+            metaEl.content = 'initial-scale=' + scale + ',maximum-scale=' + scale + ', minimum-scale=' + scale;
+            docEl.firstElementChild.appendChild(metaEl);
+            var recalc = function () {
+                var width = docEl.clientWidth;
+                if (width / dpr > 750) {
+                    width = 750 * dpr;
+                }
+                // 乘以50,px : rem = 50 : 1
+                docEl.style.fontSize = 100 * (width / 750) + 'px';
+            };
+            recalc();
+            if (!doc.addEventListener) return;
+            win.addEventListener(resizeEvt, recalc, false);
+        })(document, window);
+        (function (m, ei, q, i, a, j, s) {
+        m[i] = m[i] || function () {
+                (m[i].a = m[i].a || []).push(arguments)
+            };
+        j = ei.createElement(q),
+            s = ei.getElementsByTagName(q)[0];
+        j.async = true;
+        j.charset = 'UTF-8';
+        j.src = 'https://static.meiqia.com/dist/meiqia.js?_=t';
+        s.parentNode.insertBefore(j, s);
+    })(window, document, 'script', '_MEIQIA');
+    _MEIQIA('entId', 119312);
+    _MEIQIA('withoutBtn');
+    </script>
+</head>
+
+<body>
+
+    <body>
+        <div id="app"></div>
+        <script src="static/agreement5.js"></script>
+        <!-- cdn 生产环境打开注释!!!  -->
+        <!-- icon 图标 -->
+        <!-- 移动端调试用需要时解开 -->
+        <script src="https://cdn.bootcdn.net/ajax/libs/vConsole/3.3.4/vconsole.min.js"></script>
+        <script>
+            var vConsole = new VConsole();
+        </script>
+        <script src="https://at.alicdn.com/t/font_1351259_odonw5vycnt.js"></script>
+        <script src="https://at.alicdn.com/t/font_1351259_9f4tnx487aa.js"></script>
+        <script src="https://at.alicdn.com/t/font_1351259_se186hqx3s.js"></script>
+        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.echarts.common.min.js></script>
+        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.axios.min.js></script>
+        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue.js></script>
+        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue-router.js></script>
+        <script src=https://ins-js.oss-accelerate.aliyuncs.com/js/local.vue.min.js></script>
+        <script src=https://res.wx.qq.com/open/js/jweixin-1.4.0.js></script>
+        <script src="https://unpkg.com/vue/dist/vue.js"></script>
+        <script src='https://at.alicdn.com/t/font_2456081_vidjr15rrg.js'></script>
+        <script src="https://res2.wx.qq.com/open/js/jweixin-1.6.0.js "></script>
+        <script>
+            Vue.prototype.$t = ()=>{};
+        </script>
+        <!-- <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> -->
+    </body>
+</body>
+
+</html>
diff --git a/src/App.vue b/src/App.vue
new file mode 100644
index 0000000..5e81c26
--- /dev/null
+++ b/src/App.vue
@@ -0,0 +1,55 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-19 15:23:17
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-22 16:09:23
+ * @Description:
+ -->
+<template>
+    <div class="h-100">
+        <router-view></router-view>
+        <van-loading type="spinner" color="white" class="app-loading" v-show="AppLoading"></van-loading>
+    </div>
+</template>
+
+<script>
+    import {
+        mapState,
+        mapActions,
+    } from 'vuex';
+
+    export default {
+        data() {
+            return {
+
+            }
+        },
+        computed:{
+            ...mapState(['AppLoading'])
+        },
+        methods: {
+            ...mapActions(['getArea']),
+        },
+        created() {
+            this.getArea();
+        },
+    }
+</script>
+
+<style lang="less" scoped>
+    .h-100 {
+        height: 100%;
+    }
+
+
+    .app-loading {
+        position: fixed;
+        top: 50%;
+        left: 50%;
+        transform: translate(-50%, -50%);
+        z-index: @zIndex-999;
+        background-color: rgba(0, 0, 0, 0.5);
+        padding: 30px;
+        border-radius: 4px;
+    }
+</style>
diff --git a/src/api/config.js b/src/api/config.js
new file mode 100644
index 0000000..63edf46
--- /dev/null
+++ b/src/api/config.js
@@ -0,0 +1,123 @@
+/*
+ * @Descripttion: 配置axios
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-03-30 09:07:29
+ * @LastEditTime: 2021-01-07 10:32:33
+ */
+import axios from 'axios';
+import md5 from 'blueimp-md5';
+import Store from "@/store/index";
+import router from '@/router/index';
+import { Notify} from 'vant';
+import {SET_APP_LOADING,SET_USER_INFO,SET_SESSION_ID} from '@/store/mutations-types';
+
+
+function createSign(params){
+    if(params.jttechSign){
+        delete params.jttechSign;
+    }
+    let keys = Object.keys(params),
+        paramsSign = '';
+    keys.forEach(key=>{
+        let val = params[key];
+        if(typeof val ==='string'){
+            if(val.trim().length>0){
+                paramsSign +=val;
+            }else{
+                delete params[key]
+            }
+        }else if(typeof val === 'number' && !isNaN(val)){
+            paramsSign +=val;
+        }else if(Array.isArray(val) && !val.length){
+            delete params[key]
+        }else if(val===null){
+            delete params[key]
+        }
+
+    })
+    let sessionId = Store.state.sessionId || '';
+    params.jttechSign = md5(paramsSign + sessionId);
+    return params;
+}
+
+
+function deleteCatchInfo(){
+    localStorage.removeItem('park_user_account')
+    localStorage.removeItem('park_user_pwd')
+    Store.commit(SET_USER_INFO,{})
+    Store.commit(SET_SESSION_ID,{})
+}
+
+// 错误处理
+const resolveError = {
+    999(message){
+        Notify(message || '网络异常,请稍后重试');
+    },
+    // 90040006
+    99(){
+        deleteCatchInfo()
+        Notify('登录超时,请重新登录!');
+        router.push('/');
+    },
+    90040006(message){
+        deleteCatchInfo()
+        Notify(message || '登录超时,请重新登录!');
+        router.push({
+            path:'/',
+        });
+        
+    },
+    // 密码错误
+    9990027(message){
+        Notify(message);
+        deleteCatchInfo()
+    },
+    // 密码错误
+    1340004(message){
+        Notify(message);
+        deleteCatchInfo()
+        router.push('/');
+    }
+}
+
+const $http = axios.create({
+    baseURL: '/lism',
+    timeout: 90000,
+    headers: {
+        'Content-Type': 'application/json; charset=UTF-8'
+    }
+})
+// 添加请求拦截器
+$http.interceptors.request.use(config => {
+    if(typeof config.data ==='undefined'){
+        config.data = {};
+    }
+    config.data = createSign(config.data);
+    if(!config.data.apploading){
+        Store.commit(SET_APP_LOADING,true);
+    }
+    return config;
+}, error => {
+    Store.commit(SET_APP_LOADING,false);
+    return Promise.reject(error);
+})
+
+// 添加响应拦截器
+$http.interceptors.response.use(response => {
+    Store.commit(SET_APP_LOADING,false);
+    return response.data;
+}, error => {
+    Store.commit(SET_APP_LOADING,false);
+    let data = error.response.data;
+
+    let code = Math.abs(data.errorCode || data.status);
+    if(typeof resolveError[code] ==='function'){
+        resolveError[code](data.errMsg || data.message);
+    }else{
+        Notify(data.errMsg || data.message || '系统错误');
+    }
+    return Promise.reject(data);
+})
+
+export default $http;
diff --git a/src/api/index.js b/src/api/index.js
new file mode 100644
index 0000000..878bb5f
--- /dev/null
+++ b/src/api/index.js
@@ -0,0 +1,65 @@
+/*
+ * @Descripttion:该文件用于组织服务器请求,添加请求函数时注意 函数重名!
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-03-30 08:27:46
+ * @LastEditTime: 2021-01-04 09:34:57
+ */
+
+import $http from './config';
+// import oldapi from './oldapi';
+
+
+const api = {
+    //绑卡初始化
+    bankCardInit(data) {  
+        return $http.post('/bankCard/init', data);
+    },
+      //银行卡ocr
+      bankCardOcr(data) {  
+        return $http.post('/bankCard/ocr', data);
+    },
+      //绑卡验证码
+      bankCardAuthMsg(data) {  
+        return $http.post('/bankCard/authMsg', data);
+    },
+
+      //绑卡签约
+      bankCardAgree(data) {  
+        return $http.post('/bankCard/agreePayAuth', data);
+    },
+
+    //绑卡人脸识别
+    faceIdUrl(data) {  
+        return $http.post('/faceId/url', data);
+    },
+     //人脸识别结果
+     faceIdResult(data) {  
+        return $http.post('/faceId/result', data);
+    },
+
+     //签约信息
+     signContractInfo(data) {  
+        return $http.post('/signContract/contractInf', data);
+    },
+      //发送授权验证码
+      sendVerifyCode(data) {  
+            return $http.post('/signContract/sendVerifyCode', data);
+      },
+        //校验授权码
+        checkVerifyCode(data) {  
+            return $http.post('/signContract/checkVerifyCode', data);
+      },
+         //签署3号合同
+         signContract(data) {  
+            return $http.post('/signContract/signContract3', data);
+      },
+    // ========================================
+    
+}
+
+export default {
+    install(Vue, opt) {
+        Vue.prototype.$api = api;
+    }
+}
diff --git a/src/assets/img/bg.png b/src/assets/img/bg.png
new file mode 100644
index 0000000..3100421
--- /dev/null
+++ b/src/assets/img/bg.png
Binary files differ
diff --git a/src/assets/img/bg_top.png b/src/assets/img/bg_top.png
new file mode 100644
index 0000000..2fbcfe3
--- /dev/null
+++ b/src/assets/img/bg_top.png
Binary files differ
diff --git a/src/assets/img/detailpark.png b/src/assets/img/detailpark.png
new file mode 100644
index 0000000..fc9a4a3
--- /dev/null
+++ b/src/assets/img/detailpark.png
Binary files differ
diff --git a/src/assets/img/failstatus.png b/src/assets/img/failstatus.png
new file mode 100644
index 0000000..0647a34
--- /dev/null
+++ b/src/assets/img/failstatus.png
Binary files differ
diff --git a/src/assets/img/img_fail.png b/src/assets/img/img_fail.png
new file mode 100644
index 0000000..52e6176
--- /dev/null
+++ b/src/assets/img/img_fail.png
Binary files differ
diff --git a/src/assets/img/img_fail1.png b/src/assets/img/img_fail1.png
new file mode 100644
index 0000000..df1e31f
--- /dev/null
+++ b/src/assets/img/img_fail1.png
Binary files differ
diff --git a/src/assets/img/img_success.png b/src/assets/img/img_success.png
new file mode 100644
index 0000000..7adf108
--- /dev/null
+++ b/src/assets/img/img_success.png
Binary files differ
diff --git a/src/assets/img/minebg.png b/src/assets/img/minebg.png
new file mode 100644
index 0000000..b509761
--- /dev/null
+++ b/src/assets/img/minebg.png
Binary files differ
diff --git a/src/assets/img/nodata.png b/src/assets/img/nodata.png
new file mode 100644
index 0000000..9ea398f
--- /dev/null
+++ b/src/assets/img/nodata.png
Binary files differ
diff --git a/src/assets/img/regbg.png b/src/assets/img/regbg.png
new file mode 100644
index 0000000..f0ffbae
--- /dev/null
+++ b/src/assets/img/regbg.png
Binary files differ
diff --git a/src/assets/img/success.png b/src/assets/img/success.png
new file mode 100644
index 0000000..b766a05
--- /dev/null
+++ b/src/assets/img/success.png
Binary files differ
diff --git a/src/assets/img/successw.png b/src/assets/img/successw.png
new file mode 100644
index 0000000..0d616b8
--- /dev/null
+++ b/src/assets/img/successw.png
Binary files differ
diff --git a/src/components/vant_register.js b/src/components/vant_register.js
new file mode 100644
index 0000000..daf80c9
--- /dev/null
+++ b/src/components/vant_register.js
@@ -0,0 +1,90 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-15 10:40:29
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:38:20
+ * @Description: 注册want组件
+ */
+import {
+    Button,
+    Swipe,
+    SwipeItem,
+    Dialog,
+    Checkbox,
+    CheckboxGroup,
+    Search,
+    Icon,
+    NumberKeyboard,
+    Notify,
+    Loading,
+    Popup,
+    Picker,
+    Tabbar,
+    TabbarItem,
+    NavBar,
+    Cell,
+    CellGroup,
+    RadioGroup,
+    Radio,
+    Area,
+    Field,
+    Collapse,
+    CollapseItem,
+    DatetimePicker,
+    Toast,
+    List,
+    Switch,ActionSheet,Grid, GridItem
+} from 'vant';
+
+let arr = [
+    Button,
+    Swipe,
+    SwipeItem,
+    Dialog,
+    Checkbox,
+    CheckboxGroup,
+    Search,
+    Icon,
+    NumberKeyboard,
+    Notify,
+    Loading,
+    Popup,
+    Picker,
+    Tabbar, TabbarItem,
+    NavBar,
+    Cell, CellGroup, RadioGroup,
+    Radio,
+    Area,
+    Field,
+    Collapse, CollapseItem,
+    DatetimePicker,
+    Toast,
+    List,
+    Switch,ActionSheet,Grid, GridItem
+]
+
+// Notify.setDefaultOptions({
+//     background: '#896EDB'
+// })
+
+export default {
+    install(Vue, opt) {
+        arr.forEach(item => {
+            Vue.use(item)
+        })
+        
+        // Vue.prototype.$notify = (text) => {
+        //     Notify({
+        //         message: text,
+        //         background: 'red'
+        //     })
+        // }
+
+        Vue.prototype.$notify_success = (text) => {
+            Notify({
+                message: text,
+                background: '#1989fa'
+            })
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/index.js b/src/index.js
new file mode 100644
index 0000000..2c6c8c6
--- /dev/null
+++ b/src/index.js
@@ -0,0 +1,70 @@
+/*
+ * @Descripttion: 修改配置
+ * @Author: TM丶
+ * @Date: 2019-08-14 14:05:51
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-09-03 10:44:01
+ */
+
+
+import Vue from 'vue';
+// import ElementUI from 'element-ui';
+import 'element-ui/lib/theme-chalk/index.css';
+import { Button, Select } from 'element-ui'
+import vantRegister from '@/components/vant_register'; //vant组件
+import Validator from '@/utils/formValidator'; //vant组件
+import log from '@/utils/console';
+import { Uploader,Toast  } from 'vant';
+import store from "@/store/index";
+import router from "@/router/index";
+import App from "./App.vue";
+import api from "@/api"; //接口
+import filters from '@/utils/filters';
+import { Image as VanImage } from 'vant';
+import { Form } from 'vant';
+import { Popup } from 'vant';
+
+Vue.use(Popup);
+
+// import androidBack from './utils/pageBackByAndroid';
+Vue.config.productionTip = false; // 关闭生产的提示
+
+
+import "@/style/normalize.less";
+import "@/style/common.less";
+import "@/style/vant_reset.less";
+
+Vue.use(Form);
+Vue.use(api)
+Vue.use(filters)
+Vue.use(Validator)
+// Vue.use(vuxRegister)
+Vue.use(vantRegister)
+// Vue.use(customerComponents)
+Vue.use(Select)
+Vue.use(log);
+Vue.use(VanImage);
+Vue.use(Uploader);
+Vue.use(Toast);
+new Vue({
+    store,
+    router,
+    mounted() {
+        // var u = navigator.userAgent;
+        // if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
+        //     window.addEventListener("resize", function() {
+        //         let el = document.activeElement;
+        //         if(el.tagName=="INPUT" || el.tagName=="TEXTAREA") {
+        //             window.setTimeout(function() {
+        //                 el.scrollIntoView({
+        //                     behavior:'smooth',
+        //                 });
+        //             },16.7);
+        //         }
+        //     })
+        // }
+    },
+    render: h => h(App)
+}).$mount("#app")
+
+// androidBack.androidBackBtn();
diff --git a/src/router/index.js b/src/router/index.js
new file mode 100644
index 0000000..6d78990
--- /dev/null
+++ b/src/router/index.js
@@ -0,0 +1,37 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-19 15:23:17
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-08 10:00:52
+ * @Description:
+ */
+import Vue from "vue";
+import VueRouter from 'vue-router';
+import routes from './routes';
+import Store from '@/store';
+Vue.use(VueRouter);
+
+let router =  new VueRouter({
+    mode:"hash", //history
+    routes,
+    scrollBehavior (to, from, savedPosition) {
+        return {
+            x:0,
+            y:0
+        }
+    },
+})
+
+
+// 全局前置守卫:页面跳转前拦截
+router.beforeEach((to, from, next) => {
+    next()
+})
+
+
+//全局后置守卫:页面跳转后执行
+router.afterEach((to, from) => {
+
+})
+
+export default router;
diff --git a/src/router/routes.js b/src/router/routes.js
new file mode 100644
index 0000000..b05fe1b
--- /dev/null
+++ b/src/router/routes.js
@@ -0,0 +1,35 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-13 18:10:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-05 14:58:59
+ * @Description:
+ */
+export default [
+    //  绑卡
+    {
+        path:"/",
+        name:'index',
+        component:()=>import("@/views/main/addBankcard.vue")
+    },
+    {
+        path:"/main/queryres",
+        name:'queryres',
+        component:()=>import("@/views/main/queryres.vue")
+    },
+    {
+        path:"/main/findPre",
+        name:'findPre',
+        component:()=>import("@/views/main/findPreAudit.vue")
+    },
+    {
+        path:"/main/signcont",
+        name:'signcont',
+        component:()=>import("@/views/main/signcont.vue")
+    },
+    {
+        path:"/main/bancardsucces",
+        name:'signcont',
+        component:()=>import("@/views/main/singsuc.vue")
+    }
+]
diff --git a/src/store/index.js b/src/store/index.js
new file mode 100644
index 0000000..8795cbb
--- /dev/null
+++ b/src/store/index.js
@@ -0,0 +1,90 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-19 15:23:17
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-05 15:20:51
+ * @Description:
+ */
+import Vue from 'vue';
+import Vuex from "vuex";
+import md5 from 'blueimp-md5';
+import mutations from "./mutations";
+import test from "./module/test";
+// 数据持久化到session的插件
+import createPersistedState from 'vuex-persistedstate';
+import { calcArea } from '@/utils/index';
+
+import {
+    SET_SESSION_ID,
+    SET_FOOTER_NAV,
+    SET_USER_INFO,
+    SET_AREA_LIST,
+    SET_BCAKCOLOR,
+    SET_BCJBCOLORF,
+    SET_BCJBCOLORB,
+    SET_DEFAULT_BG_COLOR,
+    SET_LAST_COLOR
+} from './mutations-types';
+
+Vue.use(Vuex);
+
+export default new Vuex.Store({
+    plugins: [createPersistedState({ storage: window.sessionStorage })],
+    state: {
+        AppLoading: false,
+        sessionId: '',//判断是否登录
+        footerNav: [], //底部导航
+        userPage: [], //管理页面 用户有的权限页面
+        userinfo: {}, //用户信息
+        areaList: {//地区列表
+            province_list: {}, //省
+            city_list: {}, //市
+            county_list: {}, //地区、县
+        },
+        msgCount: {},
+        inviteCode: '', //邀请码
+        lastColor:'#423d5d',
+        backColor:'#0173FE',//主题色
+        backJbColorF:'#8F6AFF',//主题渐变色
+        backJbColorB:'#9459EC',
+        defaultBgColor:'linear-gradient(180deg, #554E7A, #423D5D)',
+    },
+    getters: {
+        orgType(state) {
+            return state.userinfo.orgType
+        },
+        orgId(state) {
+            return state.userinfo.orgId
+        }
+    },
+    mutations,
+    actions: {  
+        // 获取地区列表
+        // getArea({ commit }) {
+        //     Vue.prototype.$api.getArea().then((res) => {
+        //         let { provList } = res.body;
+        //         let obj = calcArea(provList)
+        //         commit(SET_AREA_LIST, {
+        //             province_list: obj.province_list,
+        //             city_list: obj.city_list,
+        //             county_list: obj.county_list
+        //         })
+        //     }).catch((err) => {
+
+        //     });
+        // },
+        // 设置主题色
+        setColor({commit},{backColor,backJbColorF,backJbColorB,defaultBgColor, lastColor}){
+            console.log('defaultBgColor:',defaultBgColor)
+            commit(SET_BCAKCOLOR,backColor)
+            commit(SET_BCJBCOLORF,backJbColorF)
+            commit(SET_BCJBCOLORB,backJbColorB)
+            commit(SET_DEFAULT_BG_COLOR,defaultBgColor)
+            commit(SET_LAST_COLOR,lastColor)
+        }
+    },
+    modules: {
+        test
+    }
+})
+
diff --git a/src/store/module/test.js b/src/store/module/test.js
new file mode 100644
index 0000000..87bdc57
--- /dev/null
+++ b/src/store/module/test.js
@@ -0,0 +1,11 @@
+export default {
+    namespaced:true,
+    state:{
+        text:"1232"
+    },
+    mutations:{
+        add(state,{value}){
+            state.text = value;
+        }
+    }
+}
\ No newline at end of file
diff --git a/src/store/mutations-types.js b/src/store/mutations-types.js
new file mode 100644
index 0000000..bc393a3
--- /dev/null
+++ b/src/store/mutations-types.js
@@ -0,0 +1,30 @@
+/*
+ * @Descripttion: 使用常量替代 mutation 事件类型,把这些常量放在单独的文件中可以让整个 app 包含的 mutation 一目了然
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-06 21:41:06
+ * @LastEditTime: 2020-11-17 10:14:01
+ */
+
+export const SET_APP_LOADING = "SET_APP_LOADING";
+
+export const SET_SESSION_ID = "SET_SESSION_ID";
+export const SET_USER_INFO = "SET_USER_INFO";
+
+// 设置地区列表
+export const SET_AREA_LIST = "SET_AREA_LIST";
+
+//消息
+export const SET_MESSAGE_CONUT = "SET_MESSAGE_CONUT";
+// 设置用户的底部导航菜单
+export const SET_FOOTER_NAV = "SET_FOOTER_NAV";
+
+// 设置用户的权限页面
+export const SET_USER_PAGE = "SET_USER_PAGE";
+export const SET_INVITE_CODE = "SET_INVITE_CODE";
+
+export const SET_BCAKCOLOR = "SET_BCAKCOLOR";
+export const SET_BCJBCOLORF = "SET_BCJBCOLORF";
+export const SET_BCJBCOLORB = "SET_BCJBCOLORB";
+export const SET_DEFAULT_BG_COLOR = "SET_DEFAULT_BG_COLOR";
+export const SET_LAST_COLOR = "SET_LAST_COLOR";
\ No newline at end of file
diff --git a/src/store/mutations.js b/src/store/mutations.js
new file mode 100644
index 0000000..eff7d55
--- /dev/null
+++ b/src/store/mutations.js
@@ -0,0 +1,75 @@
+/*
+ * @Descripttion: 项目的mutations
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-06 21:40:25
+ * @LastEditTime: 2020-11-17 09:15:09
+ */
+import {
+    SET_APP_LOADING,
+    SET_USER_PAGE,
+    SET_FOOTER_NAV,
+    SET_SESSION_ID,
+    SET_USER_INFO,
+    SET_AREA_LIST,
+    SET_MESSAGE_CONUT,
+    SET_INVITE_CODE,
+    SET_BCAKCOLOR,
+    SET_BCJBCOLORF,
+    SET_BCJBCOLORB,
+    SET_DEFAULT_BG_COLOR,
+    SET_LAST_COLOR
+} from "./mutations-types";
+
+//使用 ES2015 风格的计算属性命名功能来使用一个常量作为函数名
+export default {
+    //设置loading状态
+    [SET_APP_LOADING](state, val) {
+        state.AppLoading = val;
+    },
+    //获取邀请码
+    [SET_INVITE_CODE](state, val) {
+        state.inviteCode = val;
+    },
+    [SET_AREA_LIST](state, val) {
+        state.areaList = val;
+    },
+    [SET_MESSAGE_CONUT](state, val) {
+        state.msgCount = val;
+    },
+    [SET_SESSION_ID](state, val) {
+        state.sessionId = val;
+    },
+    [SET_USER_INFO](state, val) {
+        state.userinfo = val;
+    },
+    [SET_USER_PAGE](state, val) {
+        if (Array.isArray(val)) {
+            state.userPage = val;
+        }
+    },
+    [SET_FOOTER_NAV](state, val) {
+        if (Array.isArray(val)) {
+            state.footerNav = val;
+        }
+    },
+    [SET_BCAKCOLOR](state, val) {
+        state.backColor = val;
+    },
+    [SET_BCJBCOLORF](state, val) {
+        state.backJbColorF = val;
+    },
+    [SET_BCJBCOLORB](state, val) {
+        state.backJbColorB = val;
+    },
+    [SET_DEFAULT_BG_COLOR](state, val) {
+        state.defaultBgColor = val;
+    },
+    [SET_LAST_COLOR](state, val) {
+        state.lastColor = val;
+    },
+    // 设置消息列表
+    // [SET_MESSAGE_LIST](state, val) {
+    //     state.messageList = val;
+    // },
+}
\ No newline at end of file
diff --git a/src/style/common.less b/src/style/common.less
new file mode 100644
index 0000000..625b56f
--- /dev/null
+++ b/src/style/common.less
@@ -0,0 +1,213 @@
+/*
+ * @Descripttion: 基础css 类,全局类名以 -g 结尾来区分
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-03-11 21:02:51
+ * @LastEditTime: 2020-04-24 15:56:39
+ */
+
+ html,body{
+   height: 100%;
+ }
+
+ body {
+  font-size: @font-14;
+  color: @c-333;
+  scroll-behavior: smooth;
+}
+
+p,
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+ul {
+  margin: 0;
+}
+
+
+
+.font-11-g{
+  font-size: @font-11;
+}
+
+.font-12-g{
+  font-size: @font-12;
+}
+
+.font-14-g{
+  font-size: @font-14;
+}
+
+
+.font-16-g{
+  font-size: @font-16;
+}
+
+
+
+.height-44-g{
+  height: 44px;
+  width: 100%;
+}
+.height-20-g{
+  height: 20px;
+  width: 100%;
+}
+
+
+
+.c-text-999-g{
+  color: @c-text-999;
+}
+
+.c-text-666-g{
+  color: @c-text-666;
+}
+
+hr{
+  border: none;
+}
+
+.h-100-g{
+  min-height: 100%;
+}
+
+.w-100-g{
+  width: 100%;
+}
+
+.fl-g {
+  float: left;
+}
+
+.fr-g {
+  float: right;
+}
+
+
+.clearfix-g {
+  zoom: 1;
+
+  &:after {
+    content: "";
+    display: block;
+    clear: both;
+  }
+}
+
+.text-center-g{
+  text-align: center;
+}
+
+.img-fluid-g {
+  max-width: 100%;
+  height: auto;
+}
+
+.p-center-g{
+  position: absolute;
+  top: 50%;
+  left: 50%;
+  transform: translate(-50%,-50%);
+}
+
+.hidden-g {
+  display: none;
+}
+
+.flex-start-g {
+  .flex(flex-start);
+}
+
+.flex-center-g {
+  .flex(center);
+}
+
+.flex-between-g {
+  .flex(space-between);
+}
+
+.flex-around-g {
+  .flex(space-around);
+}
+
+.flex-end-g {
+  .flex(flex-end);
+}
+
+.flex-1-g{
+  flex:1;
+}
+
+/*单行溢出*/
+.text-clip-g {
+  overflow: hidden;
+  white-space: nowrap;
+  text-overflow: ellipsis;
+}
+
+// 滚动条样式
+::-webkit-scrollbar {
+  max-width: 5px;
+  max-height: 8px;
+}
+
+
+::-webkit-scrollbar-thumb {
+  background-color: #C9CAD3;
+  border-radius: 4px;
+  -webkit-border-radius: 4px;
+  -moz-border-radius: 4px;
+  -ms-border-radius: 4px;
+  -o-border-radius: 4px;
+}
+
+// placeholder样式控制
+input::-webkit-input-placeholder,
+textarea::-webkit-input-placeholder {
+  color: @c-999;
+  font-size: @font-14;
+}
+
+input:-moz-placeholder,
+textarea:-moz-placeholder {
+  color: @c-999;
+  font-size: @font-14;
+}
+
+input::-moz-placeholder,
+textarea::-moz-placeholder {
+  color: @c-999;
+  font-size: @font-14;
+}
+
+input:-ms-input-placeholder,
+textarea:-ms-input-placeholder {
+  color: @c-999;
+  font-size: @font-14;
+}
+//带阴影的圆角card
+.card_park{
+  border-radius: 8px;
+  box-shadow: 0px 2px 23px 0px rgba(29, 72, 245, 0.08);  
+}
+// 提示
+.tips {
+  font-size: @font-12;
+  padding-left: 0.32rem;
+  margin-top: 8px;
+  color: #999999;
+}
+.btn_box {
+  width: 100%;
+  margin-top: 32px;
+  .van-button {
+      width: 100%;
+      color: #fff;
+      font-size: 16px;
+      border-radius: 7px;
+  }
+}
\ No newline at end of file
diff --git a/src/style/mixin.less b/src/style/mixin.less
new file mode 100644
index 0000000..b5eb120
--- /dev/null
+++ b/src/style/mixin.less
@@ -0,0 +1,98 @@
+/**
+ * Created by c.y on 2018-3-1
+ * 文件说明: 这个是定义项目全局的mixin
+ */
+
+// flex布局
+.flexLayout(@justify:flex-start,@align:center,@direction:row) {
+    display: flex;
+    justify-content: @justify;
+    align-items: @align;
+    flex-direction: @direction;
+}
+
+// 清除浮动
+.clearfix() {
+    zoom: 1;
+    &:before,
+    &:after {
+        content: '';
+        display: table;
+    }
+    &:after {
+        clear: both;
+        visibility: hidden;
+        font-size: 0;
+        height: 0;
+    }
+}
+
+// 单行文本超出显示省略号
+.ellipsis(@w:auto) {
+    width: @w;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    word-wrap: normal;
+}
+
+// 多行文本超出显示省略号
+.ellipsisLn(@line) {
+    overflow: hidden;
+    text-overflow: ellipsis;
+    display: -webkit-box;
+    -webkit-box-orient: vertical;
+    -webkit-line-clamp: @line;
+    word-break: break-all;
+}
+
+// 单词换行
+.text_wrap() {
+    word-wrap: break-word;
+    word-break: break-all;
+}
+
+// 设置箭头 arrowSize--箭头的大小, borderColor---箭头的颜色,@borderWidth箭头的粗细
+._setArrow(@arrowsize, @borderColor, @borderWidth) {
+    display: inline-block;
+    height: @arrowsize;
+    width: @arrowsize;
+    border-width: @borderWidth @borderWidth 0 0;
+    border-color: @borderColor;
+    border-style: solid;
+}
+
+// 示例调用  .setArrow(top, 10px, red, 2px);向上箭头
+.setArrow(@direction, @arrowsize, @borderColor, @borderWidth)
+    when
+    (@direction = top) {
+    ._setArrow(@arrowsize, @borderColor, @borderWidth);
+    transform: matrix(0.71, -0.71, 0.71, 0.71, 0, 0); // rotate(-45deg)
+}
+
+.setArrow(@direction, @arrowsize, @borderColor,@borderWidth)
+    when
+    (@direction = right) {
+    ._setArrow(@arrowsize, @borderColor, @borderWidth);
+    transform: matrix(0.71, 0.71, -0.71, 0.71, 0, 0); // rotate(45deg);
+    position: relative;
+    top: -1px;
+}
+
+.setArrow(@direction, @arrowsize, @borderColor,@borderWidth)
+    when
+    (@direction = down) {
+    ._setArrow(@arrowsize, @borderColor, @borderWidth);
+    transform: matrix(-0.71, 0.71, -0.71, -0.71, 0, 0); // rotate(135deg);
+    position: relative;
+    top: -1.5px;
+}
+
+.setArrow(@direction, @arrowsize, @borderColor,@borderWidth)
+    when
+    (@direction = left) {
+    ._setArrow(@arrowsize, @borderColor, @borderWidth);
+    transform: matrix(-0.71, -0.71, 0.71, -0.71, 0, 0); // rotate(-135deg);
+    position: relative;
+    top: -1px;
+}
diff --git a/src/style/mixins.less b/src/style/mixins.less
new file mode 100644
index 0000000..6d04221
--- /dev/null
+++ b/src/style/mixins.less
@@ -0,0 +1,139 @@
+/*
+ * @Descripttion: 全局mixins变量
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-03-11 21:02:51
+ * @LastEditTime: 2019-08-30 10:42:05
+ */
+ @import "./themes.less";
+
+ /* 字体 大小*/
+ @font-10: 10px;
+ @font-11: 11px;
+ @font-12: 12px;
+ @font-13: 13px;
+ @font-14: 14px;
+ @font-15: 15px;
+ @font-16: 16px;
+ @font-17: 17px;
+ @font-18: 18px;
+ @font-20: 20px;
+ @font-24: 24px;
+ @font-28: 28px;
+ 
+ 
+ /* z-index*/
+ @zIndex-10:10;
+ @zIndex-20:20;
+ @zIndex-30:30;
+ @zIndex-40:40;
+ @zIndex-50:50;
+ @zIndex-100:100;
+ @zIndex-200:200;
+ @zIndex-300:300;
+ @zIndex-400:400;
+ @zIndex-500:500;
+ @zIndex-999:999;
+ @zIndex-9999:9999;
+ 
+//  新主题色
+  @c-main: #896EDB;
+  @c-success: #19BE6B;
+  @c-lose:#ED4014;
+ // flex布局
+ .flex(@x:flex-start,@y:center,@wrap:nowrap,@dir:row) {
+   display: flex;
+   justify-content: @x;
+   align-items: @y;
+   flex-wrap: @wrap;
+   flex-direction: @dir;
+ }
+
+//  老项目复制过来的 兼任!
+ .flexLayout(@justify:flex-start,@align:center,@direction:row) {
+  display: flex;
+  justify-content: @justify;
+  align-items: @align;
+  flex-direction: @direction;
+}
+ 
+ 
+ .lh(@val){
+   height: @val;
+   line-height: @val;
+ }
+ 
+ 
+ /*多行溢出 手机端使用*/
+ .text-clip-double(@num:2) {
+   display: -webkit-box;
+   overflow: hidden;
+   word-break: break-all;
+   text-overflow: ellipsis;
+   -webkit-box-orient: vertical;
+   -webkit-line-clamp: @num;
+ }
+ 
+ // 定位到html
+//  .p-fixed(@bg:#fff) {
+//    position: fixed;
+//    top: 0;
+//    right: 0;
+//    bottom: 0;
+//    left: 0;
+//    overflow-y: scroll;
+//    background-color: @bg;
+//  }
+ 
+
+ 
+
+
+
+//  老项目的变量
+@fontEN: -apple-system-font, "Helvetica Neue";
+@fontCN: "PingFang SC", "Microsoft YaHei", "sans-serif", "Helvetica Neue";
+@fontDefault: @fontEN, @fontCN;
+
+@font-size-tiny: 10Px;
+@font-size-small: 12Px;
+@font-size-medium: 14Px;
+@font-size-base: 15Px;
+@font-size-primary: 16Px;
+@font-size-large: 18Px;
+
+@font-line-height-base: 1;
+@font-line-height-medium: 1.3;
+@font-line-height-large: 1.5;
+
+@font-weight-normal: normal;
+@font-weight-bold: bold;
+@font-weight-base: 400;
+@font-weight-thin: 200;
+
+@border-radius-normal-size: 7.5px;
+
+@color-white: #fff;
+@backgroundColor: #f1f1f1;
+
+@color-text-main: #3a3a3a; //场景分期文字主要颜色
+@color-text-second: #666; //场景分期文字第二颜色
+@color-text-three: #bfa073; //场景分期文字第三颜色
+@color-text-three-light: rgba(191, 160, 115, 0.05); //场景分期文字第三颜色-淡色
+@color-text-placeholder: #a3a3a3; // 场景分期输入框placeholder暗提示颜色
+@color-line: #d9d9d9; // 边框颜色
+@color-border-theme: #bfa073; // 边框主题颜色
+
+@color-button-default: #3a3a3a;
+@color-button-normal: #bfa073;
+
+@tabbar-text-active-color: #bfa073;
+
+@switch-checked-bg-color: #bfa073;
+@switch-checked-border-color: #bfa073;
+
+@calendar-arrow-color: #444;
+@calendar-today-font-color: #bfa073;
+@calendar-selected-bg-color: #bfa073;
+
+
diff --git a/src/style/myVant.less b/src/style/myVant.less
new file mode 100644
index 0000000..8936816
--- /dev/null
+++ b/src/style/myVant.less
@@ -0,0 +1,12 @@
+.ipt,
+  .fenqi {
+    & {
+      border-bottom: 1px solid #e0e1e6;
+      color: #333;
+      font-size: 16px;
+      .van-field__control{
+        color: #999 !important;
+        font-size: 14px !important;
+      }
+    }
+  }
\ No newline at end of file
diff --git a/src/style/myVideo.less b/src/style/myVideo.less
new file mode 100644
index 0000000..26cb77e
--- /dev/null
+++ b/src/style/myVideo.less
@@ -0,0 +1,8 @@
+/*
+*只用于video组件的样式调整
+*/
+.vjs-big-play-button{
+    // position: absolute;
+    top: 35% !important;
+    left: 35% !important;
+}
\ No newline at end of file
diff --git a/src/style/normalize.less b/src/style/normalize.less
new file mode 100644
index 0000000..b7fefd2
--- /dev/null
+++ b/src/style/normalize.less
@@ -0,0 +1,219 @@
+html {
+  line-height: 1.15;
+  -webkit-text-size-adjust: 100%;
+}
+
+
+body {
+  margin: 0;
+}
+
+main {
+  display: block;
+}
+
+
+h1 {
+  font-size: 2em;
+  margin: 0.67em 0;
+}
+
+
+hr {
+  box-sizing: content-box;
+  height: 0;
+  overflow: visible;
+}
+
+
+pre {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+
+
+
+a {
+  background-color: transparent;
+}
+
+
+
+abbr[title] {
+  border-bottom: none;
+  text-decoration: underline;
+  text-decoration: underline dotted;
+}
+
+
+b,
+strong {
+  font-weight: bolder;
+}
+
+
+
+code,
+kbd,
+samp {
+  font-family: monospace, monospace;
+  font-size: 1em;
+}
+
+
+small {
+  font-size: 80%;
+}
+
+
+sub,
+sup {
+  font-size: 75%;
+  line-height: 0;
+  position: relative;
+  vertical-align: baseline;
+}
+
+sub {
+  bottom: -0.25em;
+}
+
+sup {
+  top: -0.5em;
+}
+
+
+
+img {
+  border-style: none;
+}
+
+
+
+button,
+input,
+optgroup,
+select,
+textarea {
+  font-family: inherit;
+  font-size: 100%;
+  margin: 0;
+}
+
+
+
+button,
+input {
+  overflow: visible;
+}
+
+
+
+button,
+select {
+  text-transform: none;
+}
+
+
+button,
+[type="button"],
+[type="reset"],
+[type="submit"] {
+  -webkit-appearance: button;
+}
+
+
+
+button::-moz-focus-inner,
+[type="button"]::-moz-focus-inner,
+[type="reset"]::-moz-focus-inner,
+[type="submit"]::-moz-focus-inner {
+  border-style: none;
+  padding: 0;
+}
+
+button:-moz-focusring,
+[type="button"]:-moz-focusring,
+[type="reset"]:-moz-focusring,
+[type="submit"]:-moz-focusring {
+  outline: 1px dotted ButtonText;
+}
+
+
+fieldset {
+  padding: 0.35em 0.75em 0.625em;
+}
+
+
+legend {
+  box-sizing: border-box;
+  color: inherit;
+  display: table;
+  max-width: 100%;
+  padding: 0;
+  white-space: normal;
+}
+
+
+progress {
+  vertical-align: baseline;
+}
+
+
+
+textarea {
+  overflow: auto;
+}
+
+
+
+[type="checkbox"],
+[type="radio"] {
+  box-sizing: border-box;
+  padding: 0;
+}
+
+
+[type="number"]::-webkit-inner-spin-button,
+[type="number"]::-webkit-outer-spin-button {
+  height: auto;
+}
+
+
+[type="search"] {
+  -webkit-appearance: textfield;
+  outline-offset: -2px;
+}
+
+
+[type="search"]::-webkit-search-decoration {
+  -webkit-appearance: none;
+}
+
+
+
+::-webkit-file-upload-button {
+  -webkit-appearance: button;
+  font: inherit;
+}
+
+
+details {
+  display: block;
+}
+
+
+summary {
+  display: list-item;
+}
+
+
+
+template {
+  display: none;
+}
+
+
+[hidden] {
+  display: none;
+}
\ No newline at end of file
diff --git a/src/style/themes.less b/src/style/themes.less
new file mode 100644
index 0000000..8b5adbe
--- /dev/null
+++ b/src/style/themes.less
@@ -0,0 +1,52 @@
+/*
+ * @Descripttion: 项目色彩相关配置
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-03-11 21:02:51
+ * @LastEditTime: 2019-08-15 16:12:25
+ */
+
+/*color*/
+@c-default:#896EDB;
+
+@c-fff:#ffffff;
+@c-f5:#F5F5F7;
+@c-eee:#eeeeee;
+@c-333:#333333;
+@c-666:#666666;
+@c-999:#999999;
+@c-green:#19BE6B;
+@c-red:#ED4014;
+@c-blue:#FF9900;
+@c-black:#423D5D;
+@c-555:#55516e;
+@c-fe:#FEFEFF;
+@mainbg:#0173FE;
+@pagebg:#FAFBFC;
+/* 边框 颜色*/
+// @color-border-default:@c-gray-default;
+
+/* 文字 颜色*/
+@c-text-default:@c-default;
+@c-text-333:@c-333;
+@c-text-666:@c-666;
+@c-text-999:@c-999;
+@c-text-fff:@c-fff;
+@c-text-black:@c-black;
+@c-text-fe:@c-fe;
+@c-text-f5:@c-f5;
+
+/* 背景 颜色*/
+@c-bg-default:@c-default;
+@c-bg-f5:@c-f5;
+@c-bg-eee:@c-eee;
+@c-bg-fff:@c-fff;
+@c-bg-black:@c-black;
+@c-bg-555:@c-555;
+
+/* 边框 */
+// @border-default:0.5Px solid @c-gray-e6;
+
+/* boxshadow */
+@shadow-default:0 2px 10px 0 rgba(0,39,125,0.1);
+
diff --git a/src/style/vant_reset.less b/src/style/vant_reset.less
new file mode 100644
index 0000000..cee99e9
--- /dev/null
+++ b/src/style/vant_reset.less
@@ -0,0 +1,199 @@
+/*
+vant 的样式重置文件
+*/
+.van-cell-group{
+    border-radius: 3px;
+}
+.van-cell{
+    padding: 11px 0.32rem;
+    .van-cell__title{
+        font-size: 14px;
+    }
+    &:not(:last-child)::after{
+        left: 0;
+    }
+    &:first-child{
+        border-top-left-radius: 3px;
+        border-top-right-radius: 3px;
+    }
+    &:last-child{
+        border-bottom-left-radius: 3px;
+        border-bottom-right-radius: 3px;
+    }
+}
+
+.van-collapse{
+    &:after{
+        display: none;
+    }
+    // 折叠面板样式重置
+    .van-collapse-item{
+        margin-bottom: 10px;
+        &::after{
+            display: none;
+        }
+        .van-cell::after{
+            display: none;
+        }
+        .van-cell__title{
+            font-size: @font-14;
+            font-weight: bold;
+        }
+    }
+
+}
+
+
+.van-popup{
+    overflow: initial;
+}
+
+
+// radio 边框颜色
+// .van-radio{
+//     .van-icon-success{
+//         // border: 0.02rem solid @c-bg-default;
+//     }
+// }
+
+
+
+
+////退出登录     弹框
+.setting-box-dialog{
+    .van-dialog__message{
+        padding: 45px 60px!important;
+    }
+}
+
+
+
+
+.home-tabbar{
+    .van-tabbar-item__text{
+        font-size: 11px;
+    }
+    .van-tabbar-item__icon{
+        margin-bottom: 3px;
+    }
+}
+
+
+.icons-ser{
+    //.flex(center,center);
+    .van-cell{
+        //.flex(center,center);
+    }
+}
+
+
+//添加账号      复选框 样式修改
+.account-add{
+    .van-checkbox__icon{
+        font-size: @font-16;
+    }
+
+    .van-check-box{
+        .label{
+            font-size:@font-14;
+            font-weight:500;
+            color:#666666;
+        }
+    }
+}
+
+
+
+//登录页
+.login-page{
+
+
+
+
+    .van-cell{
+        margin-top: 15px;
+        padding-left: 0;
+        padding-right: 0;
+        height: 44px;
+        max-height: 44px;
+    }
+
+    .van-icon{
+        margin-right: 5px;
+        //color: @c-default;
+    }
+
+
+
+    .van-button{
+        .lh(44px);
+        margin-top: 35px;
+        display: block;
+        width:100%;
+        font-size: @font-18;
+        color: @c-fff;
+        text-align: center;
+        border: none;
+        // background-color: @c-default;
+        -webkit-appearance: none;
+    }
+
+}
+
+
+.forgetpassword,.register-home{
+
+
+    .van-field__right-icon{
+        margin: 0 0.16rem ;
+        padding:0;
+    }
+
+    .van-field__right-icon::after{
+        display: none;
+    }
+
+    .van-cell::after{
+        position: absolute;
+        box-sizing: border-box;
+        content: ' ';
+        pointer-events: none;
+        right: 0;
+        bottom: 0;
+        left: 0.32rem;
+        border-bottom: 0.02rem solid #ebedf0;
+        -webkit-transform: scaleY(.5);
+        transform: scaleY(.5);
+    }
+
+
+}
+
+
+.filter-box{
+    .van-popup--bottom{
+        z-index: 3500 !important;
+    }
+}
+
+.weui-dialog{
+    width: 80%;
+}
+.vux-header{
+    position: fixed;
+    top: 0;
+    left: 0;
+    width: 100%;
+    // height: 3.66667rem;
+    height: 44px;
+
+    padding: 0;
+    z-index: 99;
+    background-color: #fff;
+    .vux-header-title{
+        color: #3a3a3a;
+    }
+}
+.weui-cells{
+    margin-top: 0;
+}
diff --git a/src/utils/IDValidator.js b/src/utils/IDValidator.js
new file mode 100644
index 0000000..8dd1881
--- /dev/null
+++ b/src/utils/IDValidator.js
@@ -0,0 +1,3844 @@
+/**
+ * Created by 陈伟
+ * 2017/11/21.
+ * 身份证检查
+ */
+let GB2260 = {
+  '110000': '北京市',
+  '110100': '北京市市辖区',
+  '110101': '北京市东城区',
+  '110102': '北京市西城区',
+  '110103': '北京市崇文区',
+  '110104': '北京市宣武区',
+  '110105': '北京市朝阳区',
+  '110106': '北京市丰台区',
+  '110107': '北京市石景山区',
+  '110108': '北京市海淀区',
+  '110109': '北京市门头沟区',
+  '110111': '北京市房山区',
+  '110112': '北京市通州区',
+  '110113': '北京市顺义区',
+  '110200': '北京市县',
+  '110221': '北京市昌平县',
+  '110224': '北京市大兴县',
+  '110226': '北京市平谷县',
+  '110227': '北京市怀柔县',
+  '110228': '北京市密云县',
+  '110229': '北京市延庆县',
+  '120000': '天津市',
+  '120100': '天津市市辖区',
+  '120101': '天津市和平区',
+  '120102': '天津市河东区',
+  '120103': '天津市河西区',
+  '120104': '天津市南开区',
+  '120105': '天津市河北区',
+  '120106': '天津市红桥区',
+  '120107': '天津市塘沽区',
+  '120108': '天津市汉沽区',
+  '120109': '天津市大港区',
+  '120110': '天津市东丽区',
+  '120111': '天津市西青区',
+  '120112': '天津市津南区',
+  '120113': '天津市北辰区',
+  '120200': '天津市县',
+  '120221': '天津市宁河县',
+  '120222': '天津市武清县',
+  '120223': '天津市静海县',
+  '120224': '天津市宝坻县',
+  '120225': '天津市蓟县',
+  '130000': '河北省',
+  '130100': '河北省石家庄市',
+  '130101': '河北省石家庄市市辖区',
+  '130102': '河北省石家庄市长安区',
+  '130103': '河北省石家庄市桥东区',
+  '130104': '河北省石家庄市桥西区',
+  '130105': '河北省石家庄市新华区',
+  '130106': '河北省石家庄市郊区',
+  '130107': '河北省石家庄市井陉矿区',
+  '130121': '河北省石家庄市井陉县',
+  '130123': '河北省石家庄市正定县',
+  '130124': '河北省石家庄市栾城县',
+  '130125': '河北省石家庄市行唐县',
+  '130126': '河北省石家庄市灵寿县',
+  '130127': '河北省石家庄市高邑县',
+  '130128': '河北省石家庄市深泽县',
+  '130129': '河北省石家庄市赞皇县',
+  '130130': '河北省石家庄市无极县',
+  '130131': '河北省石家庄市平山县',
+  '130132': '河北省石家庄市元氏县',
+  '130133': '河北省石家庄市赵县',
+  '130181': '河北省石家庄市辛集市',
+  '130182': '河北省石家庄市藁城市',
+  '130183': '河北省石家庄市晋州市',
+  '130184': '河北省石家庄市新乐市',
+  '130185': '河北省石家庄市鹿泉市',
+  '130200': '河北省唐山市',
+  '130201': '河北省唐山市市辖区',
+  '130202': '河北省唐山市路南区',
+  '130203': '河北省唐山市路北区',
+  '130204': '河北省唐山市古冶区',
+  '130205': '河北省唐山市开平区',
+  '130206': '河北省唐山市新区',
+  '130221': '河北省唐山市丰润县',
+  '130223': '河北省唐山市滦县',
+  '130224': '河北省唐山市滦南县',
+  '130225': '河北省唐山市乐亭县',
+  '130227': '河北省唐山市迁西县',
+  '130229': '河北省唐山市玉田县',
+  '130230': '河北省唐山市唐海县',
+  '130281': '河北省唐山市遵化市',
+  '130282': '河北省唐山市丰南市',
+  '130283': '河北省唐山市迁安市',
+  '130300': '河北省秦皇岛市秦皇岛市',
+  '130301': '河北省秦皇岛市市辖区',
+  '130302': '河北省秦皇岛市海港区',
+  '130303': '河北省秦皇岛市山海关区',
+  '130304': '河北省秦皇岛市北戴河区',
+  '130321': '河北省秦皇岛市青龙满族自治县',
+  '130322': '河北省秦皇岛市昌黎县',
+  '130323': '河北省秦皇岛市抚宁县',
+  '130324': '河北省秦皇岛市卢龙县',
+  '130400': '河北省邯郸市邯郸市',
+  '130401': '河北省邯郸市市辖区',
+  '130402': '河北省邯郸市邯山区',
+  '130403': '河北省邯郸市丛台区',
+  '130404': '河北省邯郸市复兴区',
+  '130406': '河北省邯郸市峰峰矿区',
+  '130421': '河北省邯郸市邯郸县',
+  '130423': '河北省邯郸市临漳县',
+  '130424': '河北省邯郸市成安县',
+  '130425': '河北省邯郸市大名县',
+  '130426': '河北省邯郸市涉县',
+  '130427': '河北省邯郸市磁县',
+  '130428': '河北省邯郸市肥乡县',
+  '130429': '河北省邯郸市永年县',
+  '130430': '河北省邯郸市邱县',
+  '130431': '河北省邯郸市鸡泽县',
+  '130432': '河北省邯郸市广平县',
+  '130433': '河北省邯郸市馆陶县',
+  '130434': '河北省邯郸市魏县',
+  '130435': '河北省邯郸市曲周县',
+  '130481': '河北省邯郸市武安市',
+  '130500': '河北省邢台市',
+  '130501': '河北省邢台市市辖区',
+  '130502': '河北省邢台市桥东区',
+  '130503': '河北省邢台市桥西区',
+  '130521': '河北省邢台市邢台县',
+  '130522': '河北省邢台市临城县',
+  '130523': '河北省邢台市内丘县',
+  '130524': '河北省邢台市柏乡县',
+  '130525': '河北省邢台市隆尧县',
+  '130526': '河北省邢台市任县',
+  '130527': '河北省邢台市南和县',
+  '130528': '河北省邢台市宁晋县',
+  '130529': '河北省邢台市巨鹿县',
+  '130530': '河北省邢台市新河县',
+  '130531': '河北省邢台市广宗县',
+  '130532': '河北省邢台市平乡县',
+  '130533': '河北省邢台市威县',
+  '130534': '河北省邢台市清河县',
+  '130535': '河北省邢台市临西县',
+  '130581': '河北省邢台市南宫市',
+  '130582': '河北省邢台市沙河市',
+  '130600': '河北省保定市',
+  '130601': '河北省保定市市辖区',
+  '130602': '河北省保定市新市区',
+  '130603': '河北省保定市北市区',
+  '130604': '河北省保定市南市区',
+  '130621': '河北省保定市满城县',
+  '130622': '河北省保定市清苑县',
+  '130623': '河北省保定市涞水县',
+  '130624': '河北省保定市阜平县',
+  '130625': '河北省保定市徐水县',
+  '130626': '河北省保定市定兴县',
+  '130627': '河北省保定市唐县',
+  '130628': '河北省保定市高阳县',
+  '130629': '河北省保定市容城县',
+  '130630': '河北省保定市涞源县',
+  '130631': '河北省保定市望都县',
+  '130632': '河北省保定市安新县',
+  '130633': '河北省保定市易县',
+  '130634': '河北省保定市曲阳县',
+  '130635': '河北省保定市蠡县',
+  '130636': '河北省保定市顺平县',
+  '130637': '河北省保定市博野县',
+  '130638': '河北省保定市雄县',
+  '130681': '河北省保定市涿州市',
+  '130682': '河北省保定市定州市',
+  '130683': '河北省保定市安国市',
+  '130684': '河北省保定市高碑店市',
+  '130700': '河北省张家口市',
+  '130701': '河北省张家口市市辖区',
+  '130702': '河北省张家口市桥东区',
+  '130703': '河北省张家口市桥西区',
+  '130705': '河北省张家口市宣化区',
+  '130706': '河北省张家口市下花园区',
+  '130721': '河北省张家口市宣化县',
+  '130722': '河北省张家口市张北县',
+  '130723': '河北省张家口市康保县',
+  '130724': '河北省张家口市沽源县',
+  '130725': '河北省张家口市尚义县',
+  '130726': '河北省张家口市蔚县',
+  '130727': '河北省张家口市阳原县',
+  '130728': '河北省张家口市怀安县',
+  '130729': '河北省张家口市万全县',
+  '130730': '河北省张家口市怀来县',
+  '130731': '河北省张家口市涿鹿县',
+  '130732': '河北省张家口市赤城县',
+  '130733': '河北省张家口市崇礼县',
+  '130800': '河北省承德市',
+  '130801': '河北省承德市市辖区',
+  '130802': '河北省承德市双桥区',
+  '130803': '河北省承德市双滦区',
+  '130804': '河北省承德市鹰手营子矿区',
+  '130821': '河北省承德市承德县',
+  '130822': '河北省承德市兴隆县',
+  '130823': '河北省承德市平泉县',
+  '130824': '河北省承德市滦平县',
+  '130825': '河北省承德市隆化县',
+  '130826': '河北省承德市丰宁满族自治县',
+  '130827': '河北省承德市宽城满族自治县',
+  '130828': '河北省承德市围场满族蒙古族自治县',
+  '130900': '河北省沧州市',
+  '130901': '河北省沧州市市辖区',
+  '130902': '河北省沧州市新华区',
+  '130903': '河北省沧州市运河区',
+  '130921': '河北省沧州市沧县',
+  '130922': '河北省沧州市青县',
+  '130923': '河北省沧州市东光县',
+  '130924': '河北省沧州市海兴县',
+  '130925': '河北省沧州市盐山县',
+  '130926': '河北省沧州市肃宁县',
+  '130927': '河北省沧州市南皮县',
+  '130928': '河北省沧州市吴桥县',
+  '130929': '河北省沧州市献县',
+  '130930': '河北省沧州市孟村回族自治县',
+  '130981': '河北省沧州市泊头市',
+  '130982': '河北省沧州市任丘市',
+  '130983': '河北省沧州市黄骅市',
+  '130984': '河北省沧州市河间市',
+  '131000': '河北省廊坊市',
+  '131001': '河北省廊坊市市辖区',
+  '131002': '河北省廊坊市安次区',
+  '131022': '河北省廊坊市固安县',
+  '131023': '河北省廊坊市永清县',
+  '131024': '河北省廊坊市香河县',
+  '131025': '河北省廊坊市大城县',
+  '131026': '河北省廊坊市文安县',
+  '131028': '河北省廊坊市大厂回族自治县',
+  '131081': '河北省廊坊市霸州市',
+  '131082': '河北省廊坊市三河市',
+  '131100': '河北省衡水市',
+  '131101': '河北省衡水市市辖区',
+  '131102': '河北省衡水市桃城区',
+  '131121': '河北省衡水市枣强县',
+  '131122': '河北省衡水市武邑县',
+  '131123': '河北省衡水市武强县',
+  '131124': '河北省衡水市饶阳县',
+  '131125': '河北省衡水市安平县',
+  '131126': '河北省衡水市故城县',
+  '131127': '河北省衡水市景县',
+  '131128': '河北省衡水市阜城县',
+  '131181': '河北省衡水市冀州市',
+  '131182': '河北省衡水市深州市',
+  '140000': '山西省',
+  '140100': '山西省太原市',
+  '140101': '山西省太原市市辖区',
+  '140105': '山西省太原市小店区',
+  '140106': '山西省太原市迎泽区',
+  '140107': '山西省太原市杏花岭区',
+  '140108': '山西省太原市尖草坪区',
+  '140109': '山西省太原市万柏林区',
+  '140110': '山西省太原市晋源区',
+  '140121': '山西省太原市清徐县',
+  '140122': '山西省太原市阳曲县',
+  '140123': '山西省太原市娄烦县',
+  '140181': '山西省太原市古交市',
+  '140200': '山西省大同市',
+  '140201': '山西省大同市市辖区',
+  '140202': '山西省大同市城区',
+  '140203': '山西省大同市矿区',
+  '140211': '山西省大同市南郊区',
+  '140212': '山西省大同市新荣区',
+  '140221': '山西省大同市阳高县',
+  '140222': '山西省大同市天镇县',
+  '140223': '山西省大同市广灵县',
+  '140224': '山西省大同市灵丘县',
+  '140225': '山西省大同市浑源县',
+  '140226': '山西省大同市左云县',
+  '140227': '山西省大同市大同县',
+  '140300': '山西省阳泉市',
+  '140301': '山西省阳泉市市辖区',
+  '140302': '山西省阳泉市城区',
+  '140303': '山西省阳泉市矿区',
+  '140311': '山西省阳泉市郊区',
+  '140321': '山西省阳泉市平定县',
+  '140322': '山西省阳泉市盂县',
+  '140400': '山西省长治市',
+  '140401': '山西省长治市市辖区',
+  '140402': '山西省长治市城区',
+  '140411': '山西省长治市郊区',
+  '140421': '山西省长治市长治县',
+  '140423': '山西省长治市襄垣县',
+  '140424': '山西省长治市屯留县',
+  '140425': '山西省长治市平顺县',
+  '140426': '山西省长治市黎城县',
+  '140427': '山西省长治市壶关县',
+  '140428': '山西省长治市长子县',
+  '140429': '山西省长治市武乡县',
+  '140430': '山西省长治市沁县',
+  '140431': '山西省长治市沁源县',
+  '140481': '山西省长治市潞城市',
+  '140500': '山西省晋城市',
+  '140501': '山西省晋城市市辖区',
+  '140502': '山西省晋城市城区',
+  '140521': '山西省晋城市沁水县',
+  '140522': '山西省晋城市阳城县',
+  '140524': '山西省晋城市陵川县',
+  '140525': '山西省晋城市泽州县',
+  '140581': '山西省晋城市高平市',
+  '140600': '山西省晋城市朔州市',
+  '140601': '山西省晋城市市辖区',
+  '140602': '山西省晋城市朔城区',
+  '140603': '山西省晋城市平鲁区',
+  '140621': '山西省晋城市山阴县',
+  '140622': '山西省晋城市应县',
+  '140623': '山西省晋城市右玉县',
+  '140624': '山西省晋城市怀仁县',
+  '142200': '山西省忻州地区',
+  '142201': '山西省忻州地区忻州市',
+  '142202': '山西省忻州地区原平市',
+  '142222': '山西省忻州地区定襄县',
+  '142223': '山西省忻州地区五台县',
+  '142225': '山西省忻州地区代县',
+  '142226': '山西省忻州地区繁峙县',
+  '142227': '山西省忻州地区宁武县',
+  '142228': '山西省忻州地区静乐县',
+  '142229': '山西省忻州地区神池县',
+  '142230': '山西省忻州地区五寨县',
+  '142231': '山西省忻州地区岢岚县',
+  '142232': '山西省忻州地区河曲县',
+  '142233': '山西省忻州地区保德县',
+  '142234': '山西省忻州地区偏关县',
+  '142300': '山西省忻州地区吕梁地区',
+  '142301': '山西省忻州地区孝义市',
+  '142302': '山西省忻州地区离石市',
+  '142303': '山西省忻州地区汾阳市',
+  '142322': '山西省忻州地区文水县',
+  '142323': '山西省忻州地区交城县',
+  '142325': '山西省忻州地区兴县',
+  '142326': '山西省忻州地区临县',
+  '142327': '山西省忻州地区柳林县',
+  '142328': '山西省忻州地区石楼县',
+  '142329': '山西省忻州地区岚县',
+  '142330': '山西省忻州地区方山县',
+  '142332': '山西省忻州地区中阳县',
+  '142333': '山西省忻州地区交口县',
+  '142400': '山西省晋中地区',
+  '142401': '山西省晋中地区榆次市',
+  '142402': '山西省晋中地区介休市',
+  '142421': '山西省晋中地区榆社县',
+  '142422': '山西省晋中地区左权县',
+  '142423': '山西省晋中地区和顺县',
+  '142424': '山西省晋中地区昔阳县',
+  '142427': '山西省晋中地区寿阳县',
+  '142429': '山西省晋中地区太谷县',
+  '142430': '山西省晋中地区祁县',
+  '142431': '山西省晋中地区平遥县',
+  '142433': '山西省晋中地区灵石县',
+  '142600': '山西省临汾地区',
+  '142601': '山西省临汾地区临汾市',
+  '142602': '山西省临汾地区侯马市',
+  '142603': '山西省临汾地区霍州市',
+  '142621': '山西省临汾地区曲沃县',
+  '142622': '山西省临汾地区翼城县',
+  '142623': '山西省临汾地区襄汾县',
+  '142625': '山西省临汾地区洪洞县',
+  '142627': '山西省临汾地区古县',
+  '142628': '山西省临汾地区安泽县',
+  '142629': '山西省临汾地区浮山县',
+  '142630': '山西省临汾地区吉县',
+  '142631': '山西省临汾地区乡宁县',
+  '142632': '山西省临汾地区蒲县',
+  '142633': '山西省临汾地区大宁县',
+  '142634': '山西省临汾地区永和县',
+  '142635': '山西省临汾地区隰县',
+  '142636': '山西省临汾地区汾西县',
+  '142700': '山西省运城地区',
+  '142701': '山西省运城地区运城市',
+  '142702': '山西省运城地区永济市',
+  '142703': '山西省运城地区河津市',
+  '142723': '山西省运城地区芮城县',
+  '142724': '山西省运城地区临猗县',
+  '142725': '山西省运城地区万荣县',
+  '142726': '山西省运城地区新绛县',
+  '142727': '山西省运城地区稷山县',
+  '142729': '山西省运城地区闻喜县',
+  '142730': '山西省运城地区夏县',
+  '142731': '山西省运城地区绛县',
+  '142732': '山西省运城地区平陆县',
+  '142733': '山西省运城地区垣曲县',
+  '150000': '内蒙古自治区',
+  '150100': '内蒙古自治区呼和浩特市',
+  '150101': '内蒙古自治区呼和浩特市市辖区',
+  '150102': '内蒙古自治区呼和浩特市新城区',
+  '150103': '内蒙古自治区呼和浩特市回民区',
+  '150104': '内蒙古自治区呼和浩特市玉泉区',
+  '150105': '内蒙古自治区呼和浩特市郊区',
+  '150121': '内蒙古自治区呼和浩特市土默特左旗',
+  '150122': '内蒙古自治区呼和浩特市托克托县',
+  '150123': '内蒙古自治区呼和浩特市和林格尔县',
+  '150124': '内蒙古自治区呼和浩特市清水河县',
+  '150125': '内蒙古自治区呼和浩特市武川县',
+  '150200': '内蒙古自治区包头市',
+  '150201': '内蒙古自治区包头市市辖区',
+  '150202': '内蒙古自治区包头市东河区',
+  '150203': '内蒙古自治区包头市昆都伦区',
+  '150204': '内蒙古自治区包头市青山区',
+  '150205': '内蒙古自治区包头市石拐矿区',
+  '150206': '内蒙古自治区包头市白云矿区',
+  '150207': '内蒙古自治区包头市郊区',
+  '150221': '内蒙古自治区包头市土默特右旗',
+  '150222': '内蒙古自治区包头市固阳县',
+  '150223': '内蒙古自治区包头市达尔罕茂明安联合旗',
+  '150300': '内蒙古自治区乌海市',
+  '150301': '内蒙古自治区乌海市市辖区',
+  '150302': '内蒙古自治区乌海市海勃湾区',
+  '150303': '内蒙古自治区乌海市海南区',
+  '150304': '内蒙古自治区乌海市乌达区',
+  '150400': '内蒙古自治区赤峰市',
+  '150401': '内蒙古自治区赤峰市市辖区',
+  '150402': '内蒙古自治区赤峰市红山区',
+  '150403': '内蒙古自治区赤峰市元宝山区',
+  '150404': '内蒙古自治区赤峰市松山区',
+  '150421': '内蒙古自治区赤峰市阿鲁科尔沁旗',
+  '150422': '内蒙古自治区赤峰市巴林左旗',
+  '150423': '内蒙古自治区赤峰市巴林右旗',
+  '150424': '内蒙古自治区赤峰市林西县',
+  '150425': '内蒙古自治区赤峰市克什克腾旗',
+  '150426': '内蒙古自治区赤峰市翁牛特旗',
+  '150428': '内蒙古自治区赤峰市喀喇沁旗',
+  '150429': '内蒙古自治区赤峰市宁城县',
+  '150430': '内蒙古自治区赤峰市敖汉旗',
+  '152100': '内蒙古自治区呼伦贝尔盟',
+  '152101': '内蒙古自治区呼伦贝尔盟海拉尔市',
+  '152102': '内蒙古自治区呼伦贝尔盟满洲里市',
+  '152103': '内蒙古自治区呼伦贝尔盟扎兰屯市',
+  '152104': '内蒙古自治区呼伦贝尔盟牙克石市',
+  '152105': '内蒙古自治区呼伦贝尔盟根河市',
+  '152106': '内蒙古自治区呼伦贝尔盟额尔古纳市',
+  '152122': '内蒙古自治区呼伦贝尔盟阿荣旗',
+  '152123': '内蒙古自治区呼伦贝尔盟莫力达瓦达斡尔族自治旗',
+  '152127': '内蒙古自治区呼伦贝尔盟鄂伦春自治旗',
+  '152128': '内蒙古自治区呼伦贝尔盟鄂温克族自治旗',
+  '152129': '内蒙古自治区呼伦贝尔盟新巴尔虎右旗',
+  '152130': '内蒙古自治区呼伦贝尔盟新巴尔虎左旗',
+  '152131': '内蒙古自治区呼伦贝尔盟陈巴尔虎旗',
+  '152200': '内蒙古自治区兴安盟',
+  '152201': '内蒙古自治区兴安盟乌兰浩特市',
+  '152202': '内蒙古自治区兴安盟阿尔山市',
+  '152221': '内蒙古自治区兴安盟科尔沁右翼前旗',
+  '152222': '内蒙古自治区兴安盟科尔沁右翼中旗',
+  '152223': '内蒙古自治区兴安盟扎赉特旗',
+  '152224': '内蒙古自治区兴安盟突泉县',
+  '152300': '内蒙古自治区哲里木盟',
+  '152301': '内蒙古自治区哲里木盟通辽市',
+  '152302': '内蒙古自治区哲里木盟霍林郭勒市',
+  '152322': '内蒙古自治区哲里木盟科尔沁左翼中旗',
+  '152323': '内蒙古自治区哲里木盟科尔沁左翼后旗',
+  '152324': '内蒙古自治区哲里木盟开鲁县',
+  '152325': '内蒙古自治区哲里木盟库伦旗',
+  '152326': '内蒙古自治区哲里木盟奈曼旗',
+  '152327': '内蒙古自治区哲里木盟扎鲁特旗',
+  '152500': '内蒙古自治区锡林郭勒盟',
+  '152501': '内蒙古自治区锡林郭勒盟二连浩特市',
+  '152502': '内蒙古自治区锡林郭勒盟锡林浩特市',
+  '152522': '内蒙古自治区锡林郭勒盟阿巴嘎旗',
+  '152523': '内蒙古自治区锡林郭勒盟苏尼特左旗',
+  '152524': '内蒙古自治区锡林郭勒盟苏尼特右旗',
+  '152525': '内蒙古自治区锡林郭勒盟东乌珠穆沁旗',
+  '152526': '内蒙古自治区锡林郭勒盟西乌珠穆沁旗',
+  '152527': '内蒙古自治区锡林郭勒盟太仆寺旗',
+  '152528': '内蒙古自治区锡林郭勒盟镶黄旗',
+  '152529': '内蒙古自治区锡林郭勒盟正镶白旗',
+  '152530': '内蒙古自治区锡林郭勒盟正蓝旗',
+  '152531': '内蒙古自治区锡林郭勒盟多伦县',
+  '152600': '内蒙古自治区乌兰察布盟',
+  '152601': '内蒙古自治区乌兰察布盟集宁市',
+  '152602': '内蒙古自治区乌兰察布盟丰镇市',
+  '152624': '内蒙古自治区乌兰察布盟卓资县',
+  '152625': '内蒙古自治区乌兰察布盟化德县',
+  '152626': '内蒙古自治区乌兰察布盟商都县',
+  '152627': '内蒙古自治区乌兰察布盟兴和县',
+  '152629': '内蒙古自治区乌兰察布盟凉城县',
+  '152630': '内蒙古自治区乌兰察布盟察哈尔右翼前旗',
+  '152631': '内蒙古自治区乌兰察布盟察哈尔右翼中旗',
+  '152632': '内蒙古自治区乌兰察布盟察哈尔右翼后旗',
+  '152634': '内蒙古自治区乌兰察布盟四子王旗',
+  '152700': '内蒙古自治区伊克昭盟',
+  '152701': '内蒙古自治区伊克昭盟东胜市',
+  '152722': '内蒙古自治区伊克昭盟达拉特旗',
+  '152723': '内蒙古自治区伊克昭盟准格尔旗',
+  '152724': '内蒙古自治区伊克昭盟鄂托克前旗',
+  '152725': '内蒙古自治区伊克昭盟鄂托克旗',
+  '152726': '内蒙古自治区伊克昭盟杭锦旗',
+  '152727': '内蒙古自治区伊克昭盟乌审旗',
+  '152728': '内蒙古自治区伊克昭盟伊金霍洛旗',
+  '152800': '内蒙古自治区巴彦淖尔盟',
+  '152801': '内蒙古自治区巴彦淖尔盟临河市',
+  '152822': '内蒙古自治区巴彦淖尔盟五原县',
+  '152823': '内蒙古自治区巴彦淖尔盟磴口县',
+  '152824': '内蒙古自治区巴彦淖尔盟乌拉特前旗',
+  '152825': '内蒙古自治区巴彦淖尔盟乌拉特中旗',
+  '152826': '内蒙古自治区巴彦淖尔盟乌拉特后旗',
+  '152827': '内蒙古自治区巴彦淖尔盟杭锦后旗',
+  '152900': '内蒙古自治区阿拉善盟',
+  '152921': '内蒙古自治区阿拉善盟阿拉善左旗',
+  '152922': '内蒙古自治区阿拉善盟阿拉善右旗',
+  '152923': '内蒙古自治区阿拉善盟额济纳旗',
+  '210000': '辽宁省',
+  '210100': '辽宁省沈阳市',
+  '210101': '辽宁省沈阳市市辖区',
+  '210102': '辽宁省沈阳市和平区',
+  '210103': '辽宁省沈阳市沈河区',
+  '210104': '辽宁省沈阳市大东区',
+  '210105': '辽宁省沈阳市皇姑区',
+  '210106': '辽宁省沈阳市铁西区',
+  '210111': '辽宁省沈阳市苏家屯区',
+  '210112': '辽宁省沈阳市东陵区',
+  '210113': '辽宁省沈阳市新城子区',
+  '210114': '辽宁省沈阳市于洪区',
+  '210122': '辽宁省沈阳市辽中县',
+  '210123': '辽宁省沈阳市康平县',
+  '210124': '辽宁省沈阳市法库县',
+  '210181': '辽宁省沈阳市新民市',
+  '210200': '辽宁省大连市',
+  '210201': '辽宁省大连市市辖区',
+  '210202': '辽宁省大连市中山区',
+  '210203': '辽宁省大连市西岗区',
+  '210204': '辽宁省大连市沙河口区',
+  '210211': '辽宁省大连市甘井子区',
+  '210212': '辽宁省大连市旅顺口区',
+  '210213': '辽宁省大连市金州区',
+  '210224': '辽宁省大连市长海县',
+  '210281': '辽宁省大连市瓦房店市',
+  '210282': '辽宁省大连市普兰店市',
+  '210283': '辽宁省大连市庄河市',
+  '210300': '辽宁省鞍山市',
+  '210301': '辽宁省鞍山市市辖区',
+  '210302': '辽宁省鞍山市铁东区',
+  '210303': '辽宁省鞍山市铁西区',
+  '210304': '辽宁省鞍山市立山区',
+  '210311': '辽宁省鞍山市千山区',
+  '210321': '辽宁省鞍山市台安县',
+  '210323': '辽宁省鞍山市岫岩满族自治县',
+  '210381': '辽宁省鞍山市海城市',
+  '210400': '辽宁省抚顺市',
+  '210401': '辽宁省抚顺市市辖区',
+  '210402': '辽宁省抚顺市新抚区',
+  '210403': '辽宁省抚顺市露天区',
+  '210404': '辽宁省抚顺市望花区',
+  '210411': '辽宁省抚顺市顺城区',
+  '210421': '辽宁省抚顺市抚顺县',
+  '210422': '辽宁省抚顺市新宾满族自治县',
+  '210423': '辽宁省抚顺市清原满族自治县',
+  '210500': '辽宁省本溪市',
+  '210501': '辽宁省本溪市市辖区',
+  '210502': '辽宁省本溪市平山区',
+  '210503': '辽宁省本溪市溪湖区',
+  '210504': '辽宁省本溪市明山区',
+  '210505': '辽宁省本溪市南芬区',
+  '210521': '辽宁省本溪市本溪满族自治县',
+  '210522': '辽宁省本溪市桓仁满族自治县',
+  '210600': '辽宁省丹东市',
+  '210601': '辽宁省丹东市市辖区',
+  '210602': '辽宁省丹东市元宝区',
+  '210603': '辽宁省丹东市振兴区',
+  '210604': '辽宁省丹东市振安区',
+  '210624': '辽宁省丹东市宽甸满族自治县',
+  '210681': '辽宁省丹东市东港市',
+  '210682': '辽宁省丹东市凤城市',
+  '210700': '辽宁省锦州市',
+  '210701': '辽宁省锦州市市辖区',
+  '210702': '辽宁省锦州市古塔区',
+  '210703': '辽宁省锦州市凌河区',
+  '210711': '辽宁省锦州市太和区',
+  '210726': '辽宁省锦州市黑山县',
+  '210727': '辽宁省锦州市义县',
+  '210781': '辽宁省锦州市凌海市',
+  '210782': '辽宁省锦州市北宁市',
+  '210800': '辽宁省营口市',
+  '210801': '辽宁省营口市市辖区',
+  '210802': '辽宁省营口市站前区',
+  '210803': '辽宁省营口市西市区',
+  '210804': '辽宁省营口市鲅鱼圈区',
+  '210811': '辽宁省营口市老边区',
+  '210881': '辽宁省营口市盖州市',
+  '210882': '辽宁省营口市大石桥市',
+  '210900': '辽宁省阜新市',
+  '210901': '辽宁省阜新市市辖区',
+  '210902': '辽宁省阜新市海州区',
+  '210903': '辽宁省阜新市新邱区',
+  '210904': '辽宁省阜新市太平区',
+  '210905': '辽宁省阜新市清河门区',
+  '210911': '辽宁省阜新市细河区',
+  '210921': '辽宁省阜新市阜新蒙古族自治县',
+  '210922': '辽宁省阜新市彰武县',
+  '211000': '辽宁省辽阳市',
+  '211001': '辽宁省辽阳市市辖区',
+  '211002': '辽宁省辽阳市白塔区',
+  '211003': '辽宁省辽阳市文圣区',
+  '211004': '辽宁省辽阳市宏伟区',
+  '211005': '辽宁省辽阳市弓长岭区',
+  '211011': '辽宁省辽阳市太子河区',
+  '211021': '辽宁省辽阳市辽阳县',
+  '211081': '辽宁省辽阳市灯塔市',
+  '211100': '辽宁省盘锦市',
+  '211101': '辽宁省盘锦市市辖区',
+  '211102': '辽宁省盘锦市双台子区',
+  '211103': '辽宁省盘锦市兴隆台区',
+  '211121': '辽宁省盘锦市大洼县',
+  '211122': '辽宁省盘锦市盘山县',
+  '211200': '辽宁省铁岭市',
+  '211201': '辽宁省铁岭市市辖区',
+  '211202': '辽宁省铁岭市银州区',
+  '211204': '辽宁省铁岭市清河区',
+  '211221': '辽宁省铁岭市铁岭县',
+  '211223': '辽宁省铁岭市西丰县',
+  '211224': '辽宁省铁岭市昌图县',
+  '211281': '辽宁省铁岭市铁法市',
+  '211282': '辽宁省铁岭市开原市',
+  '211300': '辽宁省朝阳市',
+  '211301': '辽宁省朝阳市市辖区',
+  '211302': '辽宁省朝阳市双塔区',
+  '211303': '辽宁省朝阳市龙城区',
+  '211321': '辽宁省朝阳市朝阳县',
+  '211322': '辽宁省朝阳市建平县',
+  '211324': '辽宁省朝阳市喀喇沁左翼蒙古族自治县',
+  '211381': '辽宁省朝阳市北票市',
+  '211382': '辽宁省朝阳市凌源市',
+  '211400': '辽宁省葫芦岛市',
+  '211401': '辽宁省葫芦岛市市辖区',
+  '211402': '辽宁省葫芦岛市连山区',
+  '211403': '辽宁省葫芦岛市龙港区',
+  '211404': '辽宁省葫芦岛市南票区',
+  '211421': '辽宁省葫芦岛市绥中县',
+  '211422': '辽宁省葫芦岛市建昌县',
+  '211481': '辽宁省葫芦岛市兴城市',
+  '220000': '吉林省',
+  '220100': '吉林省长春市',
+  '220101': '吉林省长春市市辖区',
+  '220102': '吉林省长春市南关区',
+  '220103': '吉林省长春市宽城区',
+  '220104': '吉林省长春市朝阳区',
+  '220105': '吉林省长春市二道区',
+  '220106': '吉林省长春市绿园区',
+  '220112': '吉林省长春市双阳区',
+  '220122': '吉林省长春市农安县',
+  '220181': '吉林省长春市九台市',
+  '220182': '吉林省长春市榆树市',
+  '220183': '吉林省长春市德惠市',
+  '220200': '吉林省吉林市',
+  '220201': '吉林省吉林市市辖区',
+  '220202': '吉林省吉林市昌邑区',
+  '220203': '吉林省吉林市龙潭区',
+  '220204': '吉林省吉林市船营区',
+  '220211': '吉林省吉林市丰满区',
+  '220221': '吉林省吉林市永吉县',
+  '220281': '吉林省吉林市蛟河市',
+  '220282': '吉林省吉林市桦甸市',
+  '220283': '吉林省吉林市舒兰市',
+  '220284': '吉林省吉林市磐石市',
+  '220300': '吉林省四平市',
+  '220301': '吉林省四平市市辖区',
+  '220302': '吉林省四平市铁西区',
+  '220303': '吉林省四平市铁东区',
+  '220322': '吉林省四平市梨树县',
+  '220323': '吉林省四平市伊通满族自治县',
+  '220381': '吉林省四平市公主岭市',
+  '220382': '吉林省四平市双辽市',
+  '220400': '吉林省辽源市',
+  '220401': '吉林省辽源市市辖区',
+  '220402': '吉林省辽源市龙山区',
+  '220403': '吉林省辽源市西安区',
+  '220421': '吉林省辽源市东丰县',
+  '220422': '吉林省辽源市东辽县',
+  '220500': '吉林省通化市',
+  '220501': '吉林省通化市市辖区',
+  '220502': '吉林省通化市东昌区',
+  '220503': '吉林省通化市二道江区',
+  '220521': '吉林省通化市通化县',
+  '220523': '吉林省通化市辉南县',
+  '220524': '吉林省通化市柳河县',
+  '220581': '吉林省通化市梅河口市',
+  '220582': '吉林省通化市集安市',
+  '220600': '吉林省白山市',
+  '220601': '吉林省白山市市辖区',
+  '220602': '吉林省白山市八道江区',
+  '220621': '吉林省白山市抚松县',
+  '220622': '吉林省白山市靖宇县',
+  '220623': '吉林省白山市长白朝鲜族自治县',
+  '220625': '吉林省白山市江源县',
+  '220681': '吉林省白山市临江市',
+  '220700': '吉林省松原市',
+  '220701': '吉林省松原市市辖区',
+  '220702': '吉林省松原市宁江区',
+  '220721': '吉林省松原市前郭尔罗斯蒙古族自治县',
+  '220722': '吉林省松原市长岭县',
+  '220723': '吉林省松原市乾安县',
+  '220724': '吉林省松原市扶余县',
+  '220800': '吉林省白城市',
+  '220801': '吉林省白城市市辖区',
+  '220802': '吉林省白城市洮北区',
+  '220821': '吉林省白城市镇赉县',
+  '220822': '吉林省白城市通榆县',
+  '220881': '吉林省白城市洮南市',
+  '220882': '吉林省白城市大安市',
+  '222400': '吉林省延边朝鲜族自治州',
+  '222401': '吉林省延边朝鲜族自治州延吉市',
+  '222402': '吉林省延边朝鲜族自治州图们市',
+  '222403': '吉林省延边朝鲜族自治州敦化市',
+  '222404': '吉林省延边朝鲜族自治州珲春市',
+  '222405': '吉林省延边朝鲜族自治州龙井市',
+  '222406': '吉林省延边朝鲜族自治州和龙市',
+  '222424': '吉林省延边朝鲜族自治州汪清县',
+  '222426': '吉林省延边朝鲜族自治州安图县',
+  '230000': '黑龙江省',
+  '230100': '黑龙江省哈尔滨市',
+  '230101': '黑龙江省哈尔滨市市辖区',
+  '230102': '黑龙江省哈尔滨市道里区',
+  '230103': '黑龙江省哈尔滨市南岗区',
+  '230104': '黑龙江省哈尔滨市道外区',
+  '230105': '黑龙江省哈尔滨市太平区',
+  '230106': '黑龙江省哈尔滨市香坊区',
+  '230107': '黑龙江省哈尔滨市动力区',
+  '230108': '黑龙江省哈尔滨市平房区',
+  '230121': '黑龙江省哈尔滨市呼兰县',
+  '230123': '黑龙江省哈尔滨市依兰县',
+  '230124': '黑龙江省哈尔滨市方正县',
+  '230125': '黑龙江省哈尔滨市宾县',
+  '230126': '黑龙江省哈尔滨市巴彦县',
+  '230127': '黑龙江省哈尔滨市木兰县',
+  '230128': '黑龙江省哈尔滨市通河县',
+  '230129': '黑龙江省哈尔滨市延寿县',
+  '230181': '黑龙江省哈尔滨市阿城市',
+  '230182': '黑龙江省哈尔滨市双城市',
+  '230183': '黑龙江省哈尔滨市尚志市',
+  '230184': '黑龙江省哈尔滨市五常市',
+  '230200': '黑龙江省齐齐哈尔市',
+  '230201': '黑龙江省齐齐哈尔市市辖区',
+  '230202': '黑龙江省齐齐哈尔市龙沙区',
+  '230203': '黑龙江省齐齐哈尔市建华区',
+  '230204': '黑龙江省齐齐哈尔市铁锋区',
+  '230205': '黑龙江省齐齐哈尔市昂昂溪区',
+  '230206': '黑龙江省齐齐哈尔市富拉尔基区',
+  '230207': '黑龙江省齐齐哈尔市碾子山区',
+  '230208': '黑龙江省齐齐哈尔市梅里斯达斡尔族区',
+  '230221': '黑龙江省齐齐哈尔市龙江县',
+  '230223': '黑龙江省齐齐哈尔市依安县',
+  '230224': '黑龙江省齐齐哈尔市泰来县',
+  '230225': '黑龙江省齐齐哈尔市甘南县',
+  '230227': '黑龙江省齐齐哈尔市富裕县',
+  '230229': '黑龙江省齐齐哈尔市克山县',
+  '230230': '黑龙江省齐齐哈尔市克东县',
+  '230231': '黑龙江省齐齐哈尔市拜泉县',
+  '230281': '黑龙江省齐齐哈尔市讷河市',
+  '230300': '黑龙江省鸡西市',
+  '230301': '黑龙江省鸡西市市辖区',
+  '230302': '黑龙江省鸡西市鸡冠区',
+  '230303': '黑龙江省鸡西市恒山区',
+  '230304': '黑龙江省鸡西市滴道区',
+  '230305': '黑龙江省鸡西市梨树区',
+  '230306': '黑龙江省鸡西市城子河区',
+  '230307': '黑龙江省鸡西市麻山区',
+  '230321': '黑龙江省鸡西市鸡东县',
+  '230381': '黑龙江省鸡西市虎林市',
+  '230382': '黑龙江省鸡西市密山市',
+  '230400': '黑龙江省鹤岗市',
+  '230401': '黑龙江省鹤岗市市辖区',
+  '230402': '黑龙江省鹤岗市向阳区',
+  '230403': '黑龙江省鹤岗市工农区',
+  '230404': '黑龙江省鹤岗市南山区',
+  '230405': '黑龙江省鹤岗市兴安区',
+  '230406': '黑龙江省鹤岗市东山区',
+  '230407': '黑龙江省鹤岗市兴山区',
+  '230421': '黑龙江省鹤岗市萝北县',
+  '230422': '黑龙江省鹤岗市绥滨县',
+  '230500': '黑龙江省双鸭山市',
+  '230501': '黑龙江省双鸭山市市辖区',
+  '230502': '黑龙江省双鸭山市尖山区',
+  '230503': '黑龙江省双鸭山市岭东区',
+  '230505': '黑龙江省双鸭山市四方台区',
+  '230506': '黑龙江省双鸭山市宝山区',
+  '230521': '黑龙江省双鸭山市集贤县',
+  '230522': '黑龙江省双鸭山市友谊县',
+  '230523': '黑龙江省双鸭山市宝清县',
+  '230524': '黑龙江省双鸭山市饶河县',
+  '230600': '黑龙江省大庆市',
+  '230601': '黑龙江省大庆市市辖区',
+  '230602': '黑龙江省大庆市萨尔图区',
+  '230603': '黑龙江省大庆市龙凤区',
+  '230604': '黑龙江省大庆市让胡路区',
+  '230605': '黑龙江省大庆市红岗区',
+  '230606': '黑龙江省大庆市大同区',
+  '230621': '黑龙江省大庆市肇州县',
+  '230622': '黑龙江省大庆市肇源县',
+  '230623': '黑龙江省大庆市林甸县',
+  '230624': '黑龙江省大庆市杜尔伯特蒙古族自治县',
+  '230700': '黑龙江省伊春市',
+  '230701': '黑龙江省伊春市市辖区',
+  '230702': '黑龙江省伊春市伊春区',
+  '230703': '黑龙江省伊春市南岔区',
+  '230704': '黑龙江省伊春市友好区',
+  '230705': '黑龙江省伊春市西林区',
+  '230706': '黑龙江省伊春市翠峦区',
+  '230707': '黑龙江省伊春市新青区',
+  '230708': '黑龙江省伊春市美溪区',
+  '230709': '黑龙江省伊春市金山屯区',
+  '230710': '黑龙江省伊春市五营区',
+  '230711': '黑龙江省伊春市乌马河区',
+  '230712': '黑龙江省伊春市汤旺河区',
+  '230713': '黑龙江省伊春市带岭区',
+  '230714': '黑龙江省伊春市乌伊岭区',
+  '230715': '黑龙江省伊春市红星区',
+  '230716': '黑龙江省伊春市上甘岭区',
+  '230722': '黑龙江省伊春市嘉荫县',
+  '230781': '黑龙江省伊春市铁力市',
+  '230800': '黑龙江省佳木斯市',
+  '230801': '黑龙江省佳木斯市市辖区',
+  '230802': '黑龙江省佳木斯市永红区',
+  '230803': '黑龙江省佳木斯市向阳区',
+  '230804': '黑龙江省佳木斯市前进区',
+  '230805': '黑龙江省佳木斯市东风区',
+  '230811': '黑龙江省佳木斯市郊区',
+  '230822': '黑龙江省佳木斯市桦南县',
+  '230826': '黑龙江省佳木斯市桦川县',
+  '230828': '黑龙江省佳木斯市汤原县',
+  '230833': '黑龙江省佳木斯市抚远县',
+  '230881': '黑龙江省佳木斯市同江市',
+  '230882': '黑龙江省佳木斯市富锦市',
+  '230900': '黑龙江省七台河市',
+  '230901': '黑龙江省七台河市市辖区',
+  '230902': '黑龙江省七台河市新兴区',
+  '230903': '黑龙江省七台河市桃山区',
+  '230904': '黑龙江省七台河市茄子河区',
+  '230921': '黑龙江省七台河市勃利县',
+  '231000': '黑龙江省牡丹江市',
+  '231001': '黑龙江省牡丹江市市辖区',
+  '231002': '黑龙江省牡丹江市东安区',
+  '231003': '黑龙江省牡丹江市阳明区',
+  '231004': '黑龙江省牡丹江市爱民区',
+  '231005': '黑龙江省牡丹江市西安区',
+  '231024': '黑龙江省牡丹江市东宁县',
+  '231025': '黑龙江省牡丹江市林口县',
+  '231081': '黑龙江省牡丹江市绥芬河市',
+  '231083': '黑龙江省牡丹江市海林市',
+  '231084': '黑龙江省牡丹江市宁安市',
+  '231085': '黑龙江省牡丹江市穆棱市',
+  '231100': '黑龙江省黑河市',
+  '231101': '黑龙江省黑河市市辖区',
+  '231102': '黑龙江省黑河市爱辉区',
+  '231121': '黑龙江省黑河市嫩江县',
+  '231123': '黑龙江省黑河市逊克县',
+  '231124': '黑龙江省黑河市孙吴县',
+  '231181': '黑龙江省黑河市北安市',
+  '231182': '黑龙江省黑河市五大连池市',
+  '232300': '黑龙江省绥化地区',
+  '232301': '黑龙江省绥化地区绥化市',
+  '232302': '黑龙江省绥化地区安达市',
+  '232303': '黑龙江省绥化地区肇东市',
+  '232304': '黑龙江省绥化地区海伦市',
+  '232324': '黑龙江省绥化地区望奎县',
+  '232325': '黑龙江省绥化地区兰西县',
+  '232326': '黑龙江省绥化地区青冈县',
+  '232330': '黑龙江省绥化地区庆安县',
+  '232331': '黑龙江省绥化地区明水县',
+  '232332': '黑龙江省绥化地区绥棱县',
+  '232700': '黑龙江省大兴安岭地区',
+  '232721': '黑龙江省大兴安岭地区呼玛县',
+  '232722': '黑龙江省大兴安岭地区塔河县',
+  '232723': '黑龙江省大兴安岭地区漠河县',
+  '310000': '上海市',
+  '310100': '上海市市辖区',
+  '310101': '上海市黄浦区',
+  '310102': '上海市南市区',
+  '310103': '上海市卢湾区',
+  '310104': '上海市徐汇区',
+  '310105': '上海市长宁区',
+  '310106': '上海市静安区',
+  '310107': '上海市普陀区',
+  '310108': '上海市闸北区',
+  '310109': '上海市虹口区',
+  '310110': '上海市杨浦区',
+  '310112': '上海市闵行区',
+  '310113': '上海市宝山区',
+  '310114': '上海市嘉定区',
+  '310115': '上海市浦东新区',
+  '310116': '上海市金山区',
+  '310117': '上海市松江区',
+  '310200': '上海市县',
+  '310225': '上海市南汇县',
+  '310226': '上海市奉贤县',
+  '310229': '上海市青浦县',
+  '310230': '上海市崇明县',
+  '320000': '江苏省',
+  '320100': '江苏省南京市',
+  '320101': '江苏省南京市市辖区',
+  '320102': '江苏省南京市玄武区',
+  '320103': '江苏省南京市白下区',
+  '320104': '江苏省南京市秦淮区',
+  '320105': '江苏省南京市建邺区',
+  '320106': '江苏省南京市鼓楼区',
+  '320107': '江苏省南京市下关区',
+  '320111': '江苏省南京市浦口区',
+  '320112': '江苏省南京市大厂区',
+  '320113': '江苏省南京市栖霞区',
+  '320114': '江苏省南京市雨花台区',
+  '320121': '江苏省南京市江宁县',
+  '320122': '江苏省南京市江浦县',
+  '320123': '江苏省南京市六合县',
+  '320124': '江苏省南京市溧水县',
+  '320125': '江苏省南京市高淳县',
+  '320200': '江苏省无锡市',
+  '320201': '江苏省无锡市市辖区',
+  '320202': '江苏省无锡市崇安区',
+  '320203': '江苏省无锡市南长区',
+  '320204': '江苏省无锡市北塘区',
+  '320211': '江苏省无锡市郊区',
+  '320281': '江苏省无锡市江阴市',
+  '320282': '江苏省无锡市宜兴市',
+  '320283': '江苏省无锡市锡山市',
+  '320300': '江苏省徐州市',
+  '320301': '江苏省徐州市市辖区',
+  '320302': '江苏省徐州市鼓楼区',
+  '320303': '江苏省徐州市云龙区',
+  '320304': '江苏省徐州市九里区',
+  '320305': '江苏省徐州市贾汪区',
+  '320311': '江苏省徐州市泉山区',
+  '320321': '江苏省徐州市丰县',
+  '320322': '江苏省徐州市沛县',
+  '320323': '江苏省徐州市铜山县',
+  '320324': '江苏省徐州市睢宁县',
+  '320381': '江苏省徐州市新沂市',
+  '320382': '江苏省徐州市邳州市',
+  '320400': '江苏省常州市',
+  '320401': '江苏省常州市市辖区',
+  '320402': '江苏省常州市天宁区',
+  '320404': '江苏省常州市钟楼区',
+  '320405': '江苏省常州市戚墅堰区',
+  '320411': '江苏省常州市郊区',
+  '320481': '江苏省常州市溧阳市',
+  '320482': '江苏省常州市金坛市',
+  '320483': '江苏省常州市武进市',
+  '320500': '江苏省苏州市',
+  '320501': '江苏省苏州市市辖区',
+  '320502': '江苏省苏州市沧浪区',
+  '320503': '江苏省苏州市平江区',
+  '320504': '江苏省苏州市金阊区',
+  '320511': '江苏省苏州市郊区',
+  '320581': '江苏省苏州市常熟市',
+  '320582': '江苏省苏州市张家港市',
+  '320583': '江苏省苏州市昆山市',
+  '320584': '江苏省苏州市吴江市',
+  '320585': '江苏省苏州市太仓市',
+  '320586': '江苏省苏州市吴县市',
+  '320600': '江苏省南通市',
+  '320601': '江苏省南通市市辖区',
+  '320602': '江苏省南通市崇川区',
+  '320611': '江苏省南通市港闸区',
+  '320621': '江苏省南通市海安县',
+  '320623': '江苏省南通市如东县',
+  '320681': '江苏省南通市启东市',
+  '320682': '江苏省南通市如皋市',
+  '320683': '江苏省南通市通州市',
+  '320684': '江苏省南通市海门市',
+  '320700': '江苏省连云港市',
+  '320701': '江苏省连云港市市辖区',
+  '320703': '江苏省连云港市连云区',
+  '320704': '江苏省连云港市云台区',
+  '320705': '江苏省连云港市新浦区',
+  '320706': '江苏省连云港市海州区',
+  '320721': '江苏省连云港市赣榆县',
+  '320722': '江苏省连云港市东海县',
+  '320723': '江苏省连云港市灌云县',
+  '320724': '江苏省连云港市灌南县',
+  '320800': '江苏省淮阴市',
+  '320801': '江苏省淮阴市市辖区',
+  '320802': '江苏省淮阴市清河区',
+  '320811': '江苏省淮阴市清浦区',
+  '320821': '江苏省淮阴市淮阴县',
+  '320826': '江苏省淮阴市涟水县',
+  '320829': '江苏省淮阴市洪泽县',
+  '320830': '江苏省淮阴市盱眙县',
+  '320831': '江苏省淮阴市金湖县',
+  '320882': '江苏省淮阴市淮安市',
+  '320900': '江苏省盐城市',
+  '320901': '江苏省盐城市市辖区',
+  '320902': '江苏省盐城市城区',
+  '320921': '江苏省盐城市响水县',
+  '320922': '江苏省盐城市滨海县',
+  '320923': '江苏省盐城市阜宁县',
+  '320924': '江苏省盐城市射阳县',
+  '320925': '江苏省盐城市建湖县',
+  '320928': '江苏省盐城市盐都县',
+  '320981': '江苏省盐城市东台市',
+  '320982': '江苏省盐城市大丰市',
+  '321000': '江苏省扬州市',
+  '321001': '江苏省扬州市市辖区',
+  '321002': '江苏省扬州市广陵区',
+  '321011': '江苏省扬州市郊区',
+  '321023': '江苏省扬州市宝应县',
+  '321027': '江苏省扬州市邗江县',
+  '321081': '江苏省扬州市仪征市',
+  '321084': '江苏省扬州市高邮市',
+  '321088': '江苏省扬州市江都市',
+  '321100': '江苏省镇江市',
+  '321101': '江苏省镇江市市辖区',
+  '321102': '江苏省镇江市京口区',
+  '321111': '江苏省镇江市润州区',
+  '321121': '江苏省镇江市丹徒县',
+  '321181': '江苏省镇江市丹阳市',
+  '321182': '江苏省镇江市扬中市',
+  '321183': '江苏省镇江市句容市',
+  '321200': '江苏省泰州市',
+  '321201': '江苏省泰州市市辖区',
+  '321202': '江苏省泰州市海陵区',
+  '321203': '江苏省泰州市高港区',
+  '321281': '江苏省泰州市兴化市',
+  '321282': '江苏省泰州市靖江市',
+  '321283': '江苏省泰州市泰兴市',
+  '321284': '江苏省泰州市姜堰市',
+  '321300': '江苏省宿迁市',
+  '321301': '江苏省宿迁市市辖区',
+  '321302': '江苏省宿迁市宿城区',
+  '321321': '江苏省宿迁市宿豫县',
+  '321322': '江苏省宿迁市沭阳县',
+  '321323': '江苏省宿迁市泗阳县',
+  '321324': '江苏省宿迁市泗洪县',
+  '330000': '浙江省',
+  '330100': '浙江省杭州市',
+  '330101': '浙江省杭州市市辖区',
+  '330102': '浙江省杭州市上城区',
+  '330103': '浙江省杭州市下城区',
+  '330104': '浙江省杭州市江干区',
+  '330105': '浙江省杭州市拱墅区',
+  '330106': '浙江省杭州市西湖区',
+  '330108': '浙江省杭州市滨江区',
+  '330122': '浙江省杭州市桐庐县',
+  '330127': '浙江省杭州市淳安县',
+  '330181': '浙江省杭州市萧山市',
+  '330182': '浙江省杭州市建德市',
+  '330183': '浙江省杭州市富阳市',
+  '330184': '浙江省杭州市余杭市',
+  '330185': '浙江省杭州市临安市',
+  '330200': '浙江省宁波市',
+  '330201': '浙江省宁波市市辖区',
+  '330203': '浙江省宁波市海曙区',
+  '330204': '浙江省宁波市江东区',
+  '330205': '浙江省宁波市江北区',
+  '330206': '浙江省宁波市北仑区',
+  '330211': '浙江省宁波市镇海区',
+  '330225': '浙江省宁波市象山县',
+  '330226': '浙江省宁波市宁海县',
+  '330227': '浙江省宁波市鄞县',
+  '330281': '浙江省宁波市余姚市',
+  '330282': '浙江省宁波市慈溪市',
+  '330283': '浙江省宁波市奉化市',
+  '330300': '浙江省温州市',
+  '330301': '浙江省温州市市辖区',
+  '330302': '浙江省温州市鹿城区',
+  '330303': '浙江省温州市龙湾区',
+  '330304': '浙江省温州市瓯海区',
+  '330322': '浙江省温州市洞头县',
+  '330324': '浙江省温州市永嘉县',
+  '330326': '浙江省温州市平阳县',
+  '330327': '浙江省温州市苍南县',
+  '330328': '浙江省温州市文成县',
+  '330329': '浙江省温州市泰顺县',
+  '330381': '浙江省温州市瑞安市',
+  '330382': '浙江省温州市乐清市',
+  '330400': '浙江省嘉兴市',
+  '330401': '浙江省嘉兴市市辖区',
+  '330402': '浙江省嘉兴市秀城区',
+  '330411': '浙江省嘉兴市郊区',
+  '330421': '浙江省嘉兴市嘉善县',
+  '330424': '浙江省嘉兴市海盐县',
+  '330481': '浙江省嘉兴市海宁市',
+  '330482': '浙江省嘉兴市平湖市',
+  '330483': '浙江省嘉兴市桐乡市',
+  '330500': '浙江省湖州市',
+  '330501': '浙江省湖州市市辖区',
+  '330521': '浙江省湖州市德清县',
+  '330522': '浙江省湖州市长兴县',
+  '330523': '浙江省湖州市安吉县',
+  '330600': '浙江省绍兴市',
+  '330601': '浙江省绍兴市市辖区',
+  '330602': '浙江省绍兴市越城区',
+  '330621': '浙江省绍兴市绍兴县',
+  '330624': '浙江省绍兴市新昌县',
+  '330681': '浙江省绍兴市诸暨市',
+  '330682': '浙江省绍兴市上虞市',
+  '330683': '浙江省绍兴市嵊州市',
+  '330700': '浙江省金华市',
+  '330701': '浙江省金华市市辖区',
+  '330702': '浙江省金华市婺城区',
+  '330721': '浙江省金华市金华县',
+  '330723': '浙江省金华市武义县',
+  '330726': '浙江省金华市浦江县',
+  '330727': '浙江省金华市磐安县',
+  '330781': '浙江省金华市兰溪市',
+  '330782': '浙江省金华市义乌市',
+  '330783': '浙江省金华市东阳市',
+  '330784': '浙江省金华市永康市',
+  '330800': '浙江省衢州市',
+  '330801': '浙江省衢州市市辖区',
+  '330802': '浙江省衢州市柯城区',
+  '330821': '浙江省衢州市衢县',
+  '330822': '浙江省衢州市常山县',
+  '330824': '浙江省衢州市开化县',
+  '330825': '浙江省衢州市龙游县',
+  '330881': '浙江省衢州市江山市',
+  '330900': '浙江省舟山市',
+  '330901': '浙江省舟山市市辖区',
+  '330902': '浙江省舟山市定海区',
+  '330903': '浙江省舟山市普陀区',
+  '330921': '浙江省舟山市岱山县',
+  '330922': '浙江省舟山市嵊泗县',
+  '331000': '浙江省台州市',
+  '331001': '浙江省台州市市辖区',
+  '331002': '浙江省台州市椒江区',
+  '331003': '浙江省台州市黄岩区',
+  '331004': '浙江省台州市路桥区',
+  '331021': '浙江省台州市玉环县',
+  '331022': '浙江省台州市三门县',
+  '331023': '浙江省台州市天台县',
+  '331024': '浙江省台州市仙居县',
+  '331081': '浙江省台州市温岭市',
+  '331082': '浙江省台州市临海市',
+  '332500': '浙江省丽水地区',
+  '332501': '浙江省丽水地区丽水市',
+  '332502': '浙江省丽水地区龙泉市',
+  '332522': '浙江省丽水地区青田县',
+  '332523': '浙江省丽水地区云和县',
+  '332525': '浙江省丽水地区庆元县',
+  '332526': '浙江省丽水地区缙云县',
+  '332527': '浙江省丽水地区遂昌县',
+  '332528': '浙江省丽水地区松阳县',
+  '332529': '浙江省丽水地区景宁畲族自治县',
+  '340000': '安徽省',
+  '340100': '安徽省合肥市',
+  '340101': '安徽省合肥市市辖区',
+  '340102': '安徽省合肥市东市区',
+  '340103': '安徽省合肥市中市区',
+  '340104': '安徽省合肥市西市区',
+  '340111': '安徽省合肥市郊区',
+  '340121': '安徽省合肥市长丰县',
+  '340122': '安徽省合肥市肥东县',
+  '340123': '安徽省合肥市肥西县',
+  '340200': '安徽省芜湖市',
+  '340201': '安徽省芜湖市市辖区',
+  '340202': '安徽省芜湖市镜湖区',
+  '340203': '安徽省芜湖市马塘区',
+  '340204': '安徽省芜湖市新芜区',
+  '340207': '安徽省芜湖市鸠江区',
+  '340221': '安徽省芜湖市芜湖县',
+  '340222': '安徽省芜湖市繁昌县',
+  '340223': '安徽省芜湖市南陵县',
+  '340300': '安徽省蚌埠市',
+  '340301': '安徽省蚌埠市市辖区',
+  '340302': '安徽省蚌埠市东市区',
+  '340303': '安徽省蚌埠市中市区',
+  '340304': '安徽省蚌埠市西市区',
+  '340311': '安徽省蚌埠市郊区',
+  '340321': '安徽省蚌埠市怀远县',
+  '340322': '安徽省蚌埠市五河县',
+  '340323': '安徽省蚌埠市固镇县',
+  '340400': '安徽省淮南市',
+  '340401': '安徽省淮南市市辖区',
+  '340402': '安徽省淮南市大通区',
+  '340403': '安徽省淮南市田家庵区',
+  '340404': '安徽省淮南市谢家集区',
+  '340405': '安徽省淮南市八公山区',
+  '340406': '安徽省淮南市潘集区',
+  '340421': '安徽省淮南市凤台县',
+  '340500': '安徽省马鞍山市',
+  '340501': '安徽省马鞍山市市辖区',
+  '340502': '安徽省马鞍山市金家庄区',
+  '340503': '安徽省马鞍山市花山区',
+  '340504': '安徽省马鞍山市雨山区',
+  '340505': '安徽省马鞍山市向山区',
+  '340521': '安徽省马鞍山市当涂县',
+  '340600': '安徽省淮北市',
+  '340601': '安徽省淮北市市辖区',
+  '340602': '安徽省淮北市杜集区',
+  '340603': '安徽省淮北市相山区',
+  '340604': '安徽省淮北市烈山区',
+  '340621': '安徽省淮北市濉溪县',
+  '340700': '安徽省铜陵市',
+  '340701': '安徽省铜陵市市辖区',
+  '340702': '安徽省铜陵市铜官山区',
+  '340703': '安徽省铜陵市狮子山区',
+  '340711': '安徽省铜陵市郊区',
+  '340721': '安徽省铜陵市铜陵县',
+  '340800': '安徽省安庆市',
+  '340801': '安徽省安庆市市辖区',
+  '340802': '安徽省安庆市迎江区',
+  '340803': '安徽省安庆市大观区',
+  '340811': '安徽省安庆市郊区',
+  '340822': '安徽省安庆市怀宁县',
+  '340823': '安徽省安庆市枞阳县',
+  '340824': '安徽省安庆市潜山县',
+  '340825': '安徽省安庆市太湖县',
+  '340826': '安徽省安庆市宿松县',
+  '340827': '安徽省安庆市望江县',
+  '340828': '安徽省安庆市岳西县',
+  '340881': '安徽省安庆市桐城市',
+  '341000': '安徽省黄山市',
+  '341001': '安徽省黄山市市辖区',
+  '341002': '安徽省黄山市屯溪区',
+  '341003': '安徽省黄山市黄山区',
+  '341004': '安徽省黄山市徽州区',
+  '341021': '安徽省黄山市歙县',
+  '341022': '安徽省黄山市休宁县',
+  '341023': '安徽省黄山市黟县',
+  '341024': '安徽省黄山市祁门县',
+  '341100': '安徽省滁州市',
+  '341101': '安徽省滁州市市辖区',
+  '341102': '安徽省滁州市琅琊区',
+  '341103': '安徽省滁州市南谯区',
+  '341122': '安徽省滁州市来安县',
+  '341124': '安徽省滁州市全椒县',
+  '341125': '安徽省滁州市定远县',
+  '341126': '安徽省滁州市凤阳县',
+  '341181': '安徽省滁州市天长市',
+  '341182': '安徽省滁州市明光市',
+  '341200': '安徽省阜阳市',
+  '341201': '安徽省阜阳市市辖区',
+  '341202': '安徽省阜阳市颍州区',
+  '341203': '安徽省阜阳市颍东区',
+  '341204': '安徽省阜阳市颍泉区',
+  '341221': '安徽省阜阳市临泉县',
+  '341222': '安徽省阜阳市太和县',
+  '341223': '安徽省阜阳市涡阳县',
+  '341224': '安徽省阜阳市蒙城县',
+  '341225': '安徽省阜阳市阜南县',
+  '341226': '安徽省阜阳市颍上县',
+  '341227': '安徽省阜阳市利辛县',
+  '341281': '安徽省阜阳市亳州市',
+  '341282': '安徽省阜阳市界首市',
+  '341300': '安徽省宿州市',
+  '341301': '安徽省宿州市市辖区',
+  '341302': '安徽省宿州市甬桥区',
+  '341321': '安徽省宿州市砀山县',
+  '341322': '安徽省宿州市萧县',
+  '341323': '安徽省宿州市灵璧县',
+  '341324': '安徽省宿州市泗县',
+  '342400': '安徽省六安地区',
+  '342401': '安徽省六安地区六安市',
+  '342422': '安徽省六安地区寿县',
+  '342423': '安徽省六安地区霍邱县',
+  '342425': '安徽省六安地区舒城县',
+  '342426': '安徽省六安地区金寨县',
+  '342427': '安徽省六安地区霍山县',
+  '342500': '安徽省宣城地区',
+  '342501': '安徽省宣城地区宣州市',
+  '342502': '安徽省宣城地区宁国市',
+  '342522': '安徽省宣城地区郎溪县',
+  '342523': '安徽省宣城地区广德县',
+  '342529': '安徽省宣城地区泾县',
+  '342530': '安徽省宣城地区旌德县',
+  '342531': '安徽省宣城地区绩溪县',
+  '342600': '安徽省巢湖地区',
+  '342601': '安徽省巢湖地区巢湖市',
+  '342622': '安徽省巢湖地区庐江县',
+  '342623': '安徽省巢湖地区无为县',
+  '342625': '安徽省巢湖地区含山县',
+  '342626': '安徽省巢湖地区和县',
+  '342900': '安徽省池州地区',
+  '342901': '安徽省池州地区贵池市',
+  '342921': '安徽省池州地区东至县',
+  '342922': '安徽省池州地区石台县',
+  '342923': '安徽省池州地区青阳县',
+  '350000': '福建省',
+  '350100': '福建省福州市',
+  '350101': '福建省福州市市辖区',
+  '350102': '福建省福州市鼓楼区',
+  '350103': '福建省福州市台江区',
+  '350104': '福建省福州市仓山区',
+  '350105': '福建省福州市马尾区',
+  '350111': '福建省福州市晋安区',
+  '350121': '福建省福州市闽侯县',
+  '350122': '福建省福州市连江县',
+  '350123': '福建省福州市罗源县',
+  '350124': '福建省福州市闽清县',
+  '350125': '福建省福州市永泰县',
+  '350128': '福建省福州市平潭县',
+  '350181': '福建省福州市福清市',
+  '350182': '福建省福州市长乐市',
+  '350200': '福建省厦门市',
+  '350201': '福建省厦门市市辖区',
+  '350202': '福建省厦门市鼓浪屿区',
+  '350203': '福建省厦门市思明区',
+  '350204': '福建省厦门市开元区',
+  '350205': '福建省厦门市杏林区',
+  '350206': '福建省厦门市湖里区',
+  '350211': '福建省厦门市集美区',
+  '350212': '福建省厦门市同安区',
+  '350300': '福建省莆田市',
+  '350301': '福建省莆田市市辖区',
+  '350302': '福建省莆田市城厢区',
+  '350303': '福建省莆田市涵江区',
+  '350321': '福建省莆田市莆田县',
+  '350322': '福建省莆田市仙游县',
+  '350400': '福建省三明市',
+  '350401': '福建省三明市市辖区',
+  '350402': '福建省三明市梅列区',
+  '350403': '福建省三明市三元区',
+  '350421': '福建省三明市明溪县',
+  '350423': '福建省三明市清流县',
+  '350424': '福建省三明市宁化县',
+  '350425': '福建省三明市大田县',
+  '350426': '福建省三明市尤溪县',
+  '350427': '福建省三明市沙县',
+  '350428': '福建省三明市将乐县',
+  '350429': '福建省三明市泰宁县',
+  '350430': '福建省三明市建宁县',
+  '350481': '福建省三明市永安市',
+  '350500': '福建省泉州市',
+  '350501': '福建省泉州市市辖区',
+  '350502': '福建省泉州市鲤城区',
+  '350503': '福建省泉州市丰泽区',
+  '350504': '福建省泉州市洛江区',
+  '350521': '福建省泉州市惠安县',
+  '350524': '福建省泉州市安溪县',
+  '350525': '福建省泉州市永春县',
+  '350526': '福建省泉州市德化县',
+  '350527': '福建省泉州市金门县',
+  '350581': '福建省泉州市石狮市',
+  '350582': '福建省泉州市晋江市',
+  '350583': '福建省泉州市南安市',
+  '350600': '福建省漳州市',
+  '350601': '福建省漳州市市辖区',
+  '350602': '福建省漳州市芗城区',
+  '350603': '福建省漳州市龙文区',
+  '350622': '福建省漳州市云霄县',
+  '350623': '福建省漳州市漳浦县',
+  '350624': '福建省漳州市诏安县',
+  '350625': '福建省漳州市长泰县',
+  '350626': '福建省漳州市东山县',
+  '350627': '福建省漳州市南靖县',
+  '350628': '福建省漳州市平和县',
+  '350629': '福建省漳州市华安县',
+  '350681': '福建省漳州市龙海市',
+  '350700': '福建省南平市',
+  '350701': '福建省南平市市辖区',
+  '350702': '福建省南平市延平区',
+  '350721': '福建省南平市顺昌县',
+  '350722': '福建省南平市浦城县',
+  '350723': '福建省南平市光泽县',
+  '350724': '福建省南平市松溪县',
+  '350725': '福建省南平市政和县',
+  '350781': '福建省南平市邵武市',
+  '350782': '福建省南平市武夷山市',
+  '350783': '福建省南平市建瓯市',
+  '350784': '福建省南平市建阳市',
+  '350800': '福建省龙岩市',
+  '350801': '福建省龙岩市市辖区',
+  '350802': '福建省龙岩市新罗区',
+  '350821': '福建省龙岩市长汀县',
+  '350822': '福建省龙岩市永定县',
+  '350823': '福建省龙岩市上杭县',
+  '350824': '福建省龙岩市武平县',
+  '350825': '福建省龙岩市连城县',
+  '350881': '福建省龙岩市漳平市',
+  '352200': '福建省宁德地区',
+  '352201': '福建省宁德地区宁德市',
+  '352202': '福建省宁德地区福安市',
+  '352203': '福建省宁德地区福鼎市',
+  '352225': '福建省宁德地区霞浦县',
+  '352227': '福建省宁德地区古田县',
+  '352228': '福建省宁德地区屏南县',
+  '352229': '福建省宁德地区寿宁县',
+  '352230': '福建省宁德地区周宁县',
+  '352231': '福建省宁德地区柘荣县',
+  '360000': '江西省',
+  '360100': '江西省南昌市',
+  '360101': '江西省南昌市市辖区',
+  '360102': '江西省南昌市东湖区',
+  '360103': '江西省南昌市西湖区',
+  '360104': '江西省南昌市青云谱区',
+  '360105': '江西省南昌市湾里区',
+  '360111': '江西省南昌市郊区',
+  '360121': '江西省南昌市南昌县',
+  '360122': '江西省南昌市新建县',
+  '360123': '江西省南昌市安义县',
+  '360124': '江西省南昌市进贤县',
+  '360200': '江西省景德镇市',
+  '360201': '江西省景德镇市市辖区',
+  '360202': '江西省景德镇市昌江区',
+  '360203': '江西省景德镇市珠山区',
+  '360222': '江西省景德镇市浮梁县',
+  '360281': '江西省景德镇市乐平市',
+  '360300': '江西省萍乡市',
+  '360301': '江西省萍乡市市辖区',
+  '360302': '江西省萍乡市安源区',
+  '360313': '江西省萍乡市湘东区',
+  '360321': '江西省萍乡市莲花县',
+  '360322': '江西省萍乡市上栗县',
+  '360323': '江西省萍乡市芦溪县',
+  '360400': '江西省九江市',
+  '360401': '江西省九江市市辖区',
+  '360402': '江西省九江市庐山区',
+  '360403': '江西省九江市浔阳区',
+  '360421': '江西省九江市九江县',
+  '360423': '江西省九江市武宁县',
+  '360424': '江西省九江市修水县',
+  '360425': '江西省九江市永修县',
+  '360426': '江西省九江市德安县',
+  '360427': '江西省九江市星子县',
+  '360428': '江西省九江市都昌县',
+  '360429': '江西省九江市湖口县',
+  '360430': '江西省九江市彭泽县',
+  '360481': '江西省九江市瑞昌市',
+  '360500': '江西省新余市',
+  '360501': '江西省新余市市辖区',
+  '360502': '江西省新余市渝水区',
+  '360521': '江西省新余市分宜县',
+  '360600': '江西省鹰潭市',
+  '360601': '江西省鹰潭市市辖区',
+  '360602': '江西省鹰潭市月湖区',
+  '360622': '江西省鹰潭市余江县',
+  '360681': '江西省鹰潭市贵溪市',
+  '360700': '江西省赣州市',
+  '360701': '江西省赣州市市辖区',
+  '360702': '江西省赣州市章贡区',
+  '360721': '江西省赣州市赣县',
+  '360722': '江西省赣州市信丰县',
+  '360723': '江西省赣州市大余县',
+  '360724': '江西省赣州市上犹县',
+  '360725': '江西省赣州市崇义县',
+  '360726': '江西省赣州市安远县',
+  '360727': '江西省赣州市龙南县',
+  '360728': '江西省赣州市定南县',
+  '360729': '江西省赣州市全南县',
+  '360730': '江西省赣州市宁都县',
+  '360731': '江西省赣州市于都县',
+  '360732': '江西省赣州市兴国县',
+  '360733': '江西省赣州市会昌县',
+  '360734': '江西省赣州市寻乌县',
+  '360735': '江西省赣州市石城县',
+  '360781': '江西省赣州市瑞金市',
+  '360782': '江西省赣州市南康市',
+  '362200': '江西省宜春地区',
+  '362201': '江西省宜春地区宜春市',
+  '362202': '江西省宜春地区丰城市',
+  '362203': '江西省宜春地区樟树市',
+  '362204': '江西省宜春地区高安市',
+  '362226': '江西省宜春地区奉新县',
+  '362227': '江西省宜春地区万载县',
+  '362228': '江西省宜春地区上高县',
+  '362229': '江西省宜春地区宜丰县',
+  '362232': '江西省宜春地区靖安县',
+  '362233': '江西省宜春地区铜鼓县',
+  '362300': '江西省上饶地区',
+  '362301': '江西省上饶地区上饶市',
+  '362302': '江西省上饶地区德兴市',
+  '362321': '江西省上饶地区上饶县',
+  '362322': '江西省上饶地区广丰县',
+  '362323': '江西省上饶地区玉山县',
+  '362324': '江西省上饶地区铅山县',
+  '362325': '江西省上饶地区横峰县',
+  '362326': '江西省上饶地区弋阳县',
+  '362329': '江西省上饶地区余干县',
+  '362330': '江西省上饶地区波阳县',
+  '362331': '江西省上饶地区万年县',
+  '362334': '江西省上饶地区婺源县',
+  '362400': '江西省吉安地区',
+  '362401': '江西省吉安地区吉安市',
+  '362402': '江西省吉安地区井冈山市',
+  '362421': '江西省吉安地区吉安县',
+  '362422': '江西省吉安地区吉水县',
+  '362423': '江西省吉安地区峡江县',
+  '362424': '江西省吉安地区新干县',
+  '362425': '江西省吉安地区永丰县',
+  '362426': '江西省吉安地区泰和县',
+  '362427': '江西省吉安地区遂川县',
+  '362428': '江西省吉安地区万安县',
+  '362429': '江西省吉安地区安福县',
+  '362430': '江西省吉安地区永新县',
+  '362432': '江西省吉安地区宁冈县',
+  '362500': '江西省抚州地区',
+  '362502': '江西省抚州地区临川市',
+  '362522': '江西省抚州地区南城县',
+  '362523': '江西省抚州地区黎川县',
+  '362524': '江西省抚州地区南丰县',
+  '362525': '江西省抚州地区崇仁县',
+  '362526': '江西省抚州地区乐安县',
+  '362527': '江西省抚州地区宜黄县',
+  '362528': '江西省抚州地区金溪县',
+  '362529': '江西省抚州地区资溪县',
+  '362531': '江西省抚州地区东乡县',
+  '362532': '江西省抚州地区广昌县',
+  '370000': '山东省',
+  '370100': '山东省济南市',
+  '370101': '山东省济南市市辖区',
+  '370102': '山东省济南市历下区',
+  '370103': '山东省济南市市中区',
+  '370104': '山东省济南市槐荫区',
+  '370105': '山东省济南市天桥区',
+  '370112': '山东省济南市历城区',
+  '370123': '山东省济南市长清县',
+  '370124': '山东省济南市平阴县',
+  '370125': '山东省济南市济阳县',
+  '370126': '山东省济南市商河县',
+  '370181': '山东省济南市章丘市',
+  '370200': '山东省青岛市',
+  '370201': '山东省青岛市市辖区',
+  '370202': '山东省青岛市市南区',
+  '370203': '山东省青岛市市北区',
+  '370205': '山东省青岛市四方区',
+  '370211': '山东省青岛市黄岛区',
+  '370212': '山东省青岛市崂山区',
+  '370213': '山东省青岛市李沧区',
+  '370214': '山东省青岛市城阳区',
+  '370281': '山东省青岛市胶州市',
+  '370282': '山东省青岛市即墨市',
+  '370283': '山东省青岛市平度市',
+  '370284': '山东省青岛市胶南市',
+  '370285': '山东省青岛市莱西市',
+  '370300': '山东省淄博市',
+  '370301': '山东省淄博市市辖区',
+  '370302': '山东省淄博市淄川区',
+  '370303': '山东省淄博市张店区',
+  '370304': '山东省淄博市博山区',
+  '370305': '山东省淄博市临淄区',
+  '370306': '山东省淄博市周村区',
+  '370321': '山东省淄博市桓台县',
+  '370322': '山东省淄博市高青县',
+  '370323': '山东省淄博市沂源县',
+  '370400': '山东省枣庄市',
+  '370401': '山东省枣庄市市辖区',
+  '370402': '山东省枣庄市市中区',
+  '370403': '山东省枣庄市薛城区',
+  '370404': '山东省枣庄市峄城区',
+  '370405': '山东省枣庄市台儿庄区',
+  '370406': '山东省枣庄市山亭区',
+  '370481': '山东省枣庄市滕州市',
+  '370500': '山东省东营市',
+  '370501': '山东省东营市市辖区',
+  '370502': '山东省东营市东营区',
+  '370503': '山东省东营市河口区',
+  '370521': '山东省东营市垦利县',
+  '370522': '山东省东营市利津县',
+  '370523': '山东省东营市广饶县',
+  '370600': '山东省烟台市',
+  '370601': '山东省烟台市市辖区',
+  '370602': '山东省烟台市芝罘区',
+  '370611': '山东省烟台市福山区',
+  '370612': '山东省烟台市牟平区',
+  '370613': '山东省烟台市莱山区',
+  '370634': '山东省烟台市长岛县',
+  '370681': '山东省烟台市龙口市',
+  '370682': '山东省烟台市莱阳市',
+  '370683': '山东省烟台市莱州市',
+  '370684': '山东省烟台市蓬莱市',
+  '370685': '山东省烟台市招远市',
+  '370686': '山东省烟台市栖霞市',
+  '370687': '山东省烟台市海阳市',
+  '370700': '山东省潍坊市',
+  '370701': '山东省潍坊市市辖区',
+  '370702': '山东省潍坊市潍城区',
+  '370703': '山东省潍坊市寒亭区',
+  '370704': '山东省潍坊市坊子区',
+  '370705': '山东省潍坊市奎文区',
+  '370724': '山东省潍坊市临朐县',
+  '370725': '山东省潍坊市昌乐县',
+  '370781': '山东省潍坊市青州市',
+  '370782': '山东省潍坊市诸城市',
+  '370783': '山东省潍坊市寿光市',
+  '370784': '山东省潍坊市安丘市',
+  '370785': '山东省潍坊市高密市',
+  '370786': '山东省潍坊市昌邑市',
+  '370800': '山东省济宁市',
+  '370801': '山东省济宁市市辖区',
+  '370802': '山东省济宁市市中区',
+  '370811': '山东省济宁市任城区',
+  '370826': '山东省济宁市微山县',
+  '370827': '山东省济宁市鱼台县',
+  '370828': '山东省济宁市金乡县',
+  '370829': '山东省济宁市嘉祥县',
+  '370830': '山东省济宁市汶上县',
+  '370831': '山东省济宁市泗水县',
+  '370832': '山东省济宁市梁山县',
+  '370881': '山东省济宁市曲阜市',
+  '370882': '山东省济宁市兖州市',
+  '370883': '山东省济宁市邹城市',
+  '370900': '山东省泰安市',
+  '370901': '山东省泰安市市辖区',
+  '370902': '山东省泰安市泰山区',
+  '370911': '山东省泰安市郊区',
+  '370921': '山东省泰安市宁阳县',
+  '370923': '山东省泰安市东平县',
+  '370982': '山东省泰安市新泰市',
+  '370983': '山东省泰安市肥城市',
+  '371000': '山东省威海市',
+  '371001': '山东省威海市市辖区',
+  '371002': '山东省威海市环翠区',
+  '371081': '山东省威海市文登市',
+  '371082': '山东省威海市荣成市',
+  '371083': '山东省威海市乳山市',
+  '371100': '山东省日照市',
+  '371101': '山东省日照市市辖区',
+  '371102': '山东省日照市东港区',
+  '371121': '山东省日照市五莲县',
+  '371122': '山东省日照市莒县',
+  '371200': '山东省莱芜市',
+  '371201': '山东省莱芜市市辖区',
+  '371202': '山东省莱芜市莱城区',
+  '371203': '山东省莱芜市钢城区',
+  '371300': '山东省临沂市',
+  '371301': '山东省临沂市市辖区',
+  '371302': '山东省临沂市兰山区',
+  '371311': '山东省临沂市罗庄区',
+  '371312': '山东省临沂市河东区',
+  '371321': '山东省临沂市沂南县',
+  '371322': '山东省临沂市郯城县',
+  '371323': '山东省临沂市沂水县',
+  '371324': '山东省临沂市苍山县',
+  '371325': '山东省临沂市费县',
+  '371326': '山东省临沂市平邑县',
+  '371327': '山东省临沂市莒南县',
+  '371328': '山东省临沂市蒙阴县',
+  '371329': '山东省临沂市临沭县',
+  '371400': '山东省德州市',
+  '371401': '山东省德州市市辖区',
+  '371402': '山东省德州市德城区',
+  '371421': '山东省德州市陵县',
+  '371422': '山东省德州市宁津县',
+  '371423': '山东省德州市庆云县',
+  '371424': '山东省德州市临邑县',
+  '371425': '山东省德州市齐河县',
+  '371426': '山东省德州市平原县',
+  '371427': '山东省德州市夏津县',
+  '371428': '山东省德州市武城县',
+  '371481': '山东省德州市乐陵市',
+  '371482': '山东省德州市禹城市',
+  '371500': '山东省聊城市',
+  '371501': '山东省聊城市市辖区',
+  '371502': '山东省聊城市东昌府区',
+  '371521': '山东省聊城市阳谷县',
+  '371522': '山东省聊城市莘县',
+  '371523': '山东省聊城市茌平县',
+  '371524': '山东省聊城市东阿县',
+  '371525': '山东省聊城市冠县',
+  '371526': '山东省聊城市高唐县',
+  '371581': '山东省聊城市临清市',
+  '372300': '山东省滨州地区',
+  '372301': '山东省滨州地区滨州市',
+  '372321': '山东省滨州地区惠民县',
+  '372323': '山东省滨州地区阳信县',
+  '372324': '山东省滨州地区无棣县',
+  '372325': '山东省滨州地区沾化县',
+  '372328': '山东省滨州地区博兴县',
+  '372330': '山东省滨州地区邹平县',
+  '372900': '山东省菏泽地区',
+  '372901': '山东省菏泽地区菏泽市',
+  '372922': '山东省菏泽地区曹县',
+  '372923': '山东省菏泽地区定陶县',
+  '372924': '山东省菏泽地区成武县',
+  '372925': '山东省菏泽地区单县',
+  '372926': '山东省菏泽地区巨野县',
+  '372928': '山东省菏泽地区郓城县',
+  '372929': '山东省菏泽地区鄄城县',
+  '372930': '山东省菏泽地区东明县',
+  '410000': '河南省',
+  '410100': '河南省郑州市',
+  '410101': '河南省郑州市市辖区',
+  '410102': '河南省郑州市中原区',
+  '410103': '河南省郑州市二七区',
+  '410104': '河南省郑州市管城回族区',
+  '410105': '河南省郑州市金水区',
+  '410106': '河南省郑州市上街区',
+  '410108': '河南省郑州市邙山区',
+  '410122': '河南省郑州市中牟县',
+  '410181': '河南省郑州市巩义市',
+  '410182': '河南省郑州市荥阳市',
+  '410183': '河南省郑州市新密市',
+  '410184': '河南省郑州市新郑市',
+  '410185': '河南省郑州市登封市',
+  '410200': '河南省开封市',
+  '410201': '河南省开封市市辖区',
+  '410202': '河南省开封市龙亭区',
+  '410203': '河南省开封市顺河回族区',
+  '410204': '河南省开封市鼓楼区',
+  '410205': '河南省开封市南关区',
+  '410211': '河南省开封市郊区',
+  '410221': '河南省开封市杞县',
+  '410222': '河南省开封市通许县',
+  '410223': '河南省开封市尉氏县',
+  '410224': '河南省开封市开封县',
+  '410225': '河南省开封市兰考县',
+  '410300': '河南省洛阳市',
+  '410301': '河南省洛阳市市辖区',
+  '410302': '河南省洛阳市老城区',
+  '410303': '河南省洛阳市西工区',
+  '410304': '河南省洛阳市廛河回族区',
+  '410305': '河南省洛阳市涧西区',
+  '410306': '河南省洛阳市吉利区',
+  '410311': '河南省洛阳市郊区',
+  '410322': '河南省洛阳市孟津县',
+  '410323': '河南省洛阳市新安县',
+  '410324': '河南省洛阳市栾川县',
+  '410325': '河南省洛阳市嵩县',
+  '410326': '河南省洛阳市汝阳县',
+  '410327': '河南省洛阳市宜阳县',
+  '410328': '河南省洛阳市洛宁县',
+  '410329': '河南省洛阳市伊川县',
+  '410381': '河南省洛阳市偃师市',
+  '410400': '河南省平顶山市',
+  '410401': '河南省平顶山市市辖区',
+  '410402': '河南省平顶山市新华区',
+  '410403': '河南省平顶山市卫东区',
+  '410404': '河南省平顶山市石龙区',
+  '410411': '河南省平顶山市湛河区',
+  '410421': '河南省平顶山市宝丰县',
+  '410422': '河南省平顶山市叶县',
+  '410423': '河南省平顶山市鲁山县',
+  '410425': '河南省平顶山市郏县',
+  '410481': '河南省平顶山市舞钢市',
+  '410482': '河南省平顶山市汝州市',
+  '410500': '河南省安阳市',
+  '410501': '河南省安阳市市辖区',
+  '410502': '河南省安阳市文峰区',
+  '410503': '河南省安阳市北关区',
+  '410504': '河南省安阳市铁西区',
+  '410511': '河南省安阳市郊区',
+  '410522': '河南省安阳市安阳县',
+  '410523': '河南省安阳市汤阴县',
+  '410526': '河南省安阳市滑县',
+  '410527': '河南省安阳市内黄县',
+  '410581': '河南省安阳市林州市',
+  '410600': '河南省鹤壁市',
+  '410601': '河南省鹤壁市市辖区',
+  '410602': '河南省鹤壁市鹤山区',
+  '410603': '河南省鹤壁市山城区',
+  '410611': '河南省鹤壁市郊区',
+  '410621': '河南省鹤壁市浚县',
+  '410622': '河南省鹤壁市淇县',
+  '410700': '河南省新乡市',
+  '410701': '河南省新乡市市辖区',
+  '410702': '河南省新乡市红旗区',
+  '410703': '河南省新乡市新华区',
+  '410704': '河南省新乡市北站区',
+  '410711': '河南省新乡市郊区',
+  '410721': '河南省新乡市新乡县',
+  '410724': '河南省新乡市获嘉县',
+  '410725': '河南省新乡市原阳县',
+  '410726': '河南省新乡市延津县',
+  '410727': '河南省新乡市封丘县',
+  '410728': '河南省新乡市长垣县',
+  '410781': '河南省新乡市卫辉市',
+  '410782': '河南省新乡市辉县市',
+  '410800': '河南省焦作市',
+  '410801': '河南省焦作市市辖区',
+  '410802': '河南省焦作市解放区',
+  '410803': '河南省焦作市中站区',
+  '410804': '河南省焦作市马村区',
+  '410811': '河南省焦作市山阳区',
+  '410821': '河南省焦作市修武县',
+  '410822': '河南省焦作市博爱县',
+  '410823': '河南省焦作市武陟县',
+  '410825': '河南省焦作市温县',
+  '410881': '河南省焦作市济源市',
+  '410882': '河南省焦作市沁阳市',
+  '410883': '河南省焦作市孟州市',
+  '410900': '河南省濮阳市',
+  '410901': '河南省濮阳市市辖区',
+  '410902': '河南省濮阳市市区',
+  '410922': '河南省濮阳市清丰县',
+  '410923': '河南省濮阳市南乐县',
+  '410926': '河南省濮阳市范县',
+  '410927': '河南省濮阳市台前县',
+  '410928': '河南省濮阳市濮阳县',
+  '411000': '河南省许昌市',
+  '411001': '河南省许昌市市辖区',
+  '411002': '河南省许昌市魏都区',
+  '411023': '河南省许昌市许昌县',
+  '411024': '河南省许昌市鄢陵县',
+  '411025': '河南省许昌市襄城县',
+  '411081': '河南省许昌市禹州市',
+  '411082': '河南省许昌市长葛市',
+  '411100': '河南省漯河市',
+  '411101': '河南省漯河市市辖区',
+  '411102': '河南省漯河市源汇区',
+  '411121': '河南省漯河市舞阳县',
+  '411122': '河南省漯河市临颍县',
+  '411123': '河南省漯河市郾城县',
+  '411200': '河南省三门峡市',
+  '411201': '河南省三门峡市市辖区',
+  '411202': '河南省三门峡市湖滨区',
+  '411221': '河南省三门峡市渑池县',
+  '411222': '河南省三门峡市陕县',
+  '411224': '河南省三门峡市卢氏县',
+  '411281': '河南省三门峡市义马市',
+  '411282': '河南省三门峡市灵宝市',
+  '411300': '河南省南阳市',
+  '411301': '河南省南阳市市辖区',
+  '411302': '河南省南阳市宛城区',
+  '411303': '河南省南阳市卧龙区',
+  '411321': '河南省南阳市南召县',
+  '411322': '河南省南阳市方城县',
+  '411323': '河南省南阳市西峡县',
+  '411324': '河南省南阳市镇平县',
+  '411325': '河南省南阳市内乡县',
+  '411326': '河南省南阳市淅川县',
+  '411327': '河南省南阳市社旗县',
+  '411328': '河南省南阳市唐河县',
+  '411329': '河南省南阳市新野县',
+  '411330': '河南省南阳市桐柏县',
+  '411381': '河南省南阳市邓州市',
+  '411400': '河南省商丘市',
+  '411401': '河南省商丘市市辖区',
+  '411402': '河南省商丘市梁园区',
+  '411403': '河南省商丘市睢阳区',
+  '411421': '河南省商丘市民权县',
+  '411422': '河南省商丘市睢县',
+  '411423': '河南省商丘市宁陵县',
+  '411424': '河南省商丘市柘城县',
+  '411425': '河南省商丘市虞城县',
+  '411426': '河南省商丘市夏邑县',
+  '411481': '河南省商丘市永城市',
+  '411500': '河南省信阳市',
+  '411501': '河南省信阳市市辖区',
+  '411502': '河南省信阳市师河区',
+  '411503': '河南省信阳市平桥区',
+  '411521': '河南省信阳市罗山县',
+  '411522': '河南省信阳市光山县',
+  '411523': '河南省信阳市新县',
+  '411524': '河南省信阳市商城县',
+  '411525': '河南省信阳市固始县',
+  '411526': '河南省信阳市潢川县',
+  '411527': '河南省信阳市淮滨县',
+  '411528': '河南省信阳市息县',
+  '412700': '河南省周口地区',
+  '412701': '河南省周口地区周口市',
+  '412702': '河南省周口地区项城市',
+  '412721': '河南省周口地区扶沟县',
+  '412722': '河南省周口地区西华县',
+  '412723': '河南省周口地区商水县',
+  '412724': '河南省周口地区太康县',
+  '412725': '河南省周口地区鹿邑县',
+  '412726': '河南省周口地区郸城县',
+  '412727': '河南省周口地区淮阳县',
+  '412728': '河南省周口地区沈丘县',
+  '412800': '河南省驻马店地区',
+  '412801': '河南省驻马店地区驻马店市',
+  '412821': '河南省驻马店地区确山县',
+  '412822': '河南省驻马店地区泌阳县',
+  '412823': '河南省驻马店地区遂平县',
+  '412824': '河南省驻马店地区西平县',
+  '412825': '河南省驻马店地区上蔡县',
+  '412826': '河南省驻马店地区汝南县',
+  '412827': '河南省驻马店地区平舆县',
+  '412828': '河南省驻马店地区新蔡县',
+  '412829': '河南省驻马店地区正阳县',
+  '420000': '湖北省',
+  '420100': '湖北省武汉市',
+  '420101': '湖北省武汉市市辖区',
+  '420102': '湖北省武汉市江岸区',
+  '420103': '湖北省武汉市江汉区',
+  '420104': '湖北省武汉市乔口区',
+  '420105': '湖北省武汉市汉阳区',
+  '420106': '湖北省武汉市武昌区',
+  '420107': '湖北省武汉市青山区',
+  '420111': '湖北省武汉市洪山区',
+  '420112': '湖北省武汉市东西湖区',
+  '420113': '湖北省武汉市汉南区',
+  '420114': '湖北省武汉市蔡甸区',
+  '420115': '湖北省武汉市江夏区',
+  '420116': '湖北省武汉市黄陂区',
+  '420117': '湖北省武汉市新洲区',
+  '420200': '湖北省黄石市',
+  '420201': '湖北省黄石市市辖区',
+  '420202': '湖北省黄石市黄石港区',
+  '420203': '湖北省黄石市石灰窑区',
+  '420204': '湖北省黄石市下陆区',
+  '420205': '湖北省黄石市铁山区',
+  '420222': '湖北省黄石市阳新县',
+  '420281': '湖北省黄石市大冶市',
+  '420300': '湖北省十堰市',
+  '420301': '湖北省十堰市市辖区',
+  '420302': '湖北省十堰市茅箭区',
+  '420303': '湖北省十堰市张湾区',
+  '420321': '湖北省十堰市郧县',
+  '420322': '湖北省十堰市郧西县',
+  '420323': '湖北省十堰市竹山县',
+  '420324': '湖北省十堰市竹溪县',
+  '420325': '湖北省十堰市房县',
+  '420381': '湖北省十堰市丹江口市',
+  '420500': '湖北省宜昌市',
+  '420501': '湖北省宜昌市市辖区',
+  '420502': '湖北省宜昌市西陵区',
+  '420503': '湖北省宜昌市伍家岗区',
+  '420504': '湖北省宜昌市点军区',
+  '420505': '湖北省宜昌市虎亭区',
+  '420521': '湖北省宜昌市宜昌县',
+  '420525': '湖北省宜昌市远安县',
+  '420526': '湖北省宜昌市兴山县',
+  '420527': '湖北省宜昌市秭归县',
+  '420528': '湖北省宜昌市长阳土家族自治县',
+  '420529': '湖北省宜昌市五峰土家族自治县',
+  '420581': '湖北省宜昌市宜都市',
+  '420582': '湖北省宜昌市当阳市',
+  '420583': '湖北省宜昌市枝江市',
+  '420600': '湖北省襄樊市',
+  '420601': '湖北省襄樊市市辖区',
+  '420602': '湖北省襄樊市襄城区',
+  '420606': '湖北省襄樊市樊城区',
+  '420621': '湖北省襄樊市襄阳县',
+  '420624': '湖北省襄樊市南漳县',
+  '420625': '湖北省襄樊市谷城县',
+  '420626': '湖北省襄樊市保康县',
+  '420682': '湖北省襄樊市老河口市',
+  '420683': '湖北省襄樊市枣阳市',
+  '420684': '湖北省襄樊市宜城市',
+  '420700': '湖北省鄂州市',
+  '420701': '湖北省鄂州市市辖区',
+  '420702': '湖北省鄂州市梁子湖区',
+  '420703': '湖北省鄂州市华容区',
+  '420704': '湖北省鄂州市鄂城区',
+  '420800': '湖北省荆门市',
+  '420801': '湖北省荆门市市辖区',
+  '420802': '湖北省荆门市东宝区',
+  '420821': '湖北省荆门市京山县',
+  '420822': '湖北省荆门市沙洋县',
+  '420881': '湖北省荆门市钟祥市',
+  '420900': '湖北省孝感市',
+  '420901': '湖北省孝感市市辖区',
+  '420902': '湖北省孝感市孝南区',
+  '420921': '湖北省孝感市孝昌县',
+  '420922': '湖北省孝感市大悟县',
+  '420923': '湖北省孝感市云梦县',
+  '420981': '湖北省孝感市应城市',
+  '420982': '湖北省孝感市安陆市',
+  '420983': '湖北省孝感市广水市',
+  '420984': '湖北省孝感市汉川市',
+  '421000': '湖北省荆州市',
+  '421001': '湖北省荆州市市辖区',
+  '421002': '湖北省荆州市沙市区',
+  '421003': '湖北省荆州市荆州区',
+  '421022': '湖北省荆州市公安县',
+  '421023': '湖北省荆州市监利县',
+  '421024': '湖北省荆州市江陵县',
+  '421081': '湖北省荆州市石首市',
+  '421083': '湖北省荆州市洪湖市',
+  '421087': '湖北省荆州市松滋市',
+  '421100': '湖北省黄冈市',
+  '421101': '湖北省黄冈市市辖区',
+  '421102': '湖北省黄冈市黄州区',
+  '421121': '湖北省黄冈市团风县',
+  '421122': '湖北省黄冈市红安县',
+  '421123': '湖北省黄冈市罗田县',
+  '421124': '湖北省黄冈市英山县',
+  '421125': '湖北省黄冈市浠水县',
+  '421126': '湖北省黄冈市蕲春县',
+  '421127': '湖北省黄冈市黄梅县',
+  '421181': '湖北省黄冈市麻城市',
+  '421182': '湖北省黄冈市武穴市',
+  '421200': '湖北省咸宁市',
+  '421201': '湖北省咸宁市市辖区',
+  '421202': '湖北省咸宁市咸安区',
+  '421221': '湖北省咸宁市嘉鱼县',
+  '421222': '湖北省咸宁市通城县',
+  '421223': '湖北省咸宁市崇阳县',
+  '421224': '湖北省咸宁市通山县',
+  '422800': '湖北省施土家族苗族自治州',
+  '422801': '湖北省恩施土家族苗族自治州恩施县',
+  '422802': '湖北省恩施土家族苗族自治州利川市',
+  '422822': '湖北省恩施土家族苗族自治州建始县',
+  '422823': '湖北省恩施土家族苗族自治州巴东县',
+  '422825': '湖北省恩施土家族苗族自治州宣恩县',
+  '422826': '湖北省恩施土家族苗族自治州咸丰县',
+  '422827': '湖北省恩施土家族苗族自治州来凤县',
+  '422828': '湖北省恩施土家族苗族自治州鹤峰县',
+  '429000': '湖北省省直辖县级行政单位',
+  '429001': '湖北省随州市',
+  '429004': '湖北省仙桃市',
+  '429005': '湖北省潜江市',
+  '429006': '湖北省天门市',
+  '429021': '湖北省神农架林区',
+  '430000': '湖南省',
+  '430100': '湖南省长沙市',
+  '430101': '湖南省长沙市市辖区',
+  '430102': '湖南省长沙市芙蓉区',
+  '430103': '湖南省长沙市天心区',
+  '430104': '湖南省长沙市岳麓区',
+  '430105': '湖南省长沙市开福区',
+  '430111': '湖南省长沙市雨花区',
+  '430121': '湖南省长沙市长沙县',
+  '430122': '湖南省长沙市望城县',
+  '430124': '湖南省长沙市宁乡县',
+  '430181': '湖南省长沙市浏阳市',
+  '430200': '湖南省株洲市',
+  '430201': '湖南省株洲市市辖区',
+  '430202': '湖南省株洲市荷塘区',
+  '430203': '湖南省株洲市芦淞区',
+  '430204': '湖南省株洲市石峰区',
+  '430211': '湖南省株洲市天元区',
+  '430221': '湖南省株洲市株洲县',
+  '430223': '湖南省株洲市攸县',
+  '430224': '湖南省株洲市茶陵县',
+  '430225': '湖南省株洲市炎陵县',
+  '430281': '湖南省株洲市醴陵市',
+  '430300': '湖南省湘潭市',
+  '430301': '湖南省湘潭市市辖区',
+  '430302': '湖南省湘潭市雨湖区',
+  '430304': '湖南省湘潭市岳塘区',
+  '430321': '湖南省湘潭市湘潭县',
+  '430381': '湖南省湘潭市湘乡市',
+  '430382': '湖南省湘潭市韶山市',
+  '430400': '湖南省衡阳市',
+  '430401': '湖南省衡阳市市辖区',
+  '430402': '湖南省衡阳市江东区',
+  '430403': '湖南省衡阳市城南区',
+  '430404': '湖南省衡阳市城北区',
+  '430411': '湖南省衡阳市郊区',
+  '430412': '湖南省衡阳市南岳区',
+  '430421': '湖南省衡阳市衡阳县',
+  '430422': '湖南省衡阳市衡南县',
+  '430423': '湖南省衡阳市衡山县',
+  '430424': '湖南省衡阳市衡东县',
+  '430426': '湖南省衡阳市祁东县',
+  '430481': '湖南省衡阳市耒阳市',
+  '430482': '湖南省衡阳市常宁市',
+  '430500': '湖南省邵阳市',
+  '430501': '湖南省邵阳市市辖区',
+  '430502': '湖南省邵阳市双清区',
+  '430503': '湖南省邵阳市大祥区',
+  '430511': '湖南省邵阳市北塔区',
+  '430521': '湖南省邵阳市邵东县',
+  '430522': '湖南省邵阳市新邵县',
+  '430523': '湖南省邵阳市邵阳县',
+  '430524': '湖南省邵阳市隆回县',
+  '430525': '湖南省邵阳市洞口县',
+  '430527': '湖南省邵阳市绥宁县',
+  '430528': '湖南省邵阳市新宁县',
+  '430529': '湖南省邵阳市城步苗族自治县',
+  '430581': '湖南省邵阳市武冈市',
+  '430600': '湖南省岳阳市',
+  '430601': '湖南省岳阳市市辖区',
+  '430602': '湖南省岳阳市岳阳楼区',
+  '430603': '湖南省岳阳市云溪区',
+  '430611': '湖南省岳阳市君山区',
+  '430621': '湖南省岳阳市岳阳县',
+  '430623': '湖南省岳阳市华容县',
+  '430624': '湖南省岳阳市湘阴县',
+  '430626': '湖南省岳阳市平江县',
+  '430681': '湖南省岳阳市汨罗市',
+  '430682': '湖南省岳阳市临湘市',
+  '430700': '湖南省常德市',
+  '430701': '湖南省常德市市辖区',
+  '430702': '湖南省常德市武陵区',
+  '430703': '湖南省常德市鼎城区',
+  '430721': '湖南省常德市安乡县',
+  '430722': '湖南省常德市汉寿县',
+  '430723': '湖南省常德市澧县',
+  '430724': '湖南省常德市临澧县',
+  '430725': '湖南省常德市桃源县',
+  '430726': '湖南省常德市石门县',
+  '430781': '湖南省常德市津市市',
+  '430800': '湖南省张家界市',
+  '430801': '湖南省张家界市市辖区',
+  '430802': '湖南省张家界市永定区',
+  '430811': '湖南省张家界市武陵源区',
+  '430821': '湖南省张家界市慈利县',
+  '430822': '湖南省张家界市桑植县',
+  '430900': '湖南省益阳市',
+  '430901': '湖南省益阳市市辖区',
+  '430902': '湖南省益阳市资阳区',
+  '430903': '湖南省益阳市赫山区',
+  '430921': '湖南省益阳市南县',
+  '430922': '湖南省益阳市桃江县',
+  '430923': '湖南省益阳市安化县',
+  '430981': '湖南省益阳市沅江市',
+  '431000': '湖南省郴州市',
+  '431001': '湖南省郴州市市辖区',
+  '431002': '湖南省郴州市北湖区',
+  '431003': '湖南省郴州市苏仙区',
+  '431021': '湖南省郴州市桂阳县',
+  '431022': '湖南省郴州市宜章县',
+  '431023': '湖南省郴州市永兴县',
+  '431024': '湖南省郴州市嘉禾县',
+  '431025': '湖南省郴州市临武县',
+  '431026': '湖南省郴州市汝城县',
+  '431027': '湖南省郴州市桂东县',
+  '431028': '湖南省郴州市安仁县',
+  '431081': '湖南省郴州市资兴市',
+  '431100': '湖南省永州市',
+  '431101': '湖南省永州市市辖区',
+  '431102': '湖南省永州市芝山区',
+  '431103': '湖南省永州市冷水滩区',
+  '431121': '湖南省永州市祁阳县',
+  '431122': '湖南省永州市东安县',
+  '431123': '湖南省永州市双牌县',
+  '431124': '湖南省永州市道县',
+  '431125': '湖南省永州市江永县',
+  '431126': '湖南省永州市宁远县',
+  '431127': '湖南省永州市蓝山县',
+  '431128': '湖南省永州市新田县',
+  '431129': '湖南省永州市江华瑶族自治县',
+  '431200': '湖南省怀化市',
+  '431201': '湖南省怀化市市辖区',
+  '431202': '湖南省怀化市鹤城区',
+  '431221': '湖南省怀化市中方县',
+  '431222': '湖南省怀化市沅陵县',
+  '431223': '湖南省怀化市辰溪县',
+  '431224': '湖南省怀化市溆浦县',
+  '431225': '湖南省怀化市会同县',
+  '431226': '湖南省怀化市麻阳苗族自治县',
+  '431227': '湖南省怀化市新晃侗族自治县',
+  '431228': '湖南省怀化市芷江侗族自治县',
+  '431229': '湖南省怀化市靖州苗族侗族自治县',
+  '431230': '湖南省怀化市通道侗族自治县',
+  '431281': '湖南省怀化市洪江市',
+  '432500': '湖南省娄底地区',
+  '432501': '湖南省娄底地区娄底市',
+  '432502': '湖南省娄底地区冷水江市',
+  '432503': '湖南省娄底地区涟源市',
+  '432522': '湖南省娄底地区双峰县',
+  '432524': '湖南省娄底地区新化县',
+  '433000': '湖南省怀化市',
+  '433001': '湖南省怀化市',
+  '433100': '湖南省湘西土家族苗族自治州',
+  '433101': '湖南省湘西土家族苗族自治州吉首市',
+  '433122': '湖南省湘西土家族苗族自治州泸溪县',
+  '433123': '湖南省湘西土家族苗族自治州凤凰县',
+  '433124': '湖南省湘西土家族苗族自治州花垣县',
+  '433125': '湖南省湘西土家族苗族自治州保靖县',
+  '433126': '湖南省湘西土家族苗族自治州古丈县',
+  '433127': '湖南省湘西土家族苗族自治州永顺县',
+  '433130': '湖南省湘西土家族苗族自治州龙山县',
+  '440000': '广东省',
+  '440100': '广东省广州市',
+  '440101': '广东省广州市市辖区',
+  '440102': '广东省广州市东山区',
+  '440103': '广东省广州市荔湾区',
+  '440104': '广东省广州市越秀区',
+  '440105': '广东省广州市海珠区',
+  '440106': '广东省广州市天河区',
+  '440107': '广东省广州市芳村区',
+  '440111': '广东省广州市白云区',
+  '440112': '广东省广州市黄埔区',
+  '440181': '广东省广州市番禺市',
+  '440182': '广东省广州市花都市',
+  '440183': '广东省广州市增城市',
+  '440184': '广东省广州市从化市',
+  '440200': '广东省韶关市',
+  '440201': '广东省韶关市市辖区',
+  '440202': '广东省韶关市北江区',
+  '440203': '广东省韶关市武江区',
+  '440204': '广东省韶关市浈江区',
+  '440221': '广东省韶关市曲江县',
+  '440222': '广东省韶关市始兴县',
+  '440224': '广东省韶关市仁化县',
+  '440229': '广东省韶关市翁源县',
+  '440232': '广东省韶关市乳源瑶族自治县',
+  '440233': '广东省韶关市新丰县',
+  '440281': '广东省韶关市乐昌市',
+  '440282': '广东省韶关市南雄市',
+  '440300': '广东省深圳市',
+  '440301': '广东省深圳市市辖区',
+  '440303': '广东省深圳市罗湖区',
+  '440304': '广东省深圳市福田区',
+  '440305': '广东省深圳市南山区',
+  '440306': '广东省深圳市宝安区',
+  '440307': '广东省深圳市龙岗区',
+  '440308': '广东省深圳市盐田区',
+  '440400': '广东省珠海市',
+  '440401': '广东省珠海市市辖区',
+  '440402': '广东省珠海市香洲区',
+  '440421': '广东省珠海市斗门县',
+  '440500': '广东省汕头市',
+  '440501': '广东省汕头市市辖区',
+  '440506': '广东省汕头市达濠区',
+  '440507': '广东省汕头市龙湖区',
+  '440508': '广东省汕头市金园区',
+  '440509': '广东省汕头市升平区',
+  '440510': '广东省汕头市河浦区',
+  '440523': '广东省汕头市南澳县',
+  '440582': '广东省汕头市潮阳市',
+  '440583': '广东省汕头市澄海市',
+  '440600': '广东省佛山市',
+  '440601': '广东省佛山市市辖区',
+  '440602': '广东省佛山市城区',
+  '440603': '广东省佛山市石湾区',
+  '440681': '广东省佛山市顺德市',
+  '440682': '广东省佛山市南海市',
+  '440683': '广东省佛山市三水市',
+  '440684': '广东省佛山市高明市',
+  '440700': '广东省江门市',
+  '440701': '广东省江门市市辖区',
+  '440703': '广东省江门市蓬江区',
+  '440704': '广东省江门市江海区',
+  '440781': '广东省江门市台山市',
+  '440782': '广东省江门市新会市',
+  '440783': '广东省江门市开平市',
+  '440784': '广东省江门市鹤山市',
+  '440785': '广东省江门市恩平市',
+  '440800': '广东省湛江市',
+  '440801': '广东省湛江市市辖区',
+  '440802': '广东省湛江市赤坎区',
+  '440803': '广东省湛江市霞山区',
+  '440804': '广东省湛江市坡头区',
+  '440811': '广东省湛江市麻章区',
+  '440823': '广东省湛江市遂溪县',
+  '440825': '广东省湛江市徐闻县',
+  '440881': '广东省湛江市廉江市',
+  '440882': '广东省湛江市雷州市',
+  '440883': '广东省湛江市吴川市',
+  '440900': '广东省茂名市',
+  '440901': '广东省茂名市市辖区',
+  '440902': '广东省茂名市茂南区',
+  '440923': '广东省茂名市电白县',
+  '440981': '广东省茂名市高州市',
+  '440982': '广东省茂名市化州市',
+  '440983': '广东省茂名市信宜市',
+  '441200': '广东省肇庆市',
+  '441201': '广东省肇庆市市辖区',
+  '441202': '广东省肇庆市端州区',
+  '441203': '广东省肇庆市鼎湖区',
+  '441223': '广东省肇庆市广宁县',
+  '441224': '广东省肇庆市怀集县',
+  '441225': '广东省肇庆市封开县',
+  '441226': '广东省肇庆市德庆县',
+  '441283': '广东省肇庆市高要市',
+  '441284': '广东省肇庆市四会市',
+  '441300': '广东省惠州市',
+  '441301': '广东省惠州市市辖区',
+  '441302': '广东省惠州市惠城区',
+  '441322': '广东省惠州市博罗县',
+  '441323': '广东省惠州市惠东县',
+  '441324': '广东省惠州市龙门县',
+  '441381': '广东省惠州市惠阳市',
+  '441400': '广东省梅州市',
+  '441401': '广东省梅州市市辖区',
+  '441402': '广东省梅州市梅江区',
+  '441421': '广东省梅州市梅县',
+  '441422': '广东省梅州市大埔县',
+  '441423': '广东省梅州市丰顺县',
+  '441424': '广东省梅州市五华县',
+  '441426': '广东省梅州市平远县',
+  '441427': '广东省梅州市蕉岭县',
+  '441481': '广东省梅州市兴宁市',
+  '441500': '广东省汕尾市',
+  '441501': '广东省汕尾市市辖区',
+  '441502': '广东省汕尾市城区',
+  '441521': '广东省汕尾市海丰县',
+  '441523': '广东省汕尾市陆河县',
+  '441581': '广东省汕尾市陆丰市',
+  '441600': '广东省河源市',
+  '441601': '广东省河源市市辖区',
+  '441602': '广东省河源市源城区',
+  '441621': '广东省河源市紫金县',
+  '441622': '广东省河源市龙川县',
+  '441623': '广东省河源市连平县',
+  '441624': '广东省河源市和平县',
+  '441625': '广东省河源市东源县',
+  '441700': '广东省阳江市',
+  '441701': '广东省阳江市市辖区',
+  '441702': '广东省阳江市江城区',
+  '441721': '广东省阳江市阳西县',
+  '441723': '广东省阳江市阳东县',
+  '441781': '广东省阳江市阳春市',
+  '441800': '广东省清远市',
+  '441801': '广东省清远市市辖区',
+  '441802': '广东省清远市清城区',
+  '441821': '广东省清远市佛冈县',
+  '441823': '广东省清远市阳山县',
+  '441825': '广东省清远市连山壮族瑶族自治县',
+  '441826': '广东省清远市连南瑶族自治县',
+  '441827': '广东省清远市清新县',
+  '441881': '广东省清远市英德市',
+  '441882': '广东省清远市连州市',
+  '441900': '广东省东莞市',
+  '441901': '广东省东莞市市辖区',
+  '442000': '广东省中山市',
+  '442001': '广东省中山市市辖区',
+  '445100': '广东省潮州市',
+  '445101': '广东省潮州市市辖区',
+  '445102': '广东省潮州市湘桥区',
+  '445121': '广东省潮州市潮安县',
+  '445122': '广东省潮州市饶平县',
+  '445200': '广东省揭阳市',
+  '445201': '广东省揭阳市市辖区',
+  '445202': '广东省揭阳市榕城区',
+  '445221': '广东省揭阳市揭东县',
+  '445222': '广东省揭阳市揭西县',
+  '445224': '广东省揭阳市惠来县',
+  '445281': '广东省揭阳市普宁市',
+  '445300': '广东省云浮市',
+  '445301': '广东省云浮市市辖区',
+  '445302': '广东省云浮市云城区',
+  '445321': '广东省云浮市新兴县',
+  '445322': '广东省云浮市郁南县',
+  '445323': '广东省云浮市云安县',
+  '445381': '广东省云浮市罗定市',
+  '450000': '广西壮族自治区',
+  '450100': '广西壮族自治区南宁市',
+  '450101': '广西壮族自治区南宁市市辖区',
+  '450102': '广西壮族自治区南宁市兴宁区',
+  '450103': '广西壮族自治区南宁市新城区',
+  '450104': '广西壮族自治区南宁市城北区',
+  '450105': '广西壮族自治区南宁市江南区',
+  '450106': '广西壮族自治区南宁市永新区',
+  '450111': '广西壮族自治区南宁市市郊区',
+  '450121': '广西壮族自治区南宁市邕宁县',
+  '450122': '广西壮族自治区南宁市武鸣县',
+  '450200': '广西壮族自治区柳州市',
+  '450201': '广西壮族自治区柳州市市辖区',
+  '450202': '广西壮族自治区柳州市城中区',
+  '450203': '广西壮族自治区柳州市鱼峰区',
+  '450204': '广西壮族自治区柳州市柳南区',
+  '450205': '广西壮族自治区柳州市柳北区',
+  '450211': '广西壮族自治区柳州市市郊区',
+  '450221': '广西壮族自治区柳州市柳江县',
+  '450222': '广西壮族自治区柳州市柳城县',
+  '450300': '广西壮族自治区桂林市',
+  '450301': '广西壮族自治区桂林市市辖区',
+  '450302': '广西壮族自治区桂林市秀峰区',
+  '450303': '广西壮族自治区桂林市叠彩区',
+  '450304': '广西壮族自治区桂林市象山区',
+  '450305': '广西壮族自治区桂林市七星区',
+  '450311': '广西壮族自治区桂林市雁山区',
+  '450321': '广西壮族自治区桂林市阳朔县',
+  '450322': '广西壮族自治区桂林市临桂县',
+  '450323': '广西壮族自治区桂林市灵川县',
+  '450324': '广西壮族自治区桂林市全州县',
+  '450325': '广西壮族自治区桂林市兴安县',
+  '450326': '广西壮族自治区桂林市永福县',
+  '450327': '广西壮族自治区桂林市灌阳县',
+  '450328': '广西壮族自治区桂林市龙胜各族自治县',
+  '450329': '广西壮族自治区桂林市资源县',
+  '450330': '广西壮族自治区桂林市平乐县',
+  '450331': '广西壮族自治区桂林市荔浦县',
+  '450332': '广西壮族自治区桂林市恭城瑶族自治县',
+  '450400': '广西壮族自治区梧州市',
+  '450401': '广西壮族自治区梧州市市辖区',
+  '450403': '广西壮族自治区梧州市万秀区',
+  '450404': '广西壮族自治区梧州市蝶山区',
+  '450411': '广西壮族自治区梧州市市郊区',
+  '450421': '广西壮族自治区梧州市苍梧县',
+  '450422': '广西壮族自治区梧州市藤县',
+  '450423': '广西壮族自治区梧州市蒙山县',
+  '450481': '广西壮族自治区梧州市岑溪市',
+  '450500': '广西壮族自治区北海市',
+  '450501': '广西壮族自治区北海市市辖区',
+  '450502': '广西壮族自治区北海市海城区',
+  '450503': '广西壮族自治区北海市银海区',
+  '450512': '广西壮族自治区北海市铁山港区',
+  '450521': '广西壮族自治区北海市合浦县',
+  '450600': '广西壮族自治区防城港市',
+  '450601': '广西壮族自治区防城港市市辖区',
+  '450602': '广西壮族自治区防城港市港口区',
+  '450603': '广西壮族自治区防城港市防城区',
+  '450621': '广西壮族自治区防城港市上思县',
+  '450681': '广西壮族自治区防城港市东兴市',
+  '450700': '广西壮族自治区钦州市',
+  '450701': '广西壮族自治区钦州市市辖区',
+  '450702': '广西壮族自治区钦州市钦南区',
+  '450703': '广西壮族自治区钦州市钦北区',
+  '450721': '广西壮族自治区钦州市灵山县',
+  '450722': '广西壮族自治区钦州市浦北县',
+  '450800': '广西壮族自治区贵港市',
+  '450801': '广西壮族自治区贵港市市辖区',
+  '450802': '广西壮族自治区贵港市港北区',
+  '450803': '广西壮族自治区贵港市港南区',
+  '450821': '广西壮族自治区贵港市平南县',
+  '450881': '广西壮族自治区贵港市桂平市',
+  '450900': '广西壮族自治区玉林市',
+  '450901': '广西壮族自治区玉林市市辖区',
+  '450902': '广西壮族自治区玉林市玉州区',
+  '450921': '广西壮族自治区玉林市容县',
+  '450922': '广西壮族自治区玉林市陆川县',
+  '450923': '广西壮族自治区玉林市博白县',
+  '450924': '广西壮族自治区玉林市兴业县',
+  '450981': '广西壮族自治区玉林市北流市',
+  '452100': '广西壮族自治区南宁地区',
+  '452101': '广西壮族自治区南宁地区凭祥市',
+  '452122': '广西壮族自治区南宁地区横县',
+  '452123': '广西壮族自治区南宁地区宾阳县',
+  '452124': '广西壮族自治区南宁地区上林县',
+  '452126': '广西壮族自治区南宁地区隆安县',
+  '452127': '广西壮族自治区南宁地区马山县',
+  '452128': '广西壮族自治区南宁地区扶绥县',
+  '452129': '广西壮族自治区南宁地区崇左县',
+  '452130': '广西壮族自治区南宁地区大新县',
+  '452131': '广西壮族自治区南宁地区天等县',
+  '452132': '广西壮族自治区南宁地区宁明县',
+  '452133': '广西壮族自治区南宁地区龙州县',
+  '452200': '广西壮族自治区柳州地区',
+  '452201': '广西壮族自治区柳州地区合山市',
+  '452223': '广西壮族自治区柳州地区鹿寨县',
+  '452224': '广西壮族自治区柳州地区象州县',
+  '452225': '广西壮族自治区柳州地区武宣县',
+  '452226': '广西壮族自治区柳州地区来宾县',
+  '452227': '广西壮族自治区柳州地区融安县',
+  '452228': '广西壮族自治区柳州地区三江侗族自治县',
+  '452229': '广西壮族自治区柳州地区融水苗族自治县',
+  '452230': '广西壮族自治区柳州地区金秀瑶族自治县',
+  '452231': '广西壮族自治区柳州地区忻城县',
+  '452400': '广西壮族自治区贺州地区',
+  '452402': '广西壮族自治区贺州地区贺州市',
+  '452424': '广西壮族自治区贺州地区昭平县',
+  '452427': '广西壮族自治区贺州地区钟山县',
+  '452428': '广西壮族自治区贺州地区富川瑶族自治县',
+  '452600': '广西壮族自治区百色地区',
+  '452601': '广西壮族自治区百色地区百色市',
+  '452622': '广西壮族自治区百色地区田阳县',
+  '452623': '广西壮族自治区百色地区田东县',
+  '452624': '广西壮族自治区百色地区平果县',
+  '452625': '广西壮族自治区百色地区德保县',
+  '452626': '广西壮族自治区百色地区靖西县',
+  '452627': '广西壮族自治区百色地区那坡县',
+  '452628': '广西壮族自治区百色地区凌云县',
+  '452629': '广西壮族自治区百色地区乐业县',
+  '452630': '广西壮族自治区百色地区田林县',
+  '452631': '广西壮族自治区百色地区隆林各族自治县',
+  '452632': '广西壮族自治区百色地区西林县',
+  '452700': '广西壮族自治区河池地区',
+  '452701': '广西壮族自治区河池地区河池市',
+  '452702': '广西壮族自治区河池地区宜州市',
+  '452723': '广西壮族自治区河池地区罗城仫佬族自治县',
+  '452724': '广西壮族自治区河池地区环江毛南族自治县',
+  '452725': '广西壮族自治区河池地区南丹县',
+  '452726': '广西壮族自治区河池地区天峨县',
+  '452727': '广西壮族自治区河池地区凤山县',
+  '452728': '广西壮族自治区河池地区东兰县',
+  '452729': '广西壮族自治区河池地区巴马瑶族自治县',
+  '452730': '广西壮族自治区河池地区都安瑶族自治县',
+  '452731': '广西壮族自治区河池地区大化瑶族自治县',
+  '460000': '海南省',
+  '460001': '海南省三亚市通什市',
+  '460002': '海南省三亚市琼海市',
+  '460003': '海南省三亚市儋州市',
+  '460004': '海南省三亚市琼山市',
+  '460005': '海南省三亚市文昌市',
+  '460006': '海南省三亚市万宁市',
+  '460007': '海南省三亚市东方市',
+  '460025': '海南省三亚市定安县',
+  '460026': '海南省三亚市屯昌县',
+  '460027': '海南省三亚市澄迈县',
+  '460028': '海南省三亚市临高县',
+  '460030': '海南省三亚市白沙黎族自治县',
+  '460031': '海南省三亚市昌江黎族自治县',
+  '460033': '海南省三亚市乐东黎族自治县',
+  '460034': '海南省三亚市陵水黎族自治县',
+  '460035': '海南省三亚市保亭黎族苗族自治县',
+  '460036': '海南省三亚市琼中黎族苗族自治县',
+  '460037': '海南省西沙群岛',
+  '460038': '海南省南沙群岛',
+  '460039': '海南省中沙群岛的岛礁及其海域',
+  '460100': '海南省海口市',
+  '460101': '海南省海口市市辖区',
+  '460102': '海南省海口市振东区',
+  '460103': '海南省海口市新华区',
+  '460104': '海南省海口市秀英区',
+  '460200': '海南省三亚市',
+  '460201': '海南省三亚市市辖区',
+  '500000': '重庆市',
+  '500100': '重庆市市辖区',
+  '500101': '重庆市万州区',
+  '500102': '重庆市涪陵区',
+  '500103': '重庆市渝中区',
+  '500104': '重庆市大渡口区',
+  '500105': '重庆市江北区',
+  '500106': '重庆市沙坪坝区',
+  '500107': '重庆市九龙坡区',
+  '500108': '重庆市南岸区',
+  '500109': '重庆市北碚区',
+  '500110': '重庆市万盛区',
+  '500111': '重庆市双桥区',
+  '500112': '重庆市渝北区',
+  '500113': '重庆市巴南区',
+  '500200': '重庆市县',
+  '500221': '重庆市长寿县',
+  '500222': '重庆市綦江县',
+  '500223': '重庆市潼南县',
+  '500224': '重庆市铜梁县',
+  '500225': '重庆市大足县',
+  '500226': '重庆市荣昌县',
+  '500227': '重庆市璧山县',
+  '500228': '重庆市梁平县',
+  '500229': '重庆市城口县',
+  '500230': '重庆市丰都县',
+  '500231': '重庆市垫江县',
+  '500232': '重庆市武隆县',
+  '500233': '重庆市忠县',
+  '500234': '重庆市开县',
+  '500235': '重庆市云阳县',
+  '500236': '重庆市奉节县',
+  '500237': '重庆市巫山县',
+  '500238': '重庆市巫溪县',
+  '500239': '重庆市黔江土家族苗族自治县',
+  '500240': '重庆市石柱土家族自治县',
+  '500241': '重庆市秀山土家族苗族自治县',
+  '500242': '重庆市酉阳土家族苗族自治县',
+  '500243': '重庆市彭水苗族土家族自治县',
+  '500300': '重庆市(市)',
+  '500381': '重庆市江津市',
+  '500382': '重庆市合川市',
+  '500383': '重庆市永川市',
+  '500384': '重庆市南川市',
+  '510000': '四川省',
+  '510100': '四川省成都市',
+  '510101': '四川省成都市市辖区',
+  '510104': '四川省成都市锦江区',
+  '510105': '四川省成都市青羊区',
+  '510106': '四川省成都市金牛区',
+  '510107': '四川省成都市武侯区',
+  '510108': '四川省成都市成华区',
+  '510112': '四川省成都市龙泉驿区',
+  '510113': '四川省成都市青白江区',
+  '510121': '四川省成都市金堂县',
+  '510122': '四川省成都市双流县',
+  '510123': '四川省成都市温江县',
+  '510124': '四川省成都市郫县',
+  '510125': '四川省成都市新都县',
+  '510129': '四川省成都市大邑县',
+  '510131': '四川省成都市蒲江县',
+  '510132': '四川省成都市新津县',
+  '510181': '四川省成都市都江堰市',
+  '510182': '四川省成都市彭州市',
+  '510183': '四川省成都市邛崃市',
+  '510184': '四川省成都市崇州市',
+  '510300': '四川省自贡市',
+  '510301': '四川省自贡市市辖区',
+  '510302': '四川省自贡市自流井区',
+  '510303': '四川省自贡市贡井区',
+  '510304': '四川省自贡市大安区',
+  '510311': '四川省自贡市沿滩区',
+  '510321': '四川省自贡市荣县',
+  '510322': '四川省自贡市富顺县',
+  '510400': '四川省攀枝花市',
+  '510401': '四川省攀枝花市市辖区',
+  '510402': '四川省攀枝花市东区',
+  '510403': '四川省攀枝花市西区',
+  '510411': '四川省攀枝花市仁和区',
+  '510421': '四川省攀枝花市米易县',
+  '510422': '四川省攀枝花市盐边县',
+  '510500': '四川省泸州市',
+  '510501': '四川省泸州市市辖区',
+  '510502': '四川省泸州市江阳区',
+  '510503': '四川省泸州市纳溪区',
+  '510504': '四川省泸州市龙马潭区',
+  '510521': '四川省泸州市泸县',
+  '510522': '四川省泸州市合江县',
+  '510524': '四川省泸州市叙永县',
+  '510525': '四川省泸州市古蔺县',
+  '510600': '四川省德阳市',
+  '510601': '四川省德阳市市辖区',
+  '510603': '四川省德阳市旌阳区',
+  '510623': '四川省德阳市中江县',
+  '510626': '四川省德阳市罗江县',
+  '510681': '四川省德阳市广汉市',
+  '510682': '四川省德阳市什邡市',
+  '510683': '四川省德阳市绵竹市',
+  '510700': '四川省绵阳市',
+  '510701': '四川省绵阳市市辖区',
+  '510703': '四川省绵阳市涪城区',
+  '510704': '四川省绵阳市游仙区',
+  '510722': '四川省绵阳市三台县',
+  '510723': '四川省绵阳市盐亭县',
+  '510724': '四川省绵阳市安县',
+  '510725': '四川省绵阳市梓潼县',
+  '510726': '四川省绵阳市北川县',
+  '510727': '四川省绵阳市平武县',
+  '510781': '四川省绵阳市江油市',
+  '510800': '四川省广元市',
+  '510801': '四川省广元市市辖区',
+  '510802': '四川省广元市市中区',
+  '510811': '四川省广元市元坝区',
+  '510812': '四川省广元市朝天区',
+  '510821': '四川省广元市旺苍县',
+  '510822': '四川省广元市青川县',
+  '510823': '四川省广元市剑阁县',
+  '510824': '四川省广元市苍溪县',
+  '510900': '四川省遂宁市',
+  '510901': '四川省遂宁市市辖区',
+  '510902': '四川省遂宁市市中区',
+  '510921': '四川省遂宁市蓬溪县',
+  '510922': '四川省遂宁市射洪县',
+  '510923': '四川省遂宁市大英县',
+  '511000': '四川省内江市',
+  '511001': '四川省内江市市辖区',
+  '511002': '四川省内江市市中区',
+  '511011': '四川省内江市东兴区',
+  '511024': '四川省内江市威远县',
+  '511025': '四川省内江市资中县',
+  '511028': '四川省内江市隆昌县',
+  '511100': '四川省乐山市',
+  '511101': '四川省乐山市市辖区',
+  '511102': '四川省乐山市市中区',
+  '511111': '四川省乐山市沙湾区',
+  '511112': '四川省乐山市五通桥区',
+  '511113': '四川省乐山市金口河区',
+  '511123': '四川省乐山市犍为县',
+  '511124': '四川省乐山市井研县',
+  '511126': '四川省乐山市夹江县',
+  '511129': '四川省乐山市沐川县',
+  '511132': '四川省乐山市峨边彝族自治县',
+  '511133': '四川省乐山市马边彝族自治县',
+  '511181': '四川省乐山市峨眉山市',
+  '511300': '四川省南充市',
+  '511301': '四川省南充市市辖区',
+  '511302': '四川省南充市顺庆区',
+  '511303': '四川省南充市高坪区',
+  '511304': '四川省南充市嘉陵区',
+  '511321': '四川省南充市南部县',
+  '511322': '四川省南充市营山县',
+  '511323': '四川省南充市蓬安县',
+  '511324': '四川省南充市仪陇县',
+  '511325': '四川省南充市西充县',
+  '511381': '四川省南充市阆中市',
+  '511500': '四川省宜宾市',
+  '511501': '四川省宜宾市市辖区',
+  '511502': '四川省宜宾市翠屏区',
+  '511521': '四川省宜宾市宜宾县',
+  '511522': '四川省宜宾市南溪县',
+  '511523': '四川省宜宾市江安县',
+  '511524': '四川省宜宾市长宁县',
+  '511525': '四川省宜宾市高县',
+  '511526': '四川省宜宾市珙县',
+  '511527': '四川省宜宾市筠连县',
+  '511528': '四川省宜宾市兴文县',
+  '511529': '四川省宜宾市屏山县',
+  '511600': '四川省广安市',
+  '511601': '四川省广安市市辖区',
+  '511602': '四川省广安市广安区',
+  '511621': '四川省广安市岳池县',
+  '511622': '四川省广安市武胜县',
+  '511623': '四川省广安市邻水县',
+  '511681': '四川省广安市华蓥市',
+  '513000': '四川省达川地区',
+  '513001': '四川省达川地区达川市',
+  '513002': '四川省达川地区万源市',
+  '513021': '四川省达川地区达县',
+  '513022': '四川省达川地区宣汉县',
+  '513023': '四川省达川地区开江县',
+  '513029': '四川省达川地区大竹县',
+  '513030': '四川省达川地区渠县',
+  '513100': '四川省雅安地区',
+  '513101': '四川省雅安地区雅安市',
+  '513122': '四川省雅安地区名山县',
+  '513123': '四川省雅安地区荥经县',
+  '513124': '四川省雅安地区汉源县',
+  '513125': '四川省雅安地区石棉县',
+  '513126': '四川省雅安地区天全县',
+  '513127': '四川省雅安地区芦山县',
+  '513128': '四川省雅安地区宝兴县',
+  '513200': '四川省阿坝藏族羌族自治州',
+  '513221': '四川省阿坝藏族羌族自治州汶川县',
+  '513222': '四川省阿坝藏族羌族自治州理县',
+  '513223': '四川省阿坝藏族羌族自治州茂县',
+  '513224': '四川省阿坝藏族羌族自治州松潘县',
+  '513225': '四川省阿坝藏族羌族自治州九寨沟县',
+  '513226': '四川省阿坝藏族羌族自治州金川县',
+  '513227': '四川省阿坝藏族羌族自治州小金县',
+  '513228': '四川省阿坝藏族羌族自治州黑水县',
+  '513229': '四川省阿坝藏族羌族自治州马尔康县',
+  '513230': '四川省阿坝藏族羌族自治州壤塘县',
+  '513231': '四川省阿坝藏族羌族自治州阿坝县',
+  '513232': '四川省阿坝藏族羌族自治州若尔盖县',
+  '513233': '四川省阿坝藏族羌族自治州红原县',
+  '513300': '四川省甘孜藏族自治州',
+  '513321': '四川省甘孜藏族自治州康定县',
+  '513322': '四川省甘孜藏族自治州泸定县',
+  '513323': '四川省甘孜藏族自治州丹巴县',
+  '513324': '四川省甘孜藏族自治州九龙县',
+  '513325': '四川省甘孜藏族自治州雅江县',
+  '513326': '四川省甘孜藏族自治州道孚县',
+  '513327': '四川省甘孜藏族自治州炉霍县',
+  '513328': '四川省甘孜藏族自治州甘孜县',
+  '513329': '四川省甘孜藏族自治州新龙县',
+  '513330': '四川省甘孜藏族自治州德格县',
+  '513331': '四川省甘孜藏族自治州白玉县',
+  '513332': '四川省甘孜藏族自治州石渠县',
+  '513333': '四川省甘孜藏族自治州色达县',
+  '513334': '四川省甘孜藏族自治州理塘县',
+  '513335': '四川省甘孜藏族自治州巴塘县',
+  '513336': '四川省甘孜藏族自治州乡城县',
+  '513337': '四川省甘孜藏族自治州稻城县',
+  '513338': '四川省甘孜藏族自治州得荣县',
+  '513400': '四川省凉山彝族自治州',
+  '513401': '四川省凉山彝族自治州西昌市',
+  '513422': '四川省凉山彝族自治州木里藏族自治县',
+  '513423': '四川省凉山彝族自治州盐源县',
+  '513424': '四川省凉山彝族自治州德昌县',
+  '513425': '四川省凉山彝族自治州会理县',
+  '513426': '四川省凉山彝族自治州会东县',
+  '513427': '四川省凉山彝族自治州宁南县',
+  '513428': '四川省凉山彝族自治州普格县',
+  '513429': '四川省凉山彝族自治州布拖县',
+  '513430': '四川省凉山彝族自治州金阳县',
+  '513431': '四川省凉山彝族自治州昭觉县',
+  '513432': '四川省凉山彝族自治州喜德县',
+  '513433': '四川省凉山彝族自治州冕宁县',
+  '513434': '四川省凉山彝族自治州越西县',
+  '513435': '四川省凉山彝族自治州甘洛县',
+  '513436': '四川省凉山彝族自治州美姑县',
+  '513437': '四川省凉山彝族自治州雷波县',
+  '513700': '四川省巴中地区',
+  '513701': '四川省巴中地区巴中市',
+  '513721': '四川省巴中地区通江县',
+  '513722': '四川省巴中地区南江县',
+  '513723': '四川省巴中地区平昌县',
+  '513800': '四川省眉山地区',
+  '513821': '四川省眉山地区眉山县',
+  '513822': '四川省眉山地区仁寿县',
+  '513823': '四川省眉山地区彭山县',
+  '513824': '四川省眉山地区洪雅县',
+  '513825': '四川省眉山地区丹棱县',
+  '513826': '四川省眉山地区青神县',
+  '513900': '四川省眉山地区资阳地区',
+  '513901': '四川省眉山地区资阳市',
+  '513902': '四川省眉山地区简阳市',
+  '513921': '四川省眉山地区安岳县',
+  '513922': '四川省眉山地区乐至县',
+  '520000': '贵州省',
+  '520100': '贵州省贵阳市',
+  '520101': '贵州省贵阳市市辖区',
+  '520102': '贵州省贵阳市南明区',
+  '520103': '贵州省贵阳市云岩区',
+  '520111': '贵州省贵阳市花溪区',
+  '520112': '贵州省贵阳市乌当区',
+  '520113': '贵州省贵阳市白云区',
+  '520121': '贵州省贵阳市开阳县',
+  '520122': '贵州省贵阳市息烽县',
+  '520123': '贵州省贵阳市修文县',
+  '520181': '贵州省贵阳市清镇市',
+  '520200': '贵州省六盘水市',
+  '520201': '贵州省六盘水市钟山区',
+  '520202': '贵州省六盘水市盘县特区',
+  '520203': '贵州省六盘水市六枝特区',
+  '520221': '贵州省六盘水市水城县',
+  '520300': '贵州省遵义市',
+  '520301': '贵州省遵义市市辖区',
+  '520302': '贵州省遵义市红花岗区',
+  '520321': '贵州省遵义市遵义县',
+  '520322': '贵州省遵义市桐梓县',
+  '520323': '贵州省遵义市绥阳县',
+  '520324': '贵州省遵义市正安县',
+  '520325': '贵州省遵义市道真仡佬族苗族自治县',
+  '520326': '贵州省遵义市务川仡佬族苗族自治县',
+  '520327': '贵州省遵义市凤冈县',
+  '520328': '贵州省遵义市湄潭县',
+  '520329': '贵州省遵义市余庆县',
+  '520330': '贵州省遵义市习水县',
+  '520381': '贵州省遵义市赤水市',
+  '520382': '贵州省遵义市仁怀市',
+  '522200': '贵州省铜仁地区',
+  '522201': '贵州省铜仁地区铜仁市',
+  '522222': '贵州省铜仁地区江口县',
+  '522223': '贵州省铜仁地区玉屏侗族自治县',
+  '522224': '贵州省铜仁地区石阡县',
+  '522225': '贵州省铜仁地区思南县',
+  '522226': '贵州省铜仁地区印江土家族苗族自治县',
+  '522227': '贵州省铜仁地区德江县',
+  '522228': '贵州省铜仁地区沿河土家族自治县',
+  '522229': '贵州省铜仁地区松桃苗族自治县',
+  '522230': '贵州省铜仁地区万山特区',
+  '522300': '贵州省黔西南布依族苗族自治州',
+  '522301': '贵州省黔西南布依族苗族自治州兴义市',
+  '522322': '贵州省黔西南布依族苗族自治州兴仁县',
+  '522323': '贵州省黔西南布依族苗族自治州普安县',
+  '522324': '贵州省黔西南布依族苗族自治州晴隆县',
+  '522325': '贵州省黔西南布依族苗族自治州贞丰县',
+  '522326': '贵州省黔西南布依族苗族自治州望谟县',
+  '522327': '贵州省黔西南布依族苗族自治州册亨县',
+  '522328': '贵州省黔西南布依族苗族自治州安龙县',
+  '522400': '贵州省毕节地区',
+  '522401': '贵州省毕节地区毕节市',
+  '522422': '贵州省毕节地区大方县',
+  '522423': '贵州省毕节地区黔西县',
+  '522424': '贵州省毕节地区金沙县',
+  '522425': '贵州省毕节地区织金县',
+  '522426': '贵州省毕节地区纳雍县',
+  '522427': '贵州省毕节地区威宁彝族回族苗族自治县',
+  '522428': '贵州省毕节地区赫章县',
+  '522500': '贵州省安顺地区',
+  '522501': '贵州省安顺地区安顺市',
+  '522526': '贵州省安顺地区平坝县',
+  '522527': '贵州省安顺地区普定县',
+  '522528': '贵州省安顺地区关岭布依族苗族自治县',
+  '522529': '贵州省安顺地区镇宁布依族苗族自治县',
+  '522530': '贵州省安顺地区紫云苗族布依族自治县',
+  '522600': '贵州省黔东南苗族侗族自治州',
+  '522601': '贵州省黔东南苗族侗族自治州凯里市',
+  '522622': '贵州省黔东南苗族侗族自治州黄平县',
+  '522623': '贵州省黔东南苗族侗族自治州施秉县',
+  '522624': '贵州省黔东南苗族侗族自治州三穗县',
+  '522625': '贵州省黔东南苗族侗族自治州镇远县',
+  '522626': '贵州省黔东南苗族侗族自治州岑巩县',
+  '522627': '贵州省黔东南苗族侗族自治州天柱县',
+  '522628': '贵州省黔东南苗族侗族自治州锦屏县',
+  '522629': '贵州省黔东南苗族侗族自治州剑河县',
+  '522630': '贵州省黔东南苗族侗族自治州台江县',
+  '522631': '贵州省黔东南苗族侗族自治州黎平县',
+  '522632': '贵州省黔东南苗族侗族自治州榕江县',
+  '522633': '贵州省黔东南苗族侗族自治州从江县',
+  '522634': '贵州省黔东南苗族侗族自治州雷山县',
+  '522635': '贵州省黔东南苗族侗族自治州麻江县',
+  '522636': '贵州省黔东南苗族侗族自治州丹寨县',
+  '522700': '贵州省黔南布依族苗族自治州',
+  '522701': '贵州省黔南布依族苗族自治州都匀市',
+  '522702': '贵州省黔南布依族苗族自治州福泉市',
+  '522722': '贵州省黔南布依族苗族自治州荔波县',
+  '522723': '贵州省黔南布依族苗族自治州贵定县',
+  '522725': '贵州省黔南布依族苗族自治州瓮安县',
+  '522726': '贵州省黔南布依族苗族自治州独山县',
+  '522727': '贵州省黔南布依族苗族自治州平塘县',
+  '522728': '贵州省黔南布依族苗族自治州罗甸县',
+  '522729': '贵州省黔南布依族苗族自治州长顺县',
+  '522730': '贵州省黔南布依族苗族自治州龙里县',
+  '522731': '贵州省黔南布依族苗族自治州惠水县',
+  '522732': '贵州省黔南布依族苗族自治州三都水族自治县',
+  '530000': '云南省',
+  '530100': '云南省昆明市',
+  '530101': '云南省昆明市市辖区',
+  '530102': '云南省昆明市五华区',
+  '530103': '云南省昆明市盘龙区',
+  '530111': '云南省昆明市官渡区',
+  '530112': '云南省昆明市西山区',
+  '530113': '云南省昆明市东川区',
+  '530121': '云南省昆明市呈贡县',
+  '530122': '云南省昆明市晋宁县',
+  '530124': '云南省昆明市富民县',
+  '530125': '云南省昆明市宜良县',
+  '530126': '云南省昆明市石林彝族自治县',
+  '530127': '云南省昆明市嵩明县',
+  '530128': '云南省昆明市禄劝彝族苗族自治县',
+  '530129': '云南省昆明市寻甸回族彝族自治县',
+  '530181': '云南省昆明市安宁市',
+  '530300': '云南省曲靖市',
+  '530301': '云南省曲靖市市辖区',
+  '530302': '云南省曲靖市麒麟区',
+  '530321': '云南省曲靖市马龙县',
+  '530322': '云南省曲靖市陆良县',
+  '530323': '云南省曲靖市师宗县',
+  '530324': '云南省曲靖市罗平县',
+  '530325': '云南省曲靖市富源县',
+  '530326': '云南省曲靖市会泽县',
+  '530328': '云南省曲靖市沾益县',
+  '530381': '云南省曲靖市宣威市',
+  '530400': '云南省玉溪市',
+  '530401': '云南省玉溪市市辖区',
+  '530402': '云南省玉溪市红塔区',
+  '530421': '云南省玉溪市江川县',
+  '530422': '云南省玉溪市澄江县',
+  '530423': '云南省玉溪市通海县',
+  '530424': '云南省玉溪市华宁县',
+  '530425': '云南省玉溪市易门县',
+  '530426': '云南省玉溪市峨山彝族自治县',
+  '530427': '云南省玉溪市新平彝族傣族自治县',
+  '530428': '云南省玉溪市元江哈尼族彝族傣族自治县',
+  '532100': '云南省昭通地区',
+  '532101': '云南省昭通地区昭通市',
+  '532122': '云南省昭通地区鲁甸县',
+  '532123': '云南省昭通地区巧家县',
+  '532124': '云南省昭通地区盐津县',
+  '532125': '云南省昭通地区大关县',
+  '532126': '云南省昭通地区永善县',
+  '532127': '云南省昭通地区绥江县',
+  '532128': '云南省昭通地区镇雄县',
+  '532129': '云南省昭通地区彝良县',
+  '532130': '云南省昭通地区威信县',
+  '532131': '云南省昭通地区水富县',
+  '532300': '云南省楚雄彝族自治州',
+  '532301': '云南省楚雄彝族自治州楚雄市',
+  '532322': '云南省楚雄彝族自治州双柏县',
+  '532323': '云南省楚雄彝族自治州牟定县',
+  '532324': '云南省楚雄彝族自治州南华县',
+  '532325': '云南省楚雄彝族自治州姚安县',
+  '532326': '云南省楚雄彝族自治州大姚县',
+  '532327': '云南省楚雄彝族自治州永仁县',
+  '532328': '云南省楚雄彝族自治州元谋县',
+  '532329': '云南省楚雄彝族自治州武定县',
+  '532331': '云南省楚雄彝族自治州禄丰县',
+  '532500': '云南省红河哈尼族彝族自治州',
+  '532501': '云南省红河哈尼族彝族自治州个旧市',
+  '532502': '云南省红河哈尼族彝族自治州开远市',
+  '532522': '云南省红河哈尼族彝族自治州蒙自县',
+  '532523': '云南省红河哈尼族彝族自治州屏边苗族自治县',
+  '532524': '云南省红河哈尼族彝族自治州建水县',
+  '532525': '云南省红河哈尼族彝族自治州石屏县',
+  '532526': '云南省红河哈尼族彝族自治州弥勒县',
+  '532527': '云南省红河哈尼族彝族自治州泸西县',
+  '532528': '云南省红河哈尼族彝族自治州元阳县',
+  '532529': '云南省红河哈尼族彝族自治州红河县',
+  '532530': '云南省红河哈尼族彝族自治州金平苗族瑶族傣族自治县',
+  '532531': '云南省红河哈尼族彝族自治州绿春县',
+  '532532': '云南省红河哈尼族彝族自治州河口瑶族自治县',
+  '532600': '云南省文山壮族苗族自治州',
+  '532621': '云南省文山壮族苗族自治州文山县',
+  '532622': '云南省文山壮族苗族自治州砚山县',
+  '532623': '云南省文山壮族苗族自治州西畴县',
+  '532624': '云南省文山壮族苗族自治州麻栗坡县',
+  '532625': '云南省文山壮族苗族自治州马关县',
+  '532626': '云南省文山壮族苗族自治州丘北县',
+  '532627': '云南省文山壮族苗族自治州广南县',
+  '532628': '云南省文山壮族苗族自治州富宁县',
+  '532700': '云南省思茅地区',
+  '532701': '云南省思茅地区思茅市',
+  '532722': '云南省思茅地区普洱哈尼族彝族自治县',
+  '532723': '云南省思茅地区墨江哈尼族自治县',
+  '532724': '云南省思茅地区景东彝族自治县',
+  '532725': '云南省思茅地区景谷傣族彝族自治县',
+  '532726': '云南省思茅地区镇沅彝族哈尼族拉祜族自治县',
+  '532727': '云南省思茅地区江城哈尼族彝族自治县',
+  '532728': '云南省思茅地区孟连傣族拉祜族佤族自治县',
+  '532729': '云南省思茅地区澜沧拉祜族自治县',
+  '532730': '云南省思茅地区西盟佤族自治县',
+  '532800': '云南省西双版纳傣族自治州',
+  '532801': '云南省西双版纳傣族自治州景洪市',
+  '532822': '云南省西双版纳傣族自治州勐海县',
+  '532823': '云南省西双版纳傣族自治州勐腊县',
+  '532900': '云南省大理白族自治州',
+  '532901': '云南省大理白族自治州大理市',
+  '532922': '云南省大理白族自治州漾濞彝族自治县',
+  '532923': '云南省大理白族自治州祥云县',
+  '532924': '云南省大理白族自治州宾川县',
+  '532925': '云南省大理白族自治州弥渡县',
+  '532926': '云南省大理白族自治州南涧彝族自治县',
+  '532927': '云南省大理白族自治州巍山彝族回族自治县',
+  '532928': '云南省大理白族自治州永平县',
+  '532929': '云南省大理白族自治州云龙县',
+  '532930': '云南省大理白族自治州洱源县',
+  '532931': '云南省大理白族自治州剑川县',
+  '532932': '云南省大理白族自治州鹤庆县',
+  '533000': '云南省保山地区',
+  '533001': '云南省保山地区保山市',
+  '533022': '云南省保山地区施甸县',
+  '533023': '云南省保山地区腾冲县',
+  '533024': '云南省保山地区龙陵县',
+  '533025': '云南省保山地区昌宁县',
+  '533100': '云南省德宏傣族景颇族自治州',
+  '533101': '云南省德宏傣族景颇族自治州畹町市',
+  '533102': '云南省德宏傣族景颇族自治州瑞丽市',
+  '533103': '云南省德宏傣族景颇族自治州潞西市',
+  '533122': '云南省德宏傣族景颇族自治州梁河县',
+  '533123': '云南省德宏傣族景颇族自治州盈江县',
+  '533124': '云南省德宏傣族景颇族自治州陇川县',
+  '533200': '云南省丽江地区',
+  '533221': '云南省丽江地区丽江纳西族自治县',
+  '533222': '云南省丽江地区永胜县',
+  '533223': '云南省丽江地区华坪县',
+  '533224': '云南省丽江地区宁蒗彝族自治县',
+  '533300': '云南省怒江傈僳族自治州',
+  '533321': '云南省怒江傈僳族自治州泸水县',
+  '533323': '云南省怒江傈僳族自治州福贡县',
+  '533324': '云南省怒江傈僳族自治州贡山独龙族怒族自治县',
+  '533325': '云南省怒江傈僳族自治州兰坪白族普米族自治县',
+  '533400': '云南省迪庆藏族自治州',
+  '533421': '云南省迪庆藏族自治州中甸县',
+  '533422': '云南省迪庆藏族自治州德钦县',
+  '533423': '云南省迪庆藏族自治州维西傈僳族自治县',
+  '533500': '云南省临沧地区',
+  '533521': '云南省临沧地区临沧县',
+  '533522': '云南省临沧地区凤庆县',
+  '533523': '云南省临沧地区云县',
+  '533524': '云南省临沧地区永德县',
+  '533525': '云南省临沧地区镇康县',
+  '533526': '云南省临沧地区双江拉祜族佤族布朗族傣族自治县',
+  '533527': '云南省临沧地区耿马傣族佤族自治县',
+  '533528': '云南省临沧地区沧源佤族自治县',
+  '540000': '西藏自治区',
+  '540100': '西藏自治区拉萨市',
+  '540101': '西藏自治区拉萨市市辖区',
+  '540102': '西藏自治区拉萨市城关区',
+  '540121': '西藏自治区拉萨市林周县',
+  '540122': '西藏自治区拉萨市当雄县',
+  '540123': '西藏自治区拉萨市尼木县',
+  '540124': '西藏自治区拉萨市曲水县',
+  '540125': '西藏自治区拉萨市堆龙德庆县',
+  '540126': '西藏自治区拉萨市达孜县',
+  '540127': '西藏自治区拉萨市墨竹工卡县',
+  '542100': '西藏自治区昌都地区',
+  '542121': '西藏自治区昌都地区昌都县',
+  '542122': '西藏自治区昌都地区江达县',
+  '542123': '西藏自治区昌都地区贡觉县',
+  '542124': '西藏自治区昌都地区类乌齐县',
+  '542125': '西藏自治区昌都地区丁青县',
+  '542126': '西藏自治区昌都地区察雅县',
+  '542127': '西藏自治区昌都地区八宿县',
+  '542128': '西藏自治区昌都地区左贡县',
+  '542129': '西藏自治区昌都地区芒康县',
+  '542132': '西藏自治区昌都地区洛隆县',
+  '542133': '西藏自治区昌都地区边坝县',
+  '542134': '西藏自治区昌都地区盐井县',
+  '542135': '西藏自治区昌都地区碧土县',
+  '542136': '西藏自治区昌都地区妥坝县',
+  '542137': '西藏自治区昌都地区生达县',
+  '542200': '西藏自治区山南地区',
+  '542221': '西藏自治区山南地区乃东县',
+  '542222': '西藏自治区山南地区扎囊县',
+  '542223': '西藏自治区山南地区贡嘎县',
+  '542224': '西藏自治区山南地区桑日县',
+  '542225': '西藏自治区山南地区琼结县',
+  '542226': '西藏自治区山南地区曲松县',
+  '542227': '西藏自治区山南地区措美县',
+  '542228': '西藏自治区山南地区洛扎县',
+  '542229': '西藏自治区山南地区加查县',
+  '542231': '西藏自治区山南地区隆子县',
+  '542232': '西藏自治区山南地区错那县',
+  '542233': '西藏自治区山南地区浪卡子县',
+  '542300': '西藏自治区日喀则地区',
+  '542301': '西藏自治区日喀则地区日喀则市',
+  '542322': '西藏自治区日喀则地区南木林县',
+  '542323': '西藏自治区日喀则地区江孜县',
+  '542324': '西藏自治区日喀则地区定日县',
+  '542325': '西藏自治区日喀则地区萨迦县',
+  '542326': '西藏自治区日喀则地区拉孜县',
+  '542327': '西藏自治区日喀则地区昂仁县',
+  '542328': '西藏自治区日喀则地区谢通门县',
+  '542329': '西藏自治区日喀则地区白朗县',
+  '542330': '西藏自治区日喀则地区仁布县',
+  '542331': '西藏自治区日喀则地区康马县',
+  '542332': '西藏自治区日喀则地区定结县',
+  '542333': '西藏自治区日喀则地区仲巴县',
+  '542334': '西藏自治区日喀则地区亚东县',
+  '542335': '西藏自治区日喀则地区吉隆县',
+  '542336': '西藏自治区日喀则地区聂拉木县',
+  '542337': '西藏自治区日喀则地区萨嘎县',
+  '542338': '西藏自治区日喀则地区岗巴县',
+  '542400': '西藏自治区那曲地区',
+  '542421': '西藏自治区那曲地区那曲县',
+  '542422': '西藏自治区那曲地区嘉黎县',
+  '542423': '西藏自治区那曲地区比如县',
+  '542424': '西藏自治区那曲地区聂荣县',
+  '542425': '西藏自治区那曲地区安多县',
+  '542426': '西藏自治区那曲地区申扎县',
+  '542427': '西藏自治区那曲地区索县',
+  '542428': '西藏自治区那曲地区班戈县',
+  '542429': '西藏自治区那曲地区巴青县',
+  '542430': '西藏自治区那曲地区尼玛县',
+  '542500': '西藏自治区阿里地区',
+  '542521': '西藏自治区阿里地区普兰县',
+  '542522': '西藏自治区阿里地区札达县',
+  '542523': '西藏自治区阿里地区噶尔县',
+  '542524': '西藏自治区阿里地区日土县',
+  '542525': '西藏自治区阿里地区革吉县',
+  '542526': '西藏自治区阿里地区改则县',
+  '542527': '西藏自治区阿里地区措勤县',
+  '542528': '西藏自治区阿里地区隆格尔县',
+  '542600': '西藏自治区林芝地区',
+  '542621': '西藏自治区林芝地区林芝县',
+  '542622': '西藏自治区林芝地区工布江达县',
+  '542623': '西藏自治区林芝地区米林县',
+  '542624': '西藏自治区林芝地区墨脱县',
+  '542625': '西藏自治区林芝地区波密县',
+  '542626': '西藏自治区林芝地区察隅县',
+  '542627': '西藏自治区林芝地区朗县',
+  '610000': '陕西省',
+  '610100': '陕西省西安市',
+  '610101': '陕西省西安市市辖区',
+  '610102': '陕西省西安市新城区',
+  '610103': '陕西省西安市碑林区',
+  '610104': '陕西省西安市莲湖区',
+  '610111': '陕西省西安市灞桥区',
+  '610112': '陕西省西安市未央区',
+  '610113': '陕西省西安市雁塔区',
+  '610114': '陕西省西安市阎良区',
+  '610115': '陕西省西安市临潼区',
+  '610121': '陕西省西安市长安县',
+  '610122': '陕西省西安市蓝田县',
+  '610124': '陕西省西安市周至县',
+  '610125': '陕西省西安市户县',
+  '610126': '陕西省西安市高陵县',
+  '610200': '陕西省铜川市',
+  '610201': '陕西省铜川市市辖区',
+  '610202': '陕西省铜川市城区',
+  '610203': '陕西省铜川市郊区',
+  '610221': '陕西省铜川市耀县',
+  '610222': '陕西省铜川市宜君县',
+  '610300': '陕西省宝鸡市',
+  '610301': '陕西省宝鸡市市辖区',
+  '610302': '陕西省宝鸡市渭滨区',
+  '610303': '陕西省宝鸡市金台区',
+  '610321': '陕西省宝鸡市宝鸡县',
+  '610322': '陕西省宝鸡市凤翔县',
+  '610323': '陕西省宝鸡市岐山县',
+  '610324': '陕西省宝鸡市扶风县',
+  '610326': '陕西省宝鸡市眉县',
+  '610327': '陕西省宝鸡市陇县',
+  '610328': '陕西省宝鸡市千阳县',
+  '610329': '陕西省宝鸡市麟游县',
+  '610330': '陕西省宝鸡市凤县',
+  '610331': '陕西省宝鸡市太白县',
+  '610400': '陕西省咸阳市',
+  '610401': '陕西省咸阳市市辖区',
+  '610402': '陕西省咸阳市秦都区',
+  '610403': '陕西省咸阳市杨陵区',
+  '610404': '陕西省咸阳市渭城区',
+  '610422': '陕西省咸阳市三原县',
+  '610423': '陕西省咸阳市泾阳县',
+  '610424': '陕西省咸阳市乾县',
+  '610425': '陕西省咸阳市礼泉县',
+  '610426': '陕西省咸阳市永寿县',
+  '610427': '陕西省咸阳市彬县',
+  '610428': '陕西省咸阳市长武县',
+  '610429': '陕西省咸阳市旬邑县',
+  '610430': '陕西省咸阳市淳化县',
+  '610431': '陕西省咸阳市武功县',
+  '610481': '陕西省咸阳市兴平市',
+  '610500': '陕西省渭南市',
+  '610501': '陕西省渭南市市辖区',
+  '610502': '陕西省渭南市临渭区',
+  '610521': '陕西省渭南市华县',
+  '610522': '陕西省渭南市潼关县',
+  '610523': '陕西省渭南市大荔县',
+  '610524': '陕西省渭南市合阳县',
+  '610525': '陕西省渭南市澄城县',
+  '610526': '陕西省渭南市蒲城县',
+  '610527': '陕西省渭南市白水县',
+  '610528': '陕西省渭南市富平县',
+  '610581': '陕西省渭南市韩城市',
+  '610582': '陕西省渭南市华阴市',
+  '610600': '陕西省延安市',
+  '610601': '陕西省延安市市辖区',
+  '610602': '陕西省延安市宝塔区',
+  '610621': '陕西省延安市延长县',
+  '610622': '陕西省延安市延川县',
+  '610623': '陕西省延安市子长县',
+  '610624': '陕西省延安市安塞县',
+  '610625': '陕西省延安市志丹县',
+  '610626': '陕西省延安市吴旗县',
+  '610627': '陕西省延安市甘泉县',
+  '610628': '陕西省延安市富县',
+  '610629': '陕西省延安市洛川县',
+  '610630': '陕西省延安市宜川县',
+  '610631': '陕西省延安市黄龙县',
+  '610632': '陕西省延安市黄陵县',
+  '610700': '陕西省汉中市',
+  '610701': '陕西省汉中市市辖区',
+  '610702': '陕西省汉中市汉台区',
+  '610721': '陕西省汉中市南郑县',
+  '610722': '陕西省汉中市城固县',
+  '610723': '陕西省汉中市洋县',
+  '610724': '陕西省汉中市西乡县',
+  '610725': '陕西省汉中市勉县',
+  '610726': '陕西省汉中市宁强县',
+  '610727': '陕西省汉中市略阳县',
+  '610728': '陕西省汉中市镇巴县',
+  '610729': '陕西省汉中市留坝县',
+  '610730': '陕西省汉中市佛坪县',
+  '612400': '陕西省安康地区',
+  '612401': '陕西省安康地区安康市',
+  '612422': '陕西省安康地区汉阴县',
+  '612423': '陕西省安康地区石泉县',
+  '612424': '陕西省安康地区宁陕县',
+  '612425': '陕西省安康地区紫阳县',
+  '612426': '陕西省安康地区岚皋县',
+  '612427': '陕西省安康地区平利县',
+  '612428': '陕西省安康地区镇坪县',
+  '612429': '陕西省安康地区旬阳县',
+  '612430': '陕西省安康地区白河县',
+  '612500': '陕西省商洛地区',
+  '612501': '陕西省商洛地区商州市',
+  '612522': '陕西省商洛地区洛南县',
+  '612523': '陕西省商洛地区丹凤县',
+  '612524': '陕西省商洛地区商南县',
+  '612525': '陕西省商洛地区山阳县',
+  '612526': '陕西省商洛地区镇安县',
+  '612527': '陕西省商洛地区柞水县',
+  '612700': '陕西省榆林地区',
+  '612701': '陕西省榆林地区榆林市',
+  '612722': '陕西省榆林地区神木县',
+  '612723': '陕西省榆林地区府谷县',
+  '612724': '陕西省榆林地区横山县',
+  '612725': '陕西省榆林地区靖边县',
+  '612726': '陕西省榆林地区定边县',
+  '612727': '陕西省榆林地区绥德县',
+  '612728': '陕西省榆林地区米脂县',
+  '612729': '陕西省榆林地区佳县',
+  '612730': '陕西省榆林地区吴堡县',
+  '612731': '陕西省榆林地区清涧县',
+  '612732': '陕西省榆林地区子洲县',
+  '620000': '甘肃省',
+  '620100': '甘肃省兰州市',
+  '620101': '甘肃省兰州市市辖区',
+  '620102': '甘肃省兰州市城关区',
+  '620103': '甘肃省兰州市七里河区',
+  '620104': '甘肃省兰州市西固区',
+  '620105': '甘肃省兰州市安宁区',
+  '620111': '甘肃省兰州市红古区',
+  '620121': '甘肃省兰州市永登县',
+  '620122': '甘肃省兰州市皋兰县',
+  '620123': '甘肃省兰州市榆中县',
+  '620200': '甘肃省嘉峪关市',
+  '620201': '甘肃省嘉峪关市市辖区',
+  '620300': '甘肃省嘉峪关市金昌市',
+  '620301': '甘肃省嘉峪关市市辖区',
+  '620302': '甘肃省嘉峪关市金川区',
+  '620321': '甘肃省嘉峪关市永昌县',
+  '620400': '甘肃省白银市',
+  '620401': '甘肃省白银市市辖区',
+  '620402': '甘肃省白银市白银区',
+  '620403': '甘肃省白银市平川区',
+  '620421': '甘肃省白银市靖远县',
+  '620422': '甘肃省白银市会宁县',
+  '620423': '甘肃省白银市景泰县',
+  '620500': '甘肃省天水市',
+  '620501': '甘肃省天水市市辖区',
+  '620502': '甘肃省天水市秦城区',
+  '620503': '甘肃省天水市北道区',
+  '620521': '甘肃省天水市清水县',
+  '620522': '甘肃省天水市秦安县',
+  '620523': '甘肃省天水市甘谷县',
+  '620524': '甘肃省天水市武山县',
+  '620525': '甘肃省天水市张家川回族自治县',
+  '622100': '甘肃省酒泉地区',
+  '622101': '甘肃省酒泉地区玉门市',
+  '622102': '甘肃省酒泉地区酒泉市',
+  '622103': '甘肃省酒泉地区敦煌市',
+  '622123': '甘肃省酒泉地区金塔县',
+  '622124': '甘肃省酒泉地区肃北蒙古族自治县',
+  '622125': '甘肃省酒泉地区阿克塞哈萨克族自治县',
+  '622126': '甘肃省酒泉地区安西县',
+  '622200': '甘肃省张掖地区',
+  '622201': '甘肃省张掖地区张掖市',
+  '622222': '甘肃省张掖地区肃南裕固族自治县',
+  '622223': '甘肃省张掖地区民乐县',
+  '622224': '甘肃省张掖地区临泽县',
+  '622225': '甘肃省张掖地区高台县',
+  '622226': '甘肃省张掖地区山丹县',
+  '622300': '甘肃省武威地区',
+  '622301': '甘肃省武威地区武威市',
+  '622322': '甘肃省武威地区民勤县',
+  '622323': '甘肃省武威地区古浪县',
+  '622326': '甘肃省武威地区天祝藏族自治县',
+  '622400': '甘肃省定西地区',
+  '622421': '甘肃省定西地区定西县',
+  '622424': '甘肃省定西地区通渭县',
+  '622425': '甘肃省定西地区陇西县',
+  '622426': '甘肃省定西地区渭源县',
+  '622427': '甘肃省定西地区临洮县',
+  '622428': '甘肃省定西地区漳县',
+  '622429': '甘肃省定西地区岷县',
+  '622600': '甘肃省陇南地区',
+  '622621': '甘肃省陇南地区武都县',
+  '622623': '甘肃省陇南地区宕昌县',
+  '622624': '甘肃省陇南地区成县',
+  '622625': '甘肃省陇南地区康县',
+  '622626': '甘肃省陇南地区文县',
+  '622627': '甘肃省陇南地区西和县',
+  '622628': '甘肃省陇南地区礼县',
+  '622629': '甘肃省陇南地区两当县',
+  '622630': '甘肃省陇南地区徽县',
+  '622700': '甘肃省平凉地区',
+  '622701': '甘肃省平凉地区平凉市',
+  '622722': '甘肃省平凉地区泾川县',
+  '622723': '甘肃省平凉地区灵台县',
+  '622724': '甘肃省平凉地区崇信县',
+  '622725': '甘肃省平凉地区华亭县',
+  '622726': '甘肃省平凉地区庄浪县',
+  '622727': '甘肃省平凉地区静宁县',
+  '622800': '甘肃省庆阳地区',
+  '622801': '甘肃省庆阳地区西峰市',
+  '622821': '甘肃省庆阳地区庆阳县',
+  '622822': '甘肃省庆阳地区环县',
+  '622823': '甘肃省庆阳地区华池县',
+  '622824': '甘肃省庆阳地区合水县',
+  '622825': '甘肃省庆阳地区正宁县',
+  '622826': '甘肃省庆阳地区宁县',
+  '622827': '甘肃省庆阳地区镇原县',
+  '622900': '甘肃省临夏回族自治州',
+  '622901': '甘肃省临夏回族自治州临夏市',
+  '622921': '甘肃省临夏回族自治州临夏县',
+  '622922': '甘肃省临夏回族自治州康乐县',
+  '622923': '甘肃省临夏回族自治州永靖县',
+  '622924': '甘肃省临夏回族自治州广河县',
+  '622925': '甘肃省临夏回族自治州和政县',
+  '622926': '甘肃省临夏回族自治州东乡族自治县',
+  '622927': '甘肃省临夏回族自治州积石山保安族东乡族撒拉族自治县',
+  '623000': '甘肃省甘南藏族自治州',
+  '623001': '甘肃省甘南藏族自治州合作市',
+  '623021': '甘肃省甘南藏族自治州临潭县',
+  '623022': '甘肃省甘南藏族自治州卓尼县',
+  '623023': '甘肃省甘南藏族自治州舟曲县',
+  '623024': '甘肃省甘南藏族自治州迭部县',
+  '623025': '甘肃省甘南藏族自治州玛曲县',
+  '623026': '甘肃省甘南藏族自治州碌曲县',
+  '623027': '甘肃省甘南藏族自治州夏河县',
+  '630000': '青海省',
+  '630100': '青海省西宁市',
+  '630101': '青海省西宁市市辖区',
+  '630102': '青海省西宁市城东区',
+  '630103': '青海省西宁市城中区',
+  '630104': '青海省西宁市城西区',
+  '630105': '青海省西宁市城北区',
+  '630121': '青海省西宁市大通回族土族自治县',
+  '632100': '青海省海东地区',
+  '632121': '青海省海东地区平安县',
+  '632122': '青海省海东地区民和回族土族自治县',
+  '632123': '青海省海东地区乐都县',
+  '632124': '青海省海东地区湟中县',
+  '632125': '青海省海东地区湟源县',
+  '632126': '青海省海东地区互助土族自治县',
+  '632127': '青海省海东地区化隆回族自治县',
+  '632128': '青海省海东地区循化撒拉族自治县',
+  '632200': '青海省海北藏族自治州',
+  '632221': '青海省海北藏族自治州门源回族自治县',
+  '632222': '青海省海北藏族自治州祁连县',
+  '632223': '青海省海北藏族自治州海晏县',
+  '632224': '青海省海北藏族自治州刚察县',
+  '632300': '青海省黄南藏族自治州',
+  '632321': '青海省黄南藏族自治州同仁县',
+  '632322': '青海省黄南藏族自治州尖扎县',
+  '632323': '青海省黄南藏族自治州泽库县',
+  '632324': '青海省黄南藏族自治州河南蒙古族自治县',
+  '632500': '青海省海南藏族自治州',
+  '632521': '青海省海南藏族自治州共和县',
+  '632522': '青海省海南藏族自治州同德县',
+  '632523': '青海省海南藏族自治州贵德县',
+  '632524': '青海省海南藏族自治州兴海县',
+  '632525': '青海省海南藏族自治州贵南县',
+  '632600': '青海省果洛藏族自治州',
+  '632621': '青海省果洛藏族自治州玛沁县',
+  '632622': '青海省果洛藏族自治州班玛县',
+  '632623': '青海省果洛藏族自治州甘德县',
+  '632624': '青海省果洛藏族自治州达日县',
+  '632625': '青海省果洛藏族自治州久治县',
+  '632626': '青海省果洛藏族自治州玛多县',
+  '632700': '青海省玉树藏族自治州',
+  '632721': '青海省玉树藏族自治州玉树县',
+  '632722': '青海省玉树藏族自治州杂多县',
+  '632723': '青海省玉树藏族自治州称多县',
+  '632724': '青海省玉树藏族自治州治多县',
+  '632725': '青海省玉树藏族自治州囊谦县',
+  '632726': '青海省玉树藏族自治州曲麻莱县',
+  '632800': '青海省海西蒙古族藏族自治州',
+  '632801': '青海省海西蒙古族藏族自治州格尔木市',
+  '632802': '青海省海西蒙古族藏族自治州德令哈市',
+  '632821': '青海省海西蒙古族藏族自治州乌兰县',
+  '632822': '青海省海西蒙古族藏族自治州都兰县',
+  '632823': '青海省海西蒙古族藏族自治州天峻县',
+  '640000': '宁夏回族自治区',
+  '640100': '宁夏回族自治区银川市',
+  '640101': '宁夏回族自治区银川市市辖区',
+  '640102': '宁夏回族自治区银川市城区',
+  '640103': '宁夏回族自治区银川市新城区',
+  '640111': '宁夏回族自治区银川市郊区',
+  '640121': '宁夏回族自治区银川市永宁县',
+  '640122': '宁夏回族自治区银川市贺兰县',
+  '640200': '宁夏回族自治区石嘴山市',
+  '640201': '宁夏回族自治区石嘴山市市辖区',
+  '640202': '宁夏回族自治区石嘴山市大武口区',
+  '640203': '宁夏回族自治区石嘴山市石嘴山区',
+  '640204': '宁夏回族自治区石嘴山市石炭井区',
+  '640221': '宁夏回族自治区石嘴山市平罗县',
+  '640222': '宁夏回族自治区石嘴山市陶乐县',
+  '640223': '宁夏回族自治区石嘴山市惠农县',
+  '640300': '宁夏回族自治区吴忠市',
+  '640301': '宁夏回族自治区吴忠市市辖区',
+  '640302': '宁夏回族自治区吴忠市利通区',
+  '640321': '宁夏回族自治区吴忠市中卫县',
+  '640322': '宁夏回族自治区吴忠市中宁县',
+  '640323': '宁夏回族自治区吴忠市盐池县',
+  '640324': '宁夏回族自治区吴忠市同心县',
+  '640381': '宁夏回族自治区吴忠市青铜峡市',
+  '640382': '宁夏回族自治区吴忠市灵武市',
+  '642200': '宁夏回族自治区固原地区',
+  '642221': '宁夏回族自治区固原地区固原县',
+  '642222': '宁夏回族自治区固原地区海原县',
+  '642223': '宁夏回族自治区固原地区西吉县',
+  '642224': '宁夏回族自治区固原地区隆德县',
+  '642225': '宁夏回族自治区固原地区泾源县',
+  '642226': '宁夏回族自治区固原地区彭阳县',
+  '650000': '新疆维吾尔自治区',
+  '650100': '新疆维吾尔族自治区乌鲁木齐市',
+  '650101': '新疆维吾尔族自治区乌鲁木齐市市辖区',
+  '650102': '新疆维吾尔族自治区乌鲁木齐市天山区',
+  '650103': '新疆维吾尔族自治区乌鲁木齐市沙依巴克区',
+  '650104': '新疆维吾尔族自治区乌鲁木齐市新市区',
+  '650105': '新疆维吾尔族自治区乌鲁木齐市水磨沟区',
+  '650106': '新疆维吾尔族自治区乌鲁木齐市头屯河区',
+  '650107': '新疆维吾尔族自治区乌鲁木齐市南山矿区',
+  '650108': '新疆维吾尔族自治区乌鲁木齐市东山区',
+  '650121': '新疆维吾尔族自治区乌鲁木齐市乌鲁木齐县',
+  '650200': '新疆维吾尔族自治区克拉玛依市',
+  '650201': '新疆维吾尔族自治区克拉玛依市市辖区',
+  '650202': '新疆维吾尔族自治区克拉玛依市独山子区',
+  '650203': '新疆维吾尔族自治区克拉玛依市克拉玛依区',
+  '650204': '新疆维吾尔族自治区克拉玛依市白碱滩区',
+  '650205': '新疆维吾尔族自治区克拉玛依市乌尔禾区',
+  '652100': '新疆维吾尔族自治区吐鲁番地区',
+  '652101': '新疆维吾尔族自治区吐鲁番地区吐鲁番市',
+  '652122': '新疆维吾尔族自治区吐鲁番地区鄯善县',
+  '652123': '新疆维吾尔族自治区吐鲁番地区托克逊县',
+  '652200': '新疆维吾尔族自治区哈密地区',
+  '652201': '新疆维吾尔族自治区哈密地区哈密市',
+  '652222': '新疆维吾尔族自治区哈密地区巴里坤哈萨克自治县',
+  '652223': '新疆维吾尔族自治区哈密地区伊吾县',
+  '652300': '新疆维吾尔族自治区昌吉回族自治州',
+  '652301': '新疆维吾尔族自治区昌吉回族自治州昌吉市',
+  '652302': '新疆维吾尔族自治区昌吉回族自治州阜康市',
+  '652303': '新疆维吾尔族自治区昌吉回族自治州米泉市',
+  '652323': '新疆维吾尔族自治区昌吉回族自治州呼图壁县',
+  '652324': '新疆维吾尔族自治区昌吉回族自治州玛纳斯县',
+  '652325': '新疆维吾尔族自治区昌吉回族自治州奇台县',
+  '652327': '新疆维吾尔族自治区昌吉回族自治州吉木萨尔县',
+  '652328': '新疆维吾尔族自治区昌吉回族自治州木垒哈萨克自治县',
+  '652700': '新疆维吾尔族自治区博尔塔拉蒙古自治州',
+  '652701': '新疆维吾尔族自治区博尔塔拉蒙古自治州博乐市',
+  '652722': '新疆维吾尔族自治区博尔塔拉蒙古自治州精河县',
+  '652723': '新疆维吾尔族自治区博尔塔拉蒙古自治州温泉县',
+  '652800': '新疆维吾尔族自治区巴音郭楞蒙古自治州',
+  '652801': '新疆维吾尔族自治区巴音郭楞蒙古自治州库尔勒市',
+  '652822': '新疆维吾尔族自治区巴音郭楞蒙古自治州轮台县',
+  '652823': '新疆维吾尔族自治区巴音郭楞蒙古自治州尉犁县',
+  '652824': '新疆维吾尔族自治区巴音郭楞蒙古自治州若羌县',
+  '652825': '新疆维吾尔族自治区巴音郭楞蒙古自治州且末县',
+  '652826': '新疆维吾尔族自治区巴音郭楞蒙古自治州焉耆回族自治县',
+  '652827': '新疆维吾尔族自治区巴音郭楞蒙古自治州和静县',
+  '652828': '新疆维吾尔族自治区巴音郭楞蒙古自治州和硕县',
+  '652829': '新疆维吾尔族自治区巴音郭楞蒙古自治州博湖县',
+  '652900': '新疆维吾尔族自治区阿克苏地区',
+  '652901': '新疆维吾尔族自治区阿克苏地区阿克苏市',
+  '652922': '新疆维吾尔族自治区阿克苏地区温宿县',
+  '652923': '新疆维吾尔族自治区阿克苏地区库车县',
+  '652924': '新疆维吾尔族自治区阿克苏地区沙雅县',
+  '652925': '新疆维吾尔族自治区阿克苏地区新和县',
+  '652926': '新疆维吾尔族自治区阿克苏地区拜城县',
+  '652927': '新疆维吾尔族自治区阿克苏地区乌什县',
+  '652928': '新疆维吾尔族自治区阿克苏地区阿瓦提县',
+  '652929': '新疆维吾尔族自治区阿克苏地区柯坪县',
+  '653000': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州',
+  '653001': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿图什市',
+  '653022': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿克陶县',
+  '653023': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州阿合奇县',
+  '653024': '新疆维吾尔族自治区克孜勒苏柯尔克孜自治州乌恰县',
+  '653100': '新疆维吾尔族自治区喀什地区',
+  '653101': '新疆维吾尔族自治区喀什地区喀什市',
+  '653121': '新疆维吾尔族自治区喀什地区疏附县',
+  '653122': '新疆维吾尔族自治区喀什地区疏勒县',
+  '653123': '新疆维吾尔族自治区喀什地区英吉沙县',
+  '653124': '新疆维吾尔族自治区喀什地区泽普县',
+  '653125': '新疆维吾尔族自治区喀什地区莎车县',
+  '653126': '新疆维吾尔族自治区喀什地区叶城县',
+  '653127': '新疆维吾尔族自治区喀什地区麦盖提县',
+  '653128': '新疆维吾尔族自治区喀什地区岳普湖县',
+  '653129': '新疆维吾尔族自治区喀什地区伽师县',
+  '653130': '新疆维吾尔族自治区喀什地区巴楚县',
+  '653131': '新疆维吾尔族自治区喀什地区塔什库尔干塔吉克自治县',
+  '653200': '新疆维吾尔族自治区和田地区',
+  '653201': '新疆维吾尔族自治区和田地区和田市',
+  '653221': '新疆维吾尔族自治区和田地区和田县',
+  '653222': '新疆维吾尔族自治区和田地区墨玉县',
+  '653223': '新疆维吾尔族自治区和田地区皮山县',
+  '653224': '新疆维吾尔族自治区和田地区洛浦县',
+  '653225': '新疆维吾尔族自治区和田地区策勒县',
+  '653226': '新疆维吾尔族自治区和田地区于田县',
+  '653227': '新疆维吾尔族自治区和田地区民丰县',
+  '654000': '新疆维吾尔族自治区伊犁哈萨克自治州',
+  '654001': '新疆维吾尔族自治区伊犁哈萨克自治州奎屯市',
+  '654100': '新疆维吾尔族自治区伊犁哈萨克自治州伊犁地区',
+  '654101': '新疆维吾尔族自治区伊犁哈萨克自治州伊宁市',
+  '654121': '新疆维吾尔族自治区伊犁哈萨克自治州伊宁县',
+  '654122': '新疆自治区伊犁哈萨克自治州察布查尔锡伯自治县',
+  '654123': '新疆维吾尔族自治区伊犁哈萨克自治州霍城县',
+  '654124': '新疆维吾尔族自治区伊犁哈萨克自治州巩留县',
+  '654125': '新疆维吾尔族自治区伊犁哈萨克自治州新源县',
+  '654126': '新疆维吾尔族自治区伊犁哈萨克自治州昭苏县',
+  '654127': '新疆维吾尔族自治区伊犁哈萨克自治州特克斯县',
+  '654128': '新疆维吾尔族自治区伊犁哈萨克自治州尼勒克县',
+  '654200': '新疆维吾尔族自治区塔城地区',
+  '654201': '新疆维吾尔族自治区塔城地区塔城市',
+  '654202': '新疆维吾尔族自治区塔城地区乌苏市',
+  '654221': '新疆维吾尔族自治区塔城地区额敏县',
+  '654223': '新疆维吾尔族自治区塔城地区沙湾县',
+  '654224': '新疆维吾尔族自治区塔城地区托里县',
+  '654225': '新疆维吾尔族自治区塔城地区裕民县',
+  '654226': '新疆维吾尔族自治区塔城地区和布克赛尔蒙古自治县',
+  '654300': '新疆维吾尔族自治区阿勒泰地区',
+  '654301': '新疆维吾尔族自治区阿勒泰地区阿勒泰市',
+  '654321': '新疆维吾尔族自治区阿勒泰地区布尔津县',
+  '654322': '新疆维吾尔族自治区阿勒泰地区富蕴县',
+  '654323': '新疆维吾尔族自治区阿勒泰地区福海县',
+  '654324': '新疆维吾尔族自治区阿勒泰地区哈巴河县',
+  '654325': '新疆维吾尔族自治区阿勒泰地区青河县',
+  '654326': '新疆维吾尔族自治区阿勒泰地区吉木乃县',
+  '659000': '新疆维吾尔族自治区直辖县级行政单位',
+  '659001': '新疆维吾尔族自治区石河子市'
+}
+
+function IDValidator() {
+  let param = {
+    error: {
+      longNumber: '长数字存在精度问题,请使用字符串传值! Long number is not allowed, because the precision of the Number In JavaScript.'
+    }
+  }
+  let util = {
+    checkArg: function (id) {
+      let argType = (typeof id)
+
+      switch (argType) {
+        case 'number':
+          // long number not allowed
+          id = id.toString()
+          if (id.length > 15) {
+            this.error(param.error.longNumber)
+            return false
+          }
+          break
+        case 'string':
+          break
+        default:
+          return false
+      }
+      id = id.toUpperCase()
+      let code = null
+      if (id.length === 18) {
+        // 18位
+        code = {
+          body: id.slice(0, 17),
+          checkBit: id.slice(-1),
+          type: 18
+        }
+      } else if (id.length === 15) {
+        // 15位
+        code = {
+          body: id,
+          type: 15
+        }
+      } else {
+        return false
+      }
+      return code
+    },
+    // 地址码检查
+    checkAddr: function (addr, GB2260) {
+      let addrInfo = this.getAddrInfo(addr, GB2260)
+      return addrInfo !== false
+    },
+    // 取得地址码信息
+    getAddrInfo: function (addr, GB2260) {
+      GB2260 = GB2260 || null
+      // 查询GB/T2260,没有引入GB2260时略过
+      if (GB2260 === null) {
+        return addr
+      }
+      if (!GB2260.hasOwnProperty(addr)) {
+        // 考虑标准不全的情况,搜索不到时向上搜索
+        let tmpAddr
+        tmpAddr = addr.slice(0, 4) + '00'
+        if (!GB2260.hasOwnProperty(tmpAddr)) {
+          tmpAddr = addr.slice(0, 2) + '0000'
+          if (!GB2260.hasOwnProperty(tmpAddr)) {
+            return false
+          } else {
+            return GB2260[tmpAddr] + '未知地区'
+          }
+        } else {
+          return GB2260[tmpAddr] + '未知地区'
+        }
+      } else {
+        return GB2260[addr]
+      }
+    },
+    // 生日码检查
+    checkBirth: function (birth) {
+      let year, month, day
+      if (birth.length === 8) {
+        year = parseInt(birth.slice(0, 4), 10)
+        month = parseInt(birth.slice(4, 6), 10)
+        day = parseInt(birth.slice(-2), 10)
+      } else if (birth.length === 6) {
+        year = parseInt('19' + birth.slice(0, 2), 10)
+        month = parseInt(birth.slice(2, 4), 10)
+        day = parseInt(birth.slice(-2), 10)
+      } else {
+        return false
+      }
+      // TODO 是否需要判断年份
+      /*
+       * if( year<1800 ){ return false; }
+       */
+      // TODO 按月份检测
+      if (month > 12 || month === 0 || day > 31 || day === 0) {
+        return false
+      }
+
+      return true
+    },
+    // 顺序码检查
+    checkOrder: function (order) {
+      // 暂无需检测
+
+      return true
+    },
+    // 加权
+    weight: function (t) {
+      return Math.pow(2, t - 1) % 11
+    },
+    // 随机整数
+    rand: function (max, min) {
+      min = min || 1
+      return Math.round(Math.random() * (max - min)) + min
+    },
+    // 数字补位
+    str_pad: function (str, len, chr, right) {
+      str = str.toString()
+      len = len || 2
+      chr = chr || '0'
+      right = right || false
+      if (str.length >= len) {
+        return str
+      } else {
+        for (let i = 0, j = len - str.length; i < j; i++) {
+          if (right) {
+            str = str + chr
+          } else {
+            str = chr + str
+          }
+        }
+        return str
+      }
+    },
+    // 抛错
+    error: function (msg) {
+      let e = new Error()
+      e.message = 'IDValidator: ' + msg
+      throw e
+    }
+  }
+  let _IDValidator = function (GB2260) {
+    if (typeof GB2260 !== 'undefined') {
+      this.GB2260 = GB2260
+    }
+    // 建立cache
+    this.cache = {}
+  }
+  _IDValidator.prototype = {
+    isValid: function (id) {
+      let GB2260 = this.GB2260 || null
+      let code = util.checkArg(id)
+      if (code === false) {
+        return false
+      }
+      // 查询cache
+      if (this.cache.hasOwnProperty(id) && typeof (this.cache[id].valid) !== 'undefined') {
+        return this.cache[id].valid
+      } else {
+        if (!this.cache.hasOwnProperty(id)) {
+          this.cache[id] = {}
+        }
+      }
+
+      let addr = code.body.slice(0, 6)
+      let birth = (code.type === 18 ? code.body.slice(6, 14) : code.body.slice(6, 12))
+      let order = code.body.slice(-3)
+
+      if (!(util.checkAddr(addr, GB2260) && util.checkBirth(birth) && util
+          .checkOrder(order))) {
+        this.cache[id].valid = false
+        return false
+      }
+
+      // 15位不含校验码,到此已结束
+      if (code.type === 15) {
+        this.cache[id].valid = true
+        return true
+      }
+
+      /* 校验位部分 */
+
+      // 位置加权
+      let posWeight = []
+      for (let i = 18; i > 1; i--) {
+        let wei = util.weight(i)
+        posWeight[i] = wei
+      }
+
+      // 累加body部分与位置加权的积
+      let bodySum = 0
+      let bodyArr = code.body.split('')
+      for (let j = 0; j < bodyArr.length; j++) {
+        bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j])
+      }
+
+      // 得出校验码
+      let checkBit = 12 - (bodySum % 11)
+      if (checkBit === 10) {
+        checkBit = 'X'
+      } else if (checkBit > 10) {
+        checkBit = checkBit % 11
+      }
+      checkBit = (typeof checkBit === 'number' ? checkBit.toString()
+        : checkBit)
+
+      // 检查校验码
+      if (checkBit !== code.checkBit) {
+        this.cache[id].valid = false
+        return false
+      } else {
+        this.cache[id].valid = true
+        return true
+      }
+    },
+    // 获取年龄
+    getAgeForIdCard: function (idStr) {
+      let len = idStr.length // 身份证编码长度
+      if (len < 15) {
+        return -1
+      } else { // 身份证编码大于15位
+        if ((len !== 15) && (len !== 18)) { // 判断编码位数等于15或18
+          return -1
+        } else {
+          let date1 = new Date() // 取得当前日期
+          let year1 = date1.getFullYear() // 取得当前年份
+          let month1 = date1.getMonth() // 取得当前月份
+          if (len === 15) { // 15位身份证
+            if (month1 > parseInt(idStr.substr(8, 2))) { // 判断当前月分与编码中的月份大小
+              return year1 - ('19' + idStr.substr(6, 2))
+            } else {
+              return year1 - ('19' + idStr.substr(6, 2)) - 1
+            }
+          } else if (len === 18) { // 18位身份证
+            if (month1 > parseInt(idStr.substr(10, 2))) { // 判断当前月分与编码中的月份大小
+              return year1 - idStr.substr(6, 4)
+            } else {
+              return year1 - idStr.substr(6, 4) - 1
+            }
+          }
+        }
+      }
+    },
+    // 获取性别
+    getSexForIdCard: function (idStr) {
+      let len = idStr.length // 身份证编码长度
+      if (len < 15) {
+        return -1
+      } else { // 身份证编码大于15位
+        if ((len !== 15) && (len !== 18)) { // 判断编码位数等于15或18
+          return -1
+        } else {
+          if (len === 15) { // 15位身份证
+            return (parseInt(idStr.substring(13, 14)) % 2 === 0) ? 0 : 1
+          } else if (len === 18) { // 18位身份证
+            return (parseInt(idStr.substring(16, 17)) % 2 === 0) ? 0 : 1
+          }
+        }
+      }
+    },
+    // 分析详细信息
+    getInfo: function (id) {
+      let GB2260 = this.GB2260 || null
+      // 号码必须有效
+      if (this.isValid(id) === false) {
+        return false
+      }
+      // TODO 复用此部分
+      let code = util.checkArg(id)
+
+      // 查询cache
+      // 到此时通过isValid已经有了cache记录
+      if (typeof this.cache[id].info !== 'undefined') {
+        return this.cache[id].info
+      }
+
+      let addr = code.body.slice(0, 6)
+      let birth = (code.type === 18 ? code.body.slice(6, 14) : code.body
+        .slice(6, 12))
+      let order = code.body.slice(-3)
+
+      let info = {}
+      info.addrCode = addr
+      if (GB2260 !== null) {
+        info.addr = util.getAddrInfo(addr, GB2260)
+      }
+      info.birth = (code.type === 18 ? (([birth.slice(0, 4),
+        birth.slice(4, 6), birth.slice(-2)]).join('-')) : ((
+        '19' + birth.slice(0, 2), birth.slice(2, 4),
+          birth.slice(-2))).join('-'))
+      info.sex = (order % 2 === 0 ? 0 : 1)
+      info.length = code.type
+      if (code.type === 18) {
+        info.checkBit = code.checkBit
+      }
+
+      // 记录cache
+      this.cache[id].info = info
+
+      return info
+    },
+    // 仿造一个号
+    makeID: function (isFifteen) {
+      let GB2260 = this.GB2260 || null
+
+      // 地址码
+      let addr = null
+      if (GB2260 !== null) {
+        let loopCnt = 0
+        while (addr === null) {
+          // 防止死循环
+          if (loopCnt > 10) {
+            addr = 110101
+            break
+          }
+          let prov = util.str_pad(util.rand(50), 2, '0')
+          let city = util.str_pad(util.rand(20), 2, '0')
+          let area = util.str_pad(util.rand(20), 2, '0')
+          let addrTest = [prov, city, area].join('')
+          if (GB2260[addrTest]) {
+            addr = addrTest
+            break
+          }
+        }
+      } else {
+        addr = 110101
+      }
+
+      // 出生年
+      let yr = util.str_pad(util.rand(99, 50), 2, '0')
+      let mo = util.str_pad(util.rand(12, 1), 2, '0')
+      let da = util.str_pad(util.rand(28, 1), 2, '0')
+      if (isFifteen) {
+        return addr + yr + mo + da + util.str_pad(util.rand(999, 1), 3, '1')
+      }
+
+      yr = '19' + yr
+      let body = addr + yr + mo + da + util.str_pad(util.rand(999, 1), 3, '1')
+
+      // 位置加权
+      let posWeight = []
+      for (let i = 18; i > 1; i--) {
+        let wei = util.weight(i)
+        posWeight[i] = wei
+      }
+
+      // 累加body部分与位置加权的积
+      let bodySum = 0
+      let bodyArr = body.split('')
+      for (let j = 0; j < bodyArr.length; j++) {
+        bodySum += (parseInt(bodyArr[j], 10) * posWeight[18 - j])
+      }
+
+      // 得出校验码
+      let checkBit = 12 - (bodySum % 11)
+      if (checkBit === 10) {
+        checkBit = 'X'
+      } else if (checkBit > 10) {
+        checkBit = checkBit % 11
+      }
+      checkBit = (typeof checkBit === 'number' ? checkBit.toString()
+        : checkBit)
+
+      return (body + checkBit)
+    }
+
+  }// _IDValidator
+  GB2260 = GB2260 === null ? '' : GB2260
+  return new _IDValidator(GB2260)
+}
+
+export default new IDValidator();
diff --git a/src/utils/camera.js b/src/utils/camera.js
new file mode 100644
index 0000000..0085a27
--- /dev/null
+++ b/src/utils/camera.js
@@ -0,0 +1,171 @@
+/**
+* 组件: 调用摄像头拍摄的构造函数
+* @params {Object} options 参数如下:
+*             video {DOM} video元素
+*             width {Number} 画布宽度
+*             height {Number} 画布高度
+*             onShoot {Function} 录像回调函数
+*             onError {Function} error回调函数
+*         {Object} canvasOption 参数如下:
+*             marginTop {Number} 银行卡可视区域距离屏幕顶部的距离,用作画布坐标
+*             marginLeft {Number} 银行卡可视区域距离屏幕左侧的距离,用作画布坐标
+*             width {Number} 银行卡可视区域宽度
+*             height {Number} 银行卡可视区域高度
+*调用:
+*    Camera.create(options, canvasOption)
+*/
+function Camera(options, canvasOption) {
+  this.video = options.video;
+  this.width = options.width || 640;
+  this.height = options.height || 480;
+  this.shadeMarginTop = canvasOption.marginTop;
+  this.shadeMarginLeft = canvasOption.marginLeft;
+  this.shadeWidth = canvasOption.width;
+  this.shadeHeight = canvasOption.height;
+  this.onError = options.onError;
+  this.onShoot = options.onShoot;
+  this.mediaStreamTrack = null; // 存放视频流
+}
+
+Camera.prototype = {
+  init: function() {
+      if(navigator.mediaDevices === undefined) {
+          navigator.mediaDevices = {}
+      }
+      // 一些浏览器部分支持 mediaDevices。 我们不能直接给对象设置 getUserMedia
+      // 因为这样可能会覆盖已有的属性。这里我们只会在没有getUserMedia属性的时候添加它。
+      if (navigator.mediaDevices.getUserMedia === undefined) {
+          navigator.mediaDevices.getUserMedia = function(constraints) {
+              // 首先,如果有getUserMedia的话,就获取它
+              var getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
+              
+              // 一些浏览器根本没实现它 — 那么就返回一个error到promise的reject来保持一个统一的接口
+              if (!getUserMedia) {
+                  return Promise.reject(new Error('getUserMedia is not implemented in this browser'));
+              }
+          
+              // 否则,为老的navigator.getUserMedia方法包裹一个Promise
+              return new Promise(function(resolve, reject) {
+                  getUserMedia.call(navigator, constraints, resolve, reject);
+              });
+          }
+      }
+      this.video.autoplay = 'true';
+      this.canvasDom = document.createElement('canvas');
+      this.canvasDom.width = this.width; 
+      this.canvasDom.height = this.height;
+      this.canvasDom.style.display = 'none';
+      document.querySelector('body').appendChild(this.canvasDom);
+  },
+  
+  // 检查摄像头是否可用
+  canCameraUse: function() {
+      return (navigator.mediaDevices.getUserMedia && window.URL);
+  },
+
+  // 获取录像流到video中
+  shoot: function() {
+      var self = this;
+      var video = self.video;
+      if (self.canCameraUse) {
+          navigator.mediaDevices.getUserMedia({
+              video: { facingMode: { exact: "environment"} } // 后置摄像头设置
+          })
+          .then(function(stream) {
+              self.mediaStreamTrack = stream
+              // 旧的浏览器可能没有srcObject
+              if ("srcObject" in video) {
+                  video.srcObject = stream;
+              }else {
+                  // 防止在新的浏览器里使用它,因为它已经不再支持了
+                  video.src = window.URL.createObjectURL(stream);
+              }
+              video.onloadedmetadata = function(e) {
+                  video.play();
+              };
+              video.addEventListener('error', function(error) {
+                  stream.stop();
+                  self.onError && self.onError(error);
+              }, false);
+          })
+          .catch(function(err) {
+              self.onError && self.onError(err)
+          })
+      }
+  },
+  
+  // 将录像绘制到canvas
+  drawVideo: function() {
+      var canvasDom = this.canvasDom;
+      var ctx = canvasDom.getContext('2d');
+      ctx.fillStyle = "#000000";
+      // 视频可能不会充满屏幕,这时候,需要按照视频缩放的比例来剪切所需要的部分
+      let videoHeight = this.video.videoHeight // 视频本身的高度
+      let videoWidth = this.video.videoWidth // 视频本身的宽度
+      let videoWidthScale = 1
+      if (videoWidth && this.width !== videoWidth) { // 计算当前视频的缩放比例
+          videoWidthScale = videoWidth / this.width
+      }
+      let newHeight = videoHeight / videoWidthScale // 当前显示的视频高度
+      let videoMarginTop = this.video.clientHeight - newHeight > 0 ?
+                           (this.video.clientHeight - newHeight) / 2 : 0 // 当前视频距离顶部高度
+      let x = Math.floor(this.shadeMarginLeft * 1) // 计算剪切视频的x坐标
+      let y = Math.floor((this.shadeMarginTop - videoMarginTop) * 1) // 计算剪切视频的y坐标
+      let w = videoWidth - x * 2, h = Math.ceil(videoHeight - y * 2) // 计算剪切视频的宽高
+      ctx.fillRect(this.shadeMarginLeft, this.shadeMarginTop, this.shadeWidth, this.shadeHeight); // 填充画布
+      ctx.drawImage(this.video, x, y, w, h, this.shadeMarginLeft, this.shadeMarginTop, this.shadeWidth, this.shadeHeight) // 剪切视频并绘制成图片
+      this.ctx = ctx
+  },
+  
+  // 录像事件绑定
+  addShootEvent: function() {
+      let self = this;
+      let video = self.video;
+      // 正在录像
+      video.addEventListener('timeupdate', function() {
+          self.drawVideo();
+          self.onShoot && self.onShoot()
+      }, false)
+  },
+
+  // 将录像成图片
+  snapshot: function(cb, imageType) {
+      let self = this
+      let canvas = self.canvasDom;
+      imageType = imageType || 'jpeg';
+      let imageSrc = canvas.toDataURL('image/' + imageType);
+      cb && cb(imageSrc);
+  },
+
+  // 开始录像
+  play: function() {
+      this.video.play();
+  },
+
+  // 停止录像
+  pause: function() {
+      this.video.pause();
+      let self = this
+      // 关闭摄像头
+      self.mediaStreamTrack.getVideoTracks().forEach(function(track) {
+          track.stop();
+          self.ctx.clearRect(0, 0, self.canvasDom.width, self.canvasDom.height); // 清除画布
+      });
+  },
+  
+  render: function() { // 初始化
+      this.init();
+      this.shoot();
+      this.drawVideo();
+      this.addShootEvent();
+  }
+  
+};
+
+Camera.create = function(options, canvasOption) {
+  var camera = new Camera(options, canvasOption.canvasStyle);
+  camera.render();
+  return camera;
+};
+
+export default Camera
\ No newline at end of file
diff --git a/src/utils/config.js b/src/utils/config.js
new file mode 100644
index 0000000..4326193
--- /dev/null
+++ b/src/utils/config.js
@@ -0,0 +1,29 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-09-02 14:03:59
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 14:04:19
+ * @Description: 
+ */
+/**
+ *   c.k  2017/11/15 创建
+ *   c.y  2018/3/16 修改 (把增加了获取项目的动态配置的方法)
+ *   获取设备的信息以及渠道号
+ *   获取项目的名称,logo,协议等等动态配置
+ */
+
+import jsBridge from './jsBridge'; // 安卓/iOS获取设备的信息已经cn值
+// import systemApi from '@/api/oldapi';
+
+// 设置客户端的信息
+function setClientInfo() {
+    // 如果设置是安卓/iOS的话,就通过jsBridge来获取设备信息,以及cn值
+    jsBridge.fetchDeviceInfo();
+}
+
+// 获取项目的配置信息,项目的标题,logo,协议
+function fetchProductConfig() {
+    return systemApi.getJson();
+}
+
+export default {setClientInfo, fetchProductConfig};
diff --git a/src/utils/console.js b/src/utils/console.js
new file mode 100644
index 0000000..162fa2a
--- /dev/null
+++ b/src/utils/console.js
@@ -0,0 +1,19 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2020-09-03 10:32:28
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-09-03 10:53:59
+ * @Description: 是否显示控制台打印值,用this.$log()打印到控制台 DEBUG=true为调试模式输出到控制台,DEBUG=false不输出到控制台
+ */
+const DEBUG = true
+var log = function(...araguments){
+    if(DEBUG){
+        var arr = Array.prototype.slice.call(araguments)
+        console.log.apply(console,arr)
+    }
+}
+export default {
+    install(Vue,options){
+        Vue.prototype.$log = log;
+    }
+}
\ No newline at end of file
diff --git a/src/utils/createUserProtocol.js b/src/utils/createUserProtocol.js
new file mode 100644
index 0000000..9a39e3f
--- /dev/null
+++ b/src/utils/createUserProtocol.js
@@ -0,0 +1,27 @@
+// import agreement from '../../static/agreement2';
+
+
+export default function(info) {
+    //不用引入areement2,因为在index.html里面已经导入了
+    let agreement = agreement5;
+    agreement = agreement.replace('商户注册时填写的营业执照号', info.licenseNo);
+    agreement = agreement.replace('商户注册时填写的负责人姓名', info.priName);
+    agreement = agreement.replace(
+        '商户注册时填写的负责人手机号',
+        info.priMblNo
+    );
+    agreement = agreement.replace('商户名称或法人姓名', '');
+    agreement = agreement.replace('商户注册时填写的银行卡号', '');
+    agreement = agreement.replace('商户注册时选择的银行', '');
+    agreement = agreement.replace('商户注册时填写的负责人邮箱', info.priEmail);
+    agreement = agreement.replace('负责人手机号', info.priMblNo);
+    agreement = agreement.replace('商户注册时选择及填写的地址', info.dtlAddr);
+    agreement = agreement.replace(/当天日期年/g, `${new Date().getFullYear()}`);
+    agreement = agreement.replace(
+        /当天日期月/g,
+        `${new Date().getMonth() + 1}`
+    );
+    agreement = agreement.replace(/当天日期日/g, `${new Date().getDate()}`);
+    agreement = agreement.replace(/法人姓名/g, info.legalName);
+    return agreement;
+}
diff --git a/src/utils/date.js b/src/utils/date.js
new file mode 100644
index 0000000..4ec3b2d
--- /dev/null
+++ b/src/utils/date.js
@@ -0,0 +1,73 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-10-25 10:17:56
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-10-29 11:11:29
+ * @Description: 
+ */
+/**
+ * 时间格式化函数,如果没有传递格式就返回时间戳
+ * @param date Date 对象
+ * @param fmt  格式规范
+ * @returns {*}
+ */
+
+export default function(date, fmt) {
+    if (!date) {
+        return null;
+    }
+    if (typeof date === 'string') {
+        date = new Date(date.replace(/-/g, '/'));
+    }
+    if (typeof date === 'number') {
+        date = new Date(date);
+    }
+    if (fmt === undefined) {
+        return Number(date);
+    } else {
+        var o = {
+            'M+': date.getMonth() + 1,
+            'D+': date.getDate(),
+            'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12,
+            'H+': date.getHours(),
+            'm+': date.getMinutes(),
+            's+': date.getSeconds(),
+            'q+': Math.floor((date.getMonth() + 3) / 3),
+            S: date.getMilliseconds()
+        };
+        var week = {
+            '0': '\u65e5',
+            '1': '\u4e00',
+            '2': '\u4e8c',
+            '3': '\u4e09',
+            '4': '\u56db',
+            '5': '\u4e94',
+            '6': '\u516d'
+        };
+        if (/(Y+)/.test(fmt)) {
+            fmt = fmt.replace(
+                RegExp.$1,
+                (date.getFullYear() + '').substr(4 - RegExp.$1.length)
+            );
+        }
+        if (/(E+)/.test(fmt)) {
+            fmt = fmt.replace(
+                RegExp.$1,
+                (RegExp.$1.length > 1
+                    ? RegExp.$1.length > 2 ? '\u661f\u671f' : '\u5468'
+                    : '') + week[date.getDay() + '']
+            );
+        }
+        for (var k in o) {
+            if (new RegExp('(' + k + ')').test(fmt)) {
+                fmt = fmt.replace(
+                    RegExp.$1,
+                    RegExp.$1.length === 1
+                        ? o[k]
+                        : ('00' + o[k]).substr(('' + o[k]).length)
+                );
+            }
+        }
+        return fmt;
+    }
+}
diff --git a/src/utils/dateformat.js b/src/utils/dateformat.js
new file mode 100644
index 0000000..d812901
--- /dev/null
+++ b/src/utils/dateformat.js
@@ -0,0 +1,282 @@
+/*
+ * @Descripttion: 时间格式化函数
+ * @Author:
+ * @LastEditors  : 小明丶
+ * @Date: 2019-03-30 09:24:27
+ * @LastEditTime : 2019-12-26 16:14:07
+ */
+(function (main) {
+  'use strict';
+  var fecha = {};
+  var token = /d{1,4}|M{1,4}|yy(?:yy)?|S{1,3}|Do|ZZ|([HhMsDm])\1?|[aA]|"[^"]*"|'[^']*'/g;
+  var twoDigits = /\d\d?/;
+  var threeDigits = /\d{3}/;
+  var fourDigits = /\d{4}/;
+  var word = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i;
+  var noop = function () {
+  };
+
+
+  function monthUpdate(arrName) {
+    return function (d, v, i18n) {
+      var index = i18n[arrName].indexOf(v.charAt(0).toUpperCase() + v.substr(1).toLowerCase());
+      if (~index) {
+        d.month = index;
+      }
+    };
+  }
+
+  function pad(val, len) {
+    val = String(val);
+    len = len || 2;
+    while (val.length < len) {
+      val = '0' + val;
+    }
+    return val;
+  }
+
+  var formatFlags = {
+    D: function(dateObj) {
+      return dateObj.getDay();
+    },
+    DD: function(dateObj) {
+      return pad(dateObj.getDay());
+    },
+    Do: function(dateObj, i18n) {
+      return i18n.DoFn(dateObj.getDate());
+    },
+    d: function(dateObj) {
+      return dateObj.getDate();
+    },
+    dd: function(dateObj) {
+      return pad(dateObj.getDate());
+    },
+    ddd: function(dateObj, i18n) {
+      return i18n.dayNamesShort[dateObj.getDay()];
+    },
+    dddd: function(dateObj, i18n) {
+      return i18n.dayNames[dateObj.getDay()];
+    },
+    M: function(dateObj) {
+      return dateObj.getMonth() + 1;
+    },
+    MM: function(dateObj) {
+      return pad(dateObj.getMonth() + 1);
+    },
+    MMM: function(dateObj, i18n) {
+      return i18n.monthNamesShort[dateObj.getMonth()];
+    },
+    MMMM: function(dateObj, i18n) {
+      return i18n.monthNames[dateObj.getMonth()];
+    },
+    yy: function(dateObj) {
+      return String(dateObj.getFullYear()).substr(2);
+    },
+    yyyy: function(dateObj) {
+      return dateObj.getFullYear();
+    },
+    h: function(dateObj) {
+      return dateObj.getHours() % 12 || 12;
+    },
+    hh: function(dateObj) {
+      return pad(dateObj.getHours() % 12 || 12);
+    },
+    H: function(dateObj) {
+      return dateObj.getHours();
+    },
+    HH: function(dateObj) {
+      return pad(dateObj.getHours());
+    },
+    m: function(dateObj) {
+      return dateObj.getMinutes();
+    },
+    mm: function(dateObj) {
+      return pad(dateObj.getMinutes());
+    },
+    s: function(dateObj) {
+      return dateObj.getSeconds();
+    },
+    ss: function(dateObj) {
+      return pad(dateObj.getSeconds());
+    },
+    S: function(dateObj) {
+      return Math.round(dateObj.getMilliseconds() / 100);
+    },
+    SS: function(dateObj) {
+      return pad(Math.round(dateObj.getMilliseconds() / 10), 2);
+    },
+    SSS: function(dateObj) {
+      return pad(dateObj.getMilliseconds(), 3);
+    },
+    a: function(dateObj, i18n) {
+      return dateObj.getHours() < 12 ? i18n.amPm[0] : i18n.amPm[1];
+    },
+    A: function(dateObj, i18n) {
+      return dateObj.getHours() < 12 ? i18n.amPm[0].toUpperCase() : i18n.amPm[1].toUpperCase();
+    },
+    ZZ: function(dateObj) {
+      var o = dateObj.getTimezoneOffset();
+      return (o > 0 ? '-' : '+') + pad(Math.floor(Math.abs(o) / 60) * 100 + Math.abs(o) % 60, 4);
+    }
+  };
+
+  var parseFlags = {
+    d: [twoDigits, function (d, v) {
+      d.day = v;
+    }],
+    M: [twoDigits, function (d, v) {
+      d.month = v - 1;
+    }],
+    yy: [twoDigits, function (d, v) {
+      var da = new Date(), cent = +('' + da.getFullYear()).substr(0, 2);
+      d.year = '' + (v > 68 ? cent - 1 : cent) + v;
+    }],
+    h: [twoDigits, function (d, v) {
+      d.hour = v;
+    }],
+    m: [twoDigits, function (d, v) {
+      d.minute = v;
+    }],
+    s: [twoDigits, function (d, v) {
+      d.second = v;
+    }],
+    yyyy: [fourDigits, function (d, v) {
+      d.year = v;
+    }],
+    S: [/\d/, function (d, v) {
+      d.millisecond = v * 100;
+    }],
+    SS: [/\d{2}/, function (d, v) {
+      d.millisecond = v * 10;
+    }],
+    SSS: [threeDigits, function (d, v) {
+      d.millisecond = v;
+    }],
+    D: [twoDigits, noop],
+    ddd: [word, noop],
+    MMM: [word, monthUpdate('monthNamesShort')],
+    MMMM: [word, monthUpdate('monthNames')],
+    a: [word, function (d, v, i18n) {
+      var val = v.toLowerCase();
+      if (val === i18n.amPm[0]) {
+        d.isPm = false;
+      } else if (val === i18n.amPm[1]) {
+        d.isPm = true;
+      }
+    }],
+    ZZ: [/[\+\-]\d\d:?\d\d/, function (d, v) {
+      var parts = (v + '').match(/([\+\-]|\d\d)/gi), minutes;
+
+      if (parts) {
+        minutes = +(parts[1] * 60) + parseInt(parts[2], 10);
+        d.timezoneOffset = parts[0] === '+' ? minutes : -minutes;
+      }
+    }]
+  };
+  parseFlags.DD = parseFlags.D;
+  parseFlags.dddd = parseFlags.ddd;
+  parseFlags.Do = parseFlags.dd = parseFlags.d;
+  parseFlags.mm = parseFlags.m;
+  parseFlags.hh = parseFlags.H = parseFlags.HH = parseFlags.h;
+  parseFlags.MM = parseFlags.M;
+  parseFlags.ss = parseFlags.s;
+  parseFlags.A = parseFlags.a;
+
+
+  fecha.masks = {
+    'default': 'ddd MMM dd yyyy HH:mm:ss',
+    shortDate: 'M/D/yy',
+    mediumDate: 'MMM d, yyyy',
+    longDate: 'MMMM d, yyyy',
+    fullDate: 'dddd, MMMM d, yyyy',
+    shortTime: 'HH:mm',
+    mediumTime: 'HH:mm:ss',
+    longTime: 'HH:mm:ss.SSS'
+  };
+
+
+  fecha.format = function (dateObj, mask, i18nSettings) {
+    var i18n = i18nSettings || fecha.i18n;
+
+    if (typeof dateObj === 'number') {
+      dateObj = new Date(dateObj);
+    }
+
+    if (Object.prototype.toString.call(dateObj) !== '[object Date]' || isNaN(dateObj.getTime())) {
+      //throw new Error('Invalid Date in fecha.format');
+    }
+
+    mask = fecha.masks[mask] || mask || fecha.masks['default'];
+
+    return mask.replace(token, function ($0) {
+      return $0 in formatFlags ? formatFlags[$0](dateObj, i18n) : $0.slice(1, $0.length - 1);
+    });
+  };
+
+
+  fecha.parse = function (dateStr, format, i18nSettings) {
+    var i18n = i18nSettings || fecha.i18n;
+
+    if (typeof format !== 'string') {
+      throw new Error('Invalid format in fecha.parse');
+    }
+
+    format = fecha.masks[format] || format;
+
+    if (dateStr.length > 1000) {
+      return false;
+    }
+
+    var isValid = true;
+    var dateInfo = {};
+    format.replace(token, function ($0) {
+      if (parseFlags[$0]) {
+        var info = parseFlags[$0];
+        var index = dateStr.search(info[0]);
+        if (!~index) {
+          isValid = false;
+        } else {
+          dateStr.replace(info[0], function (result) {
+            info[1](dateInfo, result, i18n);
+            dateStr = dateStr.substr(index + result.length);
+            return result;
+          });
+        }
+      }
+
+      return parseFlags[$0] ? '' : $0.slice(1, $0.length - 1);
+    });
+
+    if (!isValid) {
+      return false;
+    }
+
+    var today = new Date();
+    if (dateInfo.isPm === true && dateInfo.hour != null && +dateInfo.hour !== 12) {
+      dateInfo.hour = +dateInfo.hour + 12;
+    } else if (dateInfo.isPm === false && +dateInfo.hour === 12) {
+      dateInfo.hour = 0;
+    }
+
+    var date;
+    if (dateInfo.timezoneOffset != null) {
+      dateInfo.minute = +(dateInfo.minute || 0) - +dateInfo.timezoneOffset;
+      date = new Date(Date.UTC(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
+        dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0));
+    } else {
+      date = new Date(dateInfo.year || today.getFullYear(), dateInfo.month || 0, dateInfo.day || 1,
+        dateInfo.hour || 0, dateInfo.minute || 0, dateInfo.second || 0, dateInfo.millisecond || 0);
+    }
+    return date;
+  };
+
+  if (typeof module !== 'undefined' && module.exports) {
+    module.exports = fecha;
+  } else if (typeof define === 'function' && define.amd) {
+    define(function () {
+      return fecha;
+    });
+  } else {
+    main.fecha = fecha;
+  }
+})(this);
diff --git a/src/utils/deviceInfo.js b/src/utils/deviceInfo.js
new file mode 100644
index 0000000..04be008
--- /dev/null
+++ b/src/utils/deviceInfo.js
@@ -0,0 +1,84 @@
+/**
+ * Created by c.k on 2017/11/10.
+ *  获取客户端本地设备信息和渠道编号
+ */
+
+export default {
+    saveDeviceInfo(deviceInfo) {
+        // 外链默认解析地址里面的chanNo,app时解析原生回传的chanNo
+        //   alert(deviceInfo);
+        deviceInfo = JSON.parse(deviceInfo);
+        if (deviceInfo && deviceInfo.childChan) {
+            deviceInfo.isApp = '1';
+        }
+        let configInfo = window.localStorage.getItem('newClientInfo');
+        if (configInfo) {
+            configInfo = JSON.parse(configInfo);
+            for (let key in deviceInfo) {
+                configInfo[key] = deviceInfo[key];
+            }
+            configInfo.ostype = '03';
+            window.localStorage.setItem('newClientInfo',  JSON.stringify(configInfo));
+        }
+        deviceInfo = JSON.stringify(deviceInfo);
+        window.localStorage.setItem('deviceInfo', deviceInfo);
+    },
+    // 获取本地存储的设备信息
+    fetchDeviceInfo() {
+        return window.localStorage.getItem('deviceInfo');
+    },
+    // 获取设备类型
+    getDeviceType() {
+        let browser = {
+            versions() {
+                let u = navigator.userAgent;
+                return {
+                    trident: u.indexOf('Trident') > -1, // IE内核
+                    presto: u.indexOf('Presto') > -1, // opera内核
+                    webKit: u.indexOf('AppleWebKit') > -1, // 苹果、谷歌内核
+                    gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') === -1, // 火狐内核
+                    mobile: !!u.match(/AppleWebKit.*Mobile.*/), // 是否为移动终端
+                    ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), // ios终端
+                    android:
+                        u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, // android终端或者uc浏览器
+                    iPhone: u.indexOf('iPhone') > -1, // 是否为iPhone或者QQHD浏览器
+                    iPad: u.indexOf('iPad') > -1, // 是否iPad
+                    webApp: u.indexOf('Safari') === -1, // 是否web应该程序,没有头部与底部
+                    weixin: u.indexOf('MicroMessenger') > -1, // 是否微信 (2015-01-22新增)
+                    qq: u.match(/\sQQ/i) === 'qq' // 是否QQ
+                };
+            },
+            language: (
+                navigator.browserLanguage || navigator.language
+            ).toLowerCase()
+        };
+        var u = navigator.userAgent;
+        var device = ''; //当前设备信息
+        if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) {
+            //安卓手机
+            device = 'Android';
+            return 'Android';
+        } else if (u.indexOf('iPhone') > -1) {
+            //苹果手机
+            device = 'IOS';
+            return 'IOS';
+        } else if (u.indexOf('Windows Phone') > -1) {
+            //winphone手机
+            device = 'WindowsPhone';
+            return 'WindowsPhone';
+        } else if (u.indexOf('MicroMessenger') > -1) {
+            device = 'weixin';
+            return 'weixin';
+        }
+        //    let type = browser.versions();
+        //    if (type.android) {
+        //      return 'Android'
+        //    } else if (type.ios || type.iPhone || type.iPad) {
+        //      return 'IOS'
+        //    } else if (type.weixin) {
+        //      return 'weixin'
+        //    } else {
+        //      return 'other'
+        //    }
+    }
+};
diff --git a/src/utils/filters.js b/src/utils/filters.js
new file mode 100644
index 0000000..1d7ca24
--- /dev/null
+++ b/src/utils/filters.js
@@ -0,0 +1,31 @@
+/*
+ * @Descripttion: Vue过滤器
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-05 11:32:33
+ * @LastEditTime: 2020-10-10 14:52:54
+ */
+import dataformat from "./dateformat";
+
+/**
+ * @Descripttion: 格式化电话号码
+ * @param {tel} 电话号码 
+ * @return: 13388327924 >>> 133****7924 
+ */
+export function formatPhone(tel) {
+    return tel.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
+}
+
+
+let list = [
+    {name:'timeformat',fn:dataformat.format},
+    // {name:'phoneformat',fn:formatPhone},
+];
+
+export default {
+    install(Vue,opt){
+        list.forEach(item=>{
+            Vue.filter(item.name,item.fn);        
+        })
+    }
+}
\ No newline at end of file
diff --git a/src/utils/formCheckAndComb.js b/src/utils/formCheckAndComb.js
new file mode 100644
index 0000000..4b1a35b
--- /dev/null
+++ b/src/utils/formCheckAndComb.js
@@ -0,0 +1,194 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-09-02 09:12:30
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-09-02 09:18:52
+ * @Description:
+ */
+/**
+ * Created by c.y
+ * 2018/4/12
+ * form--提交数据组合--例如房抵贷
+ */
+import Vue from 'vue';
+import validate from './validator';
+import IDValidator from './IDValidator';
+
+
+// 把后台返回的null,转换为空字符串, infoObj需要检查
+function changeNullToString (infoObj) {
+  for (let i in infoObj) {
+    infoObj[i] === null ? infoObj[i] = '' : infoObj[i] = infoObj[i];
+  }
+  return infoObj;
+}
+
+// 组合后台返回省,市,区---来满足vux的地址选择插件需要的格式
+// province省 city市 country区
+function getAddressFormat (province, city, country) {
+  let addressList = [];
+  if (!validate.checkValEmpty(province)) {
+    addressList.push(province);
+  }
+  if (!validate.checkValEmpty(city)) {
+    addressList.push(city);
+  }
+  if (!validate.checkValEmpty(country)) {
+    addressList.push(country);
+  }
+  return addressList;
+}
+
+// 判断地址类型的值,是否必填,并进行提示
+// addressList, 代表需要校验的地址数组
+function checkAddressRequired (addressList) {
+  return validate.checkValEmpty(addressList[0]);
+}
+
+// 得到selector的列表
+function getOptionsList (optionList) {
+  let tmpList = [];
+  if (optionList instanceof Array) {
+    optionList.forEach(function (item) {
+      tmpList.push({
+        key: item.code,
+        value: item.name
+      });
+    });
+  }
+  return tmpList;
+}
+
+// 检查必填的字段以及错误提示, requiredList是检查规则, checkInfo要检查的对象
+// context为this对象
+function checkRequiredField (requiredList, checkInfo, context) {
+  let allPassLabel = true;
+  for (let i = 0; i < requiredList.length; i++) {
+    // 如果配置了validator,那么就以validator进行验证,忽略其他验证(validator需要是函数)
+    if (requiredList[i].validator && Object.prototype.toString.call(requiredList[i].validator) === '[object Function]') {
+      if (!requiredList[i].validator(requiredList[i], checkInfo, context)) {
+        allPassLabel = false;
+        return false;
+      }
+    // 如果是地址的话
+    } else if (requiredList[i].type === 'address') {
+      // 对于地址检查,是否为空,为空的话,返回true
+      if (checkAddressRequired(context[requiredList[i].checkKey])) {
+        checkValidateTip(requiredList[i], context);
+        allPassLabel = false;
+        return false;
+      }
+      // 如果是非地址的话,那么第一步检查是否为空
+    } else {
+      // 第一步,先检查是否填写
+      if (validate.checkValEmpty(checkInfo[requiredList[i].key])) {
+        checkValidateTip(requiredList[i], context);
+        allPassLabel = false;
+        return false;
+      }
+      // 如果有patter的话,直接使用pattern,即正则判断(pattern需要正则)
+      if (requiredList[i].pattern && Object.prototype.toString.call(requiredList[i].pattern) === '[object RegExp]') {
+          if(!requiredList[i].pattern.test(checkInfo[requiredList[i].key])) {
+            checkRegularExpreTip(requiredList[i], context);
+            allPassLabel = false;
+            return false;
+          }
+      }
+      // 对于特定类型,进行判断是否添加正确的类型
+      // 如果是名字类型
+      if (requiredList[i].type === 'name') {
+        if (!validate.checkName(checkInfo[requiredList[i].key])) {
+          checkRegularExpreTip(requiredList[i], context);
+          allPassLabel = false;
+          return false;
+        }
+        // 如果是手机号
+      } else if (requiredList[i].type === 'tel') {
+        if (!validate.checkPhone(checkInfo[requiredList[i].key])) {
+          checkRegularExpreTip(requiredList[i], context);
+          allPassLabel = false;
+          return false;
+        }
+        // 如果是身份证
+      } else if (requiredList[i].type === 'idCard') {
+        if (!IDValidator.isValid(checkInfo[requiredList[i].key])) {
+          checkRegularExpreTip(requiredList[i], context);
+          allPassLabel = false;
+          return false;
+        }
+        // 如果是座机
+      } else if (requiredList[i].type === 'lineTel') {
+        if (!validate.checkLandline(checkInfo[requiredList[i].key])) {
+          checkRegularExpreTip(requiredList[i], context);
+          allPassLabel = false;
+          return false;
+        }
+        // 如果是房屋楼层
+      } else if (requiredList[i].type === 'floor') {
+        if (!validate.checkFloor(checkInfo[requiredList[i].key])) {
+          checkRegularExpreTip(requiredList[i], context);
+          allPassLabel = false;
+          return false;
+        }
+        // 如果是银行卡
+      }else if (requiredList[i].type === 'bankCardNo') {
+        if (!validate.bankCard(checkInfo[requiredList[i].key])) {
+          checkRegularExpreTip(requiredList[i], context);
+          allPassLabel = false;
+          return false;
+        }
+      }else if (requiredList[i].type === 'isEmail') {
+          if (!validate.checkEmail(checkInfo[requiredList[i].key])) {
+              checkRegularExpreTip(requiredList[i], context);
+              allPassLabel = false;
+              return false;
+          }
+      }
+    }
+  }
+  return allPassLabel;
+}
+
+// 错误提示, requiredItem为检查的对象,context为this对象
+function checkValidateTip (requiredItem, context) {
+  let _this = context;
+  // tipType值为1为输入框,为2的话是下拉选择
+  if (requiredItem.tipType === 1) {
+    // 如果进行正则验证的话,那么提示内容是正确,而一般的提示没有正确的这个提示字
+    // 如果没有type属性的话,那么就是默认的
+    Vue.prototype.$notify('请输入' + requiredItem.message, 'middle');
+    return false;
+  } else if (requiredItem.tipType === 2) {
+    Vue.prototype.$notify('请选择' + requiredItem.message, 'middle');
+    return false;
+  }
+}
+
+// 错题提示,requiredItem为检查的对象,context为this对象
+// 这个是正则匹配的检测或者其他特殊检测的提示
+function checkRegularExpreTip (requiredItem, context) {
+  Vue.prototype.$notify('请输入正确的' + requiredItem.message, 'middle');
+  return false;
+}
+
+// 封装提交数据 submitVal需要提交的val对象
+function packageSubmitInfo (submitVal) {
+  let submitInfo = {};
+  if (submitVal instanceof Object && submitVal !== null) {
+    for (let i in submitVal) {
+        // 对于非必填的话,其值为空的话,那么不传递给后台
+        if (!validate.checkValEmpty(submitVal[i])) {
+          submitInfo[i] = submitVal[i];
+        }
+    }
+  }
+  return submitInfo;
+}
+
+export default {
+  getAddressFormat,
+  getOptionsList,
+  checkRequiredField,
+  packageSubmitInfo,
+  changeNullToString
+};
diff --git a/src/utils/formValidator.js b/src/utils/formValidator.js
new file mode 100644
index 0000000..0663627
--- /dev/null
+++ b/src/utils/formValidator.js
@@ -0,0 +1,101 @@
+/*
+ * @Descripttion: 表单验证工具函数
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-04-01 19:54:53
+ * @LastEditTime: 2020-11-09 14:26:43
+ */
+import IDValidator from './IDValidator';
+
+let fns = {
+    // 参数是否为真
+    isEmpty(value) {
+        return value !== "" && typeof value !== "undefined" && value !== null;
+    },
+    //密码验证
+    isPassword(value) {
+        // 验证密码格式
+        return /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/.test(value);
+    },
+    // 验证码验证
+    isCode(value) {
+        return /^\d{4}$/.test(value);
+    },
+    isEmail(value){
+        return /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/.test(value);
+    },
+    // 验证电话
+    isTel(value) {
+        return /^1([358][0-9]|4[579]|66|7[0135678]|9[89])[0-9]{8}$/.test(value);
+    },
+    //验证身份证
+    isIdCard(value){
+        return /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$|^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/.test(value)
+    },
+    // idCard check
+    checkIDCard(idCard) {
+        // 验证身份证格式
+        return IDValidator.isValid(idCard);
+    },
+    //验证银行卡号
+    isBankCode(iccid){
+        let initCard = iccid,
+            s1 = 0,
+            s2 = 0;
+        iccid = iccid.substring(0, iccid.length - 1);
+        let reverse = '';
+        for (let i = iccid.length; i > 0; i--) {
+            reverse += iccid.charAt(i - 1);
+        }
+        for (let i = 0; i < reverse.length; i++) {
+            let digit = parseInt(reverse.charAt(i), 10);
+            if (i % 2 != 0) {
+                s1 += digit;
+            } else {
+                s2 += 2 * digit;
+                if (digit >= 5) {
+                    s2 -= 9;
+                }
+            }
+        }
+        let sum = 10 - ((s1 + s2) % 10);
+        if (sum === 10) {
+            sum = 0;
+        }
+        return iccid + sum == initCard;
+    }
+};
+
+let Validator = function (form, rules) {
+    return {
+        // rule demo
+        //rules:>>> [{key:"formkey",message:"",type:"isEmpty",rule:/\d/}]
+        check(callback) {
+            if (!Array.isArray(rules) && rules.length === 0) throw "rules must be instance of Array";
+            let len = rules.length;
+            for (let index = 0; index < len; index++) {
+                const ruleItem = rules[index];
+                let fnName = fns[ruleItem.type];
+                if (fnName && !fnName(form[ruleItem.key])) {
+                    callback(ruleItem);
+                    return false;
+                }
+                // 如果有自定义验证规则
+                let rule = ruleItem.rule;
+                if(typeof rule !=='undefined' && !rule.test(form[ruleItem.key])){
+                    callback(ruleItem);
+                    return false;
+                }
+            }
+            return true;
+        }
+    }
+};
+
+
+// export default Validator;
+export default {
+    install(Vue,opt){
+        Vue.prototype.$validator = Validator;
+    }
+}
diff --git a/src/utils/index.js b/src/utils/index.js
new file mode 100644
index 0000000..8ebb489
--- /dev/null
+++ b/src/utils/index.js
@@ -0,0 +1,361 @@
+/*
+ * @Descripttion: 工具函数 以 _ 符号作为函数前缀
+ * @Author: TM丶
+ * @LastEditors: 小明丶
+ * @Date: 2019-03-10 22:05:50
+ * @LastEditTime: 2020-03-27 14:17:45
+ */
+
+/**
+ * @Descripttion: 函数节流
+ * @param {method} 执行的方法
+ * @param {delay} 延迟时间
+ * @param {context} 绑定的this值
+ * @return: Function
+ */
+export function _throller(method, delay, context) {
+    var begin = new Date();
+    return function () {
+        var args = arguments,
+            current = new Date();
+        if (current - begin >= delay) {
+            method.apply(context, args);
+            begin = current;
+        }
+    }
+}
+
+/**
+ * @Descripttion: 函数防抖
+ * @param {method} 执行的方法
+ * @param {delay} 延迟时间
+ * @return: Function
+ */
+export function _debounce(method, delay) {
+    let timer = null;
+    return function () {
+        let context = this,
+            args = arguments;
+
+        clearTimeout(timer);
+        timer = setTimeout(function () {
+            method.apply(context, args);
+        }, delay);
+    }
+}
+
+/**
+ * @Descripttion: 字符串参数解析
+ * @demo '?demo=123&test=test'
+ * @return: {demo:123,test:'test'}
+ */
+export function _getQueryArgs(str) {
+    if (str.indexOf('?') === -1) {
+        throw Error('参数错误')
+    }
+    let args = new URLSearchParams(str);
+    return args;
+}
+
+/**
+ * @Descripttion: 将base64转换为文件
+ * @param {dataurl} base64
+ * @param {filename} 要创建的文件名
+ * @return: file
+ */
+export function _dataURLtoFile(dataurl, filename) {
+    var arr = dataurl.split(','),
+        mime = arr[0].match(/:(.*?);/)[1],
+        bstr = atob(arr[1]),
+        n = bstr.length,
+        u8arr = new Uint8Array(n);
+    while (n--) {
+        u8arr[n] = bstr.charCodeAt(n);
+    }
+    return new File([u8arr], filename, {
+        type: mime
+    });
+}
+
+
+/**
+ * @Descripttion: 文字复制到设备的剪切板
+ * @param {text} 要复制的文字
+ * @return: Boolean
+ */
+export function _copyToClipboard(text) {
+    var textArea = document.createElement('textarea');
+    textArea.style.position = 'fixed';
+    textArea.style.top = 0;
+    textArea.style.left = 0;
+    textArea.style.width = '2em';
+    textArea.style.height = '2em';
+    textArea.style.padding = 0;
+    textArea.style.border = 'none';
+    textArea.style.outline = 'none';
+    textArea.style.boxShadow = 'none';
+    textArea.style.background = 'transparent';
+    textArea.value = text ? text : "";
+    document.body.appendChild(textArea);
+    if (navigator.userAgent.match(/(iPhone|iPod|iPad);?/i)) {//区分iPhone设备
+      window.getSelection().removeAllRanges();//这段代码必须放在前面否则无效
+      // var Url2=document.getElementById("biaoios");//要复制文字的节点
+      var range = document.createRange();
+      // 选中需要复制的节点
+      range.selectNode(textArea);
+      // 执行选中元素
+      window.getSelection().addRange(range);
+      // 执行 copy 操作
+      var successful = document.execCommand('copy');
+      // 移除选中的元素
+      window.getSelection().removeAllRanges();
+    } else {
+      textArea.select();
+      var msg = document.execCommand("Copy");
+    }
+    document.body.removeChild(textArea);
+}
+
+
+/**文件转换base64
+ * @param { 文件对象 } file 
+ * @return { Promise }
+ */
+export function _fileToBase64(file) {
+    if (Object.prototype.toString.call(file) !== "[object File]") {
+        console.warn(`file 必须是 文件! >>>${file}`);
+        return
+    }
+    let reader = new FileReader();
+    reader.readAsDataURL(file);
+    return new Promise((resolve, reject) => {
+        reader.onload = function () {
+            resolve(this.result);
+        }
+    })
+}
+
+
+/**
+ * @Descripttion: 图片压缩
+ * @param {path} 图片路径 || base64 
+ * @param {options} {quality:图片质量0-1,width,height}
+ * @return: base64
+ */
+export function _imgCompress(path, options = {}) {
+    return new Promise((resolve, reject) => {
+        let img = new Image();
+        img.src = path;
+        img.onload = function () {
+            let that = this,
+                w = that.width,
+                h = that.height,
+                scale = w / h, // 默认按比例压缩
+                quality = options.quality || 0.3,
+                canvas = document.createElement('canvas'),
+                ctx = canvas.getContext('2d');
+
+            w = options.width || w;
+            h = options.height || (w / scale);
+            canvas.width = w;
+            canvas.height = h;
+            ctx.drawImage(that, 0, 0, w, h);
+            if (options.quality && options.quality <= 1 && options.quality > 0) {
+                quality = options.quality;
+            }
+            let base64 = canvas.toDataURL('image/jpeg', quality);
+            resolve(base64);
+        }
+    })
+}
+
+// 使input=number的maxlength有效
+export function disabledInputStr() {
+    window.addEventListener('input', (event) => {
+        let el = event.target,
+            val = el.value,
+            tagName = el.tagName.toUpperCase();
+        if (tagName === 'INPUT' && el.getAttribute('type') === 'number') {
+            let maxlength = el.getAttribute('maxlength');
+            if (val.length >= maxlength) {
+                el.value = val.slice(0, maxlength);
+                event.preventDefault();
+            }
+        }
+    })
+}
+
+//移动端判断设备类型:安卓 或 ios
+export function judegeDevice() {
+    let type = {
+        isIos: false,
+        isAndroid: false,
+    }
+    var u = navigator.userAgent;
+    if (u.indexOf('Android') > -1 || u.indexOf('Linux') > -1) { //安卓手机
+        type.isAndroid = true;
+    } else if (u.indexOf('iPhone') > -1) { //苹果手机
+        type.isIos = true;
+    }
+    return type;
+}
+
+//解决安卓中键盘弹起时顶起页面,导致元素不在可视区内的问题
+export function scrollElement() {
+    if (judegeDevice.isAndroid) {
+        window.addEventListener("resize", function () {
+            let el = document.activeElement;
+            if (el.tagName == "INPUT" || el.tagName == "TEXTAREA") {
+                setTimeout(function () {
+                    // el.scrollIntoViewIfNeeded();
+                    el.scrollIntoView({
+                        behavior: 'smooth',
+                    });
+                }, 16.7);
+            }
+        })
+    }
+}
+
+
+
+/**
+ * @description: 禁止右键、选择、复制
+ */
+export function a() {
+    ['contextmenu', 'selectstart', 'copy'].forEach(function (ev) {
+        document.addEventListener(ev, function (event) {
+            return event.returnValue = false
+        })
+    });
+}
+
+// 根据 用户的机构类型 获取参数
+export function getParams(orgType, id) {
+    if(!id) return {};
+    let obj = {}
+    switch (orgType) {
+        case 1:
+        case 2:
+            // 代理、渠道
+            obj.merList = [id]
+            break;
+        case 3:
+            //商户
+            obj.storeList = [id]
+            break;
+    }
+    return obj
+}
+
+// 解析地区
+export function calcArea(arr){
+    let province_list =[],
+        city_list = [],
+        county_list = [];
+
+    function parseArea(arr) {
+        let obj = {}
+        arr.forEach(item => {
+            obj[item.value] = item.name;
+        })
+        return obj;
+    }
+    
+    arr.forEach(item => {
+        item.value = +item.value;
+        let value = item.value;
+        if (!item.parent) {
+            province_list.push(item)
+        } else if (item.parent % 10000 === 0) {
+            city_list.push(item)
+        } else {
+            county_list.push(item)
+        }
+    })
+    return {
+        province_list:parseArea(province_list),
+        city_list:parseArea(city_list),
+        county_list:parseArea(county_list)
+    }
+}
+// 解析地区
+export function calcAreaTwo(arr){
+    let province_list =[],
+        city_list = [],
+        county_list = [];
+
+    function parseArea(arr) {
+        let obj = {}
+        arr.forEach(item => {
+            obj[item.value] = item.name;
+        })
+        return obj;
+    }
+    
+    arr.forEach(item => {
+        item.value = +item.value;
+        let value = item.value;
+        if (item.value%10000 ===0 ) {
+            province_list.push(item)
+        } else if (item.value % 100 === 0) {
+            city_list.push(item)
+        } else {
+            county_list.push(item)
+        }
+    })
+    return {
+        province_list:parseArea(province_list),
+        city_list:parseArea(city_list),
+        county_list:parseArea(county_list)
+    }
+}
+
+export function compress(img){
+    // 用于压缩图片的canvas
+    let canvas = document.createElement('canvas');
+    let ctx = canvas.getContext('2d');
+
+    //    瓦片canvas
+    var tCanvas = document.createElement('canvas');
+    var tctx = tCanvas.getContext('2d');
+
+    let width = img.width;
+    let height = img.height;
+
+    // 如果图片大于四百万像素,计算压缩比并将大小压至400万以下
+    var ratio;
+    if ((ratio = width * height / 4000000) > 1) {
+        ratio = Math.sqrt(ratio);
+        width /= ratio;
+        height /= ratio;
+    } else {
+        ratio = 1;
+    }
+    canvas.width = width * 2;
+    canvas.height = height * 2;
+    // 铺底色
+    ctx.fillStyle = '#fff';
+    ctx.fillRect(0, 0, canvas.width, canvas.height);
+    // 如果图片像素大于100万则使用瓦片绘制
+    var count;
+    if ((count = width * height / 1000000) > 1) {
+        count = ~~(Math.sqrt(count) + 1); // 计算要分成多少块瓦片
+        // 计算每块瓦片的宽和高
+        var nw = ~~(width / count);
+        var nh = ~~(height / count);
+        tCanvas.width = nw;
+        tCanvas.height = nh;
+        for (var i = 0; i < count; i++) {
+            for (var j = 0; j < count; j++) {
+                tctx.drawImage(img, i * nw * ratio, j * nh * ratio, nw * ratio * 2, nh * ratio * 2, 0, 0, nw, nh);
+                ctx.drawImage(tCanvas, i * nw, j * nh, nw * 2, nh * 2);
+            }
+        }
+    } else {
+        ctx.drawImage(img, 0, 0, width * 2, height * 2);
+    }
+    // 进行最小压缩
+    let ndata = canvas.toDataURL('image/jpeg', 0.8);
+    return ndata;
+}
\ No newline at end of file
diff --git a/src/utils/jsBridge.js b/src/utils/jsBridge.js
new file mode 100644
index 0000000..ccda68d
--- /dev/null
+++ b/src/utils/jsBridge.js
@@ -0,0 +1,265 @@
+/**
+ * Created by c.k on 2017/11/20.
+ *  global WebViewJavascriptBridge
+ * */
+import deviceInfo from './deviceInfo';
+// import store from '../store'
+// import statisticHelper from './statisticalHelper'
+// import channelHelper from './channel'
+const setupWebViewJavascriptBridge = callback => {
+    // 注册事件监听
+    if (window.WebViewJavascriptBridge) {
+        return callback(WebViewJavascriptBridge);
+    } else {
+        document.addEventListener(
+            'WebViewJavascriptBridgeReady',
+            () => {
+                callback(WebViewJavascriptBridge);
+            },
+            false
+        );
+    }
+
+    // if (window.WVJBCallbacks) {
+    //     return window.WVJBCallbacks.push(callback);
+    // }
+    // window.WVJBCallbacks = [callback];
+    // let WVJBIframe = document.createElement('iframe');
+    // WVJBIframe.style.display = 'none';
+    // WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';
+    // document.documentElement.appendChild(WVJBIframe);
+    // setTimeout(function() {
+    //     document.documentElement.removeChild(WVJBIframe);
+    // }, 0);
+};
+
+export default {
+    showLog(log) {
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler('showLog', log, function responseCallback(
+                responseData
+            ) {});
+        });
+    },
+    closeApp() {
+        if (window.android && window.android.closeActivity) {
+            window.android.closeActivity();
+        }
+    },
+    // 获取原生设备信息
+    fetchDeviceInfo() {
+        if (deviceInfo.getDeviceType() === 'Android') {
+            if (window.android && window.android.fetchDeviceInfo) {
+                let responseData = window.android.fetchDeviceInfo();
+                deviceInfo.saveDeviceInfo(responseData);
+            }
+        } else {
+            setupWebViewJavascriptBridge(function(bridge) {
+                bridge.callHandler('kJSFetchDeviceInfo', function(
+                    responseData
+                ) {
+                    deviceInfo.saveDeviceInfo(responseData);
+                });
+            });
+        }
+    },
+    // 回传页面链接至原生
+    sendApplyPageUrlToNative() {
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler(
+                'kJSFetchApplyURL',
+                window.location.href,
+                function responseCallback(responseData) {}
+            );
+        });
+    },
+    // 回传页面信息至原生
+    sendApplyPageInfoToNative(info) {
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler(
+                'kJSFetchProductInfo',
+                info,
+                function responseCallback(responseData) {}
+            );
+        });
+    },
+    // 每次启动app时清除之前的登录状态
+    logoutWhenAppLaunch() {
+        // for android
+        // window.forceLogoutWhenAppLaunch = function () {
+        //   store.dispatch('logout')
+        //   // 首次进入app,默认统计第一个按钮点击事件
+        //   statisticHelper.tabbarEventStatistical('loansupermarket');
+        // }
+        // for iOS
+        // setupWebViewJavascriptBridge(function (bridge) {
+        //   bridge.registerHandler('kJSAppLaunch', function (data) {
+        //     store.dispatch('logout')
+        //     // 首次进入app,默认统计第一个按钮点击事件
+        //     statisticHelper.tabbarEventStatistical('loansupermarket');
+        //   })
+        // })
+        // if (!channelHelper.isApp()) {
+        //   statisticHelper.tabbarEventStatistical('loansupermarket');
+        // }
+    },
+    // 隐藏原生启动页
+    hideNativeLaunchImage() {
+        // for android
+        if (window.appNative && window.appNative.hideLaunchView) {
+            window.appNative.hideLaunchView();
+        }
+        // for iOS
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler('kJSHideLaunchImage', function responseCallback(
+                responseData
+            ) {});
+        });
+    },
+    // 隐藏显示原生header
+    showAndHideNativeHeader(show) {
+        // for android
+        if (window.native && window.native.showHeader) {
+            window.native.showHeader(show);
+        }
+        // for iOS
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler(
+                'kJSShowAndHideNativeHeader',
+                show,
+                function responseCallback(responseData) {}
+            );
+        });
+    },
+    // 打开微信
+    openWX() {
+        // for android
+        if (window.android && window.android.openWX) {
+            window.android.openWX();
+        }
+        // for iOS
+        // setupWebViewJavascriptBridge(function (bridge) {
+        //   bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) {
+        //   })
+        // })
+    },
+    // 打开相册
+    openQrCode() {
+        // for android
+        if (window.android && window.android.fetchQrCode) {
+            window.android.fetchQrCode();
+        } else {
+        }
+        // for iOS
+    },
+
+    // 打开QQ
+    openQQ() {
+        // for android
+        if (window.android && window.android.openQQApplication) {
+            window.android.openQQApplication();
+        }
+        // for iOS
+        // setupWebViewJavascriptBridge(function (bridge) {
+        //     bridge.callHandler('kJSOpenWeixin', function responseCallback(responseData) {
+        //     })
+        // })
+    },
+    //打开通讯录
+    openConect(callback) {
+        console.log('js打开通讯录');
+        //for iOS
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler('kJSOpenConect', function responseCallback(
+                responseData
+            ) {});
+
+            bridge.registerHandler('sendContectInfo', function(
+                data,
+                responseData
+            ) {
+                if (callback) {
+                    callback(data);
+                }
+            });
+        });
+    },
+    //获取高德地图定位位置信息
+    getAMMapLoactionMsg(callback) {
+        console.log('js获取位置信息');
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler(
+                'kJSGetAMMapLoactionInfo',
+                function responseCallback(responseData) {
+                    // alert(responseData.detail);
+
+                    if (callback) {
+                        callback(responseData);
+                    }
+                }
+            );
+
+            // bridge.registerHandler('sendAMMapLoactionInfo',function (data,responseData) {
+
+            //     // alert(data.address);
+
+            //     if(callback){
+            //           callback(data);
+            //     }
+
+            // })
+        });
+    },
+
+    //调用ios相机
+    openCamera(callback) {
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler('kJSGetCameraInfo', function responseCallback(
+                responseData
+            ) {
+                if (callback) {
+                    callback(responseData);
+                }
+            });
+        });
+    },
+
+    openAlbum(callback) {
+        setupWebViewJavascriptBridge(function(bridge) {
+            bridge.callHandler('kJSGetAlbumInfo', function responseCallback(
+                responseData
+            ) {
+                if (callback) {
+                    callback(responseData);
+                }
+            });
+        });
+    }
+
+    // 检查定位权限是否打开
+    // checkUserAuthorization(callback) {
+    //   // for android
+    //   if (deviceInfo.isAndroidDevice()) {
+    //     if (window.native && window.native.checkUserAuthorization) {
+    //       let isOpen = window.native.checkUserAuthorization();
+    //       if (isOpen && isOpen === 'true') {
+    //         callback(true);
+    //       } else {
+    //         callback(false);
+    //       }
+    //     } else {
+    //       callback(true);
+    //     }
+    //   }
+    //   // for iOS
+    //   setupWebViewJavascriptBridge(function (bridge) {
+    //     bridge.callHandler('kJSCheckUserAuthorization', function responseCallback(responseData) {
+    //       if (responseData && responseData === 'true') {
+    //         callback(true);
+    //       } else {
+    //         callback(false);
+    //       }
+    //     })
+    //   })
+    // }
+};
diff --git a/src/utils/pageBackByAndroid.js b/src/utils/pageBackByAndroid.js
new file mode 100644
index 0000000..e8768bb
--- /dev/null
+++ b/src/utils/pageBackByAndroid.js
@@ -0,0 +1,36 @@
+/**
+ *  android 返回按钮统一调度的方法,
+ *  项目中有两个地方需要修改一个是这个地方,还有有个地方是 index.html 文件
+ */
+import jsBri from './jsBridge';
+import store from '@/store/index';
+
+
+export default {
+    androidBackBtn() {
+        window.backPageByAndroid = function(obj) {
+            let hash = window.sessionStorage.getItem("gotoPagetemp");
+            let footerList =  store.state.footerNav || [];
+            if(footerList && footerList.length){
+                let result = footerList.find(val => {
+                    return val.path === hash;
+                });
+                if (result) {
+                    jsBri.closeApp();
+                } else {
+                    window.history.back();
+                }
+            }else{
+
+                if(hash==='/login'||hash==='/'){
+                    jsBri.closeApp();
+                }else {
+                    window.history.go(-1);
+                }
+            }
+        };
+        window.showOrgIdAndOrgType = function(obj) {
+            window.sessionStorage.setItem('scene_regInfos', obj);
+        };
+    }
+};
diff --git a/src/utils/validator.js b/src/utils/validator.js
new file mode 100644
index 0000000..c55c2f0
--- /dev/null
+++ b/src/utils/validator.js
@@ -0,0 +1,213 @@
+/**
+ * TANGIMING 2018-3-9
+ * 这是一个用于存放正则表达式和一些验证方法的插件
+ * 除了存放了目前常用的正则之外,还根据这些正则封装了对应的验证方法
+ */
+import IDValidator from './IDValidator';
+
+export default {
+    // 金额格式化
+    formatMoney(str = 0) {
+        str = str + '';
+        let newStr = '';
+        let count = 0;
+        if (str.indexOf('.') === -1) {
+            for (let i = str.length - 1; i >= 0; i--) {
+                if (count % 3 === 0 && count !== 0) {
+                    newStr = str.charAt(i) + ',' + newStr;
+                } else {
+                    newStr = str.charAt(i) + newStr;
+                }
+                count++;
+            }
+            str = newStr + '.00'; // 自动补小数点后两位
+            return str;
+        } else {
+            for (let i = str.indexOf('.') - 1; i >= 0; i--) {
+                if (count % 3 === 0 && count !== 0) {
+                    newStr = str.charAt(i) + ',' + newStr;
+                } else {
+                    newStr = str.charAt(i) + newStr; // 逐个字符相接起来
+                }
+                count++;
+            }
+            str = newStr + (str + '00').substr((str + '00').indexOf('.'), 3);
+            return str;
+        }
+    },
+    // 身份证 中间用* 显示
+    cardIDHide(cardid) {
+        if (cardid) {
+            return cardid.replace(/^(.{6})(?:\d+)(.{4})$/, '$1****$2');
+        } else {
+            return '';
+        }
+    },
+    //手机号,中间四位*显示
+    formatPhone(phone) {
+        return phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2');
+    },
+    // 电话号码格式
+    checkPhone(phone) {
+        let reg = /^1[0-9]{10}$/;
+        return reg.test(phone);
+    },
+    checkEmail(email) {
+        // 验证邮箱格式
+        let reg = /[\w!#$%&'*+/=?^_`{|}~-]+(?:\.[\w!#$%&'*+/=?^_`{|}~-]+)*@(?:[\w](?:[\w-]*[\w])?\.)+[\w](?:[\w-]*[\w])?/;
+        // let reg = /^[a-z\d]+(\.[a-z\d]+)*@([\da-z](-[\da-z])?)+(\.{1,2}[a-z]+)+$/;
+        return reg.test(email);
+    },
+    checkVerifyCode(code) {
+        // 验证验证码格式
+        let reg = /^\d{6}$/;
+        return reg.test(code);
+    },
+    checkDynamicCode(code) {
+        // 验证邀请码格式
+        let reg = /^[A-Za-z0-9]{4}$/;
+        return reg.test(code);
+    },
+    // password check
+    checkPassword(password) {
+        // 验证密码格式
+        let reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;
+        return reg.test(password);
+    },
+    // name check
+    checkName(name) {
+        // 验证用户名格式
+        let reg = /^[\u4E00-\u9FA5]{2,10}$/;
+        return reg.test(name);
+    },
+    //  账户名称的正则表达式
+    checkUsername(name) {
+        let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,16}$/;
+        return reg.test(name);
+    },
+    //  统一验证
+    checkCommonField(name) {
+        let reg = /^[\u4e00-\u9fa50-9a-zA-Z]{4,30}$/;
+        return reg.test(name);
+    },
+    // idCard check
+    checkIDCard(idCard) {
+        // 验证身份证格式
+        return IDValidator.isValid(idCard);
+    },
+    isIdcard(val) {
+        let result = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(val);
+        return result;
+    },
+    checkValEmpty(str) {
+        // 验证是否为空
+        if (
+            str === undefined ||
+            str === null ||
+            str.length <= 0 ||
+            str === 'undefined'
+        ) {
+            return true;
+        } else {
+            return false;
+        }
+    },
+    // 验证佣金输入金额
+    checkCommission(commission) {
+        // 小于100且后面可以带4个小数点
+        let reg = /^100$|^(\d|[1-9]\d)(\.\d{1,4})*$/;
+        //一亿以内,保留四位小数
+        //  /^([1-9]\d{0,7}|0)(\.\d{1,4})?$/
+        // 如果通过的话,那么判断小数点的前几位数字
+        return reg.test(commission);
+    },
+    // 验证渠道编号是否符合规则--4-8位以内数字+字母,区分大小写
+    checkChannelNo(channelNo) {
+        let reg = /^[\w\d]{4,8}$/;
+        return reg.test(channelNo);
+    },
+    //验证是否包含空格
+    checkSpace(val) {
+        let reg = /^\s+$/;
+        if (reg.test(val)) {
+            return true;
+        } else {
+            return false;
+        }
+    },
+    //将发送请求中的参数格式化,如果为空则转为null
+    formatReq(obj) {
+        for (let i in obj) {
+            let item = obj[i];
+            if (item === null) continue;
+            if (
+                item === undefined ||
+                item === '' ||
+                item === 'undefined' ||
+                item.length <= 0 ||
+                JSON.stringify(item) == '{}'
+            ) {
+                obj[i] = null;
+            }
+        }
+        return obj;
+    },
+    // 只能输入数字与小数点正则判断
+    checkIntegerAndDot(checkVal) {
+        let dotReg = /\./g;
+        let IntegerReg = /^[1-9]{1}\d{0,5}$/;
+        // 如果输入了多个点,直接不符合要求
+        if (checkVal.match(dotReg) && checkVal.match(dotReg).length > 1) {
+            return false;
+            // 输入了一个点
+        } else if (
+            checkVal.match(dotReg) &&
+            checkVal.match(dotReg).length === 1
+        ) {
+            // 开头与结尾都不能出现点,点的前面与后面必须是数字
+            let strLen = checkVal.length;
+            if (
+                checkVal.indexOf('.') === 0 ||
+                checkVal.indexOf('.') === strLen - 1
+            ) {
+                return false;
+                // 超过个数的限制的话
+            } else {
+                return strLen <= 6;
+            }
+            // 没有小数点的话,那么就是全部数字进行匹配
+        } else if (!checkVal.match(dotReg)) {
+            return IntegerReg.test(checkVal);
+        }
+    },
+    //银行卡验证
+    bankCard(iccid) {
+        let initCard = iccid;
+        var s1 = 0,
+            s2 = 0;
+        iccid = iccid.substring(0, iccid.length - 1);
+        var reverse = '';
+        for (var i = iccid.length; i > 0; i--) {
+            reverse += iccid.charAt(i - 1);
+        }
+        for (i = 0; i < reverse.length; i++) {
+            var digit = parseInt(reverse.charAt(i), 10);
+            if (i % 2 != 0) {
+                // this is for odd digits, they are 1-indexed in the
+                // algorithm
+                s1 += digit;
+            } else {
+                // add 2 * digit for 0-4, add 2 * digit - 9 for 5-9
+                s2 += 2 * digit;
+                if (digit >= 5) {
+                    s2 -= 9;
+                }
+            }
+        }
+        var sum = 10 - ((s1 + s2) % 10);
+        if (sum === 10) {
+            sum = 0;
+        }
+        return iccid + sum == initCard;
+    }
+};
diff --git a/src/views/main/addBankcard.vue b/src/views/main/addBankcard.vue
new file mode 100644
index 0000000..5642d71
--- /dev/null
+++ b/src/views/main/addBankcard.vue
@@ -0,0 +1,376 @@
+
+<template>
+  <div class='text-main'>
+    <van-nav-bar  :title="title"  left-arrow  @click-left="onClickLeft" />
+    <van-form validate-first ref="credRef">
+      <div  class="bes-title"><div> 分销个人</div></div>
+      <!-- <van-field v-model.trim="dataForm.bankCardNo" label="银行卡号" placeholder="请输入银行卡号" :rules="bankId" name="bankId" clearable>
+        <template #button>
+          <van-icon name="scan" size="25" @click="imgClick()" />
+        </template>
+      </van-field> -->
+      <!-- <van-field readonly clickable name="noName" :value="bankName" label="银行名称" placeholder="请选择银行名称" @click="showPicker = true"  :rules="noName"  right-icon="arrow"/> -->
+      <div>
+      <van-field v-model.trim="dataForm.bankCardMblNo"   label="姓名:"    readonly/>
+      <van-field v-model.trim="dataForm.bankCardMblNo"  label="身份证号:"  readonly/>
+      </div>
+
+      <!-- <van-field v-model.trim="dataForm.verCode" center clearable label="短信验证码" :rules="codeRules" placeholder="请输入短信验证码" >
+        <template #button>
+          <van-button size="small" color="#E43A28" @click.stop="getCode"  native-type="button" :disabled="isdisabled">{{codeText}}</van-button>
+        </template>
+      </van-field> -->
+      <div class="index-title">
+        <van-checkbox v-model="checked" style="height:30px; margin-right:5px" checked-color="#6cc3bb"></van-checkbox>
+        <div  v-if="orderType==1"> 阅读并同意<span  style="border-bottom:1px solid #00F; color:#00F"  @click="show=true">《信息授权函》</span>的签订</div>
+        <div  v-if="orderType==2"> 阅读并同意<span  style="border-bottom:1px solid #00F; color:#00F"  @click="showx=true">《保理付款服务合同》</span>的签订</div>
+      </div>
+      <div style="margin: 16px;margin-top:30px">
+        <van-button round block  color="#6cc3bb" @click="onFailed" native-type="submit">确认</van-button>
+      </div>
+    </van-form>
+    <van-popup v-model="show">
+      <div class="agreenBox">
+        <div class="agreen-html" v-html="agreementext"></div>
+        <div class="close-agreen" @click="show = false">
+          <van-icon name="close" color="#c8c9cc" />
+        </div>
+      </div>
+    </van-popup>
+    <van-popup v-model="showx">
+      <div class="agreenBox">
+        <div class="agreen-html" v-html="agreementextw"></div>
+        <div class="close-agreen" @click="showx = false">
+          <van-icon name="close" color="#c8c9cc" />
+        </div>
+      </div>
+    </van-popup>
+   <van-popup v-model="showPicker" position="bottom">
+    <van-picker show-toolbar :columns="dataObj.bankList" @confirm="onConfirm" @cancel="showPicker = false" value-key="name" ref="pickerRef"/>
+  </van-popup>
+    <input style="float: left;  display: none;" type="file" id='uploadFile' accept="image/*" v-on:change="readLocalFile()" v-if="ishowFile">
+  </div>
+  </div>
+</template>
+
+<script>
+//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+//例如:import 《组件名称》 from '《组件路径》';
+
+import { repstr } from '../../../static/agreement5'
+import { repstrw } from '../../../static/agreement2'
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+      dataForm: {
+        bankCode:'',
+        bankCardNo:''
+      },
+      ishowFile:true,
+      dataObj :{},
+      showPicker: false,
+      agreementext: '',
+      agreementextw: '', //代扣委託書
+      checked: false,
+      codeValue: '',
+      isdisabled: false,
+      show: false,
+      showx: false,
+      bankName:'',
+      orderId:this.$route.query.orderId,   //订单编号 
+      orderType:this.$route.query.orderType,  //订单类型
+      title:this.$route.query.orderType==1?'授信信息确认':'签约信息确认',
+      codeText: '获取验证码',
+      noName: [
+        {
+          required: true,
+          message: '银行名称不能为空',
+          trigger: 'onChange',
+        },
+      ],
+      bankId: [
+        {
+          required: true,
+          message: '银行卡号不能为空',
+          trigger: 'onBlur',
+        },
+        {
+          validator: (value) => {
+            return /^[1-9]\d{9,29}$/.test(
+              value
+            )
+          },
+          message: '银行卡号错误,请检查!',
+          trigger: 'onBlur',
+        },
+      ],
+      tel: [
+        {
+          required: true,
+          message: '预留手机号不能为空',
+          trigger: 'onBlur',
+        },
+        // {
+        //   validator: (value) => {
+        //     return /^(13[0-9]|14[5-9]|15[012356789]|166|17[0-8]|18[0-9]|19[8-9])[0-9]{8}$/.test(
+        //       value
+        //     )
+        //   },
+        //   message: '手机号格式错误!',
+        //   trigger: 'onBlur',
+        // },
+      ],
+       codeRules: [
+        {
+          required: true,
+          message: '验证码不能为空',
+          trigger: 'onBlur',
+        },
+        {
+          validator: (value) => {
+            return /^\d{6}$/.test(
+              value
+            )
+          },
+          message: '验证码必须为6位数字',
+          trigger: 'onBlur',
+        },
+      ]
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {
+    dataForm: {
+    handler(newValue, oldValue) {
+//      if(newValue.bankCardNo==''){
+             this.ishowFile = false // 销毁
+// }
+    },
+    deep: true
+  }
+  },
+  //方法集合
+  methods: {
+    bankCardNoInit() {
+         console.log(this.orderId)
+         console.log(this.orderType)
+      // this.$api.bankCardInit({ orderId: this.orderId}).then(res => {
+      //   if (res.body.orderStatus==0){  // 待绑卡
+      //    this.dataForm.bankCardMblNo =res.body.mblNo
+      //    this.dataObj =res.body
+      //    this.agreementextw = repstrw(this.dataObj.userName,this.dataObj.idNo);
+      //    this.agreementext = repstr(this.dataObj.userName,this.dataObj.idNo);
+      //   }else if(res.body.orderStatus==1){ //待活体签约
+      //                 this.$api.faceIdUrl({orderId: this.orderId}).then(res => {
+      //               window.location.href =res.body.url      
+      //       })      
+      //   }else if(res.body.orderStatus==2){ //待审批状态
+      //          this.$router.push({path:'/main/queryres',query:{orderId: this.orderId}})
+      //   }else if(res.body.orderStatus==3){ //已拒绝
+      //       this.$router.push({path:'/main/queryres',query:{orderNo: this.$route.query.orderId,orderStatus:3}})
+      //   }else if(res.body.orderStatus==4){ //待签约
+      //       this.$router.push({path:'/main/findPre',query:{orderId: this.$route.query.orderId}})
+      //   }
+      //   else if(res.body.orderStatus==5){//待支付首期款
+
+      //   }
+      // })
+    },
+    onClickLeft(){
+     
+    },
+   onConfirm(value) {
+      this.bankName = value.name;
+      this.dataForm.bankCode=this.$refs.pickerRef.getValues()[0].code 
+      this.showPicker = false;
+    },
+    onFailed() {
+      let mes  = `请阅读并同意${this.orderType==1?'信息授权函':'保理付款服务合同'}`
+       if (!this.checked) return this.$notify(mes)
+      // this.$refs.credRef.validate().then(() => {
+      //   // 验证通过
+      //   if (this.dataForm.verCode ==undefined || this.dataForm.verCode =='') return this.$notify('请输入验证码')
+      //   if (!this.checked) return this.$notify('请阅读数据授权协议')
+      //   this.$api.bankCardAgree({orderId:this.orderId,verCode:this.dataForm.verCode}).then(res => {  
+      //         this.$router.push({path:'/main/queryres',query:{orderNo:this.orderId}}) 
+      //   })
+      // })
+    },
+      getCode(e) {
+ 
+      this.$refs.credRef.validate(['bankId','noName']).then(()=>{         
+          this.getVerificationCode()                            
+      })
+ 
+    },
+    setTime: function () {
+      let time = 60
+      let i = 0
+      let that = this
+      //1.在60秒之内,button上倒计时60秒,并显示
+      //2.向controller请求验证码,并发送到指定的手机号上面
+      let set = setInterval(function () {
+        that.codeText = --time + '秒后重发'
+        i++
+        //此变量用于标识只调用一次获取验证码的函数
+        if (i == 1) {
+          console.log('get code start1 ... ')
+          //使获取验证码按钮不可点击
+          that.isdisabled = true
+          // that.getVerificationCode()
+        }
+      }, 1000)
+
+      //60秒之后需要做的事情
+      setTimeout(function () {
+        //恢复获取验证码按钮可点击
+        that.isdisabled = false
+        that.codeText = '获取验证码'
+        clearInterval(set) //清除计时器
+      }, time * 1000) //60000
+    },
+    getVerificationCode: function () {
+      // 向服务器获取验证码        
+       
+         this.$api.bankCardAuthMsg({...this.dataForm, orderId: this.orderId}).then(res => {
+       this.agreementextw = repstrw(this.dataObj.userName,this.dataObj.idNo,this.dataForm.bankCardMblNo,this.bankName,this.dataForm.bankCardNo);
+        this.$notify_success('验证码发送成功!')
+        this.setTime()
+      })
+    },
+    //图片click
+    imgClick: function () {
+        this.ishowFile = true // 重建
+      this.$nextTick(()=>{
+               document.getElementById("uploadFile").click();
+      })
+    // 
+    },
+    //点击选中图片
+    readLocalFile: function () {
+      console.log(document.getElementById("uploadFile").files)
+              this.ishowFile = false // 销毁
+      var localFile = document.getElementById("uploadFile").files[0];
+      var reader = new FileReader();
+      var content;
+      var self = this;
+      reader.onload = function (event) {
+        content = event.target.result;
+       self.compress(content, 800, 0.5).then(val => {
+       val =  val.substring(val.indexOf(',')+1)
+           self.$api.bankCardOcr({base64Img:val}).then(res=>{
+           self.dataForm.bankCardNo =res.body.bankCardNo
+               
+       })
+      });
+        // current.imgs.push(content);  //获取图片base64代码
+      }
+      reader.onerror = function (event) {
+        alert('error')
+      }
+      content = reader.readAsDataURL(localFile, "UTF-8");
+           this.ishowFile = true // 重建
+    },
+  // 压缩图片
+    compress(base64String, w, quality) {
+      var newImage = new Image();
+      var imgWidth, imgHeight;
+
+      var promise = new Promise(resolve => (newImage.onload = resolve));
+      newImage.src = base64String;
+      return promise.then(() => {
+        imgWidth = newImage.width;
+        imgHeight = newImage.height;
+        var canvas = document.createElement("canvas");
+        var ctx = canvas.getContext("2d");
+        if (Math.max(imgWidth, imgHeight) > w) {
+          if (imgWidth > imgHeight) {
+            canvas.width = w;
+            canvas.height = (w * imgHeight) / imgWidth;
+          } else {
+            canvas.height = w;
+            canvas.width = (w * imgWidth) / imgHeight;
+          }
+        } else {
+          canvas.width = imgWidth;
+          canvas.height = imgHeight;
+        }
+        ctx.clearRect(0, 0, canvas.width, canvas.height);
+        ctx.drawImage(newImage, 0, 0, canvas.width, canvas.height);
+        // var base64 = canvas.toDataURL(getMimeType(base64String), quality);
+        var base64 = canvas.toDataURL("image/jpeg", quality);
+        return base64;
+      });
+    }
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+    this.bankCardNoInit()
+  },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+
+  }
+}
+</script>
+<style  lang="less" scoped>
+.text-main {
+  background-color: @c-f5;
+  min-height: 100vh;
+  //padding-bottom: 44px;
+  .van-form {
+    margin-top: 5px;
+  }
+  .index-title {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    margin-top: 10px;
+  }
+  /deep/ .van-field__right-icon .van-icon {
+    font-size: 0.5rem;
+  }
+  /deep/.van-popup__close-icon {
+    color: #c8c9cc;
+  }
+  .van-cell__title {
+    color: #999999;
+    font-size: 12px;
+  }
+  .bes-title{
+    background-color: #fff;
+    font-size: 20px;
+    font-weight: bold;
+    height: 60px;
+    div{
+      margin-left: 16px;
+      line-height: 60px;
+    }
+  }
+}
+.agreenBox {
+  width: 80vw;
+  height: 70vh;
+  padding: 60px 20px 30px 20px;
+  position: relative;
+}
+.agreen-html {
+  width: 100%;
+  height: 100%;
+  overflow: scroll;
+  box-sizing: border-box;
+}
+.close-agreen {
+  .lh(30px);
+  .flex(center, center);
+
+  .van-icon {
+    font-size: @font-16;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/main/findPreAudit.vue b/src/views/main/findPreAudit.vue
new file mode 100644
index 0000000..6b2bc66
--- /dev/null
+++ b/src/views/main/findPreAudit.vue
@@ -0,0 +1,56 @@
+
+<template>
+  <div class='text-main'>
+    <van-nav-bar title="审核结果"  />
+    <div style="  text-align: center;">
+    <img width="70%" height="200" src="../../assets/img/successw.png"  />
+    </div>
+    <div class="content">
+      <p class="content-text"> 恭喜你通过审核!</p>
+    <van-button square color="#E43A28" style="width:70%;margin-top:20px" @click="$router.push({path:'/main/signcont',query:{orderId:$route.query.orderId}})" >去签约</van-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {
+
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+  },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+
+  },
+}
+</script>
+<style   lang="less"  scoped>
+img {
+   margin: 10px auto;
+}
+.content {
+  text-align: center;
+  .content-text {
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+  }
+  .content-main {
+    font-weight: 500;
+    color: #999999;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/main/queryres.vue b/src/views/main/queryres.vue
new file mode 100644
index 0000000..c33d55c
--- /dev/null
+++ b/src/views/main/queryres.vue
@@ -0,0 +1,145 @@
+
+<template>
+  <div class='text-main'>
+    <van-nav-bar title="审核结果" />
+    <div style="  text-align: center;">
+      <img width="70%" height="180" src="../../assets/img/success.png"   v-if="ResultIs"/>
+      <img width="70%" height="180" src="../../assets/img/img_fail.png"   v-else >
+    </div>
+    <div class="content">
+      <p class="content-text"> {{datastr}}</p>
+      <p class="content-text" v-if="isActive">{{examineStr}}</p>
+      <div class="btn-content">
+      <van-button color="#E43A28" @click="returnApp"  round  plain hairline v-if="!ResultIs">返回</van-button>
+      <van-button  color="#E43A28" @click="checkBtn" round v-if="!ResultIs && examineIs">重新校验</van-button>
+      </div>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+      datastr: '活体校验中....',
+      examineStr:'正在审核订单,请稍后...',
+      isActive: false,
+      orderNo:0,
+      ResultIs:true,
+      examineIs:true
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {
+    bankCardNoInit() {
+      var slfe = this
+      var t2 = window.setInterval(function () {
+        slfe.$api.bankCardInit({ orderId:   slfe.orderNo }).then(res => {
+          if (res.body.orderStatus == 0) {  // 待绑卡
+                    window.clearInterval(t2)  // 去除定时器
+            slfe.$router.push({ path: '/', query: { orderId:  slfe.orderNo } })
+          } else if (res.body.orderStatus == 1) { //待活体签约
+                    window.clearInterval(t2)  // 去除定时器
+            slfe.$api.faceIdUrl({ orderId:  slfe.orderNo }).then(res => {
+              window.location.href = res.body.url
+            })
+          } else if (res.body.orderStatus == 2) { //待审批状态
+            // slfe.$router.push({ path: '/main/queryres', query: { orderId:  slfe.orderNo } })
+          } else if (res.body.orderStatus == 3) { //已拒绝   
+                        // this.examineStr="订单审核失败!"
+                        // this.ResultIs =false
+                        // this.examineIs=false
+                        window.clearInterval(t2)  // 去除定时器
+                      window.location.href ="https://www.shouxinshibai.com/" 
+          } else if (res.body.orderStatus == 4) { //待签约
+                    window.clearInterval(t2)  // 去除定时器
+            slfe.$router.push({ path: '/main/findPre', query: { orderId:  slfe.orderNo } })
+          }
+          else if (res.body.orderStatus == 5) {//待支付首期款
+                  window.clearInterval(t2)  // 去除定时器
+          }
+        })
+      }, 5000)
+    },
+    getQueryVariable(variable) {  //获取url参数
+      var query = window.location.search.substring(1);
+      var vars = query.split("&");
+      for (var i = 0; i < vars.length; i++) {
+        var pair = vars[i].split("=");
+        if (pair[0] == variable) { return pair[1]; }
+      }
+      return (false);
+    },
+    checkBtn(){  //重新校验
+           this.$api.faceIdUrl({orderId: this.orderNo}).then(res => {
+                       window.location.href =res.body.url      
+            })      
+    },
+    returnApp(){
+           window.location.href ="https://www.shouxinshibai.com/"    
+    }
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+    if(this.getQueryVariable('orderNo')){
+          this.orderNo=this.getQueryVariable('orderNo')
+    }else{
+            this.orderNo=this.$route.query.orderNo 
+    }
+
+    let  orderStatus =this.$route.query.orderStatus   
+    if(orderStatus && orderStatus==3){
+            this.datastr='正在审核订单,请稍后...'
+          //  this.bankCardNoInit()
+             window.location.href ="https://www.shouxinshibai.com/"    
+    }else{
+    //         this.$api.faceIdResult({orderId:  this.orderNo}).then(res=>{
+    //            this.datastr="活体校验成功"
+    //            this.isActive =true
+    //            this.ResultIs =true
+    //           this.bankCardNoInit()
+    // }).catch(err=>{
+    //   this.ResultIs =false
+    //   this.datastr =err.errMsg
+    // })
+    this.datastr='正在审核订单,请稍后...'
+    this.bankCardNoInit()
+    }
+  },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+
+  },
+}
+</script>
+<style   lang="less"  scoped>
+img {
+  margin: 10px auto;
+}
+.content {
+  text-align: center;
+  .content-text {
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+  }
+  .content-main {
+    font-weight: 500;
+    color: #999999;
+  }
+  .btn-content{
+    display: flex;
+    margin-top: 20px;
+   justify-content:space-around;
+  }
+  .van-button{
+    width: 150px;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/src/views/main/signcont.vue b/src/views/main/signcont.vue
new file mode 100644
index 0000000..1fe976e
--- /dev/null
+++ b/src/views/main/signcont.vue
@@ -0,0 +1,205 @@
+
+<template>
+  <div class='text-main'>
+    <van-nav-bar title="签约信息" left-arrow />
+    <van-form validate-first ref="credRef">
+      <van-field v-model.trim="dataObj.name" label="姓名:" readonly />
+      <van-field v-model.trim="dataObj.idNo" label="身份证号:" readonly />
+      <van-field v-model.trim="dataObj.mblNo" label="手机号:" readonly />
+      <van-field v-model.trim="dataObj.amt" label="租金金额:" readonly />
+      <van-field v-model.trim="dataObj.term" label="分期期数:" readonly />
+      <van-field v-model.trim="dataObj.payDay" label="还款日:" readonly />
+            <van-collapse v-model="activeName" accordion>
+        <van-collapse-item title="还款计划" name="1">
+                      <table class="tab" cellspacing='0'>
+                <tr>
+                    <th>期数</th>
+                    <th>还款日期</th>
+                    <th>还款金额</th>
+                </tr>
+                <tr v-for="(val,index) in dataObj.replyPlanInfItemVos" :key="index"  align="center">
+                    <td>{{val.term}}期</td>
+                    <td>{{val.rpyDay}}</td>
+                    <td>{{val.rpyAmt}}元</td>
+                </tr>
+            </table>
+        </van-collapse-item>
+      <van-field v-model.trim="dataForm.verCode" center clearable label="签约验证码" placeholder="请输入短信授权码">
+        <template #button>
+          <van-button size="small" color="#E43A28" @click.stop="getCode" :disabled="isdisabled">{{codeText}}</van-button>
+        </template>
+      </van-field>
+      </van-collapse>
+      <div class="index-title">
+        <van-checkbox v-model="checked" style="height:30px;margin-right:5px" checked-color="#E43A28"></van-checkbox>
+        <div> 本人已阅读并同意签署<span @click="show=true" style="border-bottom:1px solid #00F; color:#00F">《借款合同》</span>同意报送贷款<br>相关信息至金融信用信息基础数据库(人行征信系统)</div>
+      </div>
+      <div style="margin: 16px;margin-top:30px">
+        <van-button round block color="#E43A28" @click="onFailed" native-type="submit">立即签约</van-button>
+      </div>
+    </van-form>
+    <van-popup v-model="show">
+      <div class="agreenBox">
+        <div class="agreen-html" v-html="agreementext"></div>
+        <div class="close-agreen" @click="show = false">
+          <van-icon name="close" color="#c8c9cc" />
+        </div>
+      </div>
+    </van-popup>
+    <!-- <van-popup v-model="show"  closeable ></van-popup> -->
+  </div>
+</template>
+
+<script>
+//这里可以导入其他文件(比如:组件,工具js,第三方插件js,json文件,图片文件等等)
+//例如:import 《组件名称》 from '《组件路径》';
+import { repstrh } from '../../../static/agreement1'
+export default {
+  //import引入的组件需要注入到对象中才能使用
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+      dataForm: {
+        idNo: '',
+        mblNo: '',
+        userName: '',
+      },
+      activeName: '0',
+      isdisabled: false,
+      tableinit:['还款期数','还款日期','还款金额'],
+      dataObj: {},
+      agreementext: repstrh(),
+      checked: false,
+      show: false,
+      codeText: '获取授权码',
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {
+    onFailed() {
+      // this.$api.checkVerifyCode()
+      // 验证通过
+      if (this.dataForm.verCode == undefined || this.dataForm.verCode == '') return this.$notify('请填写授权码')
+      this.$api.checkVerifyCode({ verifyCode: this.dataForm.verCode, orderId: this.$route.query.orderId }).then(res => {
+        if (!this.checked) return this.$notify('请阅读并勾选数据授权协议')
+        this.$api.signContract({ orderId: this.$route.query.orderId }).then(res => {
+              this.$router.push('/main/bancardsucces')
+        })
+      })
+    },
+    getCode: function (e) {
+      this.setTime()
+    },
+    setTime: function () {
+      let time = 60
+      let i = 0
+      let that = this
+      //1.在60秒之内,button上倒计时60秒,并显示
+      //2.向controller请求验证码,并发送到指定的手机号上面
+      let set = setInterval(function () {
+        that.codeText = --time + '秒后重发'
+        i++
+        //此变量用于标识只调用一次获取验证码的函数
+        if (i == 1) {
+          console.log('get code start1 ... ')
+          //使获取验证码按钮不可点击
+          that.isdisabled = true
+          that.getVerificationCode()
+        }
+      }, 1000)
+
+      //60秒之后需要做的事情
+      setTimeout(function () {
+        //恢复获取验证码按钮可点击
+        that.isdisabled = false
+        that.codeText = '获取授权码'
+        clearInterval(set) //清除计时器
+      }, time * 1000) //60000
+    },
+    getVerificationCode: function () {
+      // 向服务器获取验证码        
+      this.$api.sendVerifyCode({ orderId: this.$route.query.orderId }).then(res => {
+        this.$notify_success('授权码发送成功!')
+      })
+    },
+    signInit() {
+      this.$api.signContractInfo({ orderId: this.$route.query.orderId }).then(res => {
+        console.log(res)
+        this.dataObj = res.body
+      })
+    }
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+    this.signInit()
+  },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+
+  }
+}
+</script>
+<style  lang="less" scoped>
+.text-main {
+  background-color: @c-f5;
+  min-height: 100vh;
+  //padding-bottom: 44px;
+  .van-form {
+    margin-top: 5px;
+  }
+  .index-title {
+    display: flex;
+    align-items: center;
+    justify-content: center;
+    margin-top: 10px;
+  }
+  /deep/ .van-field__right-icon .van-icon {
+    font-size: 0.5rem;
+  }
+  /deep/.van-popup__close-icon {
+    color: #c8c9cc;
+  }
+  .van-cell__title {
+    color: #999999;
+    font-size: 12px;
+  }
+}
+.agreenBox {
+  width: 80vw;
+  height: 70vh;
+  padding: 60px 20px 30px 20px;
+  position: relative;
+}
+.agreen-html {
+  width: 100%;
+  height: 100%;
+  overflow: scroll;
+  box-sizing: border-box;
+}
+.close-agreen {
+  .lh(30px);
+  .flex(center, center);
+
+  .van-icon {
+    font-size: @font-16;
+  }
+}
+    .tab{
+        width: 100%;
+        th{
+            background-color: #F9F7FC;
+            height: 35px;
+            color: #666666;
+            font-size: 13px;
+        }
+        td{
+            height: 35px;
+            font-size: 14px;
+        }
+    }
+</style>
\ No newline at end of file
diff --git a/src/views/main/singsuc.vue b/src/views/main/singsuc.vue
new file mode 100644
index 0000000..ef17dfb
--- /dev/null
+++ b/src/views/main/singsuc.vue
@@ -0,0 +1,59 @@
+
+<template>
+  <div class='text-main'>
+    <van-nav-bar title="审核结果"/>
+    <div style="  text-align: center;">
+    <img width="70%" height="180" src="../../assets/img/successw.png"  />
+    </div>
+    <div class="content">
+      <p class="content-text"> 签约成功</p>
+      <van-button  @click="returnApp"  round block  color="#E43A28">返回</van-button>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  components: {},
+  data() {
+    //这里存放数据
+    return {
+      dataForm: {}
+    };
+  },
+  //监听属性 类似于data概念
+  computed: {},
+  //监控data中的数据变化
+  watch: {},
+  //方法集合
+  methods: {
+      returnApp(){
+           window.location.href ="https://www.qianyuechenggong.com/"    
+    }
+  },
+  //生命周期 - 创建完成(可以访问当前this实例)
+  created() {
+  },
+  //生命周期 - 挂载完成(可以访问DOM元素)
+  mounted() {
+
+  },
+}
+</script>
+<style   lang="less"  scoped>
+img {
+   margin: 10px auto;
+}
+.content {
+  text-align: center;
+  .content-text {
+    font-size: 16px;
+    font-weight: 500;
+    color: #333333;
+  }
+  .content-main {
+    font-weight: 500;
+    color: #999999;
+  }
+}
+</style>
\ No newline at end of file
diff --git a/static/README.md b/static/README.md
new file mode 100644
index 0000000..e938604
--- /dev/null
+++ b/static/README.md
@@ -0,0 +1,8 @@
+<!--
+ * @Author: 小明丶
+ * @Date: 2019-08-13 18:10:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-13 18:10:18
+ * @Description: 
+ -->
+# 静态文件目录
\ No newline at end of file
diff --git a/static/agreement1.js b/static/agreement1.js
new file mode 100644
index 0000000..7b1ec6a
--- /dev/null
+++ b/static/agreement1.js
@@ -0,0 +1,440 @@
+
+export var repstrh = function(userNamex) {
+  const agreement5 =`<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-align:center">
+  <strong><span style="font-family: 宋体;font-size: 19px">保理付款服务合同</span></strong>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-align:center;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></strong>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">特别提醒:在您确认并签署本合同(包括附件,下同)之前,请您务必充分阅读本合同所有条款,尤其是加粗部分。如您对合同内容及页面提示有疑问,请您暂停后续操作,您可致电我方客服热线以便我们为您解释和说明。</span></strong>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">为了及时给您提供服务支持,</span> 一旦您通过点击或其他方式确认本合同,即意味着您同意签订本合同。</span></strong>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">本合同由正文、附件及我方不时发布的有关本服务的具体页面、账单、指引、说明和介绍等共同组成,共同构成您与我方之间就本保理付款服务的完整协议。</span></strong>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></strong>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">甲方:深圳市景天商业保理有限公司</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">法定代表人</span>/负责人:张科</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">联系电话:</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">028-67641158</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">地址:成都市高新区交子大道</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">177</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">号中海国际中心</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">D</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">座</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">1704</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">乙方:</span>xxxxx</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">法定代表人</span>/负责人:【xxxx】</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">联系电话:【</span>xxxxx】</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">地址:【</span>xxxxx】</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">丙方:【</span>xxxx】</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">身份证号:【</span>xxxx】</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">联系电话【</span>xxxx】</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">地址:【</span>xxxx】</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">甲方方是一家在中华人民共和国注册的商业保理公司,可提供融资性保理服务及债务人资信调查与评估、应收账款管理等非融资性保理服务。</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方是一家独立营运的房地产行业销售公司,承接并从事房屋销售业务,为本协议中的保理融资申请人。</span>
+</p>
+<p style="margin-top:4px;margin-right:10px;margin-left:5px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">丙方为中华人民共和国公民,年满</span>18周岁,具备独立民事行为能力的个人,为本协议中的担保个人。 </span><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;</span></strong>
+</p>
+<p style="margin-top:7px;margin-left:0;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></strong>
+</p>
+<p style="margin-top:7px;margin-left:0;text-indent:32px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">一</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">服务规则</span></strong>
+</p>
+<p style="margin-top:7px;text-indent:30px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">根据甲方与乙方</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签订的编号为【】的《有追索权保理业务合同》(以下称</span>“原合同”),乙方将本协议项下的单笔应收账款债权(详见附件:债权转让清单),出让给甲方以便向甲方申请单笔保理融资。</span>
+</p>
+<p style="margin-top:7px;text-indent:30px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">上述</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">应收账款债权,将在甲方对乙方资信</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">评估</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">审核通过(具体以甲方页面或系统记录为准)时,自动从乙方转让至甲方。</span>
+</p>
+<p style="margin-top:7px;text-indent:30px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">二</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">融资信息</span></strong>
+</p>
+<p style="margin-left:9px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">融资金额:【】元</span>
+</p>
+<p style="margin-left:9px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">融资期限:【</span>365】天</span>
+</p>
+<p style="margin-left:9px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">还款方式:到期一次性还本付息。</span>
+</p>
+<p style="margin-left:9px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">融资服务费(融资利息)计算方式:按日计费,放款当天(含)到还款当天(含),前</span>182天以融资金额为基数,按【0.11】‰/日的标准计算,之后以融资金额为基数,按【0.65】‰/日的标准计算,直至全部结清。</span>
+</p>
+<p style="margin-left:9px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">滞纳金:融资期限届满后,以未还总额为基数,按【</span>0.1】‰/日的标准额外支付滞纳金。</span>
+</p>
+<p style="margin-left:9px;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">提前还款:放款后可提前还款,根据实际资金占用时间计算保理服务费。</span>
+</p>
+<p style="margin-left:9px;text-indent:32px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">第三条</span> 收款账户</span></strong>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方委托甲方将本合同项下的单笔融资款中的【】元转入如下账户:</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">收款账户信息:</span>
+</p>
+<p style="margin-right:10px;margin-left:0;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">开户行:【</span>xxxxx】</span>
+</p>
+<p style="margin-right:10px;margin-left:0;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">户</span> &nbsp;名:【xxxx】</span>
+</p>
+<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">账</span> &nbsp;号:【xxxx】</span>
+</p>
+<p style="margin-right:10px;margin-left:0;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方委托甲方将本合同项下的单笔融资款中的【】转入如下账户:</span>
+</p>
+<p style="line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;<span style="font-family:宋体">收款账户信息:</span></span>
+</p>
+<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">开户行:</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">待完善</span>
+</p>
+<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">户</span> &nbsp;名:四川华弘汇商务咨询有限公司</span>
+</p>
+<p style="margin-right:10px;margin-left:8px;text-indent:24px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">账</span> &nbsp;号:待完善</span><strong><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span></span></strong>
+</p>
+<p style="margin-top:7px;text-indent:30px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">四</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">担保信息</span></strong>
+</p>
+<p style="margin-top:7px;margin-left:0;text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">丙方在签订本协议时,已明确知晓甲乙双方签订的原合同相关内容,且自愿为乙方就本合同项下的所有付款义务,向甲方提供连带担保责任。担保范围为乙方就本合同项下发生的融资本金、服务费、滞纳金及违约发生的所有费用,担保期限为三年,自本合同项下融资期限届满之日或甲方要求乙方回购本合同项下债权之日起算。</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">如发生下列情形之一,自接到债权人通知之日起</span>5个工作日内,无条件履行本合同项下的保证责任:</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>1)债务人未按时足额偿还债务或违反主合同约定;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>2)债务人被宣告解散、破产的;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>3)债务人转移资产,抽逃资金,以逃避债务,或经营和财务状况恶化,无法清偿到期债务,或债务人卷入或即将卷入重大的诉讼或仲裁程序及其他法律纠纷,足以影响其偿债能力的;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>4)债权人根据法律法规之规定或主合同的约定提前收回债权,债务人未予清偿的;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>5)债务人违反主合同的约定或法律法规之规定,可能影响债权人实现债权的;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>6)其他足以影响或可能影响债权人实现债权的情况。</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">发生下列情形之一,无需经保证人另行同意,保证人应继续按照本合同的约定对变更后的主合同债务承担保证责任:</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>1)债权人与债务人协商变更主合同,未加重债务人的债务的;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>2)债权人与债务人协商延长债务履行期限的;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>3)因利率调整而导致主债权数额发生变化的;</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">(</span>4)债权人将主债权转让给第三人的。</span>
+</p>
+<p style="margin-right:13px;margin-left:0;text-indent:30px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;letter-spacing: -1px;font-size: 16px"><span style="font-family:宋体">第五条</span> </span></strong><strong><span style="font-family: 宋体;line-height: 150%;letter-spacing: -1px;font-size: 16px">违约责任</span></strong>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">任何一方违反本合同约定,给对方造成损失的,除本合同已有约定外,还应赔偿对方的一切损失(包括但不限于诉讼费、仲裁费、律师费、鉴定费、拍卖费、公告费、催告费、财产保全申请费、保全担保费、差旅费、通讯费等)。</span>
+</p>
+<p style="margin-top:7px;text-indent:30px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">第</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">六</span></strong><strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">条</span> 通知、送达与管辖</span></strong>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">本协议项下各方指定的联络信息如下:</span></strong>
+</p>
+<table cellspacing="0" width="568">
+  <tbody>
+      <tr class="firstRow">
+          <td width="84" valign="top" rowspan="2" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">甲方:</span></strong>
+              </p>
+          </td>
+          <td width="484" valign="top" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">送达地址:</span></strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">成都市高新区交子大道</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">177</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">号中海国际中心</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">D</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">座</span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">1704</span>
+              </p>
+          </td>
+      </tr>
+      <tr>
+          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">电子邮箱:</span></strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">kefu@finlean.com</span>
+              </p>
+          </td>
+      </tr>
+      <tr>
+          <td width="84" valign="top" rowspan="3" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">乙方:</span></strong>
+              </p>
+          </td>
+          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">送达地址:【】</span></strong>
+              </p>
+          </td>
+      </tr>
+      <tr>
+          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电话:【】</span> </span></strong>
+              </p>
+          </td>
+      </tr>
+      <tr>
+          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电子邮箱:【】</span> </span></strong>
+              </p>
+          </td>
+      </tr>
+      <tr>
+          <td width="84" valign="top" rowspan="3" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height: 150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">丙方</span></strong>
+              </p>
+          </td>
+          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">送达地址:【】</span></strong>
+              </p>
+          </td>
+      </tr>
+      <tr>
+          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电话:【】</span> </span></strong>
+              </p>
+          </td>
+      </tr>
+      <tr>
+          <td width="484" valign="top" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);">
+              <p style="line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">电子邮箱:【】</span> </span></strong>
+              </p>
+          </td>
+      </tr>
+  </tbody>
+</table>
+<p style="text-indent:33px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">三方该联络方式适用范围包括双方非诉时各类通知、协议等文件以及就合同发生纠纷时相关文件和法律文书的送达,同时包括在争议进入仲裁、民事诉讼程序后司法及仲裁机构相关文书的送达,程序包括一审、二审、再审和执行程序,以邮寄方式进行送达的,邮寄成功</span>3日后视为送达,以电子方式进行送达的,发送即视为送达。</span></strong>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">任何一方的联络方式需要变更时,应以书面方式提前</span>7日通知对方,否则应承担一切不利后果。对于本合同明确约定的联络方式,法院进行送达时可直接邮寄送达或通过电子方式送达,即使当事人(指甲方和/或乙方)未能收到法院邮寄送达或电子送达的文书或拒绝签收的,由于其在本合同中的约定,也应当视为送达。</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">因本合同引起的或与本合同有关的一切争议,甲丙丁三方首先应当通过友好协商解决;未能协商解决的,交由原告所在地或协议签署地(即成都高新区)有管辖权的人民法院诉讼解决。</span></strong>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">第六条</span> 其他</span></strong>
+</p>
+<p style="margin-right:10px;text-indent:24px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">各方均同意本协议将以电子方式进行签署,一经签署即对各方均发生约束力。</span>
+</p>
+<p style="line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">(以下为签署页及附件)</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">甲方签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签署时间:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+</p>
+<p style="line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">乙方签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">授权代理人签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签署时间:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">丙方签署:【】</span> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>
+</p>
+<p style="text-indent:33px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">签署时间:【】</span> &nbsp;&nbsp;</span>
+</p>
+<p style="line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;letter-spacing: -0;font-size: 16px">附件:《债权转让清单》</span>
+</p>
+<p style=";text-align:center;line-height:150%">
+  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">债权转让清单</span></strong>
+</p>
+<p style=";text-align:right;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px"><span style="font-family:宋体">致:</span> 深圳市景天商业保理有限公司</span>
+</p>
+<p style="text-indent:32px;line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">根据我司与贵司于</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">年</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">月</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">日签订的编号为【】号的《有追索权保理业务合同》,我司现将如下应收账款转让予贵司:</span>
+</p>
+<table cellspacing="0" width="511">
+  <tbody>
+      <tr style="height:43px" class="firstRow">
+          <td width="62" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
+              <p style="text-align:center;line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">债务人姓名</span></strong>
+              </p>
+          </td>
+          <td width="57" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
+              <p style="text-align:center;line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">项目名称</span></strong>
+              </p>
+          </td>
+          <td width="159" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
+              <p style="text-align:center;line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">销售房号</span></strong>
+              </p>
+          </td>
+          <td width="114" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
+              <p style="text-align:center;line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">应收账款金额</span></strong>
+              </p>
+          </td>
+          <td width="119" valign="center" style="padding: 0px 7px; border-width: 1px; border-color: rgb(0, 0, 0);">
+              <p style="text-align:center;line-height:150%">
+                  <strong><span style="font-family: 宋体;line-height: 150%;font-size: 16px">应收账款到期日</span></strong>
+              </p>
+          </td>
+      </tr>
+      <tr style="height:28px">
+          <td width="62" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
+          <td width="57" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
+          <td width="159" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
+          <td width="114" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
+          <td width="119" valign="center" style="padding: 0px 7px; border-left-width: 1px; border-left-color: rgb(0, 0, 0); border-right-width: 1px; border-right-color: rgb(0, 0, 0); border-top: none; border-bottom-width: 1px; border-bottom-color: rgb(0, 0, 0);"></td>
+      </tr>
+  </tbody>
+</table>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style=";line-height:150%">
+  <br/>
+</p>
+<p style=";line-height:150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;</span>
+</p>
+<p style="text-indent: 304px;line-height: 150%">
+  <span style="font-family: 宋体;line-height: 150%;font-size: 16px">日期:</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">年</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">月</span><span style="text-decoration:underline;"><span style="font-family: 宋体;line-height: 150%;font-size: 16px">&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span style="font-family: 宋体;line-height: 150%;font-size: 16px">日</span>
+</p>
+<p>
+  <br/>
+</p>`
+  return agreement5
+}
+
+
diff --git a/static/agreement2.js b/static/agreement2.js
new file mode 100644
index 0000000..25c0c91
--- /dev/null
+++ b/static/agreement2.js
@@ -0,0 +1,226 @@
+
+export var repstrw = function(userNamex,idNo,tel='',bankname='',bankCard='') {
+           var d = new Date();
+           const agreement5 =`<p>
+           <span style=";font-family:DengXian;font-size:14px">特别提示:</span>
+       </p> 
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">本《信息授权函》</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">是由四川华弘汇商务咨询有限公司及关联公司四川塞萨尔科技有限公司、成都弗他利网络科技有限公司、中科御言(深圳)投资咨询有限公司(以下合称</span>“信息服务商”)接受金融机构(包括但不限于银行、消费金融公司、小额贷款公司、商业保理公司等)的委托,协助金融机构</span><span style=";font-family:DengXian;font-size:14px">评估并决定是否向您提供您所申请的</span><span style=";font-family:DengXian;font-size:14px">金融</span><span style=";font-family:DengXian;font-size:14px">业务的基础,如您未按本函约定提供个人信息并进行授权,您可能无法继</span><span style=";font-family:DengXian;font-size:14px">续申请或可能被拒绝提供相关业务及服务。在签署本文件前,请您仔细阅读本文件的所有条款(尤其用加粗或带下划线等突出显示的内容),请确保您已完全理解本文件所有内容,否则请勿签署本文件。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">信息服务商在</span><span style=";font-family:DengXian;font-size:14px">为您提供相关服务的过程中会按照相关法律法规及本《信息授权函》的约定,在合法、必要、最小范围内,收集、使用、处理、保存、披</span><span style=";font-family:DengXian;font-size:14px">露和传输与您相关的个人信息,包括但不限于身份证件号码、个人生物识别信息、银行账号、收入状况、通信记录、征信</span><span style=";font-family:DengXian;font-size:14px">/信用信息、住址、IP地址等敏感信</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">息。勾选本《信息授权函》即代表您确认您已阅读、完全理解并同意本《信息授权函》全部内容,并知晓和接受提供该等授权及拒绝授权分别可能导致的不利后果。</span>&nbsp;</span>
+       </p>
+       <p style="text-align:center">
+           <span style=";font-family:DengXian;font-size:19px">信息授权函</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">信息服务商及为本人所申请的业务提供服务的金融机构(以下合称</span>“被授权人”):</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">本人(姓名:【】;身份证号:【</span><span style=";font-family:DengXian;font-size:14px">】)申请</span><span style=";font-family:DengXian;font-size:14px">金融付款</span><span style=";font-family:DengXian;font-size:14px">相关业务及服务,兹作出以下授权:</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">1、本人同意并授权</span><span style=";font-family:DengXian;font-size:14px">被授权人及金融机构</span><span style=";font-family:DengXian;font-size:14px">为向本人提供相关业务及服务之目的,采取以下途径采集、获取本人的个人信息:</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)向本人直接采集、获取;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)通过本人所选择的服务相关方、其他合法设立并存续的第三方、与本人有关的联系人/机构采集、获取;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)通过公开(包括有限公开)渠道或是平台的采集、获取;以及</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">4)在本人使用业务相关系统、平台、客户端或类似媒介的过程中通过技术手段采集、获取。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">2、本人同意并授权</span><span style=";font-family:DengXian;font-size:14px">被授权人,</span><span style=";font-family:DengXian;font-size:14px">为以下一项或多项用途、目的,将所采集、获取的本人个人信息进行整理、查验、复制、加工、使用、存储、披露、传输:</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)为本人提供信用评估服务并进行后续管理及服务更新;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)审核、处理本人所选择的业务产品、服务之申请;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)单独或通过本人选择的</span><span style=";font-family:DengXian;font-size:14px">分期</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">服务相关方,向本人提供相关业务产品、服务,进行后续管理,处理异议</span>/投诉/纠纷;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">4)自行或与本人有关的联系人/机构联络,或通过合法设立并存续的第三方,进行与本人所选择的业务产品、服务相关的身份识别、信息资料核实、债务</span><span style=";font-family:DengXian;font-size:14px">催收、资信</span><span style=";font-family:DengXian;font-size:14px">/信用核查评估、欺诈防范、数据及信息的统计/分析/处理、风险审查管理。对于本人有关的联系人/机构,本人在提供(无论主动填写或默认同意)</span><span style=";font-family:DengXian;font-size:14px">其联系方式之前已获取其关于被授权人进行联络之同意;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">5)进行产品、服务、流程、模型、技术、系统、数据源、合作方的评估、引入、测试、上线、设计、分析、调整、升级;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">6)自行或通过</span><span style=";font-family:DengXian;font-size:14px">被授权人、为本人提供服务的金融机构</span><span style=";font-family:DengXian;font-size:14px">所选择的合法设立并存续的第三方</span><span style=";font-family:DengXian;font-size:14px">进行</span><span style=";font-family:DengXian;font-size:14px">资产</span><span style=";font-family:DengXian;font-size:14px">处置</span><span style=";font-family:DengXian;font-size:14px">,进行协议、资</span><span style=";font-family:DengXian;font-size:14px">产、权利义务的转让;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">7)维护、改进、评估、分析日常运营、业务发展、风险管理;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">8)自行或与其他数据公司在法律允许的范围内进行数据的汇聚融合,从而建立、维护、改进数据模型;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">9)开展合法的营销推广、向本人推送介绍本人可能感兴趣的产品/服务及其提供方;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">10)执行任何有约束力或是管辖权的法律、法规、政策、规则、约定、判决、裁定、交易所或有权机关要求;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">11)其他合理,或经本人同意的目的、用途。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span><span style=";font-family:DengXian;font-size:14px">3、本人与</span><span style=";font-family:DengXian;font-size:14px">被授权人</span><span style=";font-family:DengXian;font-size:14px">的业务、服务涉及第三方的情况</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span><span style=";font-family:DengXian;font-size:14px">&nbsp;&nbsp;&nbsp;&nbsp;3.1 本人同意并授权</span><span style=";font-family:DengXian;font-size:14px">被授权人</span><span style=";font-family:DengXian;font-size:14px">为完成本人</span><span style=";font-family:DengXian;font-size:14px">所申请的业务及服务</span><span style=";font-family:DengXian;font-size:14px">之目的,对个</span><span style=";font-family:DengXian;font-size:14px">人信息进行以下操作:</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)本人同意并授权被授权人将本人信息披露、传输给第三方,委托该第三方进行进一步的信息采集、处理、加工并返回处理结果;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)本人同意并授权该第三方接收被授权人所披露、传输的信息,根据本人授权及被授权人的指令进行相关处理、加工,并将处理结果向被授权人</span><span style=";font-family:DengXian;font-size:14px">进行</span><span style=";font-family:DengXian;font-size:14px">传输和披</span><span style=";font-family:DengXian;font-size:14px">露;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)本人同意并授权该第三方通过合法存有本人信息的机构进一步收集本人的信息,根据本人授权及被授权人的指令进行相关处理、加工,并将处理结</span><span style=";font-family:DengXian;font-size:14px">果向被授权人传输和披露。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span><span style=";font-family:DengXian;font-size:14px">3.2 在本人通过相关方向被授权人申请</span><span style=";font-family:DengXian;font-size:14px">分期</span><span style=";font-family:DengXian;font-size:14px">业务及服务的情况下,本人需要通过该相关方的网站、客户端等渠道办理业务并接受</span><span style=";font-family:DengXian;font-size:14px">具体分期服务,本人同意并授权被授权人及该相关方对个人信息进行以下操作:</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)本人同意并授权该相关方为本人办理业务、服务之目的,采集并向被授权人传输本人个人信息;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)本人同意并授权被授权人从该相关方处采集、接收本人信息并按照本《信息授权函》相关约定整理、查验、复制、加工、使用、存储、披露、传输;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)本人同意并授权被授权人将本人与被授权人之间的业务、服务相关数据,包括但不限于业务审批结果、业务交易数据等向该相关方传输、披露并在其渠道</span><span style=";font-family:DengXian;font-size:14px">中向本人展示。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">4、本人知悉并同意有关本人的个人信息,尤其是不良信息,可能在符合法律法规规定、本《信息授权函》约定以及被授权人认为必要时被披露给与本人有关</span><span style=";font-family:DengXian;font-size:14px">的联系人</span><span style=";font-family:DengXian;font-size:14px">/机构、本人选择的</span><span style=";font-family:DengXian;font-size:14px">分期</span><span style=";font-family:DengXian;font-size:14px">服务相关方或其他第三方,包括但不限于本人的亲属朋友、同事、紧急联系人、通讯录联系人、雇主、工作单位、征信机构、</span><span style=";font-family:DengXian;font-size:14px">合法的风控服务机构、催收机构、法律服务机构、信息服务机构等。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">5、本人确认,本人已被明确告知并理解提供本人个人信息可能给本人带来财产或信用损失或其他可能的不利后果,包括对本人信用可能产生不良影响、个</span><span style=";font-family:DengXian;font-size:14px">人信息被他人不当利用等风险,本人同意承担该等可能的不利后果。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">6、本人确认并同意,基于反洗钱反恐及金融监管等义务和监管要求,被授权人可在本人所选择的业务及服务完结之后继续留存相应个人信息,并在业务关系</span><span style=";font-family:DengXian;font-size:14px">终结之日起的</span><span style=";font-family:DengXian;font-size:14px">5年后对个人信息进行匿名化或去标识化处理。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">7、本人承诺,本人所提供的所有信息均真实、有效、准确、完整,且不存在任何遗漏、隐瞒及误导。在不损害本人在其他文件中做出的承诺的前提下,如</span><span style=";font-family:DengXian;font-size:14px">果该等信息有任何变更,本人将在变更后立即通知被授权人及金融机构,如因本人未及时更新信息导致的损失,由本人自行承担。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">8、在本人所选择的业务涉及本人相关的机构的情况下,本人确认并承诺:本人已获得相关机构的授权和同意,将本《信息授权函》所称“本人个人信息”</span><span style=";font-family:DengXian;font-size:14px">的范围扩大覆盖为本人个人信息以及本人相关的机构信息,并有权代相关机构向被授权人及合法设立并存续的第三方作出上述全部授权及承诺,即被授权人及金融机构有权根据第</span><span style=";font-family:DengXian;font-size:14px">2条采集、获取、整理、核实、查验、复制、加工、使用、存储、披露、传输本人相关的机构信息,被授权人</span><span style=";font-family:DengXian;font-size:14px">及金融机构</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">委托的合法设立并存续的第三方有权根据第</span>3条采</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">集、加工、处理、披露和传输本人相关的机构信息。</span>“本人相关的机构信息”是指与本人有关的机构(本人的工作单位、本人投资或经营的实体以及与之有合作、供销、关联关系的机构等)之信息,包括但不限于机构的名称、地址、联系方式、工商信息、税务信息、财务信息、经营信息、交易信息、资信信息、征信及信用信息、融资信息、关联方信息、诉讼、执行、行政处罚、刑事程序相关信息、负责人、法定代表人、股东、董事、高管、员工信息等。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">9、本函所涉之定义</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">9.1 “个人信息” 即本人个人信息,是指以电子或者其他方式记录的能够单独或者与其他信息结合识别本人的身份或者反映本人的相关情况的各种信息,包</span><span style=";font-family:DengXian;font-size:14px">括但不限于:</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">1)基本个人信息,包括但不限于姓名、性别、国籍、民族、出生日期、身份证件信息、学历信息、婚姻及家庭状况、面部特征、声音;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">2)通信、通讯、社交平台及联系信息,包括但不限于具体方式及内容;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">3)收入、工作及职业信息,包括但不限于收入来源及金额、工作单位、职业、工资发放日;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">4)亲属、联系人、推荐人信息;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">5)财产及账户信息,包括但不限于居住及住房情况、资产及财产状况、银行账户相关信息、社保信息、公积金信息、支付宝信息、交易信息、投资信</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">息、经营信息、税务信息;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">6)信用及征信信息,包括但不限于金融信用信息基础数据库信息及报告、芝麻信用信息、百行征信有限公司信用信息共享平台信息、中国互联网金融协</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">会信用信息共享平台信息,以及其他第三方提供的信用及征信信息;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">7)交易信息,包括但不限于任何交易的需求、发起、申请、进度、成交、约定、履约情况,以及相关衍生信息(如交易习惯或意愿),而该等交易可能涉</span><span style=";font-family:DengXian;font-size:14px">及由任何主体提供或是参与的任何产品或是服务,包括但不限于任何形式的贷款(含与贷款有关的基础交易)、投资、保险、消费、订购或其他经营性、非经营性交易;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">8)法律程序相关信息,包括但不限于诉讼、执行、行政处罚、刑事程序相关信息;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">9)设备及行为信息,包括但不限于域名、IP 地址、位置及轨迹、设备、系统、连接、访问浏览记录;以及</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">(</span><span style=";font-family:DengXian;font-size:14px">10)其他个人信息。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">本人知晓上述部分信息为本人的个人敏感信息(包括但不限于身份证件号码、个人生物识别信息、银行账号、通信记录和内容、财产信息、征信信息、行踪轨迹),本人同时知晓该等信息一旦泄露、非法提供或滥用可能存在危害本人人身和财产安全的风险,并自愿接受上述风险。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">为避免疑惑,以上所列的某些信息在单独出现的情况下是无法与任何特定个人直接建立联系的信息,不属于个人信息。如果将这类信息与其他信息结合用于识别个人身份,或者将其与个人信息结合使用,则在结合使用期间,此类信息将被视为个人信息。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">9.2 “不良信息” 是指任何负面信息或可能产生负面影响的信息,包括但不限于任何违法、违规、违约信息、不良信用及征信信息,涉及的范围包括个人信</span><span style=";font-family:DengXian;font-size:14px">息及相关机构信息。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">9.3 “有权机关” 是指位于任何司法管辖区的任何政府部门、半政府部门、类政府部门、税务部门、监管部门、法院、检察院、公安机关、仲裁庭、自律组</span><span style=";font-family:DengXian;font-size:14px">织或其他有权机关。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">9.4 “公开(包括有限公开)或非公开渠道或平台” ,包括但不限于全国公民身份证号码查询服务中心、金融信用信息基础数据库、百行征信有限公司信用</span><span style=";font-family:DengXian;font-size:14px">信息共享平台、中国互联网金融协会信用信息共享平台,以及合法设立的征信或信用机构及其他类似机构;</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">9.5 “与本人有关的联系人/机构“ ,包括但不限于本人的亲属、朋友、同事、紧急联系人、通讯录联系人、雇主、工作单位、本人投资/经营的实体以及与</span><span style=";font-family:DengXian;font-size:14px">之有合作</span><span style=";font-family:DengXian;font-size:14px">/供销/关联关系的机构、其他合理的、或本人及/或其他信息当事人同意的相关方。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">10、本《信息授权函》自在线勾选确认之日起生效,适用于所有在本《信息授权函》生效之前已经发生或存在的与个人信息有关事项,本《信息授权函》具</span><span style=";font-family:DengXian;font-size:14px">有独立性,不受其他文件或约定瑕疵的影响。</span>
+       </p>
+       <p style="text-indent:28px">
+           <span style=";font-family:DengXian;font-size:14px">11、本人已仔细阅读并完全理解本函全部内容,亦完全了解与本函有关的所有风险和不利影响,本人知晓本人有权拒绝签署本函,但本人系出于完全的自愿</span><span style=";font-family:DengXian;font-size:14px">签署本函,本人愿意承担由此带来的一切法律后果。</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">(以下无正文)</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;授权人:【】</span>
+       </p>
+       <p>
+           <span style=";font-family:DengXian;font-size:14px">&nbsp;授权日期:&nbsp;【】</span><span style=";font-family:DengXian;font-size:14px"><span style="font-family:DengXian">年</span>&nbsp;</span><span style=";font-family:DengXian;font-size:14px">【】</span><span style=";font-family:DengXian;font-size:14px">&nbsp;月&nbsp;</span><span style=";font-family:DengXian;font-size:14px">【】</span><span style=";font-family:DengXian;font-size:14px">&nbsp;日</span>
+       </p>
+       <p>
+           <br/>
+       </p>`
+           return agreement5
+}
+
+ 
diff --git a/static/agreement5.js b/static/agreement5.js
new file mode 100644
index 0000000..5e3327a
--- /dev/null
+++ b/static/agreement5.js
@@ -0,0 +1,8 @@
+
+export var repstr = function(userNamex,idNo) {
+           var d = new Date();
+           const agreement5 =``
+           return agreement5
+}
+
+ 
diff --git a/vue.config.js b/vue.config.js
new file mode 100644
index 0000000..8c63047
--- /dev/null
+++ b/vue.config.js
@@ -0,0 +1,15 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-30 09:19:08
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2019-08-30 09:47:47
+ * @Description: 
+ */
+module.exports = {
+    configureWebpack: config => {
+        require('vux-loader').merge(config, {
+            options: {},
+            plugins: ['vux-ui']
+        })
+    }
+}
diff --git a/webpack.common.js b/webpack.common.js
new file mode 100644
index 0000000..2715a52
--- /dev/null
+++ b/webpack.common.js
@@ -0,0 +1,132 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-19 15:23:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2021-01-07 10:34:13
+ * @Description:
+ */
+//  webpack通用配置
+const path = require('path');
+const HtmlWebpackPlugin = require('html-webpack-plugin');
+const VueLoaderPlugin = require('vue-loader/lib/plugin');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+const CopyPlugin = require('copy-webpack-plugin');
+const vuxLoader = require('vux-loader');
+let env = process.env.NODE_ENV ==='production';
+console.log(env)
+//打包地址
+let srcUrl = '/comn_business/'
+module.exports = {
+    entry: {
+        index: "./src/index.js",
+    },
+    output: {
+        filename: 'js/[name].js',
+        path: path.resolve(__dirname, 'dist'),
+        publicPath: env ? srcUrl : '/' //根据线上项目路径更改 /projectpath
+    },
+    /**防止将某些 import 的包(package)打包到 bundle 中,而是在运行时(runtime)再去从外部获取这些扩展依赖,
+     * 简而言之:就是使用cdn~不打包这些变量引用的文件,生成环境时需要在index.html中手动引入cdn
+     */
+    externals: {
+        vue: "Vue",
+        axios: "axios",
+        vuex: "Vuex",
+        router: "VueRouter",
+    },
+    resolve: {
+        extensions: ['.vue', '.js', '.less'],
+        alias: { //别名配置
+            "@": path.resolve(__dirname, 'src')
+        }
+    },
+    module: {
+        rules: [{
+                test: /\.(svg|ttf|eot|woff)\??.*$/,
+                loader: "url-loader?limit=10000"
+            },
+            {
+                test: /\.css$/,
+                use: [
+                    env ? MiniCssExtractPlugin.loader : "vue-style-loader",
+                    'css-loader',
+                    "postcss-loader",
+                ],
+            },
+            {
+                test: /\.less$/,
+                use: [
+                    env ? MiniCssExtractPlugin.loader : "vue-style-loader",
+                    'css-loader',
+                    "postcss-loader", //posscss-loader顺序一定要在less-loader前面~不然无法解析
+                    'less-loader',
+                    // 全局注入less变量,在所有vue组件中可使用
+                    // 不能写不接受变量的死类名在这些文件里,不然每个vue文件都会注入这些css类,打包后增加css体积!
+                    {
+                        loader: 'style-resources-loader',
+                        options: {
+                            patterns: [
+                                path.resolve(__dirname, 'src/style/mixins.less'),
+                            ]
+                        }
+                    }
+                ]
+            },
+            {
+                test: /\.(png|svg|jpg|gif)/, //处理图片
+                use: [{
+                    loader: 'url-loader',
+                    options: {
+                        limit: 10000,
+                        outputPath: 'img/',
+                        publicPath:env ?`${srcUrl}img`:`/img`
+                    }
+                }]
+            },
+            {
+                test: /\.vue$/,
+                loader: 'vue-loader'
+            },
+            {
+                test: /\.js$/,
+                exclude: /node_modules/,
+                use: {
+                    loader: 'babel-loader',
+                    options: {
+                        // @vue/babel-preset-jsx  vue jsx语法支持
+                        presets: ['@babel/preset-env', '@vue/babel-preset-jsx'],
+                        plugins: ["dynamic-import-webpack"] //import 函数支持,需要安装
+                    }
+                }
+            },
+        ]
+    },
+    plugins: [
+        // 静态目录
+        new CopyPlugin([{
+            from: path.resolve(__dirname, 'static'),
+            to: 'static',
+        }, ]),
+        new VueLoaderPlugin(),
+        new HtmlWebpackPlugin({
+            template: './public/index.html', //以这个文件作为模板
+            filename: 'index.html', //打包后的文件名
+            title: 'Vue_webpack',
+            hash: true,
+            minify: {
+                removeComments: true, //移除注释
+                collapseWhitespace: true,
+                removeEmptyAttributes: true, //移除空属性
+                removeAttributeQuotes: true //移除属性html标签属性的引号 ""
+            },
+        }),
+    ],
+}
+
+
+// module.exports = vuxLoader.merge(webpackConfig, {
+//     plugins: [{
+//         name: 'vux-ui'
+//     }]
+//     }
+// );
diff --git a/webpack.dev.js b/webpack.dev.js
new file mode 100644
index 0000000..28e5de1
--- /dev/null
+++ b/webpack.dev.js
@@ -0,0 +1,63 @@
+/*
+ * @Author: 小明丶
+ * @Date: 2019-08-19 15:23:18
+ * @LastEditors: 小明丶
+ * @LastEditTime: 2020-11-20 17:19:45
+ * @Description:
+ */
+//  webpack开发环境配置
+const webpack = require('webpack');
+const merge = require('webpack-merge');
+const common = require('./webpack.common.js');
+
+module.exports = merge(common, {
+    mode: 'development',
+    // 如果大型项目可以使用source-map,如果是中小型项目使用eval-source-map就可以了(方便debug)
+    devtool: 'source-map',
+    watch: true,
+    devServer: {
+        contentBase: './dist',
+        inline: true,
+        hot: true,
+        host: 'localhost',
+        //服务端压缩是否开启
+        compress: true,
+        //配置服务端口号
+        port: 8011,
+        // 代理配置
+        proxy:{
+            "/lism": {
+                // target: 'http://192.168.1.46:8096',
+                target: 'https://t.finlean.com',
+                // target: 'https://pre.finlean.com',
+                // target: 'http://192.168.1.63:8096',
+                ws: true,
+                changeOrigin: true
+            },
+            "/image": {
+                // target: 'https://pre.finlean.com',
+                target: 'https://t.finlean.com',
+                ws: true,
+                changeOrigin: true
+            },
+            '/jttech': {
+                //target: 'https://pre.finlean.com',
+                target: 'https://t.finlean.com',
+                secure: false,
+                changeOrigin: true
+            }
+
+        }
+    },
+    plugins: [
+        new webpack.HotModuleReplacementPlugin(),
+    ],
+    watchOptions: {
+        //不监听的目录
+        ignored: /node_modules/,
+        //当第一个文件更改,会在重新构建前增加延迟。这个选项允许 webpack 将这段时间内进行的任何其他更改都聚合到一次重新构建里。
+        aggregateTimeout:800,
+        // 通过传递 true 开启 polling,或者指定毫秒为单位进行轮询。
+        // poll:1000,
+    }
+});
diff --git a/webpack.prod.js b/webpack.prod.js
new file mode 100644
index 0000000..ff6348b
--- /dev/null
+++ b/webpack.prod.js
@@ -0,0 +1,38 @@
+//  webpack生产环境配置
+process.env.NODE_ENV = 'production';
+const webpack = require('webpack');
+const merge = require('webpack-merge');
+const common = require('./webpack.common.js');
+// 每次build之前删除dist文件夹
+const CleanWebpackPlugin = require('clean-webpack-plugin');
+const MiniCssExtractPlugin = require('mini-css-extract-plugin');
+// css压缩插件
+var OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin');
+// js 压缩插件
+// const Uglify = require('uglifyjs-webpack-plugin');
+
+module.exports = merge(common, {
+    mode:"production",
+    plugins: [
+        // new Uglify(),
+        // 把vue组件的css文件提取出来
+        new MiniCssExtractPlugin({
+            filename: 'css/[name].[hash].css'
+        }),
+        // css压缩(cssnano、OptimizeCssAssetsPlugin) 需要install
+        new OptimizeCssAssetsPlugin({
+            assetNameRegExp: /\.css$/g,
+            cssProcessor: require('cssnano'),
+            cssProcessorPluginOptions: {
+              preset: ['default', { discardComments: { removeAll: true } }],
+            },
+            canPrint: true
+        }),
+        // 指定环境
+        new webpack.DefinePlugin({
+            'process.env.NODE_ENV': JSON.stringify('production')
+        }),
+        // 清理/dist 文件夹
+        new CleanWebpackPlugin(['dist']),
+    ],
+});
\ No newline at end of file

--
Gitblit v1.8.0