张恒

合并分支

正在显示 58 个修改的文件 包含 2168 行增加657 行删除
...@@ -5,7 +5,6 @@ process.env.NODE_ENV = 'production' ...@@ -5,7 +5,6 @@ process.env.NODE_ENV = 'production'
5 const { say } = require('cfonts') 5 const { say } = require('cfonts')
6 const chalk = require('chalk') 6 const chalk = require('chalk')
7 const del = require('del') 7 const del = require('del')
8 -const { spawn } = require('child_process')
9 const webpack = require('webpack') 8 const webpack = require('webpack')
10 const Multispinner = require('multispinner') 9 const Multispinner = require('multispinner')
11 10
...@@ -24,8 +23,8 @@ else if (process.env.BUILD_TARGET === 'web') web() ...@@ -24,8 +23,8 @@ else if (process.env.BUILD_TARGET === 'web') web()
24 else build() 23 else build()
25 24
26 function clean () { 25 function clean () {
27 - del.sync(['build/*', '!build/icons','!build/lib','!build/lib/electron-build.*', '!build/icons/icon.*']) 26 + del.sync(['dist/electron/*','build/*', '!build/icons','!build/lib','!build/lib/electron-build.*', '!build/icons/icon.*'])
28 - console.log(`\n${doneLog}\n`) 27 + console.log(`\n${doneLog}clear done`)
29 process.exit() 28 process.exit()
30 } 29 }
31 30
...@@ -117,8 +116,8 @@ function greeting () { ...@@ -117,8 +116,8 @@ function greeting () {
117 const cols = process.stdout.columns 116 const cols = process.stdout.columns
118 let text = '' 117 let text = ''
119 118
120 - if (cols > 85) text = 'lets-build' 119 + if (cols > 85) text = `let's-build`
121 - else if (cols > 60) text = 'lets-|build' 120 + else if (cols > 60) text = `let's-|build`
122 else text = false 121 else text = false
123 122
124 if (text && !isCI) { 123 if (text && !isCI) {
...@@ -127,6 +126,6 @@ function greeting () { ...@@ -127,6 +126,6 @@ function greeting () {
127 font: 'simple3d', 126 font: 'simple3d',
128 space: false 127 space: false
129 }) 128 })
130 - } else console.log(chalk.yellow.bold('\n lets-build')) 129 + } else console.log(chalk.yellow.bold(`\n let's-build`))
131 console.log() 130 console.log()
132 } 131 }
...\ No newline at end of file ...\ No newline at end of file
......
1 -const hotClient = require('webpack-hot-middleware/client?noInfo=true&reload=true')
2 -
3 -hotClient.subscribe(event => {
4 - /**
5 - * Reload browser when HTMLWebpackPlugin emits a new index.html
6 - *
7 - * Currently disabled until jantimon/html-webpack-plugin#680 is resolved.
8 - * https://github.com/SimulatedGREG/electron-vue/issues/437
9 - * https://github.com/jantimon/html-webpack-plugin/issues/680
10 - */
11 - // if (event.action === 'reload') {
12 - // window.location.reload()
13 - // }
14 -
15 - /**
16 - * Notify `mainWindow` when `main` process is compiling,
17 - * giving notice for an expected reload of the `electron` process
18 - */
19 - if (event.action === 'compiling') {
20 - document.body.innerHTML += `
21 - <style>
22 - #dev-client {
23 - background: #4fc08d;
24 - border-radius: 4px;
25 - bottom: 20px;
26 - box-shadow: 0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12), 0 2px 4px -1px rgba(0, 0, 0, 0.3);
27 - color: #fff;
28 - font-family: 'Source Sans Pro', sans-serif;
29 - left: 20px;
30 - padding: 8px 12px;
31 - position: absolute;
32 - }
33 - </style>
34 -
35 - <div id="dev-client">
36 - Compiling Main Process...
37 - </div>
38 - `
39 - }
40 -})
...@@ -9,6 +9,7 @@ const config = require('../config') ...@@ -9,6 +9,7 @@ const config = require('../config')
9 const webpack = require('webpack') 9 const webpack = require('webpack')
10 const WebpackDevServer = require('webpack-dev-server') 10 const WebpackDevServer = require('webpack-dev-server')
11 const webpackHotMiddleware = require('webpack-hot-middleware') 11 const webpackHotMiddleware = require('webpack-hot-middleware')
12 +const Portfinder = require("portfinder")
12 13
13 const mainConfig = require('./webpack.main.config') 14 const mainConfig = require('./webpack.main.config')
14 const rendererConfig = require('./webpack.renderer.config') 15 const rendererConfig = require('./webpack.renderer.config')
...@@ -20,7 +21,7 @@ let hotMiddleware ...@@ -20,7 +21,7 @@ let hotMiddleware
20 function logStats(proc, data) { 21 function logStats(proc, data) {
21 let log = '' 22 let log = ''
22 23
23 - log += chalk.yellow.bold(`┏ ${proc} Process ${new Array((19 - proc.length) + 1).join('-')}`) 24 + log += chalk.yellow.bold(`┏ ${proc} ${config.dev.chineseLog ? '编译过程' : 'Process'} ${new Array((19 - proc.length) + 1).join('-')}`)
24 log += '\n\n' 25 log += '\n\n'
25 26
26 if (typeof data === 'object') { 27 if (typeof data === 'object') {
...@@ -61,9 +62,13 @@ function removeJunk(chunk) { ...@@ -61,9 +62,13 @@ function removeJunk(chunk) {
61 } 62 }
62 63
63 function startRenderer() { 64 function startRenderer() {
64 - return new Promise((resolve) => { 65 + return new Promise((resolve, reject) => {
65 - rendererConfig.entry.renderer = [path.join(__dirname, 'dev-client')].concat(rendererConfig.entry.renderer)
66 rendererConfig.mode = 'development' 66 rendererConfig.mode = 'development'
67 + Portfinder.basePort = config.dev.port || 9080
68 + Portfinder.getPort((err, port) => {
69 + if (err) {
70 + reject("PortError:" + err)
71 + } else {
67 const compiler = webpack(rendererConfig) 72 const compiler = webpack(rendererConfig)
68 hotMiddleware = webpackHotMiddleware(compiler, { 73 hotMiddleware = webpackHotMiddleware(compiler, {
69 log: false, 74 log: false,
...@@ -72,7 +77,9 @@ function startRenderer() { ...@@ -72,7 +77,9 @@ function startRenderer() {
72 77
73 compiler.hooks.compilation.tap('compilation', compilation => { 78 compiler.hooks.compilation.tap('compilation', compilation => {
74 compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => { 79 compilation.hooks.htmlWebpackPluginAfterEmit.tapAsync('html-webpack-plugin-after-emit', (data, cb) => {
75 - hotMiddleware.publish({ action: 'reload' }) 80 + hotMiddleware.publish({
81 + action: 'reload'
82 + })
76 cb() 83 cb()
77 }) 84 })
78 }) 85 })
...@@ -82,8 +89,7 @@ function startRenderer() { ...@@ -82,8 +89,7 @@ function startRenderer() {
82 }) 89 })
83 90
84 const server = new WebpackDevServer( 91 const server = new WebpackDevServer(
85 - compiler, 92 + compiler, {
86 - {
87 contentBase: path.join(__dirname, '../'), 93 contentBase: path.join(__dirname, '../'),
88 quiet: true, 94 quiet: true,
89 before(app, ctx) { 95 before(app, ctx) {
...@@ -95,19 +101,25 @@ function startRenderer() { ...@@ -95,19 +101,25 @@ function startRenderer() {
95 } 101 }
96 ) 102 )
97 103
98 - server.listen(9080) 104 + process.env.PORT = port
105 + server.listen(port)
106 +
107 + }
108 + })
109 +
99 }) 110 })
100 } 111 }
101 112
102 function startMain() { 113 function startMain() {
103 return new Promise((resolve) => { 114 return new Promise((resolve) => {
104 - mainConfig.entry.main = [path.join(__dirname, '../src/main/index.dev.js')].concat(mainConfig.entry.main)
105 mainConfig.mode = 'development' 115 mainConfig.mode = 'development'
106 const compiler = webpack(mainConfig) 116 const compiler = webpack(mainConfig)
107 117
108 compiler.hooks.watchRun.tapAsync('watch-run', (compilation, done) => { 118 compiler.hooks.watchRun.tapAsync('watch-run', (compilation, done) => {
109 - logStats('Main', chalk.white.bold('compiling...')) 119 + logStats(`${config.dev.chineseLog ? '主进程' : 'Main'}`, chalk.white.bold(`${config.dev.chineseLog ? '正在处理资源文件...' : 'compiling...'}`))
110 - hotMiddleware.publish({ action: 'compiling' }) 120 + hotMiddleware.publish({
121 + action: 'compiling'
122 + })
111 done() 123 done()
112 }) 124 })
113 125
...@@ -117,7 +129,7 @@ function startMain() { ...@@ -117,7 +129,7 @@ function startMain() {
117 return 129 return
118 } 130 }
119 131
120 - logStats('Main', stats) 132 + logStats(`${config.dev.chineseLog ? '主进程' : 'Main'}`, stats)
121 133
122 if (electronProcess && electronProcess.kill) { 134 if (electronProcess && electronProcess.kill) {
123 manualRestart = true 135 manualRestart = true
...@@ -163,6 +175,7 @@ function startElectron() { ...@@ -163,6 +175,7 @@ function startElectron() {
163 } 175 }
164 176
165 function electronLog(data, color) { 177 function electronLog(data, color) {
178 + if (data) {
166 let log = '' 179 let log = ''
167 data = data.toString().split(/\r?\n/) 180 data = data.toString().split(/\r?\n/)
168 data.forEach(line => { 181 data.forEach(line => {
...@@ -170,13 +183,15 @@ function electronLog(data, color) { ...@@ -170,13 +183,15 @@ function electronLog(data, color) {
170 }) 183 })
171 if (/[0-9A-z]+/.test(log)) { 184 if (/[0-9A-z]+/.test(log)) {
172 console.log( 185 console.log(
173 - chalk[color].bold('┏ Electron -------------------') + 186 + chalk[color].bold(`┏ ${config.dev.chineseLog ? '主程序日志' : 'Electron'} -------------------`) +
174 '\n\n' + 187 '\n\n' +
175 log + 188 log +
176 chalk[color].bold('┗ ----------------------------') + 189 chalk[color].bold('┗ ----------------------------') +
177 '\n' 190 '\n'
178 ) 191 )
179 } 192 }
193 + }
194 +
180 } 195 }
181 196
182 function greeting() { 197 function greeting() {
...@@ -194,19 +209,20 @@ function greeting() { ...@@ -194,19 +209,20 @@ function greeting() {
194 space: false 209 space: false
195 }) 210 })
196 } else console.log(chalk.yellow.bold('\n electron-vue')) 211 } else console.log(chalk.yellow.bold('\n electron-vue'))
197 - console.log(chalk.blue(' getting ready......') + '\n') 212 + console.log(chalk.blue(`${config.dev.chineseLog ? ' 准备启动...' : ' getting ready...'}`) + '\n')
198 } 213 }
199 214
200 -function init() { 215 +async function init() {
201 greeting() 216 greeting()
202 217
203 - Promise.all([startRenderer(), startMain()]) 218 + try {
204 - .then(() => { 219 + await startRenderer()
205 - startElectron() 220 + await startMain()
206 - }) 221 + await startElectron()
207 - .catch(err => { 222 + } catch (error) {
208 - console.error(err) 223 + console.error(error)
209 - }) 224 + }
225 +
210 } 226 }
211 227
212 init() 228 init()
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -2,12 +2,13 @@ ...@@ -2,12 +2,13 @@
2 2
3 process.env.BABEL_ENV = 'main' 3 process.env.BABEL_ENV = 'main'
4 4
5 +const os = require('os')
5 const path = require('path') 6 const path = require('path')
6 const { dependencies } = require('../package.json') 7 const { dependencies } = require('../package.json')
7 const webpack = require('webpack') 8 const webpack = require('webpack')
8 - 9 +const MinifyPlugin = require("babel-minify-webpack-plugin");
9 -const BabiliWebpackPlugin = require('babili-webpack-plugin') 10 +const HappyPack = require('happypack')
10 -const { CleanWebpackPlugin } = require('clean-webpack-plugin') 11 +const HappyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
11 12
12 function resolve(dir) { 13 function resolve(dir) {
13 return path.join(__dirname, '..', dir) 14 return path.join(__dirname, '..', dir)
...@@ -35,7 +36,7 @@ let mainConfig = { ...@@ -35,7 +36,7 @@ let mainConfig = {
35 // }, 36 // },
36 { 37 {
37 test: /\.js$/, 38 test: /\.js$/,
38 - use: 'babel-loader', 39 + use: 'happypack/loader?id=MainHappyBabel',
39 exclude: /node_modules/ 40 exclude: /node_modules/
40 }, 41 },
41 { 42 {
...@@ -55,13 +56,22 @@ let mainConfig = { ...@@ -55,13 +56,22 @@ let mainConfig = {
55 }, 56 },
56 plugins: [ 57 plugins: [
57 new webpack.NoEmitOnErrorsPlugin(), 58 new webpack.NoEmitOnErrorsPlugin(),
58 - new CleanWebpackPlugin({ 59 + new HappyPack({
59 - cleanOnceBeforeBuildPatterns: resolve('dist/electron') 60 + id: "MainHappyBabel",
61 + loaders: [{
62 + loader: 'babel-loader',
63 + options: {
64 + cacheDirectory: true
65 + }
66 + }],
67 + threadPool: HappyThreadPool
60 }) 68 })
61 ], 69 ],
62 resolve: { 70 resolve: {
63 - 71 + alias: {
64 - extensions: ['.js', '.json', '.node'] 72 + '@config': resolve('config'),
73 + },
74 + extensions: ['.tsx', '.ts', '.js', '.json', '.node']
65 }, 75 },
66 target: 'electron-main' 76 target: 'electron-main'
67 } 77 }
...@@ -82,7 +92,7 @@ if (process.env.NODE_ENV !== 'production') { ...@@ -82,7 +92,7 @@ if (process.env.NODE_ENV !== 'production') {
82 */ 92 */
83 if (process.env.NODE_ENV === 'production') { 93 if (process.env.NODE_ENV === 'production') {
84 mainConfig.plugins.push( 94 mainConfig.plugins.push(
85 - new BabiliWebpackPlugin(), 95 + new MinifyPlugin(),
86 new webpack.DefinePlugin({ 96 new webpack.DefinePlugin({
87 'process.env.NODE_ENV': '"production"' 97 'process.env.NODE_ENV': '"production"'
88 }) 98 })
......
...@@ -2,17 +2,21 @@ ...@@ -2,17 +2,21 @@
2 2
3 process.env.BABEL_ENV = 'renderer' 3 process.env.BABEL_ENV = 'renderer'
4 4
5 +const os = require('os')
5 const path = require('path') 6 const path = require('path')
6 const { dependencies } = require('../package.json') 7 const { dependencies } = require('../package.json')
7 const webpack = require('webpack') 8 const webpack = require('webpack')
8 const config = require('../config') 9 const config = require('../config')
9 10
10 -const BabiliWebpackPlugin = require('babili-webpack-plugin') 11 +const MinifyPlugin = require("babel-minify-webpack-plugin");
11 const CopyWebpackPlugin = require('copy-webpack-plugin') 12 const CopyWebpackPlugin = require('copy-webpack-plugin')
12 const MiniCssExtractPlugin = require('mini-css-extract-plugin') 13 const MiniCssExtractPlugin = require('mini-css-extract-plugin')
13 const HtmlWebpackPlugin = require('html-webpack-plugin') 14 const HtmlWebpackPlugin = require('html-webpack-plugin')
14 const TerserPlugin = require('terser-webpack-plugin'); 15 const TerserPlugin = require('terser-webpack-plugin');
16 +const HardSourceWebpackPlugin = require('hard-source-webpack-plugin');
15 const { VueLoaderPlugin } = require('vue-loader') 17 const { VueLoaderPlugin } = require('vue-loader')
18 +const HappyPack = require('happypack')
19 +const HappyThreadPool = HappyPack.ThreadPool({ size: os.cpus().length })
16 20
17 function resolve(dir) { 21 function resolve(dir) {
18 return path.join(__dirname, '..', dir) 22 return path.join(__dirname, '..', dir)
...@@ -24,7 +28,7 @@ function resolve(dir) { ...@@ -24,7 +28,7 @@ function resolve(dir) {
24 * that provide pure *.vue files that need compiling 28 * that provide pure *.vue files that need compiling
25 * https://simulatedgreg.gitbooks.io/electron-vue/content/en/webpack-configurations.html#white-listing-externals 29 * https://simulatedgreg.gitbooks.io/electron-vue/content/en/webpack-configurations.html#white-listing-externals
26 */ 30 */
27 -let whiteListedModules = ['vue', 'element-ui'] 31 +let whiteListedModules = ['vue', "element-ui"]
28 32
29 let rendererConfig = { 33 let rendererConfig = {
30 devtool: '#cheap-module-eval-source-map', 34 devtool: '#cheap-module-eval-source-map',
...@@ -69,7 +73,7 @@ let rendererConfig = { ...@@ -69,7 +73,7 @@ let rendererConfig = {
69 }, 73 },
70 { 74 {
71 test: /\.js$/, 75 test: /\.js$/,
72 - use: 'babel-loader', 76 + use: 'happypack/loader?id=HappyRendererBabel',
73 exclude: /node_modules/ 77 exclude: /node_modules/
74 }, 78 },
75 { 79 {
...@@ -104,8 +108,8 @@ let rendererConfig = { ...@@ -104,8 +108,8 @@ let rendererConfig = {
104 use: { 108 use: {
105 loader: 'url-loader', 109 loader: 'url-loader',
106 query: { 110 query: {
107 - limit: 10000,
108 esModule: false, 111 esModule: false,
112 + limit: 10000,
109 name: 'imgs/[name]--[folder].[ext]' 113 name: 'imgs/[name]--[folder].[ext]'
110 } 114 }
111 }, 115 },
...@@ -114,8 +118,8 @@ let rendererConfig = { ...@@ -114,8 +118,8 @@ let rendererConfig = {
114 test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/, 118 test: /\.(mp4|webm|ogg|mp3|wav|flac|aac)(\?.*)?$/,
115 loader: 'url-loader', 119 loader: 'url-loader',
116 options: { 120 options: {
117 - limit: 10000,
118 esModule: false, 121 esModule: false,
122 + limit: 10000,
119 name: 'media/[name]--[folder].[ext]' 123 name: 'media/[name]--[folder].[ext]'
120 } 124 }
121 }, 125 },
...@@ -124,8 +128,8 @@ let rendererConfig = { ...@@ -124,8 +128,8 @@ let rendererConfig = {
124 use: { 128 use: {
125 loader: 'url-loader', 129 loader: 'url-loader',
126 query: { 130 query: {
127 - limit: 10000,
128 esModule: false, 131 esModule: false,
132 + limit: 10000,
129 name: 'fonts/[name]--[folder].[ext]' 133 name: 'fonts/[name]--[folder].[ext]'
130 } 134 }
131 } 135 }
...@@ -167,7 +171,18 @@ let rendererConfig = { ...@@ -167,7 +171,18 @@ let rendererConfig = {
167 nodeModules: false 171 nodeModules: false
168 }), 172 }),
169 new webpack.HotModuleReplacementPlugin(), 173 new webpack.HotModuleReplacementPlugin(),
170 - new webpack.NoEmitOnErrorsPlugin() 174 + new webpack.NoEmitOnErrorsPlugin(),
175 + new HardSourceWebpackPlugin(),
176 + new HappyPack({
177 + id: 'HappyRendererBabel',
178 + loaders: [{
179 + loader: 'babel-loader',
180 + options: {
181 + cacheDirectory: true
182 + }
183 + }],
184 + threadPool: HappyThreadPool
185 + }),
171 ], 186 ],
172 output: { 187 output: {
173 filename: '[name].js', 188 filename: '[name].js',
...@@ -190,7 +205,8 @@ let rendererConfig = { ...@@ -190,7 +205,8 @@ let rendererConfig = {
190 if (process.env.NODE_ENV !== 'production') { 205 if (process.env.NODE_ENV !== 'production') {
191 rendererConfig.plugins.push( 206 rendererConfig.plugins.push(
192 new webpack.DefinePlugin({ 207 new webpack.DefinePlugin({
193 - '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"` 208 + '__static': `"${path.join(__dirname, '../static').replace(/\\/g, '\\\\')}"`,
209 + '__lib': `"${path.join(__dirname, `../${config.DllFolder}`).replace(/\\/g, '\\\\')}"`
194 }) 210 })
195 ) 211 )
196 } 212 }
...@@ -202,7 +218,7 @@ if (process.env.NODE_ENV === 'production') { ...@@ -202,7 +218,7 @@ if (process.env.NODE_ENV === 'production') {
202 rendererConfig.devtool = '' 218 rendererConfig.devtool = ''
203 219
204 rendererConfig.plugins.push( 220 rendererConfig.plugins.push(
205 - new BabiliWebpackPlugin(), 221 + new MinifyPlugin(),
206 new CopyWebpackPlugin([ 222 new CopyWebpackPlugin([
207 { 223 {
208 from: path.join(__dirname, '../static'), 224 from: path.join(__dirname, '../static'),
......
...@@ -5,7 +5,7 @@ process.env.BABEL_ENV = 'web' ...@@ -5,7 +5,7 @@ process.env.BABEL_ENV = 'web'
5 const path = require('path') 5 const path = require('path')
6 const webpack = require('webpack') 6 const webpack = require('webpack')
7 7
8 -const BabiliWebpackPlugin = require('babili-webpack-plugin') 8 +const MinifyPlugin = require("babel-minify-webpack-plugin");
9 const CopyWebpackPlugin = require('copy-webpack-plugin') 9 const CopyWebpackPlugin = require('copy-webpack-plugin')
10 const MiniCssExtractPlugin = require('mini-css-extract-plugin') 10 const MiniCssExtractPlugin = require('mini-css-extract-plugin')
11 const HtmlWebpackPlugin = require('html-webpack-plugin') 11 const HtmlWebpackPlugin = require('html-webpack-plugin')
...@@ -144,7 +144,7 @@ if (process.env.NODE_ENV === 'production') { ...@@ -144,7 +144,7 @@ if (process.env.NODE_ENV === 'production') {
144 webConfig.devtool = '' 144 webConfig.devtool = ''
145 145
146 webConfig.plugins.push( 146 webConfig.plugins.push(
147 - new BabiliWebpackPlugin(), 147 + new MinifyPlugin(),
148 new CopyWebpackPlugin([ 148 new CopyWebpackPlugin([
149 { 149 {
150 from: path.join(__dirname, '../static'), 150 from: path.join(__dirname, '../static'),
......
1 module.exports = { 1 module.exports = {
2 NODE_ENV: '"development"', 2 NODE_ENV: '"development"',
3 - BASE_API: '""' 3 + BASE_API: '"http://127.0.0.1:25565"'
4 } 4 }
......
1 module.exports = { 1 module.exports = {
2 build: { 2 build: {
3 - env: require('./prod.env') 3 + env: require('./prod.env'),
4 + DisableF12: true
4 }, 5 },
5 dev: { 6 dev: {
6 env: require('./dev.env'), 7 env: require('./dev.env'),
7 - removeElectronJunk: true 8 + removeElectronJunk: true,
8 - } 9 + chineseLog: false,
10 + port: 9080
11 + },
12 + UseStartupChart: true,
13 + IsUseSysTitle: true,
14 + DllFolder: '',
15 + BuiltInServerPort: 25565
9 } 16 }
......
1 module.exports = { 1 module.exports = {
2 NODE_ENV: '"production"', 2 NODE_ENV: '"production"',
3 - BASE_API: '""' 3 + BASE_API: '"http://127.0.0.1:25565"'
4 } 4 }
......
...@@ -358,8 +358,15 @@ ...@@ -358,8 +358,15 @@
358 "@types/node": { 358 "@types/node": {
359 "version": "12.12.17", 359 "version": "12.12.17",
360 "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.12.17.tgz?cache=0&sync_timestamp=1576005759515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.12.17.tgz", 360 "resolved": "https://registry.npm.taobao.org/@types/node/download/@types/node-12.12.17.tgz?cache=0&sync_timestamp=1576005759515&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fnode%2Fdownload%2F%40types%2Fnode-12.12.17.tgz",
361 - "integrity": "sha1-GRtx5/TDJe4PsjvEqZZHfZK4w5s=", 361 + "integrity": "sha1-GRtx5/TDJe4PsjvEqZZHfZK4w5s="
362 - "dev": true 362 + },
363 + "@types/semver": {
364 + "version": "7.1.0",
365 + "resolved": "https://registry.npm.taobao.org/@types/semver/download/@types/semver-7.1.0.tgz?cache=0&sync_timestamp=1580871311074&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40types%2Fsemver%2Fdownload%2F%40types%2Fsemver-7.1.0.tgz",
366 + "integrity": "sha1-yMYw1MGM0ya+/3dASIdZb5ZAhAg=",
367 + "requires": {
368 + "@types/node": "*"
369 + }
363 }, 370 },
364 "@types/source-list-map": { 371 "@types/source-list-map": {
365 "version": "0.1.2", 372 "version": "0.1.2",
...@@ -684,7 +691,6 @@ ...@@ -684,7 +691,6 @@
684 "version": "1.3.7", 691 "version": "1.3.7",
685 "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz", 692 "resolved": "https://registry.npm.taobao.org/accepts/download/accepts-1.3.7.tgz",
686 "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=", 693 "integrity": "sha1-UxvHJlF6OytB+FACHGzBXqq1B80=",
687 - "dev": true,
688 "requires": { 694 "requires": {
689 "mime-types": "~2.1.24", 695 "mime-types": "~2.1.24",
690 "negotiator": "0.6.2" 696 "negotiator": "0.6.2"
...@@ -1341,7 +1347,6 @@ ...@@ -1341,7 +1347,6 @@
1341 "version": "1.0.10", 1347 "version": "1.0.10",
1342 "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz", 1348 "resolved": "https://registry.npm.taobao.org/argparse/download/argparse-1.0.10.tgz",
1343 "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=", 1349 "integrity": "sha1-vNZ5HqWuCXJeF+WtmIE0zUCz2RE=",
1344 - "dev": true,
1345 "requires": { 1350 "requires": {
1346 "sprintf-js": "~1.0.2" 1351 "sprintf-js": "~1.0.2"
1347 } 1352 }
...@@ -1955,6 +1960,17 @@ ...@@ -1955,6 +1960,17 @@
1955 "babel-runtime": "^6.22.0" 1960 "babel-runtime": "^6.22.0"
1956 } 1961 }
1957 }, 1962 },
1963 + "babel-minify-webpack-plugin": {
1964 + "version": "0.3.1",
1965 + "resolved": "https://registry.npm.taobao.org/babel-minify-webpack-plugin/download/babel-minify-webpack-plugin-0.3.1.tgz",
1966 + "integrity": "sha1-KSqiQK8ZDi3K309oTW2E0Xm21aQ=",
1967 + "dev": true,
1968 + "requires": {
1969 + "babel-core": "^6.26.0",
1970 + "babel-preset-minify": "^0.3.0",
1971 + "webpack-sources": "^1.0.1"
1972 + }
1973 + },
1958 "babel-plugin-check-es2015-constants": { 1974 "babel-plugin-check-es2015-constants": {
1959 "version": "6.22.0", 1975 "version": "6.22.0",
1960 "resolved": "https://registry.npm.taobao.org/babel-plugin-check-es2015-constants/download/babel-plugin-check-es2015-constants-6.22.0.tgz", 1976 "resolved": "https://registry.npm.taobao.org/babel-plugin-check-es2015-constants/download/babel-plugin-check-es2015-constants-6.22.0.tgz",
...@@ -2702,6 +2718,191 @@ ...@@ -2702,6 +2718,191 @@
2702 "semver": "^5.3.0" 2718 "semver": "^5.3.0"
2703 } 2719 }
2704 }, 2720 },
2721 + "babel-preset-minify": {
2722 + "version": "0.3.0",
2723 + "resolved": "https://registry.npm.taobao.org/babel-preset-minify/download/babel-preset-minify-0.3.0.tgz",
2724 + "integrity": "sha1-fbZK+nXxb24GwKpfJRlfbzZ4TXc=",
2725 + "dev": true,
2726 + "requires": {
2727 + "babel-plugin-minify-builtins": "^0.3.0",
2728 + "babel-plugin-minify-constant-folding": "^0.3.0",
2729 + "babel-plugin-minify-dead-code-elimination": "^0.3.0",
2730 + "babel-plugin-minify-flip-comparisons": "^0.3.0",
2731 + "babel-plugin-minify-guarded-expressions": "^0.3.0",
2732 + "babel-plugin-minify-infinity": "^0.3.0",
2733 + "babel-plugin-minify-mangle-names": "^0.3.0",
2734 + "babel-plugin-minify-numeric-literals": "^0.3.0",
2735 + "babel-plugin-minify-replace": "^0.3.0",
2736 + "babel-plugin-minify-simplify": "^0.3.0",
2737 + "babel-plugin-minify-type-constructors": "^0.3.0",
2738 + "babel-plugin-transform-inline-consecutive-adds": "^0.3.0",
2739 + "babel-plugin-transform-member-expression-literals": "^6.9.0",
2740 + "babel-plugin-transform-merge-sibling-variables": "^6.9.0",
2741 + "babel-plugin-transform-minify-booleans": "^6.9.0",
2742 + "babel-plugin-transform-property-literals": "^6.9.0",
2743 + "babel-plugin-transform-regexp-constructors": "^0.3.0",
2744 + "babel-plugin-transform-remove-console": "^6.9.0",
2745 + "babel-plugin-transform-remove-debugger": "^6.9.0",
2746 + "babel-plugin-transform-remove-undefined": "^0.3.0",
2747 + "babel-plugin-transform-simplify-comparison-operators": "^6.9.0",
2748 + "babel-plugin-transform-undefined-to-void": "^6.9.0",
2749 + "lodash.isplainobject": "^4.0.6"
2750 + },
2751 + "dependencies": {
2752 + "babel-helper-evaluate-path": {
2753 + "version": "0.3.0",
2754 + "resolved": "https://registry.npm.taobao.org/babel-helper-evaluate-path/download/babel-helper-evaluate-path-0.3.0.tgz",
2755 + "integrity": "sha1-JDlUXgturlt/SbeQrL69a5pz3yA=",
2756 + "dev": true
2757 + },
2758 + "babel-helper-flip-expressions": {
2759 + "version": "0.3.0",
2760 + "resolved": "https://registry.npm.taobao.org/babel-helper-flip-expressions/download/babel-helper-flip-expressions-0.3.0.tgz",
2761 + "integrity": "sha1-9bY5S9Uhm0PPj3sgFTXtVAxuf6I=",
2762 + "dev": true
2763 + },
2764 + "babel-helper-is-void-0": {
2765 + "version": "0.3.0",
2766 + "resolved": "https://registry.npm.taobao.org/babel-helper-is-void-0/download/babel-helper-is-void-0-0.3.0.tgz",
2767 + "integrity": "sha1-lVcNIL0nsiBvaAg66ZgO5wA9j+c=",
2768 + "dev": true
2769 + },
2770 + "babel-helper-mark-eval-scopes": {
2771 + "version": "0.3.0",
2772 + "resolved": "https://registry.npm.taobao.org/babel-helper-mark-eval-scopes/download/babel-helper-mark-eval-scopes-0.3.0.tgz",
2773 + "integrity": "sha1-tHMTFP3XqJCRJxpSE7ThLSNuKeg=",
2774 + "dev": true
2775 + },
2776 + "babel-helper-remove-or-void": {
2777 + "version": "0.3.0",
2778 + "resolved": "https://registry.npm.taobao.org/babel-helper-remove-or-void/download/babel-helper-remove-or-void-0.3.0.tgz",
2779 + "integrity": "sha1-9DyGFHyPzDlalSjLsx5/9J1+FuM=",
2780 + "dev": true
2781 + },
2782 + "babel-helper-to-multiple-sequence-expressions": {
2783 + "version": "0.3.0",
2784 + "resolved": "https://registry.npm.taobao.org/babel-helper-to-multiple-sequence-expressions/download/babel-helper-to-multiple-sequence-expressions-0.3.0.tgz",
2785 + "integrity": "sha1-jaInXMwmmVVmEY9yE6v9mvchRCc=",
2786 + "dev": true
2787 + },
2788 + "babel-plugin-minify-builtins": {
2789 + "version": "0.3.0",
2790 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-builtins/download/babel-plugin-minify-builtins-0.3.0.tgz",
2791 + "integrity": "sha1-R0ARemp4QGOq+PCSmJz55L1ISGA=",
2792 + "dev": true,
2793 + "requires": {
2794 + "babel-helper-evaluate-path": "^0.3.0"
2795 + }
2796 + },
2797 + "babel-plugin-minify-constant-folding": {
2798 + "version": "0.3.0",
2799 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-constant-folding/download/babel-plugin-minify-constant-folding-0.3.0.tgz",
2800 + "integrity": "sha1-aH5AM2vU3dkh4OGX8ABiNawYS7k=",
2801 + "dev": true,
2802 + "requires": {
2803 + "babel-helper-evaluate-path": "^0.3.0"
2804 + }
2805 + },
2806 + "babel-plugin-minify-dead-code-elimination": {
2807 + "version": "0.3.0",
2808 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-dead-code-elimination/download/babel-plugin-minify-dead-code-elimination-0.3.0.tgz",
2809 + "integrity": "sha1-oyP2hsQEuCQYa6VYPPeZbKyBcZ4=",
2810 + "dev": true,
2811 + "requires": {
2812 + "babel-helper-evaluate-path": "^0.3.0",
2813 + "babel-helper-mark-eval-scopes": "^0.3.0",
2814 + "babel-helper-remove-or-void": "^0.3.0",
2815 + "lodash.some": "^4.6.0"
2816 + }
2817 + },
2818 + "babel-plugin-minify-flip-comparisons": {
2819 + "version": "0.3.0",
2820 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-flip-comparisons/download/babel-plugin-minify-flip-comparisons-0.3.0.tgz",
2821 + "integrity": "sha1-ZieJOkCcnzDvfyyJ4Mbup+6X3cQ=",
2822 + "dev": true,
2823 + "requires": {
2824 + "babel-helper-is-void-0": "^0.3.0"
2825 + }
2826 + },
2827 + "babel-plugin-minify-guarded-expressions": {
2828 + "version": "0.3.0",
2829 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-guarded-expressions/download/babel-plugin-minify-guarded-expressions-0.3.0.tgz",
2830 + "integrity": "sha1-JVLZYYnvRdmkY/GmteT6EQcDrI0=",
2831 + "dev": true,
2832 + "requires": {
2833 + "babel-helper-flip-expressions": "^0.3.0"
2834 + }
2835 + },
2836 + "babel-plugin-minify-infinity": {
2837 + "version": "0.3.0",
2838 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-infinity/download/babel-plugin-minify-infinity-0.3.0.tgz",
2839 + "integrity": "sha1-xewO3UM1F88xs68XB3wgK+tIu+c=",
2840 + "dev": true
2841 + },
2842 + "babel-plugin-minify-mangle-names": {
2843 + "version": "0.3.0",
2844 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-mangle-names/download/babel-plugin-minify-mangle-names-0.3.0.tgz",
2845 + "integrity": "sha1-8oVhutDdLwOAgWgWu5RuIZs7YTU=",
2846 + "dev": true,
2847 + "requires": {
2848 + "babel-helper-mark-eval-scopes": "^0.3.0"
2849 + }
2850 + },
2851 + "babel-plugin-minify-numeric-literals": {
2852 + "version": "0.3.0",
2853 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-numeric-literals/download/babel-plugin-minify-numeric-literals-0.3.0.tgz",
2854 + "integrity": "sha1-tXc0phLopZIAVAcyPDIRGfJ9S0A=",
2855 + "dev": true
2856 + },
2857 + "babel-plugin-minify-replace": {
2858 + "version": "0.3.0",
2859 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-replace/download/babel-plugin-minify-replace-0.3.0.tgz",
2860 + "integrity": "sha1-mAElu/fLtaY3Q53p0LGwMKRpOJM=",
2861 + "dev": true
2862 + },
2863 + "babel-plugin-minify-simplify": {
2864 + "version": "0.3.0",
2865 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-simplify/download/babel-plugin-minify-simplify-0.3.0.tgz",
2866 + "integrity": "sha1-FFdMx00hyB0wYPr6BBAQAoGJ8Rs=",
2867 + "dev": true,
2868 + "requires": {
2869 + "babel-helper-flip-expressions": "^0.3.0",
2870 + "babel-helper-is-nodes-equiv": "^0.0.1",
2871 + "babel-helper-to-multiple-sequence-expressions": "^0.3.0"
2872 + }
2873 + },
2874 + "babel-plugin-minify-type-constructors": {
2875 + "version": "0.3.0",
2876 + "resolved": "https://registry.npm.taobao.org/babel-plugin-minify-type-constructors/download/babel-plugin-minify-type-constructors-0.3.0.tgz",
2877 + "integrity": "sha1-f1qG7zIsR0Y2TjxZG4UU7q/qatQ=",
2878 + "dev": true,
2879 + "requires": {
2880 + "babel-helper-is-void-0": "^0.3.0"
2881 + }
2882 + },
2883 + "babel-plugin-transform-inline-consecutive-adds": {
2884 + "version": "0.3.0",
2885 + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-inline-consecutive-adds/download/babel-plugin-transform-inline-consecutive-adds-0.3.0.tgz",
2886 + "integrity": "sha1-8H2TaJwAAu0rK2KWm92Z9zTgP1c=",
2887 + "dev": true
2888 + },
2889 + "babel-plugin-transform-regexp-constructors": {
2890 + "version": "0.3.0",
2891 + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-regexp-constructors/download/babel-plugin-transform-regexp-constructors-0.3.0.tgz",
2892 + "integrity": "sha1-m7LI3QgicaXLGzpEGnxS6P0H4PU=",
2893 + "dev": true
2894 + },
2895 + "babel-plugin-transform-remove-undefined": {
2896 + "version": "0.3.0",
2897 + "resolved": "https://registry.npm.taobao.org/babel-plugin-transform-remove-undefined/download/babel-plugin-transform-remove-undefined-0.3.0.tgz",
2898 + "integrity": "sha1-A/XwBxhneB6b6rvHt3v4CV/T8+w=",
2899 + "dev": true,
2900 + "requires": {
2901 + "babel-helper-evaluate-path": "^0.3.0"
2902 + }
2903 + }
2904 + }
2905 + },
2705 "babel-preset-stage-0": { 2906 "babel-preset-stage-0": {
2706 "version": "6.24.1", 2907 "version": "6.24.1",
2707 "resolved": "https://registry.npm.taobao.org/babel-preset-stage-0/download/babel-preset-stage-0-6.24.1.tgz", 2908 "resolved": "https://registry.npm.taobao.org/babel-preset-stage-0/download/babel-preset-stage-0-6.24.1.tgz",
...@@ -3051,7 +3252,6 @@ ...@@ -3051,7 +3252,6 @@
3051 "version": "1.19.0", 3252 "version": "1.19.0",
3052 "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz", 3253 "resolved": "https://registry.npm.taobao.org/body-parser/download/body-parser-1.19.0.tgz",
3053 "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=", 3254 "integrity": "sha1-lrJwnlfJxOCab9Zqj9l5hE9p8Io=",
3054 - "dev": true,
3055 "requires": { 3255 "requires": {
3056 "bytes": "3.1.0", 3256 "bytes": "3.1.0",
3057 "content-type": "~1.0.4", 3257 "content-type": "~1.0.4",
...@@ -3069,7 +3269,6 @@ ...@@ -3069,7 +3269,6 @@
3069 "version": "2.6.9", 3269 "version": "2.6.9",
3070 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", 3270 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
3071 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 3271 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
3072 - "dev": true,
3073 "requires": { 3272 "requires": {
3074 "ms": "2.0.0" 3273 "ms": "2.0.0"
3075 } 3274 }
...@@ -3078,7 +3277,6 @@ ...@@ -3078,7 +3277,6 @@
3078 "version": "0.4.24", 3277 "version": "0.4.24",
3079 "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz", 3278 "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz",
3080 "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", 3279 "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
3081 - "dev": true,
3082 "requires": { 3280 "requires": {
3083 "safer-buffer": ">= 2.1.2 < 3" 3281 "safer-buffer": ">= 2.1.2 < 3"
3084 } 3282 }
...@@ -3086,8 +3284,7 @@ ...@@ -3086,8 +3284,7 @@
3086 "qs": { 3284 "qs": {
3087 "version": "6.7.0", 3285 "version": "6.7.0",
3088 "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", 3286 "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz",
3089 - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", 3287 + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw="
3090 - "dev": true
3091 } 3288 }
3092 } 3289 }
3093 }, 3290 },
...@@ -3558,7 +3755,6 @@ ...@@ -3558,7 +3755,6 @@
3558 "version": "8.6.2", 3755 "version": "8.6.2",
3559 "resolved": "https://registry.npm.taobao.org/builder-util-runtime/download/builder-util-runtime-8.6.2.tgz", 3756 "resolved": "https://registry.npm.taobao.org/builder-util-runtime/download/builder-util-runtime-8.6.2.tgz",
3560 "integrity": "sha1-gnDhWwEtjTsRDz4yew/YsOB7FoY=", 3757 "integrity": "sha1-gnDhWwEtjTsRDz4yew/YsOB7FoY=",
3561 - "dev": true,
3562 "requires": { 3758 "requires": {
3563 "debug": "^4.1.1", 3759 "debug": "^4.1.1",
3564 "sax": "^1.2.4" 3760 "sax": "^1.2.4"
...@@ -3568,7 +3764,6 @@ ...@@ -3568,7 +3764,6 @@
3568 "version": "4.1.1", 3764 "version": "4.1.1",
3569 "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz", 3765 "resolved": "https://registry.npm.taobao.org/debug/download/debug-4.1.1.tgz",
3570 "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=", 3766 "integrity": "sha1-O3ImAlUQnGtYnO4FDx1RYTlmR5E=",
3571 - "dev": true,
3572 "requires": { 3767 "requires": {
3573 "ms": "^2.1.1" 3768 "ms": "^2.1.1"
3574 } 3769 }
...@@ -3576,8 +3771,7 @@ ...@@ -3576,8 +3771,7 @@
3576 "ms": { 3771 "ms": {
3577 "version": "2.1.2", 3772 "version": "2.1.2",
3578 "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz", 3773 "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.2.tgz",
3579 - "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=", 3774 + "integrity": "sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk="
3580 - "dev": true
3581 } 3775 }
3582 } 3776 }
3583 }, 3777 },
...@@ -3615,8 +3809,7 @@ ...@@ -3615,8 +3809,7 @@
3615 "bytes": { 3809 "bytes": {
3616 "version": "3.1.0", 3810 "version": "3.1.0",
3617 "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz", 3811 "resolved": "https://registry.npm.taobao.org/bytes/download/bytes-3.1.0.tgz",
3618 - "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY=", 3812 + "integrity": "sha1-9s95M6Ng4FiPqf3oVlHNx/gF0fY="
3619 - "dev": true
3620 }, 3813 },
3621 "cacache": { 3814 "cacache": {
3622 "version": "12.0.3", 3815 "version": "12.0.3",
...@@ -4693,7 +4886,6 @@ ...@@ -4693,7 +4886,6 @@
4693 "version": "0.5.3", 4886 "version": "0.5.3",
4694 "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz", 4887 "resolved": "https://registry.npm.taobao.org/content-disposition/download/content-disposition-0.5.3.tgz",
4695 "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=", 4888 "integrity": "sha1-4TDK9+cnkIfFYWwgB9BIVpiYT70=",
4696 - "dev": true,
4697 "requires": { 4889 "requires": {
4698 "safe-buffer": "5.1.2" 4890 "safe-buffer": "5.1.2"
4699 } 4891 }
...@@ -4701,8 +4893,7 @@ ...@@ -4701,8 +4893,7 @@
4701 "content-type": { 4893 "content-type": {
4702 "version": "1.0.4", 4894 "version": "1.0.4",
4703 "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz", 4895 "resolved": "https://registry.npm.taobao.org/content-type/download/content-type-1.0.4.tgz",
4704 - "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js=", 4896 + "integrity": "sha1-4TjMdeBAxyexlm/l5fjJruJW/js="
4705 - "dev": true
4706 }, 4897 },
4707 "convert-source-map": { 4898 "convert-source-map": {
4708 "version": "1.7.0", 4899 "version": "1.7.0",
...@@ -4722,8 +4913,7 @@ ...@@ -4722,8 +4913,7 @@
4722 "cookie-signature": { 4913 "cookie-signature": {
4723 "version": "1.0.6", 4914 "version": "1.0.6",
4724 "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz", 4915 "resolved": "https://registry.npm.taobao.org/cookie-signature/download/cookie-signature-1.0.6.tgz",
4725 - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", 4916 + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw="
4726 - "dev": true
4727 }, 4917 },
4728 "copy-concurrently": { 4918 "copy-concurrently": {
4729 "version": "1.0.5", 4919 "version": "1.0.5",
...@@ -5552,8 +5742,7 @@ ...@@ -5552,8 +5742,7 @@
5552 "depd": { 5742 "depd": {
5553 "version": "1.1.2", 5743 "version": "1.1.2",
5554 "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz", 5744 "resolved": "https://registry.npm.taobao.org/depd/download/depd-1.1.2.tgz",
5555 - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", 5745 + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak="
5556 - "dev": true
5557 }, 5746 },
5558 "des.js": { 5747 "des.js": {
5559 "version": "1.0.1", 5748 "version": "1.0.1",
...@@ -5568,8 +5757,7 @@ ...@@ -5568,8 +5757,7 @@
5568 "destroy": { 5757 "destroy": {
5569 "version": "1.0.4", 5758 "version": "1.0.4",
5570 "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz", 5759 "resolved": "https://registry.npm.taobao.org/destroy/download/destroy-1.0.4.tgz",
5571 - "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", 5760 + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA="
5572 - "dev": true
5573 }, 5761 },
5574 "detect-file": { 5762 "detect-file": {
5575 "version": "1.0.0", 5763 "version": "1.0.0",
...@@ -5863,8 +6051,7 @@ ...@@ -5863,8 +6051,7 @@
5863 "ee-first": { 6051 "ee-first": {
5864 "version": "1.1.1", 6052 "version": "1.1.1",
5865 "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz", 6053 "resolved": "https://registry.npm.taobao.org/ee-first/download/ee-first-1.1.1.tgz",
5866 - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", 6054 + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0="
5867 - "dev": true
5868 }, 6055 },
5869 "ejs": { 6056 "ejs": {
5870 "version": "3.0.2", 6057 "version": "3.0.2",
...@@ -6175,6 +6362,38 @@ ...@@ -6175,6 +6362,38 @@
6175 "integrity": "sha1-pvfhx5AlwrBYOOjjRPbonrgyE6g=", 6362 "integrity": "sha1-pvfhx5AlwrBYOOjjRPbonrgyE6g=",
6176 "dev": true 6363 "dev": true
6177 }, 6364 },
6365 + "electron-updater": {
6366 + "version": "4.2.5",
6367 + "resolved": "https://registry.npm.taobao.org/electron-updater/download/electron-updater-4.2.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Felectron-updater%2Fdownload%2Felectron-updater-4.2.5.tgz",
6368 + "integrity": "sha1-287Y2m+Mb8LcZi8ndhMfWknOAY0=",
6369 + "requires": {
6370 + "@types/semver": "^7.1.0",
6371 + "builder-util-runtime": "8.6.2",
6372 + "fs-extra": "^8.1.0",
6373 + "js-yaml": "^3.13.1",
6374 + "lazy-val": "^1.0.4",
6375 + "lodash.isequal": "^4.5.0",
6376 + "pako": "^1.0.11",
6377 + "semver": "^7.1.3"
6378 + },
6379 + "dependencies": {
6380 + "fs-extra": {
6381 + "version": "8.1.0",
6382 + "resolved": "https://registry.npm.taobao.org/fs-extra/download/fs-extra-8.1.0.tgz",
6383 + "integrity": "sha1-SdQ8RaiM2Wd2aMt74bRu/bjS4cA=",
6384 + "requires": {
6385 + "graceful-fs": "^4.2.0",
6386 + "jsonfile": "^4.0.0",
6387 + "universalify": "^0.1.0"
6388 + }
6389 + },
6390 + "semver": {
6391 + "version": "7.2.2",
6392 + "resolved": "https://registry.npm.taobao.org/semver/download/semver-7.2.2.tgz?cache=0&sync_timestamp=1586534511518&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsemver%2Fdownload%2Fsemver-7.2.2.tgz",
6393 + "integrity": "sha1-0BQy107TAQog/6+QnWOmkVIFIc0="
6394 + }
6395 + }
6396 + },
6178 "element-ui": { 6397 "element-ui": {
6179 "version": "2.13.0", 6398 "version": "2.13.0",
6180 "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.13.0.tgz", 6399 "resolved": "https://registry.npm.taobao.org/element-ui/download/element-ui-2.13.0.tgz",
...@@ -6218,8 +6437,7 @@ ...@@ -6218,8 +6437,7 @@
6218 "encodeurl": { 6437 "encodeurl": {
6219 "version": "1.0.2", 6438 "version": "1.0.2",
6220 "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz", 6439 "resolved": "https://registry.npm.taobao.org/encodeurl/download/encodeurl-1.0.2.tgz",
6221 - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", 6440 + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k="
6222 - "dev": true
6223 }, 6441 },
6224 "end-of-stream": { 6442 "end-of-stream": {
6225 "version": "1.4.4", 6443 "version": "1.4.4",
...@@ -6454,8 +6672,7 @@ ...@@ -6454,8 +6672,7 @@
6454 "escape-html": { 6672 "escape-html": {
6455 "version": "1.0.3", 6673 "version": "1.0.3",
6456 "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz", 6674 "resolved": "https://registry.npm.taobao.org/escape-html/download/escape-html-1.0.3.tgz",
6457 - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", 6675 + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg="
6458 - "dev": true
6459 }, 6676 },
6460 "escape-string-regexp": { 6677 "escape-string-regexp": {
6461 "version": "1.0.5", 6678 "version": "1.0.5",
...@@ -6950,8 +7167,7 @@ ...@@ -6950,8 +7167,7 @@
6950 "esprima": { 7167 "esprima": {
6951 "version": "4.0.1", 7168 "version": "4.0.1",
6952 "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz", 7169 "resolved": "https://registry.npm.taobao.org/esprima/download/esprima-4.0.1.tgz",
6953 - "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE=", 7170 + "integrity": "sha1-E7BM2z5sXRnfkatph6hpVhmwqnE="
6954 - "dev": true
6955 }, 7171 },
6956 "esquery": { 7172 "esquery": {
6957 "version": "1.0.1", 7173 "version": "1.0.1",
...@@ -6986,8 +7202,7 @@ ...@@ -6986,8 +7202,7 @@
6986 "etag": { 7202 "etag": {
6987 "version": "1.8.1", 7203 "version": "1.8.1",
6988 "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz", 7204 "resolved": "https://registry.npm.taobao.org/etag/download/etag-1.8.1.tgz",
6989 - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", 7205 + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc="
6990 - "dev": true
6991 }, 7206 },
6992 "eventemitter3": { 7207 "eventemitter3": {
6993 "version": "4.0.0", 7208 "version": "4.0.0",
...@@ -7248,9 +7463,8 @@ ...@@ -7248,9 +7463,8 @@
7248 }, 7463 },
7249 "express": { 7464 "express": {
7250 "version": "4.17.1", 7465 "version": "4.17.1",
7251 - "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz", 7466 + "resolved": "https://registry.npm.taobao.org/express/download/express-4.17.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fexpress%2Fdownload%2Fexpress-4.17.1.tgz",
7252 "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=", 7467 "integrity": "sha1-RJH8OGBc9R+GKdOcK10Cb5ikwTQ=",
7253 - "dev": true,
7254 "requires": { 7468 "requires": {
7255 "accepts": "~1.3.7", 7469 "accepts": "~1.3.7",
7256 "array-flatten": "1.1.1", 7470 "array-flatten": "1.1.1",
...@@ -7287,29 +7501,25 @@ ...@@ -7287,29 +7501,25 @@
7287 "array-flatten": { 7501 "array-flatten": {
7288 "version": "1.1.1", 7502 "version": "1.1.1",
7289 "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&sync_timestamp=1574313384951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz", 7503 "resolved": "https://registry.npm.taobao.org/array-flatten/download/array-flatten-1.1.1.tgz?cache=0&sync_timestamp=1574313384951&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Farray-flatten%2Fdownload%2Farray-flatten-1.1.1.tgz",
7290 - "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", 7504 + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI="
7291 - "dev": true
7292 }, 7505 },
7293 "cookie": { 7506 "cookie": {
7294 "version": "0.4.0", 7507 "version": "0.4.0",
7295 "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcookie%2Fdownload%2Fcookie-0.4.0.tgz", 7508 "resolved": "https://registry.npm.taobao.org/cookie/download/cookie-0.4.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fcookie%2Fdownload%2Fcookie-0.4.0.tgz",
7296 - "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo=", 7509 + "integrity": "sha1-vrQ35wIrO21JAZ0IhmUwPr6cFLo="
7297 - "dev": true
7298 }, 7510 },
7299 "debug": { 7511 "debug": {
7300 "version": "2.6.9", 7512 "version": "2.6.9",
7301 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", 7513 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
7302 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 7514 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
7303 - "dev": true,
7304 "requires": { 7515 "requires": {
7305 "ms": "2.0.0" 7516 "ms": "2.0.0"
7306 } 7517 }
7307 }, 7518 },
7308 "qs": { 7519 "qs": {
7309 "version": "6.7.0", 7520 "version": "6.7.0",
7310 - "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fqs%2Fdownload%2Fqs-6.7.0.tgz", 7521 + "resolved": "https://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz",
7311 - "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw=", 7522 + "integrity": "sha1-QdwaAV49WB8WIXdr4xr7KHapsbw="
7312 - "dev": true
7313 } 7523 }
7314 } 7524 }
7315 }, 7525 },
...@@ -7682,7 +7892,6 @@ ...@@ -7682,7 +7892,6 @@
7682 "version": "1.1.2", 7892 "version": "1.1.2",
7683 "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz", 7893 "resolved": "https://registry.npm.taobao.org/finalhandler/download/finalhandler-1.1.2.tgz",
7684 "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=", 7894 "integrity": "sha1-t+fQAP/RGTjQ/bBTUG9uur6fWH0=",
7685 - "dev": true,
7686 "requires": { 7895 "requires": {
7687 "debug": "2.6.9", 7896 "debug": "2.6.9",
7688 "encodeurl": "~1.0.2", 7897 "encodeurl": "~1.0.2",
...@@ -7697,7 +7906,6 @@ ...@@ -7697,7 +7906,6 @@
7697 "version": "2.6.9", 7906 "version": "2.6.9",
7698 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", 7907 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
7699 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 7908 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
7700 - "dev": true,
7701 "requires": { 7909 "requires": {
7702 "ms": "2.0.0" 7910 "ms": "2.0.0"
7703 } 7911 }
...@@ -7802,8 +8010,7 @@ ...@@ -7802,8 +8010,7 @@
7802 "forwarded": { 8010 "forwarded": {
7803 "version": "0.1.2", 8011 "version": "0.1.2",
7804 "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz", 8012 "resolved": "https://registry.npm.taobao.org/forwarded/download/forwarded-0.1.2.tgz",
7805 - "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ=", 8013 + "integrity": "sha1-mMI9qxF1ZXuMBXPozszZGw/xjIQ="
7806 - "dev": true
7807 }, 8014 },
7808 "fragment-cache": { 8015 "fragment-cache": {
7809 "version": "0.2.1", 8016 "version": "0.2.1",
...@@ -7817,8 +8024,7 @@ ...@@ -7817,8 +8024,7 @@
7817 "fresh": { 8024 "fresh": {
7818 "version": "0.5.2", 8025 "version": "0.5.2",
7819 "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz", 8026 "resolved": "https://registry.npm.taobao.org/fresh/download/fresh-0.5.2.tgz",
7820 - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", 8027 + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac="
7821 - "dev": true
7822 }, 8028 },
7823 "from2": { 8029 "from2": {
7824 "version": "2.3.0", 8030 "version": "2.3.0",
...@@ -8836,6 +9042,49 @@ ...@@ -8836,6 +9042,49 @@
8836 } 9042 }
8837 } 9043 }
8838 }, 9044 },
9045 + "happypack": {
9046 + "version": "5.0.1",
9047 + "resolved": "https://registry.npm.taobao.org/happypack/download/happypack-5.0.1.tgz",
9048 + "integrity": "sha1-hQg5Qm1iBaUgv5E+liNJ++UjoHw=",
9049 + "dev": true,
9050 + "requires": {
9051 + "async": "1.5.0",
9052 + "json-stringify-safe": "5.0.1",
9053 + "loader-utils": "1.1.0",
9054 + "serialize-error": "^2.1.0"
9055 + },
9056 + "dependencies": {
9057 + "async": {
9058 + "version": "1.5.0",
9059 + "resolved": "https://registry.npm.taobao.org/async/download/async-1.5.0.tgz",
9060 + "integrity": "sha1-J5ZkJyNXOFlWVjP8YnRES+4vjOM=",
9061 + "dev": true
9062 + },
9063 + "big.js": {
9064 + "version": "3.2.0",
9065 + "resolved": "https://registry.npm.taobao.org/big.js/download/big.js-3.2.0.tgz",
9066 + "integrity": "sha1-pfwpi4G54Nyi5FiCR4S2XFK6WI4=",
9067 + "dev": true
9068 + },
9069 + "loader-utils": {
9070 + "version": "1.1.0",
9071 + "resolved": "https://registry.npm.taobao.org/loader-utils/download/loader-utils-1.1.0.tgz?cache=0&sync_timestamp=1584445207623&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Floader-utils%2Fdownload%2Floader-utils-1.1.0.tgz",
9072 + "integrity": "sha1-yYrvSIvM7aL/teLeZG1qdUQp9c0=",
9073 + "dev": true,
9074 + "requires": {
9075 + "big.js": "^3.1.3",
9076 + "emojis-list": "^2.0.0",
9077 + "json5": "^0.5.0"
9078 + }
9079 + },
9080 + "serialize-error": {
9081 + "version": "2.1.0",
9082 + "resolved": "https://registry.npm.taobao.org/serialize-error/download/serialize-error-2.1.0.tgz",
9083 + "integrity": "sha1-ULZ51WNc34Rme9yOWa9OW4HV9go=",
9084 + "dev": true
9085 + }
9086 + }
9087 + },
8839 "har-schema": { 9088 "har-schema": {
8840 "version": "2.0.0", 9089 "version": "2.0.0",
8841 "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz", 9090 "resolved": "https://registry.npm.taobao.org/har-schema/download/har-schema-2.0.0.tgz",
...@@ -8852,6 +9101,147 @@ ...@@ -8852,6 +9101,147 @@
8852 "har-schema": "^2.0.0" 9101 "har-schema": "^2.0.0"
8853 } 9102 }
8854 }, 9103 },
9104 + "hard-source-webpack-plugin": {
9105 + "version": "0.13.1",
9106 + "resolved": "https://registry.npm.taobao.org/hard-source-webpack-plugin/download/hard-source-webpack-plugin-0.13.1.tgz",
9107 + "integrity": "sha1-qZBx4lsjLxQ4pbw8mfEKOGnkQo4=",
9108 + "dev": true,
9109 + "requires": {
9110 + "chalk": "^2.4.1",
9111 + "find-cache-dir": "^2.0.0",
9112 + "graceful-fs": "^4.1.11",
9113 + "lodash": "^4.15.0",
9114 + "mkdirp": "^0.5.1",
9115 + "node-object-hash": "^1.2.0",
9116 + "parse-json": "^4.0.0",
9117 + "pkg-dir": "^3.0.0",
9118 + "rimraf": "^2.6.2",
9119 + "semver": "^5.6.0",
9120 + "tapable": "^1.0.0-beta.5",
9121 + "webpack-sources": "^1.0.1",
9122 + "write-json-file": "^2.3.0"
9123 + },
9124 + "dependencies": {
9125 + "ansi-styles": {
9126 + "version": "3.2.1",
9127 + "resolved": "https://registry.npm.taobao.org/ansi-styles/download/ansi-styles-3.2.1.tgz",
9128 + "integrity": "sha1-QfuyAkPlCxK+DwS43tvwdSDOhB0=",
9129 + "dev": true,
9130 + "requires": {
9131 + "color-convert": "^1.9.0"
9132 + }
9133 + },
9134 + "chalk": {
9135 + "version": "2.4.2",
9136 + "resolved": "https://registry.npm.taobao.org/chalk/download/chalk-2.4.2.tgz",
9137 + "integrity": "sha1-zUJUFnelQzPPVBpJEIwUMrRMlCQ=",
9138 + "dev": true,
9139 + "requires": {
9140 + "ansi-styles": "^3.2.1",
9141 + "escape-string-regexp": "^1.0.5",
9142 + "supports-color": "^5.3.0"
9143 + }
9144 + },
9145 + "find-cache-dir": {
9146 + "version": "2.1.0",
9147 + "resolved": "https://registry.npm.taobao.org/find-cache-dir/download/find-cache-dir-2.1.0.tgz",
9148 + "integrity": "sha1-jQ+UzRP+Q8bHwmGg2GEVypGMBfc=",
9149 + "dev": true,
9150 + "requires": {
9151 + "commondir": "^1.0.1",
9152 + "make-dir": "^2.0.0",
9153 + "pkg-dir": "^3.0.0"
9154 + }
9155 + },
9156 + "find-up": {
9157 + "version": "3.0.0",
9158 + "resolved": "https://registry.npm.taobao.org/find-up/download/find-up-3.0.0.tgz",
9159 + "integrity": "sha1-SRafHXmTQwZG2mHsxa41XCHJe3M=",
9160 + "dev": true,
9161 + "requires": {
9162 + "locate-path": "^3.0.0"
9163 + }
9164 + },
9165 + "locate-path": {
9166 + "version": "3.0.0",
9167 + "resolved": "https://registry.npm.taobao.org/locate-path/download/locate-path-3.0.0.tgz",
9168 + "integrity": "sha1-2+w7OrdZdYBxtY/ln8QYca8hQA4=",
9169 + "dev": true,
9170 + "requires": {
9171 + "p-locate": "^3.0.0",
9172 + "path-exists": "^3.0.0"
9173 + }
9174 + },
9175 + "make-dir": {
9176 + "version": "2.1.0",
9177 + "resolved": "https://registry.npm.taobao.org/make-dir/download/make-dir-2.1.0.tgz?cache=0&sync_timestamp=1581538804263&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmake-dir%2Fdownload%2Fmake-dir-2.1.0.tgz",
9178 + "integrity": "sha1-XwMQ4YuL6JjMBwCSlaMK5B6R5vU=",
9179 + "dev": true,
9180 + "requires": {
9181 + "pify": "^4.0.1",
9182 + "semver": "^5.6.0"
9183 + }
9184 + },
9185 + "p-limit": {
9186 + "version": "2.3.0",
9187 + "resolved": "https://registry.npm.taobao.org/p-limit/download/p-limit-2.3.0.tgz?cache=0&sync_timestamp=1586101408834&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fp-limit%2Fdownload%2Fp-limit-2.3.0.tgz",
9188 + "integrity": "sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=",
9189 + "dev": true,
9190 + "requires": {
9191 + "p-try": "^2.0.0"
9192 + }
9193 + },
9194 + "p-locate": {
9195 + "version": "3.0.0",
9196 + "resolved": "https://registry.npm.taobao.org/p-locate/download/p-locate-3.0.0.tgz",
9197 + "integrity": "sha1-Mi1poFwCZLJZl9n0DNiokasAZKQ=",
9198 + "dev": true,
9199 + "requires": {
9200 + "p-limit": "^2.0.0"
9201 + }
9202 + },
9203 + "p-try": {
9204 + "version": "2.2.0",
9205 + "resolved": "https://registry.npm.taobao.org/p-try/download/p-try-2.2.0.tgz",
9206 + "integrity": "sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=",
9207 + "dev": true
9208 + },
9209 + "parse-json": {
9210 + "version": "4.0.0",
9211 + "resolved": "https://registry.npm.taobao.org/parse-json/download/parse-json-4.0.0.tgz",
9212 + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
9213 + "dev": true,
9214 + "requires": {
9215 + "error-ex": "^1.3.1",
9216 + "json-parse-better-errors": "^1.0.1"
9217 + }
9218 + },
9219 + "pify": {
9220 + "version": "4.0.1",
9221 + "resolved": "https://registry.npm.taobao.org/pify/download/pify-4.0.1.tgz",
9222 + "integrity": "sha1-SyzSXFDVmHNcUCkiJP2MbfQeMjE=",
9223 + "dev": true
9224 + },
9225 + "pkg-dir": {
9226 + "version": "3.0.0",
9227 + "resolved": "https://registry.npm.taobao.org/pkg-dir/download/pkg-dir-3.0.0.tgz",
9228 + "integrity": "sha1-J0kCDyOe2ZCIGx9xIQ1R62UjvqM=",
9229 + "dev": true,
9230 + "requires": {
9231 + "find-up": "^3.0.0"
9232 + }
9233 + },
9234 + "supports-color": {
9235 + "version": "5.5.0",
9236 + "resolved": "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsupports-color%2Fdownload%2Fsupports-color-5.5.0.tgz",
9237 + "integrity": "sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=",
9238 + "dev": true,
9239 + "requires": {
9240 + "has-flag": "^3.0.0"
9241 + }
9242 + }
9243 + }
9244 + },
8855 "has": { 9245 "has": {
8856 "version": "1.0.3", 9246 "version": "1.0.3",
8857 "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz", 9247 "resolved": "https://registry.npm.taobao.org/has/download/has-1.0.3.tgz",
...@@ -9243,7 +9633,6 @@ ...@@ -9243,7 +9633,6 @@
9243 "version": "1.7.2", 9633 "version": "1.7.2",
9244 "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz", 9634 "resolved": "https://registry.npm.taobao.org/http-errors/download/http-errors-1.7.2.tgz",
9245 "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=", 9635 "integrity": "sha1-T1ApzxMjnzEDblsuVSkrz7zIXI8=",
9246 - "dev": true,
9247 "requires": { 9636 "requires": {
9248 "depd": "~1.1.2", 9637 "depd": "~1.1.2",
9249 "inherits": "2.0.3", 9638 "inherits": "2.0.3",
...@@ -9255,8 +9644,7 @@ ...@@ -9255,8 +9644,7 @@
9255 "inherits": { 9644 "inherits": {
9256 "version": "2.0.3", 9645 "version": "2.0.3",
9257 "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz", 9646 "resolved": "https://registry.npm.taobao.org/inherits/download/inherits-2.0.3.tgz",
9258 - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", 9647 + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
9259 - "dev": true
9260 } 9648 }
9261 } 9649 }
9262 }, 9650 },
...@@ -10429,7 +10817,6 @@ ...@@ -10429,7 +10817,6 @@
10429 "version": "3.13.1", 10817 "version": "3.13.1",
10430 "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz", 10818 "resolved": "https://registry.npm.taobao.org/js-yaml/download/js-yaml-3.13.1.tgz",
10431 "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=", 10819 "integrity": "sha1-r/FRswv9+o5J4F2iLnQV6d+jeEc=",
10432 - "dev": true,
10433 "requires": { 10820 "requires": {
10434 "argparse": "^1.0.7", 10821 "argparse": "^1.0.7",
10435 "esprima": "^4.0.0" 10822 "esprima": "^4.0.0"
...@@ -10499,7 +10886,6 @@ ...@@ -10499,7 +10886,6 @@
10499 "version": "4.0.0", 10886 "version": "4.0.0",
10500 "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz", 10887 "resolved": "https://registry.npm.taobao.org/jsonfile/download/jsonfile-4.0.0.tgz",
10501 "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", 10888 "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=",
10502 - "dev": true,
10503 "requires": { 10889 "requires": {
10504 "graceful-fs": "^4.1.6" 10890 "graceful-fs": "^4.1.6"
10505 } 10891 }
...@@ -10789,8 +11175,7 @@ ...@@ -10789,8 +11175,7 @@
10789 "lazy-val": { 11175 "lazy-val": {
10790 "version": "1.0.4", 11176 "version": "1.0.4",
10791 "resolved": "https://registry.npm.taobao.org/lazy-val/download/lazy-val-1.0.4.tgz", 11177 "resolved": "https://registry.npm.taobao.org/lazy-val/download/lazy-val-1.0.4.tgz",
10792 - "integrity": "sha1-iCY2pyRcLP5uCk47psXWihN+XGU=", 11178 + "integrity": "sha1-iCY2pyRcLP5uCk47psXWihN+XGU="
10793 - "dev": true
10794 }, 11179 },
10795 "lazystream": { 11180 "lazystream": {
10796 "version": "1.0.0", 11181 "version": "1.0.0",
...@@ -11087,6 +11472,11 @@ ...@@ -11087,6 +11472,11 @@
11087 "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", 11472 "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=",
11088 "dev": true 11473 "dev": true
11089 }, 11474 },
11475 + "lodash.isequal": {
11476 + "version": "4.5.0",
11477 + "resolved": "https://registry.npm.taobao.org/lodash.isequal/download/lodash.isequal-4.5.0.tgz",
11478 + "integrity": "sha1-QVxEePK8wwEgwizhDtMib30+GOA="
11479 + },
11090 "lodash.isplainobject": { 11480 "lodash.isplainobject": {
11091 "version": "4.0.6", 11481 "version": "4.0.6",
11092 "resolved": "https://registry.npm.taobao.org/lodash.isplainobject/download/lodash.isplainobject-4.0.6.tgz", 11482 "resolved": "https://registry.npm.taobao.org/lodash.isplainobject/download/lodash.isplainobject-4.0.6.tgz",
...@@ -11668,8 +12058,7 @@ ...@@ -11668,8 +12058,7 @@
11668 "media-typer": { 12058 "media-typer": {
11669 "version": "0.3.0", 12059 "version": "0.3.0",
11670 "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz", 12060 "resolved": "https://registry.npm.taobao.org/media-typer/download/media-typer-0.3.0.tgz",
11671 - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", 12061 + "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g="
11672 - "dev": true
11673 }, 12062 },
11674 "mem": { 12063 "mem": {
11675 "version": "4.3.0", 12064 "version": "4.3.0",
...@@ -11729,8 +12118,7 @@ ...@@ -11729,8 +12118,7 @@
11729 "merge-descriptors": { 12118 "merge-descriptors": {
11730 "version": "1.0.1", 12119 "version": "1.0.1",
11731 "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz", 12120 "resolved": "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz",
11732 - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", 12121 + "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E="
11733 - "dev": true
11734 }, 12122 },
11735 "merge-options": { 12123 "merge-options": {
11736 "version": "1.0.1", 12124 "version": "1.0.1",
...@@ -11773,8 +12161,7 @@ ...@@ -11773,8 +12161,7 @@
11773 "methods": { 12161 "methods": {
11774 "version": "1.1.2", 12162 "version": "1.1.2",
11775 "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz", 12163 "resolved": "https://registry.npm.taobao.org/methods/download/methods-1.1.2.tgz",
11776 - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", 12164 + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4="
11777 - "dev": true
11778 }, 12165 },
11779 "micromatch": { 12166 "micromatch": {
11780 "version": "3.1.10", 12167 "version": "3.1.10",
...@@ -11846,14 +12233,12 @@ ...@@ -11846,14 +12233,12 @@
11846 "mime-db": { 12233 "mime-db": {
11847 "version": "1.42.0", 12234 "version": "1.42.0",
11848 "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.42.0.tgz", 12235 "resolved": "https://registry.npm.taobao.org/mime-db/download/mime-db-1.42.0.tgz",
11849 - "integrity": "sha1-PiUpB7THrbkGWXtLZWNics+ee6w=", 12236 + "integrity": "sha1-PiUpB7THrbkGWXtLZWNics+ee6w="
11850 - "dev": true
11851 }, 12237 },
11852 "mime-types": { 12238 "mime-types": {
11853 "version": "2.1.25", 12239 "version": "2.1.25",
11854 "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.25.tgz", 12240 "resolved": "https://registry.npm.taobao.org/mime-types/download/mime-types-2.1.25.tgz",
11855 "integrity": "sha1-OXctRmIfk+KoCoVsU7hqYhVqZDc=", 12241 "integrity": "sha1-OXctRmIfk+KoCoVsU7hqYhVqZDc=",
11856 - "dev": true,
11857 "requires": { 12242 "requires": {
11858 "mime-db": "1.42.0" 12243 "mime-db": "1.42.0"
11859 } 12244 }
...@@ -12287,8 +12672,7 @@ ...@@ -12287,8 +12672,7 @@
12287 "negotiator": { 12672 "negotiator": {
12288 "version": "0.6.2", 12673 "version": "0.6.2",
12289 "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz", 12674 "resolved": "https://registry.npm.taobao.org/negotiator/download/negotiator-0.6.2.tgz",
12290 - "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs=", 12675 + "integrity": "sha1-/qz3zPUlp3rpY0Q2pkiD/+yjRvs="
12291 - "dev": true
12292 }, 12676 },
12293 "neo-async": { 12677 "neo-async": {
12294 "version": "2.6.1", 12678 "version": "2.6.1",
...@@ -12423,6 +12807,12 @@ ...@@ -12423,6 +12807,12 @@
12423 "integrity": "sha1-x5fvUQle1YWZArFX9jhPY2HgWug=", 12807 "integrity": "sha1-x5fvUQle1YWZArFX9jhPY2HgWug=",
12424 "dev": true 12808 "dev": true
12425 }, 12809 },
12810 + "node-object-hash": {
12811 + "version": "1.4.2",
12812 + "resolved": "https://registry.npm.taobao.org/node-object-hash/download/node-object-hash-1.4.2.tgz",
12813 + "integrity": "sha1-OFgz2FsimQK3WCYiT2B3vpaanpQ=",
12814 + "dev": true
12815 + },
12426 "node-sass": { 12816 "node-sass": {
12427 "version": "4.13.1", 12817 "version": "4.13.1",
12428 "resolved": "https://registry.npm.taobao.org/node-sass/download/node-sass-4.13.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-sass%2Fdownload%2Fnode-sass-4.13.1.tgz", 12818 "resolved": "https://registry.npm.taobao.org/node-sass/download/node-sass-4.13.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fnode-sass%2Fdownload%2Fnode-sass-4.13.1.tgz",
...@@ -12916,7 +13306,6 @@ ...@@ -12916,7 +13306,6 @@
12916 "version": "2.3.0", 13306 "version": "2.3.0",
12917 "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz", 13307 "resolved": "https://registry.npm.taobao.org/on-finished/download/on-finished-2.3.0.tgz",
12918 "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", 13308 "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=",
12919 - "dev": true,
12920 "requires": { 13309 "requires": {
12921 "ee-first": "1.1.1" 13310 "ee-first": "1.1.1"
12922 } 13311 }
...@@ -13179,8 +13568,7 @@ ...@@ -13179,8 +13568,7 @@
13179 "pako": { 13568 "pako": {
13180 "version": "1.0.11", 13569 "version": "1.0.11",
13181 "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz", 13570 "resolved": "https://registry.npm.taobao.org/pako/download/pako-1.0.11.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fpako%2Fdownload%2Fpako-1.0.11.tgz",
13182 - "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8=", 13571 + "integrity": "sha1-bJWZ00DVTf05RjgCUqNXBaa5kr8="
13183 - "dev": true
13184 }, 13572 },
13185 "parallel-transform": { 13573 "parallel-transform": {
13186 "version": "1.2.0", 13574 "version": "1.2.0",
...@@ -13252,8 +13640,7 @@ ...@@ -13252,8 +13640,7 @@
13252 "parseurl": { 13640 "parseurl": {
13253 "version": "1.3.3", 13641 "version": "1.3.3",
13254 "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz", 13642 "resolved": "https://registry.npm.taobao.org/parseurl/download/parseurl-1.3.3.tgz",
13255 - "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=", 13643 + "integrity": "sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ="
13256 - "dev": true
13257 }, 13644 },
13258 "pascal-case": { 13645 "pascal-case": {
13259 "version": "2.0.1", 13646 "version": "2.0.1",
...@@ -13343,8 +13730,7 @@ ...@@ -13343,8 +13730,7 @@
13343 "path-to-regexp": { 13730 "path-to-regexp": {
13344 "version": "0.1.7", 13731 "version": "0.1.7",
13345 "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz", 13732 "resolved": "https://registry.npm.taobao.org/path-to-regexp/download/path-to-regexp-0.1.7.tgz",
13346 - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", 13733 + "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
13347 - "dev": true
13348 }, 13734 },
13349 "path-type": { 13735 "path-type": {
13350 "version": "1.1.0", 13736 "version": "1.1.0",
...@@ -13803,13 +14189,19 @@ ...@@ -13803,13 +14189,19 @@
13803 "optional": true 14189 "optional": true
13804 }, 14190 },
13805 "proxy-addr": { 14191 "proxy-addr": {
13806 - "version": "2.0.5", 14192 + "version": "2.0.6",
13807 - "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.5.tgz", 14193 + "resolved": "https://registry.npm.taobao.org/proxy-addr/download/proxy-addr-2.0.6.tgz?cache=0&sync_timestamp=1582528781064&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fproxy-addr%2Fdownload%2Fproxy-addr-2.0.6.tgz",
13808 - "integrity": "sha1-NMvWSi2B9LH9IedvnwbIpFKZ7jQ=", 14194 + "integrity": "sha1-/cIzZQVEfT8vLGOO0nLK9hS7sr8=",
13809 - "dev": true,
13810 "requires": { 14195 "requires": {
13811 "forwarded": "~0.1.2", 14196 "forwarded": "~0.1.2",
13812 - "ipaddr.js": "1.9.0" 14197 + "ipaddr.js": "1.9.1"
14198 + },
14199 + "dependencies": {
14200 + "ipaddr.js": {
14201 + "version": "1.9.1",
14202 + "resolved": "https://registry.npm.taobao.org/ipaddr.js/download/ipaddr.js-1.9.1.tgz",
14203 + "integrity": "sha1-v/OFQ+64mEglB5/zoqjmy9RngbM="
14204 + }
13813 } 14205 }
13814 }, 14206 },
13815 "proxy-agent": { 14207 "proxy-agent": {
...@@ -14004,14 +14396,12 @@ ...@@ -14004,14 +14396,12 @@
14004 "range-parser": { 14396 "range-parser": {
14005 "version": "1.2.1", 14397 "version": "1.2.1",
14006 "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz", 14398 "resolved": "https://registry.npm.taobao.org/range-parser/download/range-parser-1.2.1.tgz",
14007 - "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=", 14399 + "integrity": "sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE="
14008 - "dev": true
14009 }, 14400 },
14010 "raw-body": { 14401 "raw-body": {
14011 "version": "2.4.0", 14402 "version": "2.4.0",
14012 "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz", 14403 "resolved": "https://registry.npm.taobao.org/raw-body/download/raw-body-2.4.0.tgz",
14013 "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=", 14404 "integrity": "sha1-oc5vucm8NWylLoklarWQWeE9AzI=",
14014 - "dev": true,
14015 "requires": { 14405 "requires": {
14016 "bytes": "3.1.0", 14406 "bytes": "3.1.0",
14017 "http-errors": "1.7.2", 14407 "http-errors": "1.7.2",
...@@ -14023,7 +14413,6 @@ ...@@ -14023,7 +14413,6 @@
14023 "version": "0.4.24", 14413 "version": "0.4.24",
14024 "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz", 14414 "resolved": "https://registry.npm.taobao.org/iconv-lite/download/iconv-lite-0.4.24.tgz",
14025 "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=", 14415 "integrity": "sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=",
14026 - "dev": true,
14027 "requires": { 14416 "requires": {
14028 "safer-buffer": ">= 2.1.2 < 3" 14417 "safer-buffer": ">= 2.1.2 < 3"
14029 } 14418 }
...@@ -14939,8 +15328,7 @@ ...@@ -14939,8 +15328,7 @@
14939 "safe-buffer": { 15328 "safe-buffer": {
14940 "version": "5.1.2", 15329 "version": "5.1.2",
14941 "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz", 15330 "resolved": "https://registry.npm.taobao.org/safe-buffer/download/safe-buffer-5.1.2.tgz",
14942 - "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=", 15331 + "integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0="
14943 - "dev": true
14944 }, 15332 },
14945 "safe-regex": { 15333 "safe-regex": {
14946 "version": "1.1.0", 15334 "version": "1.1.0",
...@@ -14954,8 +15342,7 @@ ...@@ -14954,8 +15342,7 @@
14954 "safer-buffer": { 15342 "safer-buffer": {
14955 "version": "2.1.2", 15343 "version": "2.1.2",
14956 "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafer-buffer%2Fdownload%2Fsafer-buffer-2.1.2.tgz", 15344 "resolved": "https://registry.npm.taobao.org/safer-buffer/download/safer-buffer-2.1.2.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsafer-buffer%2Fdownload%2Fsafer-buffer-2.1.2.tgz",
14957 - "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=", 15345 + "integrity": "sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo="
14958 - "dev": true
14959 }, 15346 },
14960 "sanitize-filename": { 15347 "sanitize-filename": {
14961 "version": "1.6.3", 15348 "version": "1.6.3",
...@@ -15089,8 +15476,7 @@ ...@@ -15089,8 +15476,7 @@
15089 "sax": { 15476 "sax": {
15090 "version": "1.2.4", 15477 "version": "1.2.4",
15091 "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz", 15478 "resolved": "https://registry.npm.taobao.org/sax/download/sax-1.2.4.tgz",
15092 - "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk=", 15479 + "integrity": "sha1-KBYjTiN4vdxOU1T6tcqold9xANk="
15093 - "dev": true
15094 }, 15480 },
15095 "schema-utils": { 15481 "schema-utils": {
15096 "version": "1.0.0", 15482 "version": "1.0.0",
...@@ -15173,7 +15559,6 @@ ...@@ -15173,7 +15559,6 @@
15173 "version": "0.17.1", 15559 "version": "0.17.1",
15174 "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz", 15560 "resolved": "https://registry.npm.taobao.org/send/download/send-0.17.1.tgz",
15175 "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=", 15561 "integrity": "sha1-wdiwWfeQD3Rm3Uk4vcROEd2zdsg=",
15176 - "dev": true,
15177 "requires": { 15562 "requires": {
15178 "debug": "2.6.9", 15563 "debug": "2.6.9",
15179 "depd": "~1.1.2", 15564 "depd": "~1.1.2",
...@@ -15194,7 +15579,6 @@ ...@@ -15194,7 +15579,6 @@
15194 "version": "2.6.9", 15579 "version": "2.6.9",
15195 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz", 15580 "resolved": "https://registry.npm.taobao.org/debug/download/debug-2.6.9.tgz",
15196 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=", 15581 "integrity": "sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=",
15197 - "dev": true,
15198 "requires": { 15582 "requires": {
15199 "ms": "2.0.0" 15583 "ms": "2.0.0"
15200 }, 15584 },
...@@ -15202,22 +15586,19 @@ ...@@ -15202,22 +15586,19 @@
15202 "ms": { 15586 "ms": {
15203 "version": "2.0.0", 15587 "version": "2.0.0",
15204 "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz", 15588 "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.0.0.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.0.0.tgz",
15205 - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", 15589 + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
15206 - "dev": true
15207 } 15590 }
15208 } 15591 }
15209 }, 15592 },
15210 "mime": { 15593 "mime": {
15211 "version": "1.6.0", 15594 "version": "1.6.0",
15212 "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1560034758817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz", 15595 "resolved": "https://registry.npm.taobao.org/mime/download/mime-1.6.0.tgz?cache=0&sync_timestamp=1560034758817&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmime%2Fdownload%2Fmime-1.6.0.tgz",
15213 - "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=", 15596 + "integrity": "sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE="
15214 - "dev": true
15215 }, 15597 },
15216 "ms": { 15598 "ms": {
15217 "version": "2.1.1", 15599 "version": "2.1.1",
15218 "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz", 15600 "resolved": "https://registry.npm.taobao.org/ms/download/ms-2.1.1.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fms%2Fdownload%2Fms-2.1.1.tgz",
15219 - "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo=", 15601 + "integrity": "sha1-MKWGTrPrsKZvLr5tcnrwagnYbgo="
15220 - "dev": true
15221 } 15602 }
15222 } 15603 }
15223 }, 15604 },
...@@ -15301,7 +15682,6 @@ ...@@ -15301,7 +15682,6 @@
15301 "version": "1.14.1", 15682 "version": "1.14.1",
15302 "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz", 15683 "resolved": "https://registry.npm.taobao.org/serve-static/download/serve-static-1.14.1.tgz",
15303 "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=", 15684 "integrity": "sha1-Zm5jbcTwEPfvKZcKiKZ0MgiYsvk=",
15304 - "dev": true,
15305 "requires": { 15685 "requires": {
15306 "encodeurl": "~1.0.2", 15686 "encodeurl": "~1.0.2",
15307 "escape-html": "~1.0.3", 15687 "escape-html": "~1.0.3",
...@@ -15353,8 +15733,7 @@ ...@@ -15353,8 +15733,7 @@
15353 "setprototypeof": { 15733 "setprototypeof": {
15354 "version": "1.1.1", 15734 "version": "1.1.1",
15355 "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz", 15735 "resolved": "https://registry.npm.taobao.org/setprototypeof/download/setprototypeof-1.1.1.tgz",
15356 - "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM=", 15736 + "integrity": "sha1-fpWsskqpL1iF4KvvW6ExMw1K5oM="
15357 - "dev": true
15358 }, 15737 },
15359 "sha.js": { 15738 "sha.js": {
15360 "version": "2.4.11", 15739 "version": "2.4.11",
...@@ -15989,8 +16368,7 @@ ...@@ -15989,8 +16368,7 @@
15989 "sprintf-js": { 16368 "sprintf-js": {
15990 "version": "1.0.3", 16369 "version": "1.0.3",
15991 "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz", 16370 "resolved": "https://registry.npm.taobao.org/sprintf-js/download/sprintf-js-1.0.3.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fsprintf-js%2Fdownload%2Fsprintf-js-1.0.3.tgz",
15992 - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", 16371 + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw="
15993 - "dev": true
15994 }, 16372 },
15995 "sshpk": { 16373 "sshpk": {
15996 "version": "1.16.1", 16374 "version": "1.16.1",
...@@ -16111,8 +16489,7 @@ ...@@ -16111,8 +16489,7 @@
16111 "statuses": { 16489 "statuses": {
16112 "version": "1.5.0", 16490 "version": "1.5.0",
16113 "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz", 16491 "resolved": "https://registry.npm.taobao.org/statuses/download/statuses-1.5.0.tgz",
16114 - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", 16492 + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow="
16115 - "dev": true
16116 }, 16493 },
16117 "stdout-stream": { 16494 "stdout-stream": {
16118 "version": "1.4.1", 16495 "version": "1.4.1",
...@@ -17262,8 +17639,7 @@ ...@@ -17262,8 +17639,7 @@
17262 "toidentifier": { 17639 "toidentifier": {
17263 "version": "1.0.0", 17640 "version": "1.0.0",
17264 "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz", 17641 "resolved": "https://registry.npm.taobao.org/toidentifier/download/toidentifier-1.0.0.tgz",
17265 - "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM=", 17642 + "integrity": "sha1-fhvjRw8ed5SLxD2Uo8j013UrpVM="
17266 - "dev": true
17267 }, 17643 },
17268 "toposort": { 17644 "toposort": {
17269 "version": "1.0.7", 17645 "version": "1.0.7",
...@@ -17397,7 +17773,6 @@ ...@@ -17397,7 +17773,6 @@
17397 "version": "1.6.18", 17773 "version": "1.6.18",
17398 "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz", 17774 "resolved": "https://registry.npm.taobao.org/type-is/download/type-is-1.6.18.tgz",
17399 "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=", 17775 "integrity": "sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=",
17400 - "dev": true,
17401 "requires": { 17776 "requires": {
17402 "media-typer": "0.3.0", 17777 "media-typer": "0.3.0",
17403 "mime-types": "~2.1.24" 17778 "mime-types": "~2.1.24"
...@@ -17509,14 +17884,12 @@ ...@@ -17509,14 +17884,12 @@
17509 "universalify": { 17884 "universalify": {
17510 "version": "0.1.2", 17885 "version": "0.1.2",
17511 "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz", 17886 "resolved": "https://registry.npm.taobao.org/universalify/download/universalify-0.1.2.tgz",
17512 - "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY=", 17887 + "integrity": "sha1-tkb2m+OULavOzJ1mOcgNwQXvqmY="
17513 - "dev": true
17514 }, 17888 },
17515 "unpipe": { 17889 "unpipe": {
17516 "version": "1.0.0", 17890 "version": "1.0.0",
17517 "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz", 17891 "resolved": "https://registry.npm.taobao.org/unpipe/download/unpipe-1.0.0.tgz",
17518 - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", 17892 + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
17519 - "dev": true
17520 }, 17893 },
17521 "unset-value": { 17894 "unset-value": {
17522 "version": "1.0.0", 17895 "version": "1.0.0",
...@@ -17878,8 +18251,7 @@ ...@@ -17878,8 +18251,7 @@
17878 "utils-merge": { 18251 "utils-merge": {
17879 "version": "1.0.1", 18252 "version": "1.0.1",
17880 "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz", 18253 "resolved": "https://registry.npm.taobao.org/utils-merge/download/utils-merge-1.0.1.tgz",
17881 - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", 18254 + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM="
17882 - "dev": true
17883 }, 18255 },
17884 "uuid": { 18256 "uuid": {
17885 "version": "3.3.3", 18257 "version": "3.3.3",
...@@ -17913,8 +18285,7 @@ ...@@ -17913,8 +18285,7 @@
17913 "vary": { 18285 "vary": {
17914 "version": "1.1.2", 18286 "version": "1.1.2",
17915 "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz", 18287 "resolved": "https://registry.npm.taobao.org/vary/download/vary-1.1.2.tgz",
17916 - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", 18288 + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw="
17917 - "dev": true
17918 }, 18289 },
17919 "verror": { 18290 "verror": {
17920 "version": "1.10.0", 18291 "version": "1.10.0",
...@@ -19384,6 +19755,37 @@ ...@@ -19384,6 +19755,37 @@
19384 "signal-exit": "^3.0.2" 19755 "signal-exit": "^3.0.2"
19385 } 19756 }
19386 }, 19757 },
19758 + "write-json-file": {
19759 + "version": "2.3.0",
19760 + "resolved": "https://registry.npm.taobao.org/write-json-file/download/write-json-file-2.3.0.tgz",
19761 + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=",
19762 + "dev": true,
19763 + "requires": {
19764 + "detect-indent": "^5.0.0",
19765 + "graceful-fs": "^4.1.2",
19766 + "make-dir": "^1.0.0",
19767 + "pify": "^3.0.0",
19768 + "sort-keys": "^2.0.0",
19769 + "write-file-atomic": "^2.0.0"
19770 + },
19771 + "dependencies": {
19772 + "detect-indent": {
19773 + "version": "5.0.0",
19774 + "resolved": "https://registry.npm.taobao.org/detect-indent/download/detect-indent-5.0.0.tgz",
19775 + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=",
19776 + "dev": true
19777 + },
19778 + "sort-keys": {
19779 + "version": "2.0.0",
19780 + "resolved": "https://registry.npm.taobao.org/sort-keys/download/sort-keys-2.0.0.tgz",
19781 + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=",
19782 + "dev": true,
19783 + "requires": {
19784 + "is-plain-obj": "^1.0.0"
19785 + }
19786 + }
19787 + }
19788 + },
19387 "ws": { 19789 "ws": {
19388 "version": "3.3.3", 19790 "version": "3.3.3",
19389 "resolved": "https://registry.npm.taobao.org/ws/download/ws-3.3.3.tgz", 19791 "resolved": "https://registry.npm.taobao.org/ws/download/ws-3.3.3.tgz",
......
...@@ -62,7 +62,9 @@ ...@@ -62,7 +62,9 @@
62 "dependencies": { 62 "dependencies": {
63 "axios": "^0.19.2", 63 "axios": "^0.19.2",
64 "date-fns": "^2.12.0", 64 "date-fns": "^2.12.0",
65 + "electron-updater": "^4.2.5",
65 "element-ui": "^2.13.0", 66 "element-ui": "^2.13.0",
67 + "express": "^4.17.1",
66 "js-cookie": "^2.2.1", 68 "js-cookie": "^2.2.1",
67 "nedb": "^1.8.0", 69 "nedb": "^1.8.0",
68 "nprogress": "^0.2.0", 70 "nprogress": "^0.2.0",
...@@ -78,6 +80,7 @@ ...@@ -78,6 +80,7 @@
78 "babel-core": "^6.26.3", 80 "babel-core": "^6.26.3",
79 "babel-eslint": "^8.2.3", 81 "babel-eslint": "^8.2.3",
80 "babel-loader": "^7.1.5", 82 "babel-loader": "^7.1.5",
83 + "babel-minify-webpack-plugin": "^0.3.1",
81 "babel-plugin-dynamic-import-webpack": "^1.1.0", 84 "babel-plugin-dynamic-import-webpack": "^1.1.0",
82 "babel-plugin-istanbul": "^5.2.0", 85 "babel-plugin-istanbul": "^5.2.0",
83 "babel-plugin-transform-runtime": "^6.23.0", 86 "babel-plugin-transform-runtime": "^6.23.0",
...@@ -108,6 +111,8 @@ ...@@ -108,6 +111,8 @@
108 "eslint-plugin-promise": "^3.8.0", 111 "eslint-plugin-promise": "^3.8.0",
109 "eslint-plugin-standard": "^3.1.0", 112 "eslint-plugin-standard": "^3.1.0",
110 "file-loader": "^6.0.0", 113 "file-loader": "^6.0.0",
114 + "happypack": "^5.0.1",
115 + "hard-source-webpack-plugin": "^0.13.1",
111 "html-webpack-plugin": "^3.2.0", 116 "html-webpack-plugin": "^3.2.0",
112 "inject-loader": "^4.0.1", 117 "inject-loader": "^4.0.1",
113 "karma": "^2.0.2", 118 "karma": "^2.0.2",
...@@ -123,6 +128,7 @@ ...@@ -123,6 +128,7 @@
123 "multispinner": "^0.2.1", 128 "multispinner": "^0.2.1",
124 "node-loader": "^0.6.0", 129 "node-loader": "^0.6.0",
125 "node-sass": "^4.13.1", 130 "node-sass": "^4.13.1",
131 + "portfinder": "^1.0.25",
126 "require-dir": "^1.2.0", 132 "require-dir": "^1.2.0",
127 "sass-loader": "^8.0.2", 133 "sass-loader": "^8.0.2",
128 "spectron": "^3.8.0", 134 "spectron": "^3.8.0",
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
16 <% if (!process.browser) { %> 16 <% if (!process.browser) { %>
17 <script> 17 <script>
18 if (process.env.NODE_ENV !== 'development') window.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\') 18 if (process.env.NODE_ENV !== 'development') window.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
19 + if (process.env.NODE_ENV !== 'development') window.__lib = require('path').join(__dirname,'..','..','..','..',`${require('../config/index.js').DllFolder}`).replace(/\\/g, '\\\\')
19 </script> 20 </script>
20 <% } %> 21 <% } %>
21 22
......
1 +import { globalShortcut } from 'electron'
2 +import config from '@config'
3 +
4 +export default {
5 + Disablef12 () {
6 + if (process.env.NODE_ENV === 'production' && config.DisableF12) {
7 + globalShortcut.register('f12', () => {
8 + console.log('用户试图启动控制台')
9 + })
10 + }
11 + }
12 +}
1 // 这里是定义菜单的地方,详情请查看 https://electronjs.org/docs/api/menu 1 // 这里是定义菜单的地方,详情请查看 https://electronjs.org/docs/api/menu
2 const { dialog } = require('electron') 2 const { dialog } = require('electron')
3 -const menu = [{ 3 +const os = require('os')
4 - label: '文档操作', 4 +const version = require('../../../package.json').version
5 - submenu: [{ 5 +const menu = [
6 - label: '撤销', 6 + {
7 - accelerator: 'CmdOrCtrl+Z',
8 - role: 'undo'
9 - }, {
10 - label: '复制',
11 - accelerator: 'CmdOrCtrl+C',
12 - role: 'copy'
13 - }]
14 -},
15 -{
16 label: '设置', 7 label: '设置',
17 submenu: [{ 8 submenu: [{
18 label: '快速重启', 9 label: '快速重启',
...@@ -23,22 +14,24 @@ const menu = [{ ...@@ -23,22 +14,24 @@ const menu = [{
23 accelerator: 'CmdOrCtrl+F4', 14 accelerator: 'CmdOrCtrl+F4',
24 role: 'close' 15 role: 'close'
25 }] 16 }]
26 -}, { 17 + }, {
27 label: '帮助', 18 label: '帮助',
28 submenu: [{ 19 submenu: [{
29 - label: '切换到开发者模式',
30 - accelerator: 'CmdOrCtrl+I',
31 - role: 'toggledevtools'
32 - }, {
33 label: '关于', 20 label: '关于',
34 role: 'about', 21 role: 'about',
35 click: function () { 22 click: function () {
23 + info()
24 + }
25 + }]
26 + }]
27 +function info () {
36 dialog.showMessageBox({ 28 dialog.showMessageBox({
37 title: '关于', 29 title: '关于',
38 type: 'info', 30 type: 'info',
39 - message: '存放显示这个的信息是在,src/main/menu.js中,请自行修改' 31 + message: 'electron-Vue框架',
32 + detail: `版本信息:${version}\n引擎版本:${process.versions.v8}\n当前系统:${os.type()} ${os.arch()} ${os.release()}`,
33 + noLink: true,
34 + buttons: ['查看github', '确定']
40 }) 35 })
41 - } 36 +}
42 - }]
43 -}]
44 export default menu 37 export default menu
......
1 -/**
2 - * This file is used specifically and only for development. It installs
3 - * `electron-debug` & `vue-devtools`. There shouldn't be any need to
4 - * modify this file, but it can be used to extend your development
5 - * environment.
6 - */
7 -
8 -/* eslint-disable */
9 -
10 -// Install `electron-debug` with `devtron`
11 -require('electron-debug')({ showDevTools: true })
12 -
13 -// Install `vue-devtools`
14 -require('electron').app.on('ready', () => {
15 - let installExtension = require('electron-devtools-installer')
16 - installExtension.default(installExtension.VUEJS_DEVTOOLS)
17 - .then(() => {})
18 - .catch(err => {
19 - console.log('Unable to install `vue-devtools`: \n', err)
20 - })
21 -})
22 -
23 -// Require `main` process to boot app
24 -require('./index')
...\ No newline at end of file ...\ No newline at end of file
1 'use strict' 1 'use strict'
2 2
3 -import { 3 +import { app } from 'electron'
4 - app, 4 +import initWindow from './services/windowManager'
5 - BrowserWindow, 5 +import DisableButton from './config/DisableButton'
6 - Menu
7 -} from 'electron'
8 -import menuconfig from './menu'
9 6
10 -/** 7 +function onAppReady () {
11 - * Set `__static` path to static files in production 8 + initWindow()
12 - * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html 9 + DisableButton.Disablef12()
13 - */
14 -if (process.env.NODE_ENV !== 'development') {
15 - global.__static = require('path').join(__dirname, '/static').replace(/\\/g, '\\\\')
16 } 10 }
17 11
18 -let mainWindow 12 +app.isReady() ? onAppReady() : app.on('ready', onAppReady)
19 -const winURL = process.env.NODE_ENV === 'development'
20 - ? `http://localhost:9080`
21 - : `file://${__dirname}/index.html`
22 -
23 -function createWindow () {
24 - /**
25 - * Initial window options
26 - */
27 - mainWindow = new BrowserWindow({
28 - height: 563,
29 - useContentSize: true,
30 - width: 1000,
31 - show: false,
32 - backgroundColor: '#fffff',
33 - titleBarStyle: 'hidden',
34 - webPreferences: {
35 - nodeIntegration: true,
36 - webSecurity: false,
37 - experimentalFeatures: true
38 - }
39 - // 隐藏边框
40 - // frame: false,
41 - })
42 -
43 - mainWindow.once('ready-to-show', () => {
44 - mainWindow.show()
45 - })
46 -
47 - const menu = Menu.buildFromTemplate(menuconfig)
48 - Menu.setApplicationMenu(menu)
49 - mainWindow.loadURL(winURL)
50 -
51 - mainWindow.on('closed', () => {
52 - mainWindow = null
53 - })
54 -}
55 -
56 -app.on('ready', createWindow)
57 13
58 app.on('window-all-closed', () => { 14 app.on('window-all-closed', () => {
59 if (process.platform !== 'darwin') { 15 if (process.platform !== 'darwin') {
60 app.quit() 16 app.quit()
61 } 17 }
62 }) 18 })
63 - 19 +app.on('browser-window-created', () => {
64 -app.on('activate', () => { 20 + console.log('window-created')
65 - if (mainWindow === null) {
66 - createWindow()
67 - }
68 -})
69 -
70 -/**
71 - * Auto Updater
72 - *
73 - * Uncomment the following code below and install `electron-updater` to
74 - * support auto updating. Code Signing with a valid certificate is required.
75 - * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-electron-builder.html#auto-updating
76 - */
77 -
78 -/*
79 -import { autoUpdater } from 'electron-updater'
80 -
81 -autoUpdater.on('update-downloaded', () => {
82 - autoUpdater.quitAndInstall()
83 -})
84 -
85 -app.on('ready', () => {
86 - if (process.env.NODE_ENV === 'production') autoUpdater.checkForUpdates()
87 }) 21 })
88 - */
......
1 +/* eslint-disable prefer-promise-reject-errors */
2 +import app from './server'
3 +import http from 'http'
4 +import config from '@config'
5 +const port = config.BuiltInServerPort
6 +app.set('port', port)
7 +
8 +export default {
9 + StatrServer () {
10 + return new Promise((resolve, reject) => {
11 + const server = http.createServer(app)
12 + server.listen(port)
13 + server.on('error', (error) => {
14 + switch (error.code) {
15 + case 'EACCES':
16 + reject('权限不足内置服务器启动失败,请使用管理员权限运行。')
17 + break
18 + case 'EADDRINUSE':
19 + reject('内置服务器端口已被占用,请检查。')
20 + break
21 + default:
22 + reject(error)
23 + }
24 + })
25 + server.on('listening', () => {
26 + resolve('服务端运行中')
27 + })
28 + })
29 + }
30 +}
1 +import express from 'express'
2 +const app = express()
3 +
4 +app.get('/message', (req, res) => {
5 + res.send('这是来自node服务端的信息')
6 +})
7 +
8 +app.post('/message', (req, res) => {
9 + if (req) {
10 + res.send(req + '--来自node')
11 + }
12 +})
13 +
14 +export default app
1 +import { autoUpdater } from 'electron-updater'
2 +import { ipcMain } from 'electron'
3 +/**
4 + * -1 检查更新失败 0 正在检查更新 1 检测到新版本,准备下载 2 未检测到新版本 3 下载中 4 下载完成
5 + **/
6 +function Message (mainWindow, type, data) {
7 + const senddata = {
8 + state: type,
9 + msg: data
10 + }
11 + mainWindow.webContents.send('UpdateMsg', senddata)
12 +}
13 +
14 +export default {
15 + Update (mainWindow) {
16 + // 设置地址要和package中的一样
17 + autoUpdater.setFeedURL('http://127.0.0.1:25565/')
18 +
19 + // 当更新发生错误的时候触发。
20 + autoUpdater.on('error', (err) => {
21 + console.log('更新出现错误')
22 + console.log(err.message)
23 + if (err.message.includes('sha512 checksum mismatch')) {
24 + Message(mainWindow, -1, 'sha512校验失败')
25 + }
26 + })
27 +
28 + // 当开始检查更新的时候触发
29 + autoUpdater.on('checking-for-update', (event, arg) => {
30 + console.log('开始检查更新')
31 + Message(mainWindow, 0)
32 + })
33 +
34 + // 发现可更新数据时
35 + autoUpdater.on('update-available', (event, arg) => {
36 + console.log('有更新')
37 + Message(mainWindow, 1)
38 + })
39 +
40 + // 没有可更新数据时
41 + autoUpdater.on('update-not-available', (event, arg) => {
42 + console.log('没有更新')
43 + Message(mainWindow, 2)
44 + })
45 +
46 + // 下载监听
47 + autoUpdater.on('download-progress', (progressObj) => {
48 + Message(mainWindow, 3, progressObj)
49 + })
50 +
51 + // 下载完成
52 + autoUpdater.on('update-downloaded', () => {
53 + console.log('下载完成')
54 + Message(mainWindow, 4)
55 + })
56 + // 执行自动更新检查
57 + ipcMain.on('check-update', () => {
58 + autoUpdater.checkForUpdates().catch(err => {
59 + console.log('网络连接问题', err)
60 + })
61 + })
62 + // 渲染进程执行更新操作
63 + ipcMain.on('confirm-update', () => {
64 + autoUpdater.quitAndInstall()
65 + })
66 + }
67 +}
1 +/* eslint-disable no-case-declarations */
2 +import { app, ipcMain, dialog } from 'electron'
3 +import path from 'path'
4 +import os from 'os'
5 +// 版本以package.json为基准。
6 +const version = require('../../../package.json').version
7 +// 您的下载地址
8 +const baseUrl = 'http://127.0.0.1:25565/'
9 +var Sysarch = null
10 +var defaultDownloadUrL = null
11 +// 识别操作系统位数D
12 +os.arch().includes('64') ? Sysarch = 'win64' : Sysarch = 'win32'
13 +// 识别操作系统
14 +// linux自己修改后缀名哦,我没有linux就没有测试了
15 +if (os.platform().includes('win32')) {
16 + defaultDownloadUrL = baseUrl + `electron_${version}_${Sysarch}.exe?${new Date().getTime()}`
17 +} else if (os.platform().includes('linux')) {
18 + defaultDownloadUrL = baseUrl + `electron_${version}_${Sysarch}?${new Date().getTime()}`
19 +} else {
20 + defaultDownloadUrL = baseUrl + `electron_${version}_mac.dmg?${new Date().getTime()}`
21 +}
22 +export default {
23 + download (mainWindow) {
24 + ipcMain.on('start-download', (event, msg) => {
25 + mainWindow.webContents.downloadURL(msg.downloadUrL || defaultDownloadUrL)
26 + event.reply('confirm-download', true)
27 + mainWindow.webContents.session.on('will-download', (event, item, webContents) => {
28 + // 将文件保存在系统的下载目录
29 + const filePath = path.join(app.getPath('downloads'), item.getFilename())
30 + // 自动保存
31 + item.setSavePath(filePath)
32 + // 下载进度
33 + item.on('updated', (event, state) => {
34 + switch (state) {
35 + case 'progressing':
36 + mainWindow.webContents.send('download-progress', (item.getReceivedBytes() / item.getTotalBytes() * 100).toFixed(0))
37 + break
38 + case 'interrupted ':
39 + mainWindow.webContents.send('download-paused', true)
40 + break
41 + default:
42 +
43 + break
44 + }
45 + })
46 + // 下载完成或失败
47 + item.once('done', (event, state) => {
48 + switch (state) {
49 + case 'completed':
50 + const data = {
51 + filePath
52 + }
53 + mainWindow.webContents.send('download-done', data)
54 + break
55 + case 'interrupted':
56 + mainWindow.webContents.send('download-error', true)
57 + dialog.showErrorBox('下载出错', '由于网络或其他未知原因导致客户端下载出错,请前往官网进行重新安装')
58 + break
59 + default:
60 + break
61 + }
62 + })
63 + })
64 + })
65 + }
66 +}
1 +import { ipcMain, dialog } from 'electron'
2 +import Server from '../server/index'
3 +export default {
4 + Mainfunc (mainWindow, IsUseSysTitle) {
5 + ipcMain.on('IsUseSysTitle', (event) => {
6 + const data = IsUseSysTitle
7 + event.reply('CisUseSysTitle', data)
8 + })
9 + ipcMain.on('windows-mini', () => {
10 + mainWindow.minimize()
11 + })
12 + ipcMain.on('window-max', (event) => {
13 + if (mainWindow.isMaximized()) {
14 + event.reply('window-confirm', false)
15 + mainWindow.restore()
16 + } else {
17 + event.reply('window-confirm', true)
18 + mainWindow.maximize()
19 + }
20 + })
21 + ipcMain.on('window-close', () => {
22 + mainWindow.close()
23 + })
24 + ipcMain.on('open-messagebox', (event, arg) => {
25 + dialog.showMessageBox(mainWindow, {
26 + type: arg.type || 'info',
27 + title: arg.title || '',
28 + buttons: arg.buttons || [],
29 + message: arg.message || '',
30 + noLink: arg.noLink || true
31 + }).then(res => {
32 + event.reply('confirm-message', res)
33 + })
34 + })
35 + ipcMain.on('open-errorbox', (event, arg) => {
36 + dialog.showErrorBox(
37 + arg.title,
38 + arg.message
39 + )
40 + })
41 + ipcMain.on('statr-server', (event, arg) => {
42 + Server.StatrServer().then(res => {
43 + event.reply('confirm-start', res)
44 + }).catch(err => {
45 + dialog.showErrorBox(
46 + '错误',
47 + err
48 + )
49 + })
50 + })
51 + }
52 +}
1 +import { BrowserWindow, Menu } from 'electron'
2 +import menuconfig from '../config/menu'
3 +import config from '@config'
4 +import setIpc from './ipcMain'
5 +import electronDevtoolsInstaller, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
6 +import upload from './checkupdate'
7 +import DownloadUpdate from './downloadFile'
8 +import path from 'path'
9 +
10 +/**
11 + * Set `__static` path to static files in production
12 + * https://simulatedgreg.gitbooks.io/electron-vue/content/en/using-static-assets.html
13 + */
14 +// 这个瓜皮全局变量只能在单个js中生效,而并不是整个主进程中
15 +if (process.env.NODE_ENV !== 'development') {
16 + global.__static = path.join(__dirname, '/static').replace(/\\/g, '\\\\')
17 +}
18 +// 将文件地址挪到这里
19 +const winURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}` : `file://${__dirname}/index.html`
20 +const loadingURL = process.env.NODE_ENV === 'development' ? `http://localhost:${process.env.PORT}/static/loader.html` : `file://${__static}/loader.html`
21 +var loadWindow = null
22 +var mainWindow = null
23 +
24 +function createMainWindow () {
25 + /**
26 + * Initial window options
27 + */
28 + mainWindow = new BrowserWindow({
29 + height: 800,
30 + useContentSize: true,
31 + width: 1700,
32 + minWidth: 1366,
33 + show: false,
34 + frame: config.IsUseSysTitle,
35 + titleBarStyle: 'hidden',
36 + webPreferences: {
37 + nodeIntegration: true,
38 + webSecurity: false,
39 + // 如果是开发模式可以使用devTools
40 + devTools: process.env.NODE_ENV === 'development',
41 + // 在macos中启用橡皮动画
42 + scrollBounce: process.platform === 'darwin'
43 + }
44 + })
45 + // 这里设置只有开发环境才注入显示开发者模式
46 + if (process.env.NODE_ENV === 'development') {
47 + menuconfig.push({
48 + label: '开发者设置',
49 + submenu: [{
50 + label: '切换到开发者模式',
51 + accelerator: 'CmdOrCtrl+I',
52 + role: 'toggledevtools'
53 + }]
54 + })
55 + }
56 + // 载入菜单
57 + const menu = Menu.buildFromTemplate(menuconfig)
58 + Menu.setApplicationMenu(menu)
59 + mainWindow.loadURL(winURL)
60 +
61 + setIpc.Mainfunc(mainWindow, config.IsUseSysTitle)
62 + upload.Update(mainWindow)
63 + DownloadUpdate.download(mainWindow)
64 +
65 + if (process.env.NODE_ENV === 'development') {
66 + mainWindow.webContents.once('dom-ready', () => {
67 + mainWindow.show()
68 + electronDevtoolsInstaller(VUEJS_DEVTOOLS)
69 + .then((name) => console.log(`installed: ${name}`))
70 + .catch(err => console.log('Unable to install `vue-devtools`: \n', err))
71 + loadWindow.destroy()
72 + })
73 + mainWindow.webContents.openDevTools(true)
74 + } else {
75 + mainWindow.webContents.once('dom-ready', () => {
76 + mainWindow.show()
77 + loadWindow.destroy()
78 + })
79 + }
80 +
81 + mainWindow.on('closed', () => {
82 + mainWindow = null
83 + })
84 +}
85 +
86 +function loadindWindow () {
87 + loadWindow = new BrowserWindow({
88 + width: 400,
89 + height: 600,
90 + frame: false,
91 + backgroundColor: '#222',
92 + transparent: true,
93 + webPreferences: { experimentalFeatures: true }
94 + })
95 +
96 + loadWindow.loadURL(loadingURL)
97 +
98 + loadWindow.show()
99 +
100 + setTimeout(() => {
101 + createMainWindow()
102 + }, 2000)
103 +
104 + loadWindow.on('closed', () => {
105 + loadWindow = null
106 + })
107 +}
108 +
109 +function initWindow () {
110 + if (config.UseStartupChart) {
111 + return loadindWindow()
112 + } else {
113 + return createMainWindow()
114 + }
115 +}
116 +export default initWindow
1 <template> 1 <template>
2 <div id="app"> 2 <div id="app">
3 + <c-header></c-header>
4 + <transition name="fade" mode="out-in">
3 <router-view></router-view> 5 <router-view></router-view>
6 + </transition>
4 </div> 7 </div>
5 </template> 8 </template>
6 9
7 <script> 10 <script>
8 - export default { 11 +import CHeader from "./components/title";
9 - 12 +export default {
10 - } 13 + components: { CHeader }
14 +};
11 </script> 15 </script>
12 16
13 <style> 17 <style>
14 - /* CSS */ 18 +/* CSS */
15 </style> 19 </style>
......
...@@ -22,3 +22,10 @@ export function logout () { ...@@ -22,3 +22,10 @@ export function logout () {
22 method: 'post' 22 method: 'post'
23 }) 23 })
24 } 24 }
25 +
26 +export function message () {
27 + return request({
28 + url: '/message',
29 + method: 'get'
30 + })
31 +}
......
1 <template> 1 <template>
2 <div id="wrapper"> 2 <div id="wrapper">
3 - <img id="logo" src="~@/assets/logo.png" alt="electron-vue" /> 3 + <img id="logo" :src="logo" alt="electron-vue" />
4 <main> 4 <main>
5 <div class="left-side"> 5 <div class="left-side">
6 <span class="title">欢迎进入本框架</span> 6 <span class="title">欢迎进入本框架</span>
...@@ -22,15 +22,39 @@ ...@@ -22,15 +22,39 @@
22 <el-button type="primary" round @click="setdata">写入数据</el-button> 22 <el-button type="primary" round @click="setdata">写入数据</el-button>
23 <el-button type="primary" round @click="getdata">读取数据</el-button> 23 <el-button type="primary" round @click="getdata">读取数据</el-button>
24 <el-button type="primary" round @click="deledata">清除所有数据</el-button> 24 <el-button type="primary" round @click="deledata">清除所有数据</el-button>
25 + <el-button type="primary" round @click="CheckUpdate('one')">检查更新</el-button>
26 + </div>
27 + <div class="doc">
28 + <el-button type="primary" round @click="CheckUpdate('two')">检查更新(第二种方法)</el-button>
29 + <el-button type="primary" round @click="StartServer">启动内置服务端</el-button>
30 + <el-button type="primary" round @click="getMessage">查看消息</el-button>
25 </div> 31 </div>
26 </div> 32 </div>
27 </main> 33 </main>
34 + <el-dialog
35 + title="进度"
36 + :visible.sync="dialogVisible"
37 + :before-close="handleClose"
38 + center
39 + width="14%"
40 + top="45vh"
41 + >
42 + <div class="conten">
43 + <el-progress
44 + type="dashboard"
45 + :percentage="percentage"
46 + :color="colors"
47 + :status="progressStaus"
48 + ></el-progress>
49 + </div>
50 + </el-dialog>
28 </div> 51 </div>
29 </template> 52 </template>
30 53
31 <script> 54 <script>
32 import SystemInformation from "./LandingPage/SystemInformation"; 55 import SystemInformation from "./LandingPage/SystemInformation";
33 -import api from "../tools/dialog"; 56 +import ipcApi from "../utils/ipcRenderer";
57 +import { message } from "@/api/login";
34 export default { 58 export default {
35 name: "landing-page", 59 name: "landing-page",
36 components: { SystemInformation }, 60 components: { SystemInformation },
...@@ -40,12 +64,44 @@ export default { ...@@ -40,12 +64,44 @@ export default {
40 name: "yyy", 64 name: "yyy",
41 age: "12" 65 age: "12"
42 }, 66 },
43 - textarray: [] 67 + logo: require("@/assets/logo.png"),
68 + textarray: [],
69 + percentage: 0,
70 + colors: [
71 + { color: "#f56c6c", percentage: 20 },
72 + { color: "#e6a23c", percentage: 40 },
73 + { color: "#6f7ad3", percentage: 60 },
74 + { color: "#1989fa", percentage: 80 },
75 + { color: "#5cb87a", percentage: 100 }
76 + ],
77 + dialogVisible: false,
78 + progressStaus: null,
79 + filePath: ""
44 }), 80 }),
81 + created() {
82 + console.log(__lib);
83 + },
45 methods: { 84 methods: {
85 + getMessage() {
86 + message().then(res => {
87 + this.$alert(res.data, "提示", {
88 + confirmButtonText: "确定"
89 + });
90 + });
91 + },
92 + StartServer() {
93 + ipcApi.send("statr-server");
94 + ipcApi.on("confirm-start", (event, arg) => {
95 + console.log(arg);
96 + this.$message({
97 + type: "success",
98 + message: arg
99 + });
100 + });
101 + },
46 // 获取electron方法 102 // 获取electron方法
47 open() { 103 open() {
48 - console.log(this.$store); 104 + console.log(this.$electron);
49 }, 105 },
50 // 设置数据库的数据 106 // 设置数据库的数据
51 setdata() { 107 setdata() {
...@@ -67,28 +123,138 @@ export default { ...@@ -67,28 +123,138 @@ export default {
67 }, 123 },
68 // 清空数据库的数据 124 // 清空数据库的数据
69 deledata() { 125 deledata() {
70 - // dialog为electron实例,data则是显示需要的参数,fun是需要执行的函数,此选项不是为必选的 126 + // data则是显示需要的参数
71 - const dialog = this.$electron.remote.dialog;
72 const data = { 127 const data = {
73 title: "清除数据", 128 title: "清除数据",
74 - buttons: ["OK", "Cancel"], 129 + buttons: ["确定了!", "才不要,我手滑了"],
130 + noLink: true,
75 message: "此操作会清空本地数据库中的所有数据,是否继续?" 131 message: "此操作会清空本地数据库中的所有数据,是否继续?"
76 }; 132 };
77 - const fun = this.$db.deleall({ name: "yyy" }); 133 + ipcApi.send("open-messagebox", data);
78 - api.MessageBox(dialog, data, fun).then(res => { 134 + ipcApi.on("confirm-message", (event, arg) => {
135 + console.log(arg);
136 + if (arg.response === 0) {
137 + this.$db.deleall({ name: "yyy" }).then(res => {
138 + console.log(res);
139 + if (res !== 0) {
79 this.getdata(); 140 this.getdata();
80 this.$message({ 141 this.$message({
81 - showClose: true,
82 message: "成功删除" + res + "条", 142 message: "成功删除" + res + "条",
83 type: "success" 143 type: "success"
84 }); 144 });
145 + } else {
146 + let errormsg = {
147 + title: "错误",
148 + message: "已经没有数据可以被删除!"
149 + };
150 + ipcApi.send("open-errorbox", errormsg);
151 + }
152 + });
153 + }
85 }); 154 });
86 - // const data = {
87 - // title:'发生致命错误',
88 - // message:'?'
89 - // }
90 - // api.ErrorMessageBox(dialog,data)
91 }, 155 },
156 + CheckUpdate(data) {
157 + switch (data) {
158 + case "one":
159 + const dialog = this.$electron.remote.dialog;
160 + ipcApi.send("check-update");
161 + console.log("启动检查");
162 + ipcApi.on("UpdateMsg", (event, data) => {
163 + console.log(data);
164 + switch (data.state) {
165 + case -1:
166 + const msgdata = {
167 + title: data.msg
168 + };
169 + api.MessageBox(dialog, msgdata);
170 + break;
171 + case 0:
172 + this.$message("正在检查更新");
173 + break;
174 + case 1:
175 + this.$message({
176 + type: "success",
177 + message: "已检查到新版本,开始下载"
178 + });
179 + this.dialogVisible = true;
180 + break;
181 + case 2:
182 + this.$message({ type: "success", message: "无新版本" });
183 + break;
184 + case 3:
185 + this.percentage = data.msg.percent.toFixed(1);
186 + break;
187 + case 4:
188 + this.progressStaus = "success";
189 + this.$alert("更新下载完成!", "提示", {
190 + confirmButtonText: "确定",
191 + callback: action => {
192 + ipcApi.send("confirm-update");
193 + }
194 + });
195 + break;
196 +
197 + default:
198 + break;
199 + }
200 + });
201 + break;
202 + case "two":
203 + console.log(111);
204 + ipcApi.send("start-download");
205 + ipcApi.on("confirm-download", (event, arg) => {
206 + if (arg) {
207 + this.dialogVisible = true;
208 + }
209 + });
210 + ipcApi.on("download-progress", (event, arg) => {
211 + this.percentage = Number(arg);
212 + });
213 + ipcApi.on("download-error", (event, arg) => {
214 + if (arg) {
215 + this.progressStaus = "exception";
216 + this.percentage = 40;
217 + this.colors = "#d81e06";
218 + }
219 + });
220 + ipcApi.on("download-paused", (event, arg) => {
221 + if (arg) {
222 + this.progressStaus = "warning";
223 + this.$alert("下载由于未知原因被中断!", "提示", {
224 + confirmButtonText: "重试",
225 + callback: action => {
226 + ipcApi.send("satrt-download");
227 + }
228 + });
229 + }
230 + });
231 + ipcApi.on("download-done", (event, age) => {
232 + this.filePath = age.filePath;
233 + this.progressStaus = "success";
234 + this.$alert("更新下载完成!", "提示", {
235 + confirmButtonText: "确定",
236 + callback: action => {
237 + this.$electron.shell.openItem(this.filePath);
238 + }
239 + });
240 + });
241 + break;
242 +
243 + default:
244 + break;
245 + }
246 + },
247 + handleClose() {
248 + this.dialogVisible = false;
249 + }
250 + },
251 + destroyed() {
252 + ipcApi.remove("confirm-message");
253 + ipcApi.remove("download-done");
254 + ipcApi.remove("download-paused");
255 + ipcApi.remove("confirm-download");
256 + ipcApi.remove("download-progress");
257 + ipcApi.remove("download-error");
92 } 258 }
93 }; 259 };
94 </script> 260 </script>
...@@ -105,8 +271,6 @@ body { ...@@ -105,8 +271,6 @@ body {
105 } 271 }
106 272
107 #wrapper { 273 #wrapper {
108 - background-color: #d1d1d1ab;
109 - height: 93vh;
110 padding: 60px 80px; 274 padding: 60px 80px;
111 } 275 }
112 276
...@@ -147,9 +311,14 @@ main > div { ...@@ -147,9 +311,14 @@ main > div {
147 font-size: 18px; 311 font-size: 18px;
148 margin-bottom: 10px; 312 margin-bottom: 10px;
149 } 313 }
150 - 314 +.doc {
315 + margin-bottom: 20px;
316 +}
151 .doc p { 317 .doc p {
152 color: black; 318 color: black;
153 margin-bottom: 10px; 319 margin-bottom: 10px;
154 } 320 }
321 +.conten {
322 + text-align: center;
323 +}
155 </style> 324 </style>
...\ No newline at end of file ...\ No newline at end of file
......
...@@ -26,6 +26,10 @@ ...@@ -26,6 +26,10 @@
26 <div class="name">所运行的系统:</div> 26 <div class="name">所运行的系统:</div>
27 <div class="value">{{ platform }}</div> 27 <div class="value">{{ platform }}</div>
28 </div> 28 </div>
29 + <div class="item">
30 + <div class="name">所运行的系统:</div>
31 + <div class="value">{{ arch }}位</div>
32 + </div>
29 </div> 33 </div>
30 </div> 34 </div>
31 </template> 35 </template>
...@@ -39,6 +43,7 @@ ...@@ -39,6 +43,7 @@
39 node: process.versions.node, 43 node: process.versions.node,
40 path: this.$route.path, 44 path: this.$route.path,
41 platform: require('os').platform(), 45 platform: require('os').platform(),
46 + arch:require('os').arch(),
42 vue: require('vue/package.json').version 47 vue: require('vue/package.json').version
43 } 48 }
44 }, 49 },
......
...@@ -15,10 +15,10 @@ ...@@ -15,10 +15,10 @@
15 :show-file-list="true" 15 :show-file-list="true"
16 :on-remove="handleRemove" 16 :on-remove="handleRemove"
17 :on-success="handleSuccess" 17 :on-success="handleSuccess"
18 - :before-upload="beforeUpload" 18 + :on-error="handleError"
19 :data="picPostData" 19 :data="picPostData"
20 class="editor-slide-upload" 20 class="editor-slide-upload"
21 - action="https://up-z2.qiniup.com/" 21 + action="https://jsonplaceholder.typicode.com/post/"
22 list-type="picture-card" 22 list-type="picture-card"
23 :limit="5" 23 :limit="5"
24 > 24 >
...@@ -31,8 +31,7 @@ ...@@ -31,8 +31,7 @@
31 </template> 31 </template>
32 32
33 <script> 33 <script>
34 -// import { getToken } from 'api/qiniu' 34 +
35 -import { checkPic } from "@util/picUtil.js";
36 35
37 export default { 36 export default {
38 name: "EditorSlideUpload", 37 name: "EditorSlideUpload",
...@@ -93,42 +92,8 @@ export default { ...@@ -93,42 +92,8 @@ export default {
93 } 92 }
94 } 93 }
95 }, 94 },
96 - beforeUpload(file) { 95 + handleError(err){
97 - const _self = this; 96 + this.alert(err)
98 - const _URL = window.URL || window.webkitURL;
99 - const fileName = file.uid;
100 - this.listObj[fileName] = {};
101 - return new Promise((resolve, reject) => {
102 - let Sync = async () => {
103 - try {
104 - let picKey = await checkPic(file, this.fileList.length, 1);
105 - if (picKey) {
106 - let token = await this.getRequest(
107 - "/qiniu/serveGetQiniuUpToken?key=" + picKey
108 - );
109 - console.log("picKey---", picKey, token);
110 - this.picPostData = token;
111 - const img = new Image();
112 - img.src = _URL.createObjectURL(file);
113 - img.onload = function() {
114 - _self.listObj[fileName] = {
115 - hasSuccess: false,
116 - uid: file.uid,
117 - width: this.width,
118 - height: this.height
119 - };
120 - };
121 - resolve(true);
122 - } else {
123 - reject(false);
124 - this.listObj = {};
125 - }
126 - } catch (error) {
127 - reject(false);
128 - }
129 - };
130 - Sync();
131 - });
132 } 97 }
133 } 98 }
134 }; 99 };
......
1 +<!-- -->
2 +<template>
3 + <div class="window-title" v-if="!IsUseSysTitle&&isMac">
4 + <!-- 软件logo预留位置 -->
5 + <div style="-webkit-app-region: drag;" class="logo">
6 + <svg-icon icon-class="electron-logo"></svg-icon>
7 + </div>
8 + <!-- 菜单栏位置 -->
9 + <div></div>
10 + <!-- 中间标题位置 -->
11 + <div style="-webkit-app-region: drag;" class="title"></div>
12 + <div class="controls-container">
13 + <div class="windows-icon-bg" @click="Mini">
14 + <svg-icon icon-class="mini" class-name="icon-size"></svg-icon>
15 + </div>
16 + <div class="windows-icon-bg" @click="MixOrReduction">
17 + <svg-icon v-if="mix" icon-class="reduction" class-name="icon-size"></svg-icon>
18 + <svg-icon v-else icon-class="mix" class-name="icon-size"></svg-icon>
19 + </div>
20 + <div class="windows-icon-bg close-icon" @click="Close">
21 + <svg-icon icon-class="close" class-name="icon-size"></svg-icon>
22 + </div>
23 + </div>
24 + </div>
25 +</template>
26 +
27 +<script>
28 +import ipcApi from "@/utils/ipcRenderer";
29 +export default {
30 + data: () => ({
31 + mix: false,
32 + IsUseSysTitle: false,
33 + isMac:process.platform !== 'darwin'
34 + }),
35 +
36 + components: {},
37 + created() {
38 + ipcApi.send("IsUseSysTitle");
39 + ipcApi.on("CisUseSysTitle", (event, arg) => (this.IsUseSysTitle = arg));
40 + },
41 +
42 + mounted() {},
43 +
44 + methods: {
45 + Mini() {
46 + ipcApi.send("windows-mini");
47 + },
48 + MixOrReduction() {
49 + ipcApi.send("window-max");
50 + ipcApi.on("window-confirm", (event, arg) => (this.mix = arg));
51 + },
52 + Close() {
53 + ipcApi.send("window-close");
54 + }
55 + }
56 +};
57 +</script>
58 +<style rel='stylesheet/scss' lang='scss' scoped>
59 +.window-title {
60 + width: 100%;
61 + height: 30px;
62 + line-height: 30px;
63 + background-color: #ffffff;
64 + display: flex;
65 + -webkit-app-region: drag;
66 + position: fixed;
67 + top: 0;
68 + z-index: 99999;
69 + .title {
70 + text-align: center;
71 + }
72 + .logo{
73 + margin-left: 20px;
74 + }
75 + .controls-container {
76 + display: flex;
77 + flex-grow: 0;
78 + flex-shrink: 0;
79 + text-align: center;
80 + position: relative;
81 + z-index: 3000;
82 + -webkit-app-region: no-drag;
83 + height: 100%;
84 + width: 138px;
85 + margin-left: auto;
86 + .windows-icon-bg {
87 + display: inline-block;
88 + -webkit-app-region: no-drag;
89 + height: 100%;
90 + width: 33.34%;
91 + color: rgba(129, 129, 129, 0.6);
92 + .icon-size {
93 + width: 12px;
94 + height: 15px;
95 + }
96 + }
97 + .windows-icon-bg:hover {
98 + background-color: rgba(182, 182, 182, 0.2);
99 + color: #333;
100 + }
101 + .close-icon:hover {
102 + background-color: rgba(232, 17, 35, 0.9);
103 + color: #fff;
104 + }
105 + }
106 +}
107 +</style>
...\ No newline at end of file ...\ No newline at end of file
1 +import Vue from 'vue'
2 +
3 +Vue.config.errorHandler = function (err, vm, info) {
4 + Vue.nextTick(() => {
5 + if (process.env.NODE_ENV === 'development') {
6 + console.group('%c >>>>>> 错误信息 >>>>>>', 'color:red')
7 + console.log(`%c ${info}`, 'color:blue')
8 + console.groupEnd()
9 + console.group('%c >>>>>> 发生错误的Vue 实例对象 >>>>>>', 'color:green')
10 + console.log(vm)
11 + console.groupEnd()
12 + console.group('%c >>>>>> 发生错误的原因及位置 >>>>>>', 'color:red')
13 + console.error(err)
14 + console.groupEnd()
15 + }
16 + })
17 +}
1 +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width='11' height='11' viewBox='0 0 11 11' class="icon" xmlns='http://www.w3.org/2000/svg'><path d='M6.279 5.5L11 10.221l-.779.779L5.5 6.279.779 11 0 10.221 4.721 5.5 0 .779.779 0 5.5 4.721 10.221 0 11 .779 6.279 5.5z'/></svg>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
3 +<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="256px" height="256px" viewBox="0 0 256 256" enable-background="new 0 0 256 256" xml:space="preserve"> <image id="image0" width="256" height="256" x="0" y="0"
4 + href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAABGdBTUEAALGPC/xhBQAAACBjSFJN
5 +AAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAABmJLR0QA/wD/AP+gvaeTAABz
6 ++0lEQVR42u29d5zc1nku/ByU6W174XKXfdmLqEr1blmyHJe4xlUuUSLHJblxbvIlufcm98uXm1zb
7 +sp04ih0ptiJLtmRZ3aYkWhIpSqJEsS/rcrnc5fY2O30G5Xx/YDCLHQIzmBnM7JCah7/lAAcHB8AB
8 +3ve87bwHqKGGGmqooYYaaqihhhpqqKGGGmqooYYaaqihhhpqqKGGGmqooYYaaqihhhpqqKGGGmqo
9 +oYYaaqihhhpqqKGGGmqooYYaaqihhhqqFGShb6AG60ApJQBYADwAHwAbAA5AQ3qfh/LOjd47BSAD
10 +EACEAUwBEAGkAITS5RIhhC70s9ZgDWoM4AJDmsjtAAIAmkRRbCOEdBJC2iil7QDaAXgppc2EEDcU
11 +BuAG4IDCHPK9czn9lwAQBSBSSqOEkHEoTGGYEDJMKR2hlA5wHDcCYAJAEECyxhwuLNQYQBUjTewe
12 +AG2iKC5lGGYNpXQ1pXQZgMWYG9ltyPMuCSnsVVOal44p5iSDKQCDhJA+QshxWZaPcRx3BsAIgEiN
13 +KVQvagygikApZQHUAVguy/JmSukllNL1ALoopY1IE7oRMRdC5Nl1TRB83rrpcgogRQiZBHCWEHKE
14 +ELKPYZgDAE4DmCGESAvUxTVkocYAFhiUUo8gCCsAXAbgagCbASyBMrJn3o+WYK1gACXec97yrDoU
15 +iqTQD+AAgN0A3uF5vpcQEqnITdegixoDqDDSYn2DKIqbAFxPKb0OwDoA9QAYtV4ugs9H6OViBPmk
16 +hOzjORiCDGAaQA8hZCeA1ziOOwhgqqYuVBY1BlABpIm+ThTFSymltwO4gVLaDcU4lyHY7N/sbSNU
17 +auQ3eDbTx9Xt7F8AUULICQCvEkK2cxy3F4qqUGMGZUaNAZQRlFKXIAgbKKV3AbgdykjvAnITvZn9
18 +bFSaCZQiDWj3dZhBDEAPgO2EkOd4nj9MCIlV9OHeQ6gxAIuRHu07BEG4nVL6YQBXUErrtYRuNMJX
19 +k55fwvPnLc+1rWUIhJAZAG8RQp7keX47gHM1qcBaVPfXdAGBUmoTBGETpfRjAD5AKV0OgNMjfLOi
20 +frHErhKS9k+W5XnElU2o2ffHMEymTPtX7P3kKtOTBrLKRELIaQDPEkJ+yfP8QUJIyqp3915GjQGU
21 +CEqpR5KkayVJ+gyl9FYAjcD5BGWG6AshMJWoJUmCJEkQRTHzq5arddT6Zl192vtVGQHLsmAYBhzH
22 +gWXZzK9aXui9G+0bMQFNnUlCyEssyz7MsuyumhehNNQYQJGglPpTqdTtAL5AKb0WGoNertG+GKKn
23 +lEIURYiiCEEQIAhCZl8d2fVG9FwoNA7ASGJQmQLHceB5HjzPZ/bNPpvevpFUkGU43AXgIZvNtp0Q
24 +Mlv823zvosYACkSa8N9PKf0ygG1QwnJ1ReViiV6WZYiiiFQqlfnTEnsxbZahH3T3tUzBZrNl/jiO
25 +A8MwRbWpxwQ0dZMA3iCE/Nhms71QYwSFocYATIJS6kmlUrcRQv5IluVrANjziflm3XmUUkiShFQq
26 +hUQigVQqBUEQMuK72XYWOhAo+5i6zTAMeJ6HzWaDw+GAzWYDy7J5+yR7O496kGQY5nVK6b/abLYX
27 +a6qBOdQYQB5QSm2iKF4ry/KfUEpvAeDSG+kLHe1VsT6RSGSIXtXbSzEOlpsJmCV+vTL12ViWzTAD
28 +h8ORU13IJRUYqAcxQsjLDMN8n+O4XTVjYW7UGIABKKUklUptoJR+DcBHocy+m2fwMmvc00Il+lgs
29 +liF67TlmGchCMIFCiV+vPHs0V5mBy+XKMAMz1zBiBKrUBGV24hOEkB/YbLbDNfehPmoMQAeU0pZU
30 +KvVFSukfUko79dxhhRC+LMtIJBKIx+NIJBIQRXFe/WJGfLNEXiozMOs5yDf665VlMwOO4+BwOOB0
31 +OuFwOAxtBrkYQfYfIWSAEPJvNpvtQULIWEmdcRGixgA0oJTaksnk+wgh35Zl+QpCCFsK4QuCgFgs
32 +hlgsBkEQ5on3hboDSwkMstJ/b7aOGYZgRMiEEPA8D5fLBZfLBZ7n814jDyOQGIbZQyn9R7vd/tua
33 +WjCHGgNII5FILAPwZwA+DcBnRPT5CJ9SilQqhUgkgng8DkmSiiJ6q5lAvnMKmQ6c75xCiT97X0vM
34 +LMvC6XTC4/HAZrMZ9rl2O4fXIATgEQD/7HA4+gp+4IsQ73kGQCm1p1KpD1FK/5JSukEbBQec79dX
35 +y3TaQSKRQCQSQSKRgCzLeQnfSiaQ75jFfVbQsWKIX7tNKQXDMHA4HPB4PHA4HKYZQbZ9IC1hHCaE
36 +/L82m+3XhJBkRTqtSvGeZgCU0q5kMvltAJ8F4C5G3FcJPxwOI5FIZETYYojeKv2/WqYDmykrhBmo
37 +fetwOOD1enUZgVm1AEq6s5/Z7fZ/JIScLUuHXQB4TzIASikrSdLtoij+L0rpJYQQoo19B/KL+5RS
38 +JJNJhEKhggm/kvp/hfrTdHmho7/etpYR+Hw+2O32vIwgmxmkpQFKCNnHcdzfsCy7/b2Yqag6vqAK
39 +glIaSKVSXwPwdUppQ75RX4/IUqkUQqEQ4vF4RtTPR+CFjPxWTgxawH7OW2ZGEsjHCBiGgdPphM/n
40 +g81mM7xmHiPhNMMw37PZbD8ghAQXuu8qiQvrqyoRiUSimxDyv2VZ/iAhhDPS9zOdk0V0oigiHA4j
41 +Go1mjHv5iN1K/d8sFkoFKOTcUiQBPUbAsizcbje8Xu95sQS5pAHNXAqRYZinKaV/5XA4TpSlA6sQ
42 +7wkGQCllRFG8TZKkf6SUbtSb6goYj9ayLCMWiyEUCkEQBFMhv1aJ/0YolMjV+tmRhln9NK9egX1c
43 +dN1SiD/7l+d5+Hw+uFyu8+II8kkDaWnuEMdxf5FWCWRc5LjoGQCl1JFMJr8E4K8BNOcK6gHOJ6xk
44 +MonZ2VkkEonz6hRL7GajBrVYKMNfjn4t6bhevWK39ZiDw+GA3++H3W7PeT0DA+E4gL+z2+0/IYQk
45 +cBHjomYAlNJ6QRD+WpKkrxJCnFqR38yoHw6HEQ6HzxP3zY74pYz2pRr+rGYIpUQEmjnfbFyA2TJV
46 +LfB6vfB6vaalAY1KEGdZ9gGe5/+OEDJtaWdWES5aBhCPx5cyDPN/ZFn+ECGENRL7Af1RPxgMIpFI
47 +5J3XX6z4r4dqcvmZhVWuQaPjxagB2b8OhwOBQKAgaSDNCCSGYX4ty/KfO53OMwva0WXCRckAUqnU
48 +JlmWf0ApvTZXaiu9UT8SiSAUChmO+rkIvhjCL6fbzyrmYJU9oFBmUIzobzSysywLn88Hj8eTUxow
49 +sAvsYhjmazab7aAlHVpFuOgYgCAI10uS9ANK6YZCiF8QBASDQcTj8bnOsXD0z4ZVrr9qlwCM6uTz
50 +ChgdK1YKUOF0OhEIBM6bX2CCCRxmWfZrPM+/tqAdbjEuKgYgiuL7RVH8AYBlKrFnu/m0vyri8Thm
51 +ZmYyFv5yEX6lQ32rTQIwOmaWGVjBCFRPQV1dHZxOp277Bm5CAOjjOO5rHMe9YEnHVgEuCgZAlbn7
52 +H6WUfhfAIrPGPkopQqEQQqHQeQE9pTKBeZ1cgs//YrQBGB0rlBEUIwVoA4h8Ph98Pt9534RefU06
53 +tiFCyDdtNtsT5CLIMXDBMwBKKZNKpT5JKf0O0m6+bNE/87CabUmSMDMzg1gsNu94MQRvhvCtiPOv
54 +ZHCQlUE/+Y4VOl8gu7xQhqCt53K5UFdXB5ZlDa+twwTGCSHfstlsj17osQIXNAOglDKCIPyBLMv/
55 +F0CjEfFnf/ypVArT09NIJpNFjfqFEnYxjMDMsWLqWdj3JdcrZaJQrvqFSgN2ux319fXnhRLr2QU0
56 +TGCSYZg/5Xn+vy5kJnDBMoC02P8pSun3ADTmi+5TUay+b2bUr9Qkn4UW+41QrDpQ6rwBbVmxTMCM
57 +XSCbEUBZo+AbNpvt5xeqOlCdX5IJJJPJ36eU/hBAs1nij0ajmJmZ0XXxWTnqV4Pov1CBQGbPKVUV
58 +sEIa0HMV1tXVwe1267ZrwATGCSH32e32xy3t8ArhgmQAaWv/v0PH4Gdk7AuHw5idnc28zFJF/0wH
59 +lhDnb4W/f6GlgVLmAOQqL2a+QHZZoVIAoPSn3++H1+s1NA7qGQY5jvvKhegduOAYQNrP/yDSrj4z
60 +xB8KhTA7Ozv30BYQ/0IQ/kITu1kshCpgVK8YJgAAfr8/p4dAhwn0sSz7xQstTuDC+KLSSEf4/QzA
61 +RrPEHwwGEQ6H5x3T+7V61LdC9Ddz3AyKbaMUT4DZNqxUBQqVBvIxBa/Xi0AgUAgTOMQwzGcvpIjB
62 +C4YBxOPxpYSQn6rhvWaJPxQKGRJ4KSK/2VG/mNF+oQJ+CkW5A4Syy81IA8WqBEZlPp/PNBNQw4Yp
63 +pZ+7UOYOXBAMgFJan0wmH6CUflQlfKNAn3R9y4nfTOBPOQN+Cq23UCiHe9DsfqkqQSlMQJUC0kzg
64 +Cbvd/oeEkKmFeQvmwZTeRHlBlfn8f00p/XAliD87eCjfudnlZvazy82oAWbqVQOseKZC+zPf+9G7
65 +ntnvghCCUCiEYDA4j6lk19F+m5TSDwuC8P9QSh0L/T7yoaoZAKWUJJPJL1FKv0oIYfQ+Gj2DXzgc
66 +Loj4832MRm1kX79Qws+FC4noS32GUhiB3rF8KlwuZmBUFg6HEQqFdJmATruMJElfTX+7Vf0Cq/rm
67 +EonEHZTShwghLWZ8/Sqn1pabebnZ7WTvF6r36+0blRVyvBAY2h4AMISBTCkkKoOCgiUM2HQZRXEJ
68 +PQqBFYbBQu0BuVSCQgyEgUAAPp/PsJ0slWCcEPJ5h8PxG8s6z2JULQNIJpOrKaWPAdhkxuIfjUYx
69 +PT0NSmleQjer7xdj7a804RdyLkMIwkICR8PD6AkNYSwxC5HKCPAurPA0Y6N/MdocARAQQ0aQjXLN
70 +GTA6Xoxb0MhAaCY4KPs4IQT19fXzgoXyeAYOEkI+YbfbjxfdUWVEVTIASmkgmUz+hFL6ETMW/3g8
71 +jqmpqczKsLkIvlDiN2vhL5TwK0X0gPKSZVDsmzmLXw+/ixPhEcQlYV4dljBodfhxe8sGvK91A9ys
72 +3TQTUFEuZlBKhKDRSJ7reL5thmHQ0NAwL2w4j2fgV3a7/UukClOOVx0DoMrsvr+SZflvGYZh8xn9
73 +UqkUJicn58X2lyr2FyIB6O0bleUqz4dSGIZMKV4YPYhHB9/CrBAHSb92lhAABBKdm8vCEgY3Nq/B
74 +F5dcCx/nLJgJqCiWGZQzSMgMEzDDENS5A42NjfMmEOXwDEgMw/xPm832v0mVTRyqOgaQSCTeTyn9
75 +GSGkIdvqD8wnBEmSMDk5mcndVw3Eb+Wob4VNgAHBa5Mn8C+ndyAqJkEI0Gz34bK6ZVjhaQbPsBiO
76 +B/HOzBmcjoxDhgwCgg+2b8Hnuq4BS0q3E5czXmAhmYDdbkdTU5PuVOJs1yCldIoQ8jmHw/F8yR1q
77 +IaqKAcTj8aUAfkkIuVRP78+2+E9NTSEajS4I8Zdz1LfKGEhAMJkK4++OPYPTkXEQAmz2d+LzS67F
78 +MndThrgpKKZTUTw5tBfPjxyEQCW4WTu+3X0nLqnrgmyRAdAqRlBqpKCVTMDtdqOhoeG8b1PPHkAp
79 +3QvgY9UUJFQ1bkBKqZ0Q8ucAdIk/G6FQCLFYLK9rSP0tJ/GX4u4rpX4+MITgQHAA/dFJAECXqxFf
80 +XXYjVnpaAAASlSFRGTKlqLe58enObbi2cRUAICwm8MrEMYiydcvlWdUfeuWFvDcz34KZ74EQklkw
81 +xugesyTYSwkhf04ptaNKUDUMIB6Pf4hS+pnsEd/I6Kd2uhljXynEn4vB6O3nKzeqWw5/v0hlHA0N
82 +Q6QSGEJwS/NaLHY1zNP5VciUwsXacEfrJng5JwgIjoVHMJmKZGwGVqEYRmCmPF9cgHa7UCaQ63tS
83 +14k0akP7Ryn9TDwe/5ClHVoCqoIBJBKJ5QD+OyHEnS+JpyAImJmZyVj81eOFcG+9ts34/XPt5yvX
84 +Q7kIP9NXsojxpMIoXawdq73tQA6jnkxldDjr0ObwA6CYSIZwePYcmDLdoxV9le+9lMIEsusYDQqy
85 +LGeSzOS6RvrbdgP47+lvfsGx4AyAUmqTZflbhJCNRvq+ClmWEQwGdS3+gLkRPPtYrvP02tXbz1eu
86 +V6+chA8oxh2JykjJIgCAZxg4WD7nORQAx7BwsDwoAFGWsX3sMCaS4bIxgUL7o1hpIF9ZLrUunxpA
87 +CMmkldcOTHr10n8bZVn+FqX0/OWMK4wFZwDJZPJ2QsinzYj+kUgE8Xg8r9Gv0sRvxQdsNSgAlrAZ
88 +ok9IAoJCLKc4T0AQl1IZVyFDCE6ER/Hw2d2YFeJlZQKF9E0uacBo3womkGubEIJ4PI5IJKLbvs7f
89 +p5PJ5O1l7VATWFAGEIlEWiilf04I8WtFfxXa/WQyeZ7er7dt9DK1ZVYTvxlUYtTPho1hschZBwCI
90 +SwL2zfTr6v8qGEJwPDyC0cTsPGJ/ZeIY7j/1IvqiExVhAqUwU6uZQPaxfBJnKBRCMpnMeT/pb91P
91 +Kf3zSCTSUtYOzYMFZQAsy34RwDaj0V+FKvpL0pxFOtdIX+iLrgTxLwQYwmBLoAtOVpE0X504jv3B
92 +s2AJc54kwBIGo4lZPDW8DwlJAAWFTGXlDxR7pvvwj8efx86JE5BBy+4/rhYmkM8elP3tSZKkqwoY
93 +fOPbWJa9p8xdmRMLxgBSqdQmAJlZftpOUrdVhMNh3WCf7Hq5CFhbViniX4hRXwtKZaz3LcIm/2JQ
94 +UMwIUfxb3yt4efwoIqKy6jUBgSBLOBIawg9Pv4yjoWEQAvh5F+5q24IPtG9Bg80DADgXn8G/nN6B
95 +Xw+9i5QsWe4dKLb/ysEE8p2rt63+JRKJTBaq7LazthkAX0nTwoJgQb5OSimfSCT+BcCX9WL9s0X/
96 +iYmJzMo92o4sRu+vJPFXA1Q9/v+e/C2G4tMghMDGcFjmbsYSVyN4hsVoYhYnI6MIppRFUry8A19Z
97 +egNuaFoNADgWHsFP+1/H0fAQAIAnLO5u34JPLL4CDsZWdLhwITATRFRsuHB2Wa5AoXyBQeo+wzBo
98 +amqatyKxXoBQWlL4icPh+CNCyPwJGhXAgnyliUTiFgC/BFCXzQCAOeKRZRmTk5PnGf7MGGYyD2gg
99 +3pnh/hc68WfuBwQHZwfwH2d2oi86kS6dT7bqDMA63oVPd27D7a3rMyM8QwhGE7N4qH8X3pjqzUwh
100 +/mDbJfhU55WwM/wFyQTMRAka1cnHCCilcDqdaGxszKxGrDdXIM0AZgB8zOFwvFz2TswCW3oThWF8
101 +fNzD8/w/EkI2awwimU7SEk80Gp2X3MOsBKCiEOLPtZ2rrJg6C4E2ZwCbAovBEgZBIYakLEKmFAQE
102 +LGHg4R3YFOjEF5Zci6sbV80T7ykUqWCDrwOzQgz9sUnIoDgVGQPHsFjjba/Ic1ulDuiVFztQ5Bo0
103 +RFEEx3GZCUPa87OYklOW5cDXv/715/7pn/4pVfaO1N5vJS8GALFY7PcJIT8lhDhzjf6iKGJ8fByi
104 +KJYk+hfzIi824lfBEGXm32hiFn3RCYwlQhCpBD/vwhJXA7rcjXCxNsPYf4YQzApx/PjMa3h14jgA
105 +Cidrw1eW3oBbmtdVRAoArJEEzCYQ0Y7w2mNmVQGO49Dc3AyO43TbVaUASmmcUvo5l8tV0QVGKvrF
106 +BoPBOrvd/jgh5OZ8M/1mZmbm5fUrRfQvN/FXO+FngyHkPAMeRfrjNXHudCqKH/S+jLen+wAAzQ4v
107 +/tuq92Otr92yiUNmUGpCkWLtAYWqAj6fD3V1dbrnZ80Y3JFIJD5aV1cXrFQfVtQLYLfb3w/gmnzW
108 +/GQyqTvLT61XqOifq/y9RvwAMunAtH+yCeJXz623ufHFJddihacZADCeCOO/Bt7AdCpads+AFsW8
109 +m3zvvpBvJp8rWv2LRqOGsQFZ3/g1Dofjzop1ICrIAILBYB2Aewgh9lxiO6XKMl5an392p+l1YvZ2
110 +Ll0uXxu5ygo5frFCphSLXfX4bNc1CNhcIAQ4PHsOz40cgIzK5ruwkglklxVjO9LblyQJ4XD4PIlE
111 +h4HYAdyTppWKoGIMwGaz3Y6soB+9DkskErrhvtkdln2eHorV5Ytt+70EmVJsCXTig+1bwBIGFBTb
112 +x46gJzRU9mjBbFj1rkodBHJJAfF4HIlEIud56bJtaVqpCCrCACYmJryEkM+ZHf21Pn+jjs21Xaro
113 +XyN+cyAgeF/LRmz2d4JSIJiK4ddD+5TMQ5W+lwLfWTm/Ib3vVZZl01IAIeRzExMT3kr0W0UYgMvl
114 +ug7Atfk6LpFIZCL+jDrSqJOz6xQr+teI3zwoKHy8Ax/tuCyjChwInsWbU6cXpJ+sYgLZZfm+JTPf
115 +KCEk832buP61aZopO8rOAE6dOmUnymw/t55FX4U6+mvTeufrVKM6esj1EmsoHjKlWOtrx43pqMGU
116 +LOE3o4cwU2GDoBUw+40UygjUfe03rneu5s9NCPn0qVOnyp45qOwMoLm5eRMh5JZ8naQ3+pvt4HxG
117 +G6MXWhv9rQFLGNzesgFtjgAA4FR0DLunerEQ3VWKFKBXXoxBMJf6kE8K0NS9ubm5uexzBMrNAAjP
118 +878PoMnIZQcoo38kEjlv9M/VmYYXzHG82kR/Hc5v+TUqAZlSdDjrcXPzWiXYSJaxY7yn4m5BFVar
119 +AqW0m9229lvXO1dzTnOadsragWVlADMzM50A7tL7yLUdk0ql8ur+VhhtikWpbRBCwDIMWJYBQwhk
120 +mSKVEhCKRDEdDGFiagbjkzMIzoaRTAkZIyjLMpm/TMRkOV6URbi+cXUm/0BfdALvTJ/RlQIIgbqI
121 +pjJxRvusjNJHVvR5qSjFIJjPFpBKpXTby6KTu9I0VDZw5WycZdlbCSEr841ukUgEsixn5gPodare
122 +vl4HGqHY0b+YD4kQgKRTbqdSAqZnQxgZm8S5kXEMj04qxB4KIxqLI5FMQRAlUFmG0+mA3+tGwOdF
123 +fcCH+oAPDfV+1Ad8CPi98Hs9cLsccDrsYBiFkVQLKChaHX5c39iNRwbfgihLeGXiGLY1rICHs88L
124 +MorHk3j7wFHsfucQCCHKs9b50FQfQEN9AA11fvi9bjgdDnAcA0r1Q3LzvwdieE72Me2+3nlqWfZv
125 +Ie2q+7IsIxqNzpspmN1G+m8ly7K3Afhxud5b2RhAT0+Ph2XZDxNC2FyuP0EQMn5/tY5eZ2j39baz
126 +z9H7NWrfCIUSP6NQPmKxOPrPjeLQsV4cOX4a/YMjmAqGkEgkIcnyXF5OMl++o/P+IxkpgOc4OB12
127 +eD0u1AV8WLV0Me64+SosXdxertd3fl+o7yK9klBKFmFneBCCTPgvIcA1javw8vhRjCZmcSoyhp7Q
128 +EK5qWJHJRCTLFI8/9zs88uR2JJJJqD3AMAQsy8Jht8HrdqGxIYDORS1YtawT3cu7sLi9GR63CwAt
129 +iPGVygRynW90jroNQLd9QpR04l6vFzzPzzuunpP+7lmWZT/U09Pz6Lp16yIoA8omUU5NTW1zuVzP
130 +EkLqjdb3A4DZ2VkEg0FDfTiX6qBXbqXP3ywDUEfj0fEpvLWvB7vfOYhTZwYRCkeVj5UgQ/Sq+Msy
131 +DBiWAcuyYAhAaTpEV5Igy9pJIsC8qbvpjVXLFuN//tmX0dHWXLb4ezUvoEwp4lIK48kQ+mOTOBYa
132 +wVBiBmu97biqYTkWOxvmBf/85MxreHp4PygobmhajW+svB0cmZvteaL3LO7/j1/ieG8/JEkbOUjP
133 +uwOWZeD1uLC0sx2Xb16Hq7auR1dHK1iW1U3AqYdiVxoyO1041zwBo/kBlFIEAgH4/f555+pMEpqO
134 +xWIfaGhoeKMc77hsEoDNZns/gPpcxj9Zluct7pGPOM0aa8yeUyrxq3UGhsbw4mt78Oqb+zA8MgFR
135 +kkHSRM3zLPxeD1qbG9De2oT25kY01vvh93ngcjrA8xwYwgCgkCQZKUFAPJFEOBLDbDiC6WAY08FZ
136 +BGcjCEeiiMQSSCaTYDkW5aB7leglKmNaiKI/OoGe0DCOh0dwLjaFWTEOUZZAAbw704/+2CS+vuJW
137 +uFgbKBQp6JrGVXhl4jhCQhyHZs9hIDaFFR6FUVFKsXpFF/7mm1/EOwePYXIqCFESkUwJCEVimJkJ
138 +YXImiKmZEKKxOERRQjAUwf7DJ3Gw5xSe+u1ruObyTbjz5m1Y1rUo7witvqdipADTfZZDfdDbV6FK
139 +AVrVVyslpLfr07RUFgZQFgmgt7e3ua2t7TmWZS/LNfrHYjFMTk5mHtyq0T9fmdF+vnItGIZBKBzF
140 +9lffwtPbd+LcyHhmNh3HsmhrbsCGNSuwZf0qrFjageaGOjidDnAsO98wNj8rx3xopIKUICKZTCGe
141 +TCIWT8LrdqKxvs4SV5tK9CKVMZ2K4GR4FAeCAzgaHsZoYjaTI3DOBElhY3is8DTjS0uvxypP67yp
142 +wClZxD+d/A3enOoFQwg+tfgqfHLxlfPqEELAMASgSheoo54giIjE4piYmsHp/iEcOtaLnpNnMDo+
143 +CUFU05BRtDY14O7br8Vdt1wDv89jShowu9RYIVOF1d9ipAAAaGxshMvlmnduthQgSdI7IyMjd61Y
144 +sWK89Led/e7LgKmpqfe5XK5fMQzjypXua3JyEtFodF4ykHxMQC0r5Dd7W2/f7DFAEfl7+8/hwUef
145 +w579RyCKysQlm43H2pVLcdM1l+KyTWvQ3FQPPj1SF2PE0rsvomxY0h5DCCgFZsU4ToZHsXfmDA7P
146 +nsNoIoikLGYInoKCIQw8nB2LHHVY7WvDBl8Hur2tCPDu8/IAsITBS2M9+MHplyDKMrq9rfjbtb9n
147 +erXhuXcOCIKE8akZ7D98Ar/bvRdHTvQhkVBsByzL4PIta/GlT92NFUs68toGilEFCskapDeVOBfx
148 +y7IMt9uNxsZG3fM0TCAWj8c/Wl9f/5uSXrgOyqECMDzP3wYgw9b0xHtRFJFMJg1df2pZPljtOzfj
149 +633nwDH8y38+gTMDw+mRjEH38i586I7rcdXW9fB7PcrLozRLxy0Nmfn6JRC+OtonZRED0Um8PX0G
150 +78ycwUBsCgkpBXVMIABsDIdGuwfL3E1Y61uEbk8r2p118HJ2MIRJTyE+/15kSrHB34FWRwDnYtM4
151 +G5vCyfAoLq9fBslkMg+VSBiGoL25AYtuuRrXX7UF7x46jqe378TBo70QRQlv7j2M0fFpfO0LH8Ul
152 +G1ebNtiZPVbMObnqZBv6kskkBEEwNAam4eI47lYA2wFrp1taLgH09PS0Llmy5HmWZS/JJf5HIhFM
153 +T09nHricxj+rRH+GIdiz7yi+8+8/x+j4FAACj9uJu2+7Fh9+/w1obqjL6LnVBgJlRA0JcRyePYfX
154 +p07i8OwQgkJUw08oHKwNi5x1WOdbhA3+DixzN6HB5gHPcIDJpCFKS8C/9f0OL4wcBAB8oG0LvrLs
155 +htKegSjMazYcwYuvvY1fPvsyxiaUb6itpRF/+tVP4bLNa4qWBEqVAoo1BjY0NMDj8cw7V0cN2Nff
156 +33/nunXrRkvqxCxYLgE0NjZuZBimO5fvn1KKWCyWyZ5qhesvG1ZLBgzD4MTps/jhQ49niL+1qR5f
157 ++YPfw/VXXQKWZRQXX5VBFfPHkyHsmT6NXZMncTo6joQkZBKBcoRFq8OHTYFOXFa3DCs9LfDzTrCa
158 +UV6mhT0bRxhsDSzBjvGjSEoiDofOYSYVRb3NU3TqMEopJErh9bjxkTtvxKplnfjXnz6BY6fOYmRs
159 +Et//j1/ir/7k81i9colpD4EWxUgBRvXMuATVslgsBrfbrfvNqrTAMEx3Y2PjRgBVzQCIw+G4DoA7
160 ++wG0EEURqVQqL2EX6uc300Yxoz8hBLOhMP7j0WdwdmgUBARtLQ345lc+iSu2rIUsV9+or7rvBmPT
161 +2DV5ErsmT2IoPp0RwQkI3Jwd3d5WbGtYgc2BLjTbfeA0RC8VSPRayJRipacFbY4A+qOTGEkE0Rsd
162 +x5V2ryk1IBfUvt60dgX+/I8/g3/+0SPoOdGHs0Oj+PdHnsJfff0LqA/4ShLdjeoZBQQVwjyymUMq
163 +lYIoivnUAHeatl4CrEu+aGlW4Oeee65u2bJlf86y7JJ81v9s999CG//yMYCnX9yFZ198HQDg97rx
164 +J/d8DFdftqmqovGA9IgPYCA+jaeH9+Hhs7vx5nQvZoW4El5ECJodPlzf1I0/6LwKH2y/BGt9i+Bh
165 +lag0KxN7Olgb+qMTOBUZg5ROJbYlYF1kK6UUDQE/lnW1Y3/PKYQjMYxNTMNus2HzupWW9ms53c6y
166 +LIPn+UxkYI5r0W3btj3985//PAGLYKkEsHr16mUMw6zNVYdSmpkNZaQmlMv4VwzxM4RgeGwSz7+8
167 +G5IkgWEY/N4d1+OayzcVJWaWC6rFfig+gx3jR/HaxAmMJWcz+j1LGHS6GnBN40psa1iBRc46sIQF
168 +TS//VQ5whMEG/2K8PH4UgiziWGgEYTEJb1ZocCmQZBlrVi7FH3z4ffjeTx5DMinghd+9gasv24ju
169 +FV2G76hUcb/Qc4wkAWCOJjweT85vlGGYtWvWrFkOYK9F3WctA/D7/VsJIY25gn8kSbJE/M/eL5aR
170 +5AUh2P3OIQwOjwEAupd34u7brs1MZlloqCG6E8kwXpk4jpfHejCcmMkQPs+wWOFpwY1Nq3FF/TI0
171 +2LyZ8N1yEb4KCooVnmbU2dwYT4QwlJjBcHwGq31tlvYdpRQ3bLsEu/cewut7DmBiaga/ffUtrFja
172 +UfI3YEYNyFU3XxvqdiqVgiRJmfThetchhDT6fL5LYSEDsGo2IFm3bp3NZrNtIwoyD6D9BZB5UL1O
173 +sjryr5Ry5RgQjcXx5ruHIUkyWJbF+268Co31gaogfoYQRKUUXhw7gr8/9gwePrsbQ3GF+HmGxXp/
174 +B+5bfgv+es3duLNtExps3rRBrzL3LlOKRpsXS1wNoKCIikmcjIxZPkWYUgq3y4G7br4aLqcDAPDW
175 +viMYGZvMmZ/Qym/FqF4+A7cKdWDMPi9LJSY2m+3KdevW2WCRB8+y6cDf/e53G1mW3ZyvsxKJxLxQ
176 +x1ydl6+Drbb0n38dBkOjE+g7OwwQoLW5AZdtXluSH94KqAa+fTNn8U8nXsC/nv4deiPjkCkFxzBY
177 +52vH11bcgr9afRduaVkLH+c09NmXG3aWwypvW2YS0YnwCARZKr3hLMgyxfrVy7Bi6WJQAGMT0zh0
178 +/DQIU+5vxPy3mMvKr1WNc53Hsuzm7373u42wCFapAHT58uXLGIbpyuX+k2XZUvE/u7xQiSF/0A/Q
179 +d3YYoUgUoMDqFV1obqyr6OIX8+4nfc/nYjN4bvQAXp04jrAQB9LBPUvdTXhf6wZsa1iJAO/MTDBa
180 +SBAQrPS0wMHySEgCzsYmERLjqNOJICwFlFJ4PS5csn4VDqWDhA4f68Xt11+R18BbiP5ejNXfqFxP
181 +DdCbFq8eT9sBurq6upYDGLai36xgAAQAPB7PRkKIf94BHfefIJy/AGo+JmCFHlcMKKUYHB6FKElg
182 +GIJVSxfDxnEL4u9nCEFMTOG1yRN4engfzsWn04IIQZvDj1tb1uOm5jVosnurgvBVKNmC6lDHuzAi
183 +zWIiGcFYIoR6m9tyQYoQgtUrl8Bu55FIptA/OIpoPAGv21UWw57Z8/MRvwpBECCKYmYtQb16hBB/
184 +IBDYAOD1dFFJvWiVBMDb7fbNZvT/7JTf2gc127FWwEw7kiRjfHIGoBQcz6G9tamME6gN7jM9+eVE
185 +eBRPnHsHe2fOIJUWob2cA9c2rsKdbZvQ5VKkwmohfBUUFAHehXZnHYYTQcSkJAZiU1jra4eF7mzl
186 +WpSirbkRXrcLiWQK0zOzCIej8LldOa9UKrEX2o5RPVVC1i4mmh1rQAghdrt9CwAeQMnLiVtiA3jg
187 +gQd8LMuu0z6gHlQjRzH6f8Wt/1AYQCgSBQXAcxx8XrfV32xOMIQgIibw5PA+/MPx5/DGVC9SsgSO
188 +MNgc6MR/674DX1l2A5a4G5W1/RZAxzcDO8Ojy9UAAkCisrK6cBk8EJQCXo8LXo8yDSWeTCIcjSu6
189 +XInI9Z2VOtFMSw9aQ6DReSzLrn3ggQd8VvSZJRLA+vXrWxmG6cpVh1Jakv6fD6VabvWgWGYVJsuy
190 +LHiOqwiJqdNxToRH8djgHuwL9kNMqx0tDh/uatuMm5vXws870+686iR8FQwhWOJuBEtYiFTCufg0
191 +krIIG2P9XDQ1exIoIIppl3ORbVkZK2B0np4dQC81/rz+ZJiu9evXtwKYKrW/Sn0DBACampqWEEJy
192 +Jv8QRRGiKOp2Sq6yclj6zbapzlMn6V85vV1OMIQgLgnYMX4Uvxrai/FECIDi1ruifhk+2nEZVrhb
193 +AFSfuG8ECop2Rx2crA0RMYHxRAhhMYHGtFvSSqQNZeltmB79rVIDjNo0awdQ6SQ7LFjrOSOENDQ3
194 +Ny8F0ANo800VDitYMOP1ersJIU7tDWdDFMWcUVlmOzTfeVYyDJZhMoEZoigp89DLyAEYQjAcD+Kx
195 +wT3YNXkio+u3OHz40KKtuLlpLVyc7YIhfBWUAo12DwK8ExExgVkxjqlUNGOwtBKyLEEQlIGGZVnY
196 +eN4yFmOGiK2wA2QzgOz6hBCHx+PpBvACSpwebIUEwNtsNt3Zf9p9QRAys/+MOiRXZ5mtW0w9I7As
197 +A49L4WuCKGJmNlxidxl3IgWwd6YfD5/djd7IOAhRwncvqevCpxZfiZWeVqCCQTxWgoLCyznQZPdi
198 +MD6NuJTCRDKENd42WG1USaYEROOKP91ht8HjdpaWP6FIgs51Xi7VQsmKJMDpdBq2SwiBzWbrhmII
199 +TJXSiaUaAcm9997rZFl2qfYG9aB1/1mtrxdyXiF1WZZFQ50fAIEkSRgZn7TedQWChCziqeF9+O6p
200 +7eiNKFmfPJwDH198Ob618nas8rZWsYnPHGwMhxaH4iUWqYyxtGpjJQghCM5GEInEAAB1fq/iAizg
201 +/EKuVew95ivXc5Vn1+E4buk999zjQoko2Qtw1VVXBViW7chVh1IKURTP0+3zB+JU2OeW3TkMQVtL
202 +IxhGmVN/9tyorh2j6PYJwVQqgh+feRU/O7sbs4Ly4Xa5G/D1FbfiE4uvgDcdxXehgyUM2hz+dH4C
203 +ivFkqKTpxnogBBgam0A0HgdAsai1GW6XY0HDts1849l0IYpi3ntmGGbRTTfdFECJSmkpKgABgCVL
204 +ljQxDNOQ60FVvcaKDqs0ujpaYbfbkEgkcXZwBKFwFHU55pqbBUMITkfG8WD/LhycHVCeHQSX1y/F
205 +Z7uuxhJ344KF75YLLQ5/OsmIhKlUBCKVM+nCrYAsU5w8PQBBEMEwDFYu7QDHcVUza9OsOqHay1iW
206 +NWyHYZiGxYsXNwI4ixIMgSX3vt/vbyWEeNUb04OS694aA2Ap/v9CmYssU3S0NafVAGB0YhoDw2M5
207 +J5iYehYo+v4/n/wtDgQV4rczPD7YvgVfX3lbhvgvJlAA9TYP7Ixi3AoKMSRlwTKbKiEE0VgcPSf6
208 +QCngdNixanlXwe0X8w2Z+TYLuVY6BVjOcwghXr/f31pqv5XCAAgAxuPxdBBCMmsc6Yn2kiTlTdZo
209 +Naxok1KKhjo/VizpAKXKzMBDR3uLHpMVNk3xu4lj+H7vSxiIKW5cP+/C55dcg892XZ2ZuHPxgSLA
210 +O+FilSi3sJBAQhJglVuFEIIzA8PoG1BC5NtaGrFkcZslfVnp71NVmbPrZ6kKdo/H0wGFhou+wZIZ
211 +gNPpbNO7Ae3NqjqNlUk8zB4vFXYbj0s2dINllVRZ7xw4ilA4WvB1CZS8+88OH8C/972KqaSy0lOb
212 +M4D7lt+MO1s3gSfsRSXya0Ep4Gbt8HLKdN24lEJcSlkRpJdun2LP/h6E0wbA9d3LUOf3llX/L8e3
213 +qaoJWgnAoB2Spr0FYwAAwHMc157PoKflZuWI2CsnKCg2r1uFpoYACAhOnTmHIydOF6QGEBCkZBGP
214 +n3sHDw+8gaiUBACs8DTjmytvw1UNK9LXunhBQWFneXh5hQGkZBFRMWlJ24QQTM/M4q19PQAoHA4b
215 +Lt+yFixb1sWvS7rffOW5bGYqvXEc1w7FFVg0SpIANmzYwDMM05TvwbL1mWoldj3IMsWitiZsWd8N
216 +CopYIoGXd76DZMrcPAzFzSfg0cG38Pi5t5GUBVAKbPB34Bsrb8c636KLVOQ/Hzxh4ecVz5VAJcSk
217 +lCXJQRhC8O6h4+gfHAEALOlow9pVy6ouX2Mu6KnN+eoxDNO0YcMGHgsgARAAZOvWrXaWZQO5Kqq5
218 +zfM9cHZZNTEJG8fhpqu3wu10gBCCvYeO4Xhvv2FQ01wnKcT/84E38dTwPghUeamX1i3Bn6y4FUsv
219 +QmNfLjCEwM8rAS4SlREVUyW2qHwnkVgcL+16BylBACEE2y7bWHbxv9B71NvOVZZeGDRnuyzLBrZu
220 +3WpHmh6LubeSZKS1a9e6GYapz1VHZQClELQ1yT2Kv75MZWxYswIb164EpRSzIWVhipxiGgiSsoDH
221 +Bt/CsyMHIKaJ/8r65fjjFbeg3Rl4TxE/oDAAL+cEAdIrDpeuAjCEYN/hEzh8rBcEBE0Ndbj2ik1l
222 +/d6s+B7znZvPcA4ADMPUr1271m2yWf02ir1HAMTn89kZhnHms2ha5YetVCqw858BcDsduPPmbXA5
223 +FIb71r4j6B8c0c/eAkXEfWJoL54e3p8h/qvqV+APl92EZrv3PUf8Sr8QeDm7YugCRUwqbTq7Ovo/
224 +99LriCWSACiuvmwjlnS0Vdz3b/W3mW/tx3QsgNPn8y2YBECcTqcdgD1XpVwMoJrE/HyQqYxLN63B
225 +pZvWgFKKyekg3t5/VLeuRCmeHdmPJ4f2Zoj/ivrl+OqyG9Fo91QN8c/NLqvcNV2sHQyYtARQmgpA
226 +CMEbew9jf89JEELQUOfH7TdcaRhAU43IFQtgQoWxp2lwQWwAaGpq8qmzAI0exEy+NatRjjYpBVxO
227 +Bz5y541orPdDEETMhiPnTTQhAH43cQy/GHwbKVkEpcDWwBJ8dekNVUH8hCjLnImShOBsGFMzs4jF
228 +k6ZCs62Ai7NlPChxKVV0fxBCMDkdxK9/8yqSyRRAgRu2bcWqZYvLMvovxHeaazJR+tfZ1NSkJgYp
229 +6gZLCgV2OBxuQogtVyWTnKyoDqq0BCHLMjasXoH//rXPYdeeA1i/erlCUepKtoTg7ekzePjsbsXV
230 +R4H1/g58ddmNaHb4qoD4CRLJJN7Yexg739qPweFxiKKE+jofLtu0Brded3lmgdNywc5wGct/TEqV
231 +tE7gCzvewLFT/QAIFrU24gO3XqPEa1TQ+p8vvLfYPANmVGdCiM3hcLhRggRQEgPgOM5GSO5gbivW
232 +sc/VdqWZAMMQXLZ5LbZuXJ1ZuRVQiP9UZAwP9u/EdCoKAFjuacYfLruxKgx+hBCEwlH85OdPY/tr
233 +e5BIqEE4BP2DIzhw5CTe2ncEX7/n41ixtKNsRGRjOHCEQRJAXBIgU1pwaDXDMOg50YdnXtwFmVKw
234 +LIO7b7tWifyrsOuvnN+2ibYZjuNKWiOgJBUACgOZ14aVBLkQ6oMZZIhezTwDgslkGA/278JgLL1c
235 +tcOPryy9oWpcfZIk4xfPvIznXt6NVEoAyyprNzIMAcsqazge7OnFj372JIKzkfKoUaDgCJNZvzBR
236 +hARACEE4EsMjT27HxJSSsHXT2hW4/carFqRfixXjrbgWIYTF3CBeeSMgdBiAlR1wIRgJCYCkLODn
237 +g3tweHYQhAB+3okvLLkW6/3VEeTDMAzODA5j+6tv5ZSaWJbBgZ5TePPdIyVPeDICm2YASr+JBU8J
238 +ppTi+R27sWd/D0AIAn4vPv3h91WV31+LUr5hE8+j0uDCBAJRSs+LQ85nuLC6kxYaFMCLY0fwyrji
239 +EbAxHD6x+Apc1bCiKogfUMwUPSf6MB0M5e1rQRCx/8gJiJL1q/cAAEOYjA0gKQsQqWz662UYBoeO
240 +9uLxZ3coazUQgg/efh22rF9VNVN+zcIietDSYMUkAPVCJK3/Zy6sZ0muRq5sFRhCcCQ0hCfO7UVK
241 +lkBA8L6WDbi9dUOllw/ICUqByekgJMkckUwHQxDF8jAALZKyCFGWYObbZQjB+OQM/uOxZzE5HQQo
242 +xaWb1uDDd9yQNyLzQoVR2rD5u/NosODPriQbgCzL1fSdVxQEBFPJCB4ZeBNTKWVm3yWBLnys43LY
243 +SGXSh5u/V8But5n299t4vuxr6gHpFYpN9BQhQCKVwsO/+g0OH+sFACxqbcI9n/wAAlUq+lcKGhqs
244 +vA2AKj2f6X09y+WFLN7ngkRlPD2yH0dDQwCARc46fLbragRsrqqc0ru8axEcdlveeoQASzvbwXPW
245 +5+wHMK9vSPpffhBsf3UPtr/yFigAt8uJz3/8Lqxe3nXBif6m+kiTStzo2NwupVio6cCSJM1jAEY3
246 +rXPjpo9VIxhCsD94Fi+OHYFMKZwsj08svgLLPc1Vo/drIVOK9d3LsK57eU41QJaVBChXX7axbIxb
247 +O+qzhOQ1NhJCMBMM4dmXdiGRTIFjGHzkzhtx09Vbq7KvzcKib56mabBolCQBSJIkUZrbjFtmK2jF
248 +QUAwnYri8XPvICwkQAhwY/MaXNO4at4HqVq6y2VNLwSUUvi8bnzh43eiq6MVknR+cJYky3A6bPjE
249 +B29F9/LOMo2syhLhaj+xhAGTJ50dIQSz4Sgmp2YBUNx4zaX4+N23XDDhvuX0glFKqSAI5owoBihJ
250 +zktfPFsmqdgCngsRCERB8eLYERwLK6mnlria8OH2rbAxbObDlqiM342fQG9kDJfWL8GWwJIFNwrK
251 +MsX61cvxl3/yeTz61Is4ePQUItE4KKWw2Xh0LWrFh+64HjddfWkmC7LVIAAEWcqsC8gzLNg8SUEp
252 +pWis9+O6KzdDEEV84eMfgMdVPWnTCllavAzXkiWpNHdNSQwgmUyKAHLegOoZKMdoXvEowHQm3+1j
253 +hyFTCjvL4UOLtqJNE+lHQBCTUnhmZD9OhEexc/IEvrDkWtzcvLai96oHSinWrOzCX37tczg7NIrh
254 +0QmIooSGOj+WdLaj3q/MUiwnbQka37+N4cASJqfFhFIKj8uJ+77w+wAAnueqhviB8iwpprZr4vuW
255 +0jRYNEoKBZ6dnY3JspxzTifDMCXFQ+ebalxJJiDIEl4YPYTxhLJC0NbAEmxrWD7v2SgoXKwNS92N
256 +6I2MYVaI46H+XSCE4KamNRW7VyPIsjLidy/vwuoVXepNV2yR0bgsZGwAdoY3pSJRAByniPzVphbm
257 +u59S5sHkc2/KsiyEQqE4FsoIeO7cuYgsy4lcD1rJUMlytskQgpPhUbw5pbihfLwDH2jbDCdrO28E
258 +4wiLj3dcga11SwAAs0Ic/3FmJ14e70FJJlsLoaSeTv+VMGGrUMSlVOZaLtZWFTYSM1iI7zSfQV2W
259 +5cTg4GBJ69WVxAAikYhAKc2Z1iUXJ6s2bp4LgizhpfEezApxAMDl9cuxxteuO2pSULQ7A/ij5Tdj
260 +a90SEAKEhDge7N+F344eglSBVYarFRExmZEAPJw9bQR878KIBlTJOc+5yUgkUlJWlZIYwPj4eEqS
261 +pHiuOmZEmUI7q9KMgyEE/bFJvDvTDwDw8g7c0rwWPGNsiZYpRZvDjz9efjMuq1sGQpRc+D89+zqe
262 +GdkPgcqWJMS8kEBBERET6WXWCTycA8TClYEW9Nks/jbN2AAkSYqPj4+XlFWlpN4/cuRIXBTFYL4H
263 +YRimpI4xc265dDHlXODNqV5Mp6KgoNjoX4xVnta8OrNMKVocPvzR8puwrWElCFEMhI8MvIlfDO5B
264 +QhbeU0xAphQhQVm5lyEEPt5RlU9vxbdU6vfOsmxeBiCKYvDIkSNxk83qolgGQAFgcHAwJYpiyETu
265 +MlMdNM+YViXqAQHBjBDF3vTob2c4XNOwEg7WXDp2mVI02b24d9mNuKlpDZh0stBfDe3FQ/27EBLj
266 +F4weXCokKmcWQFUyBJe8uO0FgXzftV5ZPhUgvXpQaHBwUJUAKrY2oHohOjY2JsZi6fWtYEy02UEb
267 +1ULcZqAm+jgXV+b5tzvrCs7lL1OKOt6NLy+9Hu9v2wSOsBCphN+MHsK/nt6B0cTsRc8E1BiAkKgM
268 +WDzh4OecC31bVYNsmjAKdNLWi8ViU2NjYyI0NFnodUuSAACI0Wh0TO8BtOA0ceVG9aqVKchUxuHZ
269 +QSQlAQDFBn8H6mzuguP9ZVB4OAc+13UNPtZxORwMD5lS7J46he+c2o6T4dGLnAkQxKUUQmkjqoPl
270 +4eOdVTlvotwwQwNcjrkYar007alxABVfHZgCoLOzs+NU54myH6aUWIBSjpcCAiAqpXAyPAYKJXBl
271 +g68jb/SacYdROBgev99xGb6w5Fpl4hAFemaH8M8nf4s30i7Gi5ENEKJ4ACLp5cDcnB0ezlHWoKNy
272 +oxzfphrbkm/QpJTS2dnZcaTpsNhnKEUCoADo0NDQiCzLGVeg3ozAfAaNao0FIIRgKhXBaCIIAqDO
273 +5sZSd1NJo5aaFuuO1o24b/nNWOQMAACG4jP4Qe/LeHLoXSRk8aKTBggIgkIskwp8bqXg6ucAlf4+
274 +CSG6arP2HFmWk0NDQyPQ0GIx91GyBDAwMDApSVI010OxLFtyLEC2m8WsMaWYa6kgIBhLzCIsJkEB
275 +tDsCqLO5S46YU8++qmEF/nTVHVjna8/ECvzXwBv4t75XMJYIXXRMYCIZRkpWIscbbV7YmOrKmwAU
276 +9w2Z+TYLuRbDMHltAJIkRQcGBiaxQBIA1IsePXp0WhTFmZwXYZicOo2ZTlkojCVDmTX9Olz1cDDW
277 +zZOXKUW3txV/uuoO3NC0BhzDQKASdoz34P+cfAEHggMAcFG4CikoxpKzkNLxDy0OH7iLNJOPYR+Y
278 +/LY5jssbOyOK4syRI0dUuls4FWD37t3haDQ6kquyqtNku0MWUr8395AUM6kYZCqDIQRtjgAYiwNX
279 +1FiBe5fdiE8svhLetF58PDSC/3vyt3hqeB9iUvKClwZEWcZIIggKCjbdlxcDY8sHM994Nl2oNrNc
280 +iMfjY++++24IC6wCyKdPn47HYrFz+cQfnp/zm1vtCSjkvELqypQiKiqBKxxh0WjzlNBdua/jYu34
281 +WMdl+NryW9DpagAATKei+NnZ3fh+70s4E53M5Bi40EAAJGQBY4kQAMDO8mhx+EprtAwo13dk5jxt
282 +uZZW9OpQShEKhQaPHTuWACBjASUAGYA4NjZ2Rm9Ez36oXJ6AQjIGlapjmYVMKcJpBkBA4GTzp9Qq
283 +FhRKeOzVjSvx7e73Y1vDCkUlkCW8PnkK/3D8OWwfPXJBGggJIQgJcUymcyd6OQeabBfGAqnFfmvF
284 +ZMBSPQC5BkuVzqampvoACJhjABWXANQLS/39/f2SJCVyPWAuvcbKTrYsFhtK2urJZDj9sDLGkiEk
285 +ZQFMOpVVOchQphRL3I34+spb8enFVyFgU6LlhuIzeODMK/hh78voi04UkE9v4UFAMJ4MIZyOAWiy
286 +e+HjnbDCA0CgZBYi6WxDgiyBgs5LP24VzHxvVhgA9exl2vqSJCX6+vr6oeTiUAfiolCsRUsrAdCD
287 +Bw+eu/vuu4M8z7eqXCx7rj7HceA4DqnU/LkLenP6tWXlmPNvpk1CCIbiMxhKBMEQAplSPDLwBt6c
288 +6sVaXzs2+Dqw1N0EF2ezfCSTKYWbdeCjHZdhpbcVjw2+haOhYaRkEa9OHMeJ8Ag+0L4FNzatgY93
289 +XBAj6WB8GklZiVlZ5KzTnUZdKBhCEBYTOB4awaHZQQzFZyBSCXU2N9Z427El0IVmu8+U27bcrj6z
290 +g5VKJ3r11F9RFIMHDx48Bw0NokhuWqpJWwYg79y5czIWiw07nc5Wo4qEENhsNiSTyZzEXSzBG51X
291 +bHuSLOOVieOYFWKZkSQoxLB35gzenemHh7Oj29uG97duxKV1S/Jmtin4edKtbQl0otNZj2dHDmD7
292 +2BGEhDhGErN4sH8n9s6cwYfat2KDvwO8JiVZtUGkEvoi45CoDIYw6HI1giVMwasCqSBQlmDfO3MG
293 +Tw3vx4nwSHqZsTm8Mn4ci131+L32S3B9Uzd4whUcv1EJW1U2k7DZbHm/11gsNrxz585JpOmvqJtJ
294 +o5TMiiR9vm14eJi95557NtbV1a3TLF183pRGSZIQj89NXtLWyXVe9jG9cu1vru1cZXMPRvDa5Ak8
295 +fu5tCFRhsHI6+zIBAQWFIEsYTszg3eBZyABWeVrBlWFqKwXgYu3YGOjAMncTJlMRTKXCkCjFSGIW
296 +e4NnMJkKo9nuQ4B3VZ1aQKCM0k8O7cN0KgIny+Pu9i1ocwSKDqiSqIxnRw7gJ/07cTY2CVmPBggQ
297 +TMVwYHYAEpXR7W0r6f2Y8f/nqpuvHbXc6/XCZrMZnkcpxcjIyK6/+qu/ehFADEASSjhwxSUAVfyQ
298 +AaTOnTt3fMmSJZQogJ4qYLPZDKcGmx2prVIJjNohINgzfRoP9e9EVEqCUqDO5sJ6Xwc6XQ1gCcG5
299 ++AwOz57DZCqMmJTELwffhoPh8cH2LSXfl35HKwbCrXVLsMzdjBfHjuA3o4cwkQwjIibwwsgh7Js5
300 +i1tb1uGmpjVodvhAKUqKWLQKhADD8RmMJWZBQFBnc6PNUfxqyQQEr0wcx88H3sxMp3axdqzxtmGZ
301 +pxksYTAUn0HP7BCmhQiSsoAnh/bCyzlwt8H7KWPSzoLqMQwzj/j1AowopfTcuXPHAaRQovgPlM4A
302 +KBRDhLR///6TV155ZZhl2Yx/R88OwPN8xe0AZs9nCMFgbBo/Pfs6plJREAJs9HfgM11XY6WnBTzD
303 +ZWa1nY1N4tHBPdgzfRopWcRTw+9inW8RVnlbyiaKy5QiwLvw+x2XYUugC08P78Oe6dOISwJGE7N4
304 +ZOBNvD55Cre3rMfVjStRb3MvOCMgUGZTRqUkKCgWOesQ4ItbPIWAYCQRxJNDexGXBBACLHE34g86
305 +t2FLoDM9RZtAkEX0RSfwyMCb2Bc8i5Qs4dfD72Ktrx2rvPnzOAClM4Vi9H+e5w31fxWCIIT3799/
306 +Emm6Q4luwFJVAHV1UjvDMMxdd911g9PpbASMxftUKpWxA+iJ/WbE/VwifyFqQHY5BfDr4X14c+o0
307 +AGCZpwnfWHk7Vnpa0seVf4QQNNq9WO9fhIHYFIYTQcSkFBwsjy2BrhK61Dwa7R5srVuCTlcjgkIU
308 +00IUEqUICjHsDw7gcOgcZFA02j1wlbaEfEmQqIRnRw7gTNpzcX1jNy6p6yrqi2UIwY7xo3h18gQI
309 +AZrtPnx95W3YWrcEbHrJccUDQNBs92Gtrx0nIyOYTEYQk5JgGUZJ0abpi0KTe+SLdymkPLtdl8sF
310 +l8uV8/xwOHzmO9/5ziOnT5+eARDHnCRQFEqeC5C+uPTqq68Gp6enj+frIIfDkVENinXjlSM1mKqr
311 +HgieBaC4lt7XsgGdrgZdY5VEZTTYPPjQoq3wcHZQUBwJnUNIiFdED5cpVZKTNK7Ef+++C19acj2W
312 +uBvBEMUddjI8igf6XsHfHXsGzwwfwGQqDIL8K/FYCWUCUBxnopMgILAxHFZ6WoruH0GW0BMagpwO
313 +J769ZT3W+doh0fNXGJSojFaHH3e1bYaNYQEQHAwOYDIZsfT9FPIt5tL/CSFwOBx5rzE9PX3i1Vdf
314 +DWL+6L8gcwEADQNIpVLJvr6+Q7Isy7kmR9hsNt2JDvkCiUrVr/KVk7TRaDoVBaBk/V3rW5RTVJWp
315 +jOWeZnQ46wEA06kIZoSY6UU4SwWFwgj8vAsfaN+Mv1nzQXy68yosctaBECX89mR4FD858xr+x9Gn
316 +8Ni5PRiITWn85OUFIYrIPplSYinqbW50uhqKUpEIgLgkZIKJPJwjr7QlU4rV3jbUpyM4J1MRnItP
317 +Z5igFaN4vnpGgTzZYFk2r/4vyzLt6+s7lEqlkrBA/AdKdwOqNgARgPjGG28cu/baa4Msy9YbxQOo
318 +DxqLxYpyB2aXG10nVxtGEKmUGe3tDA83a8s5X50CcDA8vLwDFMoIlZBKStJa5EtQFvNotvvw8Y4r
319 +cG3jKrw6cRyvTZzAcCIIicroj07ibGwSL44dwaV1S3BNwyqs9LTAxdmVj7IMdgICYDgRREJS1gLo
320 +cjWg3uYp8loEMpUhpidmOVhOSSiSpykHw6dVIIUhqlmdTfetBdZ/s+4/o8xZ6q8gCDN79uw5CoXe
321 +VBtASS/OCglAZQLy008/PRgKhfpynaAVdaxQAwq62RwviFLAxdkzuf4SsoCIlMw5mhMACUlQ1ggE
322 +wDEsbBbOFiz4+dL/Fjnr8KnFV+J/rP09fKZzG5a4Fb87pcB4IoQXRg7hfx9/Fv/fiefwm9GDGE3M
323 +pifpWB89V8+7wREWi531eH/bphL6h4JnWDiY9PuRBMwK8bzvJy4LiImK0ZkQpNUBa338pYr/wJxq
324 +nAuhUKjvySefHEQ6BB8liv9A6RIA0jcjARB7enpCw8PDB5qami5VH1BvlHc4HGBZ9rwFKOfE8fNH
325 ++OztfJ1dqNeAQrGwtzvqMJqYRViI48jsOSx3Nxv2MUMY9Ebn8gXW8W7Up7P8WAHVZVroR6mK2O3O
326 +AD7WcTlual6Dt6f7sHPyBHoj44hLKUTFJPbO9ONAcBAtDh82+Ttxef1SrPS0IsA7wRBGWSashO9L
327 +phQrPS34QPtmXNOwEis9rUW3R6FIZa0OP3pCQwiLSeydOYNVHsPYMxBCcDw0jKlUBIQAbtaOFoe/
328 +bESeXa8Q8V+r/+vNmqWUYnh4+EBPT08IcxJAySu4WrHEqhoQxAPgN2/e7NiwYcONLMvy2VZ4dZ9h
329 +GCSTSQiCUJI3wMxv9rbevgoby2FWiOHg7CBkSjGZCmOdb5Gu2MoQBtOpCB7q34WzsSnFwt3UjW0N
330 +K0vvUALE4gkc6DkJr9sFh724SUjqHbtZO1Z5W3Fl/XKs8LSAJQxCYhxJWchMeOqNjGLPdB/2Bfsx
331 +kpYIXKwNdpYvOgUaoMz82+DvQJPJkNxc4BgWw/EgDs4qeRJGEkEsczej3RlANpNmCYORRBD/2f86
332 +xpMhUFCs93fg/a0bTT9PIck/ShH/HQ4HvF7veQOftm1BEGIvvPDCT1944YXTUKz/CcxNBioaVjIA
333 +DoA9lUpJd9111zan09kEGBM1pdQwKjC7TN3OVW7WNai3r32QOpsbB2YHMCvEERLj6I9Ood0RQIPN
334 +A45hlXkBkNEfm8SD/bvw7kw/KJQJLp9dcjUa7Z6StWmWYbDvyAn8/f0PoW9gGJvXrYTT6SipTWUE
335 +5dDpasBl9UtxSWAJGu1eJKmIqJiESCWIVMZ0Kopj4WG8NX0a7wbP4lx8GilZgo3h4GB58AybFrvN
336 +S1hWeB6UyVcEB2cHcWh2EAQEUTGFE5FR1PEuNDt84Bku835OR8fxH2d24nBoCIQo6t1nu7ZhmbsJ
337 +MgoT/0sd/Y0M3GqZz+eD3W7P2ebs7GzvP/zDPzzS19c3AwsiAFVYtci6Gg9g6+vro5/85CeXNjc3
338 +bwSgS/zqbzwez4jrucKBrQ4N1ttHuie9nJKr7uDsAARZwkQyjL3BfpyJTmAkEcTx8AheGjuKX557
339 +GycjSh4UO8Phk51X4sr65ZaY0ggh+O0rb+Lt/T04NzKOlqYGrF211BK3p+onr7e7sd6/CFfVL8da
340 +3yJ4eAdSsoi4nEozAwlTqQhOhEfw1nQf9kz34URkFNOpKGRKYWM52BgWHMm/gEVRfYA00ROCpCxi
341 +IDaNHeNH8ZuxQ4hJKSUomxDMCnG8G+zHqcgYRtX3M96Dx8+9g9PRcQCKNPB77Zfg9pYNptlWOYx/
342 +RpN//H5/xgBoJP6fPn36xb/4i7/YAYX4VQZQ0tLggDU2AGDOKCEASL311ltvd3d3f9hmszm1D6X9
343 +UHieh91uRzQanZcnwEj/N4LVswUppbiusRsxKYlHB/dgJhXFTCqKVyaO4bXJ48rDUpo2limJPD60
344 +aGvm47KEAQBoaaoHx3GQJAkv7XwbN267BAG/17LYB9VO4OWcuLRuKbYEujCTiuJkZAwHggM4Gh7C
345 +SHwWcSmFpCzgXHwa5+LTeH3yJNycHS12P5a6G7HC04wuVyNa7D54eSfs6SW/kekL7XLjevdOMoY8
346 +1QApUhkRMYmh+AyOhoZwcHYQfdEJzAqxjMdDG/8fE1N4e/o03p7uU6+YmbPh5Zy4u30zPrxoa9oQ
347 +at3oX4zxL1u0t9vt5yUAyZYYBEGIv/XWW29DCfoRYJH+D1jDALSeAAGA9Pjjjx/78Ic/3NfQ0LAu
348 +F4G6XC7EYjFTLrxCjIF6rsFc7c1/GGWEvKN1ExY7G/DcyIG00SmRcRESENhZDsvcTfhA2xYleYeF
349 +swFlSrF142q0tzZicGgMvWcGsffgMdx2/RWQLA4zpqCZNuttHmxr8OKK+mWYFWLoj03haGgIx0Ij
350 +GIxPISjElMU9hDhCQhynIqPYMc7AwfII8C602H1ocwbQ5gigye5FHe+Gl3fAydpgIyxYwsz54KHE
351 +UQhURlISEBYTmE5FMJKYxWBsGmdjkxhOBOetJUhBYWd4tLsCWOZugo93YiIZwtHQMGZSsQzhc4SF
352 +l3dgjbcN72vdiM3+TjAFJKMpxjOVz/inV58QYhj5pz0vHA73/fKXvzyOORqzxAMAWCcBZLIDARBe
353 +e+216TNnzuypr69fp32QbKJ0OBzgeR6CMOc7z5YE9CSD7E7MFQtQ1MOk29kUWIxubyvOxqbQFx3H
354 +RDIMUZbh4x3ocjVipacFAZsrbS23DpRStDY14PLN6zA4NIakIODlXe/g6ss3wenIHZtQ0nU1zCDA
355 +u3FJwIMtgU7EJQHjyRDORCdwKjyG09FxjCZmMSvEkZIVG0JETOJcfAYkeBYMIWAJAzvDwc7wcLA8
356 +HAwPmyodkLRhi0pISgLikoCELCAhCRCplJFOVKJnCYN6mwfrfO24qmEF1nrbEbC5wEBJono6Mo4D
357 +wbNIyiLsLI8mmwdL3E3ocNbBwSoLsFhl+S/E+JfPDsDzvK71Xyv6y7KMM2fO7Nm5c+cU5oi/5AAg
358 +FVYyADUgSACQ2rFjx5vr16//iMPh8BsRKMMwcLlcCAaDmbJco3SpLkGzUoB6TIayGEi3txWrvW2K
359 +FZvO3aNMadkm/jAMg+uu3IwXX9uDSDSGw8dP48jx07hiy7qi59EXAi0zsDMculwNWOJqxPWN3YhL
360 +AqZSEQzFZzAQm8LZ9HyI6VQEETGJlCxCkCUIsoQwkgVHFjCEgYPh0WB3Y5m7CRt8i7HOvwjtjgBs
361 +DJdxT6prLKzxtWGNrw3AnBpB01O48xF/sRl9jM7J156WuF0u13lZsrIZSyqVmt2xY8ebmBP/VRdg
362 +1TEAVQJIARAffPDB3k9/+tM9HR0d29QH0iNEl8uFcDg8LyagEHuAkRRgpW1AIXJNf5drCNZeU5bR
363 +vbwLG9euwOtvH0QkFsdLO9/G5vWrwLFW2W6L6wMny2Oxqx6drgZc2bAcoiwjJqUwK8QwkQxjLDmL
364 +0cQsJpJhzKRiiIgJxKQUhHSkpfp+tZKCm3MgwLvQbPehw1mHTlcD2p0BBHhXev0AhZj1mN98Jmz9
365 +uynV9ac3+rMsO0/8N2Iik5OTPQ8++GAvNLSFKpQAgPl2AKG/vz904MCB19ra2q5gWZY1MvTxPJ9h
366 +AnqEq6cSVMIWYKb9csPlsOPW6y7H3oPHkEoJeOfAMZzqG8S67mXnBVFVEhTqe5kjZC9nh493ZDIa
367 +q8QqUBFJSURKFpFMSwZy2hHHEgY2htOoChy4tK1AbUORRIp/1mJHf7OTfAp1/am/Tqczp/GPUgpJ
368 +kqQDBw681t/fH0KarmDh6A9Y5wZUoQ0KsomiGL/tttuucjgcAUA/JgBQxF2tMbBYl2Cu31zbevtm
369 +j5UbDfV+HDneh+HxSSSSSXAci8s2r13QezKCOh1XtYgQohjkHKwNbs4Ov82JOpsb9TYPGmwe1Nnc
370 +8PFOuFg77AybWXNB20ZJ91Mi8esdL2b0z95nGAZ1dXWGi+VojH8D//AP//DQsWPHpgBEYcH032xY
371 +mcMqWw0QnnzyyZHTp0/v1uo9RjMEHQ7HeUYQbYfk4rS5Ot4S33kFRH6j6/o8brz/5m2w25S06rv2
372 +HMDx3v68K8csBBTmrPMc6X+qTp79V46pSFa+dzPfVr7vVXuOw+EwnPmX5fvf/eSTT44gbVeDxeI/
373 +YC0DAOarASkAqeeff/61RCIxk6tDCSHweDznrRuQS4wyvAGTXN/KdssJSimu2roeG9esgEwppoMh
374 +PLV9J5LJVOmNWwT1vU1OBxGLJUtvsEQU+i7zjf6ltJvdtvZb1ztX/U0kEjPPP//8a0jTEcog/gPW
375 +qwBAOogL6cjAo0ePxj/ykY8sr6urWw4YRwaqKcPV+QF6dbVl2nO124WoBGb2z3u4BRC9HXY7XE4H
376 +9uw7AlGSMDI+hWVdi7B0cduCMSZtf8TiCTz29Ev40c+exMDQGLZuXL0ghkqgNOLXKzdjACxU9/f7
377 +/ee5ubXnUkpx9uzZ1++7776nY7FYBEAEZRD/gfJIAFo1IDU5ORndsWPHS4IgxLIfUgtCSGZCRD4O
378 +XUqgxkITTFGdKsu4bPMaXH3ZRlBKEYvF8YtnXsbkzOyC2gIIAFEU8ciT2/HTx1/AmYFhnBsZhyzL
379 +FUuKYiWKMfxpy/JJmNpvXO9c9RxBEGI7dux4aXJyMoo5CcBy8R+wngEA88OCkwCE73//+wfHxsYO
380 +6XWOdtvhcOS1BRh1eHadXC/zQlMFKBQp4PfvuhktTQ0ACHpO9OGZ7TsXlqERgpd3vYMnf/MqZFmG
381 +y+nA+268Em6XoxKe0vP7yWLR3+y3ZOYbVXX/XNN+VYyNjR36/ve/fxAaGsIcA7AU5bIkyZqbT/X2
382 +9s7u2rVruyAIKSPiBuakgOzU4WaMgNrtYow2evWNsBBEJ8syVi3vxIfffwM4Tpmr//T2XXj30PEF
383 +MQgyDINjp87gp4+/gHg8CUoprrliE66/6pILmvit+Ib0vleGYXKO/uq2IAipXbt2be/t7Z2FMvKr
384 +DKAsft9yfDnZakASgHj//fe/MzExccSog1Q4HA44nU5dVSGfmHXejRShKpTSdiVw583bcMWW9QCl
385 +mJkN4cHHnsXI2CQYpoLJPgnB1EwQP/n5MxgZmwQALF7Ugk9/+Ha4nI6K941V76oU1VLdNtLpnU5n
386 +3qQfADAxMXHk/vvvfwcK/SRRRvEfKJ8EoPUGJAEkDxw4ML1r164XzEoBRvnRjDowe7tUVcCorJDj
387 +lncqpfB63Pj8x+9ER7uSqvzYqX48+NiziETjFbEHEEKQEgT816+2Y/+RkyCEwOm04zMfuQPLuxZV
388 +PECp1EGgENG/WAmSZdlCRv8XDhw4MI003aBM1v/MvZWj0TTUdQMygUFnzpyZueuuu9b4fL72TCUD
389 +j4AkSUgm51xKRgFA2u1icgbk2s5VVshxK0EpRWOdHwG/B+8eOoGUIOLsuRHIMsWGNcsrYn1/+rc7
390 +8djTL0GSJBBC8KE7rsdH7ryx4gZJK4m/GNE/m4CNRn+v1wuPx2N4XXV/dHR0/ze+8Y3/Gh0dDUMJ
391 +/IlCyfxTFv0fKC8DAOZcgiwAfnR0VF6/fr20du3aKxlGyQ5p5KbjeR6JRCJtUTZ2AxoRut5xbblR
392 +WfZ2rrJi6lgBCqBrkTL55fDx05AkCSdPD4AhBGtWLSkbEyAEeHnXO/jxI08jFk+AUoptl27EH372
393 +Q3A7nRV5dsCc5FUq8RciHeZSA3ieR319fcZOYxT0IwhC4plnnnnwxz/+cQ8Ul18ESuKPFCxI/GGE
394 +SjhrtSnDbEePHp25++67l/v9/k7AmAEwDJPJGqSWm2UE2jq5fs1u5yorpo4VYBgGq5Z3IhKN4WTf
395 +WYiShKOnzkAURaxesQR2G2+ZMU59ppd3vo1//dmTCIYjAKVY170M3/zyJ9DS1FAxdahcxK9XtxTC
396 +V7cDgYDugh/ZDGBwcPCte++997GZmZkoFOJXR/+yGQCBykgAgEYKmJmZoR0dHdEtW7ZcxXGcHTAm
397 +UG1wUKbBElQBs3X02s5VVkwdK8BzHNauWoqZYBinzw5BkiQcPdmP8ckZrFiyGH6vu2TCZBiCZErA
398 +U799DT/++TOYTRP/ymWd+NOvfgrLKqj3W0H8RuWF6P1mRX+joJ/s32QyGX744Yf//fHHH1cTfqqj
399 +fxJlMv6pqFS4llYK4N95553gBz7wgdampqZVQO6EnxzHzcsdaFQvnyqgd6zY3IHVxATsdhs2rFmB
400 +UCSK0/1DkGUZp88O4cjxPvh9HrS3NILjuIIZASEEDMNgaHQSDz76LB5/dgfiiQRAKdasXIJvffVT
401 +6F7RdcERfyF1SpEAWJZFfX294Yw/7d+JEyde+vKXv/xMMpmMYU73j0MZ/csqWlVKBQA0UkAymSQc
402 +x01fffXVl9rtdm+mooFBkFKKRCJxXh1tvVzbRm1rty9kJuCw27Bp7UpQCpw6MwhBlDA5HcTbB3ow
403 +PDaBOr8X9QEfeD737G+COdUrFI5ix6538K//+QT27O+BKMtgCMEVW9bhm1/5JFYs7bigib8Yy34h
404 +EoDf74fb7TZsW92PRCIj3/nOdx54/fXXh6EQfRgVGv2BykkAQNYcgXfeeSdy0003OTo7OzcTBXMV
405 +s4jSZrMhlUpBFMV5dfJJAGZUgXxlRvtGZboPXgFGYLPx2Lh2BRobAjgzMIRwNAZBlHDqzCDe2HsE
406 +ZwZGlGg0ux329DJULMuAYUgmX14imcLg8Bh2vL4XDz72LJ57eTcmp4NKtmS3C7/3vuvwh5/9ENpa
407 +GitC/Fb6780Sf7H2A+2I7nA4UFdXpyv6a7clSZLffPPNX379619/DYq+r437L/voD1RuzWiV8F0A
408 +fAACALzXXntt28MPP/zXbW1tG7NzBWSP9MlkEhMTE/O8AvnyBmh/9couNiagpOsnONk3gEefehFv
409 +vnsE8UQyM7/CbuPR0liPzkWtWNTahIDfA47jkEgmMTU9i8HhMQwMjWE6GIKUJnCeY7F25VJ8/IO3
410 +4Iot68FxbEUMfgtJ/PmO5ZIGGIZBU1PTvDz/emI/pRQjIyOHPvOZz/zdrl27RqCM/EEAISgSQNlc
411 +f1pUigGoo78dgAeAHwoTcH3ve9+79otf/OK37Xa7R9U7jUbxUCiUyR9oVgLIZQ/Ibr/cTKDQusWC
412 +YRjE4wm8ta8Hz738OnpOnEEskci8bPX7JmRuKq9SRqF+Eg6HDSuWdOC266/A9VduQV3AV1WjvlFd
413 +K4lf3c8n+mu3A4EAfD6fbvuUKkk+KaVIJpORBx988B+/8Y1v7IJC8EEAs1AkgIqI/0DlGIB6LR6A
414 +E4AXCgPw+3w+70svvfSHGzdu/CDDMPMYQDZByrKMqampzMrC1cQEcpUXW6+kziYAIUwmoejutw/h
415 +8PFejE3MIJFMQpbpvLosy8LldKC5sQ5rVy7FFZesw4bVyzNrEVT7qK9XXknip1RJ8tnQ0JDT5y/L
416 +MmRZxqFDh56+9dZb/y0UCoWhEH4QihRQMfEfqCwDABSbgw2AG3NSgPujH/3oku9///t/09DQsFxL
417 +2GpHaglGEARMTEzMW1cwnw2gGplAoXWLBSGKji9KEqZmQhgYGkXfwDCGRsYxHQzBYbehvaUR7a1N
418 +WNTWhLbmRgR8HnAsW3Q67UJR6qivV2418euVaf94nkdTU9M8q79aVx311b+pqanTf/Inf/K/nnji
419 +iX4oFv8gFCagTv8tW+BPNirNAAgUW4ADGikAgPPHP/7xTZ/4xCe+ZbPZnPlUgXg8jsnJyXmuwUKN
420 +gtr9UmIDLhRGoF6HIQQggCTJkNKWfZZV1vujFBUb7YHyE752v1DiV3/NbBNC0NjYCKcmGtJI9E+l
421 +UvHHHnvsO1/+8pd/B2W0147+athvxSaZLEzalrl5AqpxkHvrrbfGb7vttrrm5ubufP56lcuqcwUK
422 +cQsWwwRybevt5ys37JQKMALtx6uuvZdt2KrEPVhR38yob7RtFfEDgN/v1431z5YSZFlGT0/Pb+65
423 +556nYrFYHMqIr8b9W7LYZ6FYKAagIhMbEIvFMDo6OnTjjTeucbvdjbkCfwDAbrdDFEWkUqnzjhfi
424 +89crtzpUuBoZwUKgXISfXWY18Ru1RSmF2+2e5/LLPq4SPgBMTEwc//a3v/3A/v37p6CM9mHMd/tV
425 +PNf7QjMANUKQBcCfPHky3t7ePr1x48atPM9nAqiN9Hq73Y5kMnlefED2drmYgJl9s8esqF+tsIrw
426 +9Y4VKgUUQ/xGur/dbp9n9NO7profj8dnf/azn/3bD3/4w2NQ9HzV56+O/mWb8psLC80AgCxV4JVX
427 +Xpm47rrruM7Ozg2EKInijYiTYRjYbDYkk0lI0pzdxIjgcxF5ruvk2tbbNyrLVZ63ky4wZlCsOlHs
428 +qJ+9Xyzx65XpET/P82hoaNA1+mWL/pIkSbt37/7FPffc86Isy0kobj9V9K+43q9FNTAAQDNXQJZl
429 +Zu/evQO33HJLe319fReQewRnWVYJZkkk5r1As7aAQpiAmXaN6hZyLG9nVSkzKMWGUMion12WL4RX
430 +7zfX8Xzbapx/voU91b/e3t7X77nnnp+Nj4+rBB/BXMhvWRN+5EM1MYAME5icnJRmZ2fPXnPNNWtd
431 +Lle9nj1A+8vzPFiWnTdfQPtrtG2WCZjd1ts3KivkeLnOtQLlInqj41YY/ozK8xn7AKW/6+vrddf1
432 +09P7p6amev/mb/7mX1555ZUxKKK+lvgXxPCnRTUwAPXhVVWABcAdPnw42tLSMrFx48bNPM+fl21C
433 +b74AIcQ0EzBqR69uMXEBlWYE5WwLKI3QC22rUMLP3s9nwMuuk48RaH8DgQC8Xq9hO9pzY7HY9EMP
434 +PfSj7373u0eh6P1aq39FA36MUA0MQAutUZB7+eWXx7du3Zpcvnz5JjWDEGAc4KMygWz3YLGGQb1j
435 +ZlUCo/ZylRda50KCGQZSqrtPu2806mcfK4T4/X4/fD6frsVfey6lFIIgJLdv3/7Tr371q69BIfQY
436 +5gx/Cy76q6gmBqCVBFQmwL7yyisDN9xwg6u1tXU1Sfd8rok/drtdjbU+75gKMwSvV2a1Z6CaQofL
437 +gXKG9mbvmxH51TIjAs/FEHw+37zkHnrX1Bj95P379z/zmc985smYslaamuRD6/NfcOIHqosBAHMd
438 +oqoCbCwWw759+07fcMMNLfX19UvUikYjMyEks7hIIUygECIuNkrQCqNgtTODUole71gp0X5GdQol
439 +/kAgoEv82ZF+aaPfzi9/+csP9fX1haEQuyr6R7DAVv9sVBsD0CJjFBwdHRUGBgZOX3fddcs8Hk8L
440 +kJ+YS2EChagEevXy2R1ylec7ZkV9q1BO/75eeaF6v9Exq4lf+zcyMnLoW9/61o927do1AUXMzyZ+
441 +NeCnxgAMoO0YJv3HnTp1KhaPx/uuuOKK1U6nsx4wzwS00YLZ5+U6P19ds9uFlhVy3AyKbcMKw58V
442 +Br/sMrMuQG1ZIbq++muW+NXRf3p6+vTf/d3f/fCxxx4bgDLKqwk+1Vl+FZvmaxbVxgD0OiajDrz7
443 +7rshm802eMkll6yz2+0+wBwT0BoGjerqHctVthBBQtUu/qsohuiNyotx+2n3jSLzcjEEQDH4Gen8
444 +esQfCoWG7r///h/ef//9x6EQv1bv17r8Kh7umwvVxgBUUBi4B19//fXJpqam4XXr1m2w2+3ufDEC
445 +qmGQYZi8TKDQoKDssoWIFlxoplCIlFAJwteWFfKrbhNCMkk9zBA/AEQikYmHHnroX/72b//2ABTj
446 +XrbRr6r0fi2qlQFoQTGfCbAvvfTSaFdX18Tq1avXm4kRUJkAx3FIJpO6mW0KsQeUwggKKTNzzMpz
447 +cqEYdaCU6D69MrOEr902qwJQSjMRftnLeOXz9T/22GMPfPOb33wLCvFrI/2qUu/XopoZgFYK0DIB
448 +BgD7wgsvDC9fvnxq1apV67UTh1ToEa7NZgPP80ilUpm5A8Ua3AphAmbqmyk3e3yhsBCif3ZZsaO/
449 +uoKPNsJPr572LxaLBR9//PF/v/fee1+HMsInMGf0U/V+NcFH1RE/UN0MQIWeOsAAYF544YXBZcuW
450 +Ta9cuXIdz/OOfOoAoIQN2+12CIKQmUVodvQvVRowU7+QY8XUswrlcPfplVk96mf/Ujo3qy97BZ9c
451 +Yn8sFgs+8cQTP7733ntfo5SqK/mqk3xUvT+FKh35VVQ7A6BZvyoYAAyllHnhhRcGli5dOrly5cq1
452 +NpvNacQEtNssy8LpdEKSpHmrDmnrFOsS1Due7/x8ZWaO5UOh55biASin6K9XJ1ccQD5jn9vtNpzV
453 +p62vJf5oNDr9xBNP/Pu99977miRJ2cSvXdVHQpUZ/bJR7QxAC13DYJoJDC5evHhs5cqVa/QMg8D5
454 +xMowDJxOJwghSKVSpj/4Qr0HeuVWBggttDpQrNivdyzffnZ5saM/pUr6br/fj7q6Ot35/HqBPgAQ
455 +DocnHnvssQfuu+++1yVFj0xhLsxXa/GvWrFfiwuNAcia7Yw6kGYCQw0NDYNr1qzpzrfaULabUF14
456 +JNsuUIgKUEzwT7klAKuYQ7kDfgolfO12MYY/dS6/x+MxNPapv9oIv1AoNPzggw/+6ze/+c23KaUS
457 +5kZ+LfFrl/OuMQCLQTFfEgDmvAPMyy+/PMLzfN+6deuWu1yuOr0GjOwCDocDkiTNyy6UD4Xq/7nO
458 +LSZIyGydcsIMcyiF6LOPlTL6A8ik7tYu3JFdV+9vcnKy7wc/+MEP064+GXMjv6rza919FwTxAxce
459 +AwDmM4HzVIJdu3ZNhMPhY5s3b17s9Xpb9BrQYwKqXYBhGKRSqYzIZ0V4cKGjuhXxAcXUN+xwiyQA
460 +s/q/3jEzBG90THXx+f1+BAIBcBynex0j4h8eHj7093//9z+4//77T0Ih7myDX/ZS3hcE8QMXJgMA
461 +5tQBLRPIuAj37dsXPHXq1JFLLrmkPhAILCY6lGAkxtvt9kzC0VzSgBXBQbnOK+WcSsKqUF+j41aM
462 +/g6HAw0NDXC73aZm86l/kiTJvb29u771rW/96Be/+MUglG9Nj/i1ST0vGOIHLlwGAOgzgYxd4NSp
463 +U7Fdu3YduuSSS9jm5uZlDMNwZoyDgLIiscvlAsMwEATBUBrQa8eorBDDX67jC+UWLNXtVyijKJTw
464 +s8u0o35dXZ3uMt1656jvWhCE5L59+579whe+8J+7d++expzYr43vv6CJH7iwGQAwxwS0nZ9hAuPj
465 +48Lzzz/fs2LFimBnZ+dKnuedeh+ikTTgcDhgt9sNbQOFGADzXa+Qc4o5bjVKsf4b1St2W48ZOJ1O
466 +1NfXFzzqA0AsFpv57W9/+9PPf/7zT505cyYGxaJ/0Yj9WlzoDAA43yYwTyWIRqP017/+9Wmv19vf
467 +3d3dpc4k1IORNOB0OsFxHARBmJd9OBeKmTFYzjkAan09KSjTkZpjVlr+89Uthtj1ylQLfyAQgN/v
468 +Nz3qa/+mp6dP/+QnP/nRfffdtysSiYhQjHrZc/ovCuIHLg4GAMwRvioNqGAAEEops2PHjpHBwcHD
469 +69ev9wcCgUWEECaXSqDdJoTAZrNl4gZEUTxPLciun6u97G0z+4WgXNKAlcFBVjIBVdz3er2ZbL35
470 +Rn11W32PkiSJvb29r//lX/7lj77//e+foEolAXPEn53R54InfuDiYQDAfAaQrRIQAExPT0/4d7/7
471 +3YHu7u54W1vbUjV8WA96xKwGD6l5BowYQa72zBwr1iVYTSg1zDfXiK9uqwE9LpcLdXV18Hg884J6
472 +9NrRE/nj8fjszp07f3nPPfc8snPnzkko346A+RN79Kb1XtDED1xcDAAwwQSmpqbEX/3qV8c9Hs+Z
473 +pUuXtrtcrgZiQF1GI7bqMrTb7ZBlGaIoZj6mQgOCKjVtuKydXoZJPvkInxCS0fO9Xq+ha097jnY7
474 +PfrTiYmJkw8++OAD99577+/GxsbU2P0U5k/pzY7wuyiIH7j4GABwvjqgfVkMACJJEtmxY8fI8ePH
475 +969evZptaGjoZFmWzycNaLcJIRlvQSGMwIqYgIUyCFrl8jMz8uttawm/rq4uo+fnEve152oZQSqV
476 +ih86dOi3f/qnf/rjBx54oFeSJAplZM8O7VUt/SnMzem/KIgfuPgZgJZba18aAcD09vbGnnrqqUON
477 +jY3nOjo62l0uVyB9TGlI8zHlImie5zOMIO0/1s05kA2r4wIqJRFYHeprRudX1S8jwtc712Dkp9PT
478 +02cef/zxB7/0pS89d/jw4RDmi/zaST3qwp3qlN6qnthTDC5GBgDM9whoGcF57sJ4PC4///zzA6dO
479 +nTqwcuVKpr6+voNlWZvRR2qGEajTSrMZQalGQCtVgVzEY7qTLRL9s/e1RMuybGYFXq/Xa5rwtdvq
480 +fjKZjB46dGj7t7/97Z985zvf6YnH4+p3oYr8Rpb+C2JiTzG4WBmAimxVQC9wiABgTp48GfnVr351
481 +0OVynens7GxM2waYQtQCdVtVDZxOJ1iWhSzLmUkl+drS2zcqy1VeaB3dzisyzt+o3CzRq8zU6/Vm
482 +jHscx+UlfPU3m/AlSZLGxsaO/uxnP/uPr371qy8cOnRoNn2adiqvaulXp/NeFG6+fLjYGYAKLSMw
483 +UguYRCKBl156aWj37t3vdnZ2hpuamtpsNpsHgCnizf5AWZaFw+GA2+2GzWYDwzAFM4NCysy2V1DH
484 +lRABaFb/V39VxqnG7KsM1GwbemJ/OBwe3bVr16/uu+++h//zP//zdCKRUL+FFOYy+GhTeKnZey8q
485 +Y58RqsOMXJnnJEgnFgXgAOAE4ALgTv/aAdjSxwnLsuQzn/lM57333nvn6tWrr7Xb7V51arHWEFho
486 +NKAoikgkEojFYjmnIOdrayFsAYXq/nrl2UTPsixsNltGdcq25hu1lU342m1KKZLJZPj48eO7fvSj
487 +Hz3/8MMPD6SNfFpDn3bkj0EhfHU2nyryX9TED7x3GID2eRkoRG7DHBNQ/5zpch4Ks6Ber5f/xje+
488 +seaTn/zkBxYvXnyJzWZzADDFCPT2VahxBIlEAolEIsMMsoOTqs0QWIoBUH02legdDkeG6HP1k96+
489 +HuEDQCqVSgwODu579NFHn/3e9753LBwOC1DeuwRFpFf1/ZjmL4GLzL9vFu81BqA+M4HCBHgoI7+W
490 +ETihSAh8ug4DgHZ0dDj/7M/+bPOdd975/ra2tvU8z9sA5GQCZqUC1XOQSqUyzEBvElK+dqrNC6Bu
491 +MwwDnuczRG+z2cCybN4+yd42In4AEAQhNTIycuT5559/4Z//+Z8PnDt3Lg7lPctQCFu18muJXxX3
492 +BVyELj4zeC8yABWZVYegjPpatcCV3rdjThogAGh3d7fnm9/85iW33Xbbbc3NzetURgDMMYF8OQTy
493 +EaoaU5BKpTJ/atShnjfCTJtWI5eXhGEYcBwHm82W+eM47rwoPbNtGln1AYXwx8bGjr700kvbv/vd
494 +7+47ceJERH1XmBv1k5hz8WnFfdW3nx1C/p7Be5kBqM+vZhTiMacWqIxAKw3w6boZRvC1r31t0623
495 +3npLe3v7Bp7nnWakgWIIV1UXRFGEIAiZjMZappBNPIV4B4qx9qvPqBI7x3HgeR48z2f2zT6b3n6+
496 +UV8QhPjw8PDhl156accPfvCDA1mEL0Mh/OxRP445v77q3ntPifzZeK8zABVaaUCrFqiMQCsNcJjz
497 +ntCOjg7nH//xH6+94447bujq6tridDrr9IjejFpQyCiuTmRRpypLkpTZVj0N6p9a36xFX3u/DMPM
498 +++M4DizLgmXZzDbDMAXfu9F+LjGfUop4PB48e/bsvt/85jev/uhHPzo2MDAQw9x3LGFO3NeO+irh
499 +a8X99+yor0WNAcwh21OgVQvUPzvmqwUZRhAIBGyf+tSnuj72sY9dvXr16it8Pt8iVuPDKsZGUIr/
500 +PvtPqz5k/+rdl0rU2X/F3k+uslyjPaD48UOh0NDx48f3PPHEE7v/67/+62wwGExhPuFrxf0k5og+
501 +W9x/z1j4zaDGAM6HnlrgwHxmoLoMtYyAAKAsy5Kbbrqp8dOf/vSmK6644qq2trY1DofDl03sxeYR
502 +rJYJQEYw4w7MN+Kr+4lEIjQyMnJsz549bz7yyCMHf/e7302m3XlaHV9r3dcSfgJzhF8T9w1Q3V/T
503 +wiETIQhjRqCqBWrsgOoxYJAeYZqbmx0f//jHO+++++5Lu7u7L6mrq1uitRUA5lKOZ2/r3nAVZwQy
504 +m8VH1e1nZmb6T5w4se+5555799FHHz07Pj6e0LwTVXRXk3WohK/q+rkIv0b8WagxgNzQMgLVPmCD
505 +QvgqI1DVAj2JQB2psG7dOu/HP/7xZdddd92W5cuXb/D7/Z02my0nM8i1Pe8mF0gqKGW015alUqn4
506 +7OzswOnTpw/v3Llz/y9+8Yu+np6esOYdqMSrN+Kro77qy1cJX+vTrxG+AWoMwBy09gGtRKAyAlUa
507 +yJYIWMx5DgBAZlmWWbdunfeDH/xg1zXXXLNuxYoV6+vr67vsdrufZdl5frJCGIFVocHlTu0FAJIk
508 +yclkcnZ6evpsb2/vkddff73n6aefPtvT0xOWJElO9xkwfzJX9oivjvrZhK8yiRrhm0CNARQGPUag
509 +eg1UZqA1FGq9Bqp6oPY5BYDOzk7nLbfc0nLDDTesWLNmzeq2trblXq+3led5dzZDAKw1HBaT/6+Q
510 +WX0qJEmSBUGIhsPhsZGRkd5jx44df/XVV3tffvnlsYGBgbimb9V+0c7bUK36WgNfQrOtHqsRfhGo
511 +MYDikM0IstUDrTSgqgZa9YDRtAGkP1q73c52d3d7rr/++pbLL798yYoVK5a3trZ2eb3eFrvd7uc4
512 +zsYwjOE7s1pFKGSmnwpZlqkoiqlkMjkbDofHRkdHz/b29p5+++23+1977bWxEydORJLJpKT3/Jgj
513 +elXMV0V97aifLebXCL8E1BhAacg2Fqqiv03zZ8/az1YPsiUDIP0xsyzLLFq0yLllyxb/1q1bm7u7
514 +uxd1dnZ2NDQ0tHm93iaHw+HnOM7FsizPMAxTyVBgWZZlSZIEURRjiURiNhwOT0xNTY0MDAycO3Hi
515 +xNC77747vn///tmhoaF4WqzXErz6jNpp2tlivpbwtftqnZpxzwLUGIA1IDCWClTJIPtPqx5oDYfZ
516 +0gEw/yNnAoEAv3LlSld3d7dv5cqVgc7OzsaWlpaGurq6eq/XG3C5XB6bzebhed7Jsqw9zSB4hmFY
517 +QgiTzoFICCEknf0W6V+ZUiqnIUiSJEiSlBQEIZ5KpSKxWCwSDoeDMzMz02NjY1MDAwOTp06dCp44
518 +cSJ06tSpWDAYVOfPI8czqEQraf5UMT+l86dKAnqjfY3wS0SNAVgPLREbMQMtU1AZQTYzYGDMEFSc
519 +l9PAZrOxgUCAbW1ttQcCAT4QCHCNjY1Ov9/vcLvdnN1u5ziOYziOy4Q1U0qpJElUEAQpkUhIiURC
520 +CAaDycnJyXgwGBSDwaAwOjqaDAaDUiqVyk6Nle/eZJwv3mtHey3hC8hN9DU/vsWoMYDyQSsVqCqC
521 +Vk3gDf6MmAGT1Z72GtprqqAmto3uO992dnvqvlYk14r2ekSv96cV77NF/BrhlwE1BlAZGDGDbIaQ
522 +/ase12MGehIC0VxP+wuDfT3QHGXaX70R3ojoVaOeqPMrZtWvEX0FUWMAlUc2M8hmCFqmoN3mdOox
523 +yM0QAH3GoL2XfASfva1H8NlErx3txaz97HrZuRprRF9B1BjAwoJAnyGoTEGPOej9ac/RMoFc0oER
524 +8hG9asAzIny9v+zMzNkEXyP6BUKNAVQXCHIzhew/NscxPQaQixHoiff5Rv3sRKtGf3pt1lAFqDGA
525 +6ka2GJ/NGLKJ3GjbiPDnRSVmbRsxAaPtXIReI/gqRY0BXHjQM/Tl2s5nGMxGLoMf8mxrf2u4AFBj
526 +ABcX8ln9zb5vWuB+DTXUUEMNNdRQQw011FBDDTXUUEMNNdRQQw011FBDDTXUUEMN1YH/H2nR4JG4
527 +1hsHAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDE5LTA5LTAyVDA1OjI5OjE0LTA3OjAwR8x7gAAAACV0
528 +RVh0ZGF0ZTptb2RpZnkAMjAxOS0wOS0wMlQwNToyOToxNC0wNzowMDaRwzwAAAAASUVORK5CYII=" />
529 +</svg>
1 -<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1577517047047" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6202" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M512 128q69.675 0 135.51 21.163t115.498 54.997 93.483 74.837 73.685 82.006 51.67 74.837 32.17 54.827L1024 512q-2.347 4.992-6.315 13.483T998.87 560.17t-31.658 51.669-44.331 59.99-56.832 64.34-69.504 60.16-82.347 51.5-94.848 34.687T512 896q-69.675 0-135.51-21.163t-115.498-54.826-93.483-74.326-73.685-81.493-51.67-74.496-32.17-54.997L0 513.707q2.347-4.992 6.315-13.483t18.816-34.816 31.658-51.84 44.331-60.33 56.832-64.683 69.504-60.331 82.347-51.84 94.848-34.816T512 128.085z m0 85.333q-46.677 0-91.648 12.331t-81.152 31.83-70.656 47.146-59.648 54.485-48.853 57.686-37.675 52.821-26.325 43.99q12.33 21.674 26.325 43.52t37.675 52.351 48.853 57.003 59.648 53.845T339.2 767.02t81.152 31.488T512 810.667t91.648-12.331 81.152-31.659 70.656-46.848 59.648-54.186 48.853-57.344 37.675-52.651T927.957 512q-12.33-21.675-26.325-43.648t-37.675-52.65-48.853-57.345-59.648-54.186-70.656-46.848-81.152-31.659T512 213.334z m0 128q70.656 0 120.661 50.006T682.667 512 632.66 632.661 512 682.667 391.339 632.66 341.333 512t50.006-120.661T512 341.333z m0 85.334q-35.328 0-60.33 25.002T426.666 512t25.002 60.33T512 597.334t60.33-25.002T597.334 512t-25.002-60.33T512 426.666z" p-id="6203"></path></svg>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1577518173588" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6318" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M512 128q69.675 0 135.51 21.163t115.498 54.997 93.483 74.837 73.685 82.006 51.67 74.837 32.17 54.827L1024 512q-2.347 4.992-6.315 13.483T998.87 560.17t-31.658 51.669-44.331 59.99-56.832 64.34-69.504 60.16-82.347 51.5-94.848 34.687T512 896q-69.675 0-135.51-21.163t-115.498-54.826-93.483-74.326-73.685-81.493-51.67-74.496-32.17-54.997L0 513.707q2.347-4.992 6.315-13.483t18.816-34.816 31.658-51.84 44.331-60.33 56.832-64.683 69.504-60.331 82.347-51.84 94.848-34.816T512 128.085z m0 85.333q-46.677 0-91.648 12.331t-81.152 31.83-70.656 47.146-59.648 54.485-48.853 57.686-37.675 52.821-26.325 43.99q12.33 21.674 26.325 43.52t37.675 52.351 48.853 57.003 59.648 53.845T339.2 767.02t81.152 31.488T512 810.667t91.648-12.331 81.152-31.659 70.656-46.848 59.648-54.186 48.853-57.344 37.675-52.651T927.957 512q-12.33-21.675-26.325-43.648t-37.675-52.65-48.853-57.345-59.648-54.186-70.656-46.848-81.152-31.659T512 213.334z m0 128q70.656 0 120.661 50.006T682.667 512 632.66 632.661 512 682.667 391.339 632.66 341.333 512t50.006-120.661T512 341.333z m0 85.334q-35.328 0-60.33 25.002T426.666 512t25.002 60.33T512 597.334t60.33-25.002T597.334 512t-25.002-60.33T512 426.666z" p-id="6319"></path></svg>
...\ No newline at end of file ...\ No newline at end of file
......
1 +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width='11' height='11' viewBox='0 0 11 11' class='icon' xmlns='http://www.w3.org/2000/svg'><path d='M11 4.399V5.5H0V4.399h11z'/></svg>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width='11' height='11' viewBox='0 0 11 11' class='icon' xmlns='http://www.w3.org/2000/svg'><path d='M11 0v11H0V0h11zM9.899 1.101H1.1V9.9h8.8V1.1z'/></svg>
...\ No newline at end of file ...\ No newline at end of file
1 +<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width='11' height='11' viewBox='0 0 11 11' class="icon" xmlns='http://www.w3.org/2000/svg'><path d='M11 8.798H8.798V11H0V2.202h2.202V0H11v8.798zm-3.298-5.5h-6.6v6.6h6.6v-6.6zM9.9 1.1H3.298v1.101h5.5v5.5h1.1v-6.6z'/></svg>
...\ No newline at end of file ...\ No newline at end of file
...@@ -62,6 +62,7 @@ export default { ...@@ -62,6 +62,7 @@ export default {
62 this.timer = setInterval(() => { 62 this.timer = setInterval(() => {
63 this.set_time(); 63 this.set_time();
64 }, 60000); 64 }, 60000);
65 + console.log(this.userImage)
65 }, 66 },
66 methods: { 67 methods: {
67 toggleSideBar() { 68 toggleSideBar() {
...@@ -73,11 +74,11 @@ export default { ...@@ -73,11 +74,11 @@ export default {
73 message: "退出成功", 74 message: "退出成功",
74 type: "success" 75 type: "success"
75 }); 76 });
76 - location.reload(); // 为了重新实例化vue-router对象 避免bug 77 + this.$router.push('/login')
77 }); 78 });
78 }, 79 },
79 set_time() { 80 set_time() {
80 - this.time = format(new Date(), "YYYY/MM/DD HH:mm"); 81 + this.time = format(new Date(), "yyyy/MM/dd HH:mm");
81 } 82 }
82 }, 83 },
83 computed: { 84 computed: {
......
1 <template> 1 <template>
2 - <div v-if="!item.hidden&&item.children" class="menu-wrapper"> 2 + <div
3 - 3 + v-if="!item.hidden&&item.children"
4 + class="menu-wrapper"
5 + :class="collapse?``:`active-menu-wrapper`"
6 + >
4 <div v-if="item.onlyShowfirst"> 7 <div v-if="item.onlyShowfirst">
5 <router-link 8 <router-link
6 v-if="OneShowingChild(item.children[0]) && !onlyOneChild.children&&!item.alwaysShow" 9 v-if="OneShowingChild(item.children[0]) && !onlyOneChild.children&&!item.alwaysShow"
...@@ -88,6 +91,10 @@ export default { ...@@ -88,6 +91,10 @@ export default {
88 basePath: { 91 basePath: {
89 type: String, 92 type: String,
90 default: "" 93 default: ""
94 + },
95 + collapse: {
96 + type: Boolean,
97 + required: true
91 } 98 }
92 }, 99 },
93 data() { 100 data() {
...@@ -111,8 +118,7 @@ export default { ...@@ -111,8 +118,7 @@ export default {
111 return false; 118 return false;
112 }, 119 },
113 resolvePath(...paths) { 120 resolvePath(...paths) {
114 - return this.basePath + "/" +paths[0] 121 + return this.basePath + "/" + paths[0];
115 - // return path.resolve(this.basePath, ...paths);
116 }, 122 },
117 OneShowingChild(children) { 123 OneShowingChild(children) {
118 this.onlyOneChild = children; 124 this.onlyOneChild = children;
...@@ -122,20 +128,12 @@ export default { ...@@ -122,20 +128,12 @@ export default {
122 }; 128 };
123 </script> 129 </script>
124 <style lang="scss" scoped> 130 <style lang="scss" scoped>
125 -@import "@/styles/color.scss";
126 .menu-wrapper { 131 .menu-wrapper {
127 /deep/ .el-menu-item, 132 /deep/ .el-menu-item,
128 .el-submenu__title { 133 .el-submenu__title {
129 height: 46px; 134 height: 46px;
130 line-height: 46px; 135 line-height: 46px;
131 } 136 }
132 - /deep/ a {
133 - background-color: #ffc248;
134 - }
135 - /deep/ .el-menu-item.is-active {
136 - margin-left: 8px;
137 - background-color: $Theme-color !important;
138 - }
139 /deep/ .el-menu-item { 137 /deep/ .el-menu-item {
140 padding: 0 20px 0 12px; 138 padding: 0 20px 0 12px;
141 } 139 }
......
...@@ -4,13 +4,10 @@ ...@@ -4,13 +4,10 @@
4 mode="vertical" 4 mode="vertical"
5 :show-timeout="200" 5 :show-timeout="200"
6 :default-active="$route.path" 6 :default-active="$route.path"
7 - background-color="#ffffff"
8 - text-color="#666666"
9 :collapse="isCollapse" 7 :collapse="isCollapse"
10 - active-text-color="#ffffff"
11 > 8 >
12 <Logo :collapse="isCollapse" /> 9 <Logo :collapse="isCollapse" />
13 - <sidebar-item v-for="route in routes" :key="route.name" :item="route" :base-path="route.path"></sidebar-item> 10 + <sidebar-item v-for="route in routes" :key="route.name" :item="route" :base-path="route.path" :collapse="isCollapse"></sidebar-item>
14 </el-menu> 11 </el-menu>
15 </scroll-bar> 12 </scroll-bar>
16 </template> 13 </template>
......
...@@ -41,6 +41,7 @@ export default { ...@@ -41,6 +41,7 @@ export default {
41 } 41 }
42 42
43 .sidebar-logo-container { 43 .sidebar-logo-container {
44 + box-shadow: 2px 0 6px rgba(0,21,41,.15);
44 position: relative; 45 position: relative;
45 width: 100%; 46 width: 100%;
46 height: 61px; 47 height: 61px;
...@@ -75,6 +76,7 @@ export default { ...@@ -75,6 +76,7 @@ export default {
75 .collapse { 76 .collapse {
76 .sidebar-logo { 77 .sidebar-logo {
77 margin-right: 0px !important; 78 margin-right: 0px !important;
79 + margin-left: 0px !important;
78 } 80 }
79 } 81 }
80 </style> 82 </style>
...\ No newline at end of file ...\ No newline at end of file
......
1 <template> 1 <template>
2 - <div class="app-wrapper" :class="classObj"> 2 + <div class="app-wrapper" :class="IsUseSysTitle?'UseSysTitle':'NoUseSysTitle'">
3 + <div :class="classObj">
3 <navbar></navbar> 4 <navbar></navbar>
4 <div class="container-set"> 5 <div class="container-set">
5 - <sidebar class="sidebar-container"></sidebar> 6 + <sidebar class="sidebar-container" :class="IsUseSysTitle?'UseSysTitle':'NoUseSysTitle'"></sidebar>
6 <div class="main-container"> 7 <div class="main-container">
7 <app-main></app-main> 8 <app-main></app-main>
8 </div> 9 </div>
9 </div> 10 </div>
10 </div> 11 </div>
12 + </div>
11 </template> 13 </template>
12 14
13 <script> 15 <script>
...@@ -22,6 +24,9 @@ export default { ...@@ -22,6 +24,9 @@ export default {
22 Navbar 24 Navbar
23 }, 25 },
24 mixins: [ResizeMixin], 26 mixins: [ResizeMixin],
27 + data: () => ({
28 + IsUseSysTitle: require("./../../../config").IsUseSysTitle
29 + }),
25 computed: { 30 computed: {
26 sidebar() { 31 sidebar() {
27 return this.$store.state.app.sidebar; 32 return this.$store.state.app.sidebar;
...@@ -51,4 +56,10 @@ export default { ...@@ -51,4 +56,10 @@ export default {
51 padding-top: 62px; 56 padding-top: 62px;
52 } 57 }
53 } 58 }
59 +.UseSysTitle{
60 + top:0px;
61 +}
62 +.NoUseSysTitle{
63 + top:38px
64 +}
54 </style> 65 </style>
......
...@@ -9,10 +9,13 @@ import db from './api/operationalData' ...@@ -9,10 +9,13 @@ import db from './api/operationalData'
9 import ElementUI from 'element-ui' 9 import ElementUI from 'element-ui'
10 import 'element-ui/lib/theme-chalk/index.css' 10 import 'element-ui/lib/theme-chalk/index.css'
11 import './permission' 11 import './permission'
12 - 12 +// 日志
13 +import './error'
13 import './icons' 14 import './icons'
14 import '@/styles/index.scss' 15 import '@/styles/index.scss'
15 16
17 +if (!require('../../config').IsUseSysTitle) require('@/styles/custom-title.scss')
18 +
16 if (!process.env.IS_WEB) Vue.use(require('vue-electron')) 19 if (!process.env.IS_WEB) Vue.use(require('vue-electron'))
17 20
18 Vue.use(ElementUI) 21 Vue.use(ElementUI)
...@@ -21,9 +24,11 @@ Vue.prototype.$db = db ...@@ -21,9 +24,11 @@ Vue.prototype.$db = db
21 24
22 Vue.config.productionTip = false 25 Vue.config.productionTip = false
23 /* eslint-disable no-new */ 26 /* eslint-disable no-new */
24 -new Vue({ 27 +const vue = new Vue({
25 components: { App }, 28 components: { App },
26 router, 29 router,
27 store, 30 store,
28 template: '<App/>' 31 template: '<App/>'
29 }).$mount('#app') 32 }).$mount('#app')
33 +
34 +export default vue
......
1 /* eslint-disable no-tabs */ 1 /* eslint-disable no-tabs */
2 import router from './router' 2 import router from './router'
3 import store from './store' 3 import store from './store'
4 -import NProgress from 'nprogress' // Progress 进度条
5 -import 'nprogress/nprogress.css'// Progress 进度条样式
6 import { Message } from 'element-ui' 4 import { Message } from 'element-ui'
7 5
8 const whiteList = ['/login'] // 不重定向白名单 6 const whiteList = ['/login'] // 不重定向白名单
9 router.beforeEach((to, from, next) => { 7 router.beforeEach((to, from, next) => {
10 - NProgress.start()
11 if (store.getters.token) { 8 if (store.getters.token) {
12 if (to.path === '/login') { 9 if (to.path === '/login') {
13 next({ path: '/' }) 10 next({ path: '/' })
14 - NProgress.done() // if current page is dashboard will not trigger afterEach hook, so manually handle it
15 } else { 11 } else {
16 if (store.getters.roles.length === 0) { 12 if (store.getters.roles.length === 0) {
17 store.dispatch('GetInfo').then(res => { // 拉取用户信息 13 store.dispatch('GetInfo').then(res => { // 拉取用户信息
...@@ -31,11 +27,8 @@ router.beforeEach((to, from, next) => { ...@@ -31,11 +27,8 @@ router.beforeEach((to, from, next) => {
31 next() 27 next()
32 } else { 28 } else {
33 next('/login') 29 next('/login')
34 - NProgress.done()
35 } 30 }
36 } 31 }
37 }) 32 })
38 33
39 -router.afterEach(() => { 34 +router.afterEach(() => {})
40 - NProgress.done() // 结束Progress
41 -})
......
1 -import Layout from '../layout' 1 +import Layout from '@/layout'
2 const Login = () => import('@/views/login') 2 const Login = () => import('@/views/login')
3 const Notfound = () => import('@/views/404') 3 const Notfound = () => import('@/views/404')
4 /** 4 /**
...@@ -44,12 +44,19 @@ export default [ ...@@ -44,12 +44,19 @@ export default [
44 { 44 {
45 path: '/form', 45 path: '/form',
46 component: Layout, 46 component: Layout,
47 + meta: { title: '表单', icon: 'form' },
47 children: [ 48 children: [
48 { 49 {
49 path: 'index', 50 path: 'index',
50 name: 'Form', 51 name: 'Form',
51 component: () => import('@/views/form/index'), 52 component: () => import('@/views/form/index'),
52 meta: { title: '表单', icon: 'form' } 53 meta: { title: '表单', icon: 'form' }
54 + },
55 + {
56 + path: 'index2',
57 + name: 'Form2',
58 + component: () => import('@/views/form/index'),
59 + meta: { title: '表单2', icon: 'form' }
53 } 60 }
54 ] 61 ]
55 }, 62 },
......
1 +/**
2 + * 在这里则是state.文件名.状态名
3 + */
1 const getters = { 4 const getters = {
2 sidebar: state => state.app.sidebar, 5 sidebar: state => state.app.sidebar,
3 device: state => state.app.device, 6 device: state => state.app.device,
......
1 +
2 +const template = {
3 + state: {},
4 +
5 + mutations: {},
6 +
7 + actions: {}
8 +}
9 +
10 +export default template
1 -$Theme-color:#651FFF;
...\ No newline at end of file ...\ No newline at end of file
...@@ -43,119 +43,3 @@ ...@@ -43,119 +43,3 @@
43 margin-top: 10px; 43 margin-top: 10px;
44 } 44 }
45 45
46 -// 卡片上面的图标和标题样式
47 -.info-set {
48 - display: flex;
49 - margin-bottom: 16px;
50 - line-height: 22px;
51 -
52 - .info-icon {
53 - width: 8px;
54 - height: 22px;
55 - background: rgba(58, 127, 159, 1);
56 - border-radius: 4px;
57 - margin-right: 12px;
58 - }
59 -
60 - .info-title {
61 - font-size: 16px;
62 - font-weight: bold;
63 - color: rgba(51, 51, 51, 1);
64 - }
65 -}
66 -
67 -// 顶部的单选样式
68 -.top-order {
69 - flex: 1;
70 -
71 - .order-group {
72 - height: 38px;
73 - display: flex;
74 - align-items: center;
75 - background-color: #3a7f9f;
76 - width: 346px;
77 - justify-content: center;
78 - border-radius: 2px;
79 - }
80 -
81 - .order-group /deep/ .el-radio-group /deep/ .el-radio__input.is-checked .el-radio__inner {
82 - border-color: #f2b931;
83 - background: #f2b931;
84 - }
85 -
86 - .order-group /deep/ .el-radio-group /deep/ .el-radio__input.is-checked+.el-radio__label {
87 - color: #f2b931;
88 - }
89 -
90 - .order-group /deep/ .el-radio__inner {
91 - border: 1px solid #dcdfe6;
92 - border-radius: 100%;
93 - width: 14px;
94 - height: 14px;
95 - position: relative;
96 - cursor: pointer;
97 - display: inline-block;
98 - box-sizing: border-box;
99 - background-color: #3a7f9f;
100 - }
101 -
102 - .order-group /deep/ .el-radio {
103 - color: #fff;
104 - }
105 -}
106 -
107 -// 活动页顶部按钮
108 -.top-active /deep/ .el-button {
109 - background-color: #3a7f9f;
110 - color: #fff;
111 - height: 38px;
112 -}
113 -
114 -.top-active /deep/ .el-button:active {
115 - background-color: #2c637c;
116 -}
117 -
118 -// 表格添加阴影
119 -.table-control {
120 - box-shadow: none;
121 -}
122 -
123 -// 表格选中颜色样式
124 -.table-control /deep/ .el-checkbox__input.is-checked .el-checkbox__inner {
125 - background-color: #3a7f9f;
126 -}
127 -
128 -.table-control /deep/ .el-checkbox__input.is-indeterminate .el-checkbox__inner {
129 - background-color: #3a7f9f;
130 -}
131 -
132 -// 底部修改,保存,取消按钮的样式修改
133 -.bottom-button {
134 - width: 100%;
135 - display: flex;
136 - justify-content: flex-end;
137 -}
138 -
139 -.bottom-button /deep/ .el-button--primary {
140 - background-color: #3a7f9f;
141 - border-color: #3a7f9f;
142 - height: 38px;
143 -}
144 -
145 -.bottom-button /deep/ .el-button--primary:active {
146 - background-color: #255368;
147 - border-color: #255368;
148 -}
149 -
150 -.bottom-button /deep/ .el-button--default {
151 - height: 38px;
152 - color: #3a7f9f;
153 -}
154 -
155 -.bottom-button /deep/ .el-button--default:hover {
156 - background-color: rgba(58, 127, 159, 0.2);
157 -}
158 -
159 -.bottom-button /deep/ .el-button--default:active {
160 - background-color: rgba(43, 94, 117, 0.3);
161 -}
......
1 + // 降低消息高度
2 + // 当启用自定义标题时使用
3 + .el-message {
4 + top: 50px !important;
5 + }
6 +
7 + .el-notification {
8 + top: 38px !important;
9 + }
...\ No newline at end of file ...\ No newline at end of file
1 -@import './color.scss';
2 //to reset element-ui default css 1 //to reset element-ui default css
3 -.el-upload { 2 + .el-upload {
4 input[type="file"] { 3 input[type="file"] {
5 display: none !important; 4 display: none !important;
6 } 5 }
7 -} 6 + }
8 7
9 -.el-upload__input { 8 + .el-upload__input {
10 display: none; 9 display: none;
11 -} 10 + }
12 11
13 -//暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461 12 + //暂时性解决diolag 问题 https://github.com/ElemeFE/element/issues/2461
14 -.el-dialog { 13 + .el-dialog {
15 transform: none; 14 transform: none;
16 left: 0; 15 left: 0;
17 position: relative; 16 position: relative;
18 margin: 0 auto; 17 margin: 0 auto;
19 -} 18 + }
20 19
21 -//element ui upload 20 + //element ui upload
22 -.upload-container { 21 + .upload-container {
23 .el-upload { 22 .el-upload {
24 width: 100%; 23 width: 100%;
24 +
25 .el-upload-dragger { 25 .el-upload-dragger {
26 width: 100%; 26 width: 100%;
27 height: 200px; 27 height: 200px;
28 } 28 }
29 } 29 }
30 -}
31 -// 设置当选中时,popr的背景色被设置为白色的尴尬场景
32 -.el-menu--vertical{
33 - /deep/.el-menu--popup{
34 - /deep/ .el-menu-item.is-active{
35 - background-color: $Theme-color !important;
36 - }
37 } 30 }
38 -}
...\ No newline at end of file ...\ No newline at end of file
31 +
......
...@@ -3,17 +3,22 @@ ...@@ -3,17 +3,22 @@
3 @import './transition.scss'; 3 @import './transition.scss';
4 @import './element-ui.scss'; 4 @import './element-ui.scss';
5 @import './sidebar.scss'; 5 @import './sidebar.scss';
6 -@import './color.scss';
7 6
8 body { 7 body {
9 -moz-osx-font-smoothing: grayscale; 8 -moz-osx-font-smoothing: grayscale;
10 -webkit-font-smoothing: antialiased; 9 -webkit-font-smoothing: antialiased;
11 text-rendering: optimizeLegibility; 10 text-rendering: optimizeLegibility;
12 font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif; 11 font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;
12 + margin: 0;
13 + padding: 0;
13 } 14 }
14 15
15 html { 16 html {
16 box-sizing: border-box; 17 box-sizing: border-box;
18 +
19 + ::-webkit-scrollbar {
20 + display: none;
21 + }
17 } 22 }
18 23
19 *, 24 *,
...@@ -22,7 +27,7 @@ html { ...@@ -22,7 +27,7 @@ html {
22 box-sizing: inherit; 27 box-sizing: inherit;
23 } 28 }
24 29
25 -div:focus{ 30 +div:focus {
26 outline: none; 31 outline: none;
27 } 32 }
28 33
...@@ -51,7 +56,7 @@ a:hover { ...@@ -51,7 +56,7 @@ a:hover {
51 } 56 }
52 57
53 //main-container全局样式 58 //main-container全局样式
54 -.app-main{ 59 +.app-main {
55 min-height: 100% 60 min-height: 100%
56 } 61 }
57 62
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
18 height: 100%; 18 height: 100%;
19 position: fixed; 19 position: fixed;
20 font-size: 0px; 20 font-size: 0px;
21 - top: 0;
22 bottom: 0; 21 bottom: 0;
23 left: 0; 22 left: 0;
24 z-index: 1001; 23 z-index: 1001;
...@@ -30,7 +29,7 @@ ...@@ -30,7 +29,7 @@
30 } 29 }
31 30
32 .svg-icon { 31 .svg-icon {
33 - margin-right: 16px; 32 + margin-left: 14px;
34 } 33 }
35 34
36 .el-menu { 35 .el-menu {
...@@ -41,16 +40,16 @@ ...@@ -41,16 +40,16 @@
41 40
42 .hideSidebar { 41 .hideSidebar {
43 .sidebar-container { 42 .sidebar-container {
44 - width: 36px !important; 43 + width: 60px !important;
45 } 44 }
46 45
47 .navbar-header-fixed { 46 .navbar-header-fixed {
48 - width: calc(100% - 36px); 47 + width: calc(100% - 60px);
49 ; 48 ;
50 } 49 }
51 50
52 .main-container { 51 .main-container {
53 - margin-left: 36px; 52 + margin-left: 60px;
54 } 53 }
55 54
56 .submenu-title-noDropdown { 55 .submenu-title-noDropdown {
...@@ -84,11 +83,6 @@ ...@@ -84,11 +83,6 @@
84 .sidebar-container .nest-menu .el-submenu>.el-submenu__title, 83 .sidebar-container .nest-menu .el-submenu>.el-submenu__title,
85 .sidebar-container .el-submenu .el-menu-item { 84 .sidebar-container .el-submenu .el-menu-item {
86 min-width: 180px !important; 85 min-width: 180px !important;
87 - background-color: $Theme-color !important;
88 -
89 - &:hover {
90 - background-color: $Theme-color !important;
91 - }
92 } 86 }
93 87
94 .el-menu--collapse .el-menu .el-submenu { 88 .el-menu--collapse .el-menu .el-submenu {
......
...@@ -2,4 +2,3 @@ ...@@ -2,4 +2,3 @@
2 $menuBg:#ffffff; 2 $menuBg:#ffffff;
3 $subMenuBg:#1f2d3d; 3 $subMenuBg:#1f2d3d;
4 $menuHover:#001528; 4 $menuHover:#001528;
5 -$Theme-color:#651FFF;
......
1 -export default {
2 - /**
3 - * @export
4 - * @param {Array} data
5 - * @param {Object} dialog
6 - * @param {function} fun
7 - * @returns
8 - * @feature 消息弹窗通用函数
9 - */
10 - MessageBox (dialog, data, fun) {
11 - return new Promise((resolve, reject) => {
12 - dialog.showMessageBox({
13 - type: 'info',
14 - title: data.title,
15 - buttons: data.buttons,
16 - message: data.message
17 - }, index => {
18 - if (index === 0) {
19 - let tempfun = async () => {
20 - try {
21 - resolve(await fun)
22 - } catch (error) {
23 - reject(error)
24 - }
25 - }
26 - tempfun()
27 - }
28 - })
29 - })
30 - },
31 - /**
32 - * @export
33 - * @param {Array} data
34 - * @param {Object} dialog
35 - * @returns
36 - * @feature 错误消息弹窗
37 - */
38 - ErrorMessageBox (dialog, data) {
39 - return dialog.showErrorBox(
40 - data.title,
41 - data.message
42 - )
43 - }
44 -}
1 +/**
2 + * @export
3 + * @Author: Sky
4 + * @Date: 2019-09-29 20:23:16
5 + * @Last Modified by: Sky
6 + * @Last Modified time: 2019-09-29 21:01:24
7 + * @param {Object} option
8 + * @returns
9 + * @feature 对于普通的通知只需要加入传入title,body;而对于需要图标的还需要传入icon,当然它也接受一个图片链接,当用户点击通知之后,会返回一个true
10 + * 由于是一个promise,请使用then接受
11 + **/
12 +
13 +export default {
14 + DesktopMsg (option) {
15 + const msgfunc = new window.Notification(option.title, option)
16 + return new Promise((resolve) => {
17 + msgfunc.onclick = () => {
18 + resolve(true)
19 + }
20 + })
21 + }
22 +}
1 +import $electron from 'electron'
2 +
3 +export default {
4 + send (data, arg, cb) {
5 + $electron.ipcRenderer.send(data, arg, (event, arg) => cb(event, arg))
6 + },
7 + on (data, arg, cb) {
8 + $electron.ipcRenderer.on(data, arg, (event, arg) => cb(event, arg))
9 + },
10 + remove (data) {
11 + $electron.ipcRenderer.removeAllListeners(data)
12 + }
13 +}
...@@ -9,9 +9,7 @@ ...@@ -9,9 +9,7 @@
9 </div> 9 </div>
10 <div class="bullshit"> 10 <div class="bullshit">
11 <div class="bullshit__oops">OOPS!</div> 11 <div class="bullshit__oops">OOPS!</div>
12 - <div class="bullshit__info">版权所有<a class="link-type" href="https://wallstreetcn.com" target='_blank'>华尔街见闻</a></div> 12 + <div class="bullshit__info">您似乎进到了一个次元世界,请点击以下按钮返回主页或者发送错误报告</div>
13 - <div class="bullshit__headline">{{ message }}</div>
14 - <div class="bullshit__info">请检查您输入的网址是否正确,请点击以下按钮返回主页或者发送错误报告</div>
15 <a href="/" class="bullshit__return-home">返回首页</a> 13 <a href="/" class="bullshit__return-home">返回首页</a>
16 </div> 14 </div>
17 </div> 15 </div>
...@@ -28,11 +26,6 @@ export default { ...@@ -28,11 +26,6 @@ export default {
28 img_404, 26 img_404,
29 img_404_cloud 27 img_404_cloud
30 } 28 }
31 - },
32 - computed: {
33 - message() {
34 - return '特朗普说这个页面你不能进......'
35 - }
36 } 29 }
37 } 30 }
38 </script> 31 </script>
......
1 <template> 1 <template>
2 <div class="app-container"> 2 <div class="app-container">
3 <el-form ref="form" :model="form" label-width="120px"> 3 <el-form ref="form" :model="form" label-width="120px">
4 - <el-form-item label="Activity name"> 4 + <el-form-item label="活动名称">
5 <el-input v-model="form.name"></el-input> 5 <el-input v-model="form.name"></el-input>
6 </el-form-item> 6 </el-form-item>
7 - <el-form-item label="Activity zone"> 7 + <el-form-item label="活动地点">
8 - <el-select v-model="form.region" placeholder="please select your zone"> 8 + <el-select v-model="form.region" placeholder="请选择活动地点">
9 - <el-option label="Zone one" value="shanghai"></el-option> 9 + <el-option label="上海" value="上海"></el-option>
10 - <el-option label="Zone two" value="beijing"></el-option> 10 + <el-option label="北京" value="北京"></el-option>
11 </el-select> 11 </el-select>
12 </el-form-item> 12 </el-form-item>
13 - <el-form-item label="Activity time"> 13 + <el-form-item label="活动时间">
14 <el-col :span="11"> 14 <el-col :span="11">
15 - <el-date-picker type="date" placeholder="Pick a date" v-model="form.date1" style="width: 100%;"></el-date-picker> 15 + <el-date-picker type="date" placeholder="选择时间" v-model="form.date1" style="width: 100%;"></el-date-picker>
16 </el-col> 16 </el-col>
17 <el-col class="line" :span="2">-</el-col> 17 <el-col class="line" :span="2">-</el-col>
18 <el-col :span="11"> 18 <el-col :span="11">
19 - <el-time-picker type="fixed-time" placeholder="Pick a time" v-model="form.date2" style="width: 100%;"></el-time-picker> 19 + <el-time-picker
20 + type="fixed-time"
21 + placeholder="选择时间"
22 + v-model="form.date2"
23 + style="width: 100%;"
24 + ></el-time-picker>
20 </el-col> 25 </el-col>
21 </el-form-item> 26 </el-form-item>
22 - <el-form-item label="Instant delivery"> 27 + <el-form-item label="即时交付">
23 <el-switch v-model="form.delivery"></el-switch> 28 <el-switch v-model="form.delivery"></el-switch>
24 </el-form-item> 29 </el-form-item>
25 - <el-form-item label="Activity type"> 30 + <el-form-item label="额外选项">
26 <el-checkbox-group v-model="form.type"> 31 <el-checkbox-group v-model="form.type">
27 - <el-checkbox label="Online activities" name="type"></el-checkbox> 32 + <el-checkbox label="在线活动" name="type"></el-checkbox>
28 - <el-checkbox label="Promotion activities" name="type"></el-checkbox> 33 + <el-checkbox label="促销活动" name="type"></el-checkbox>
29 - <el-checkbox label="Offline activities" name="type"></el-checkbox> 34 + <el-checkbox label="线下活动" name="type"></el-checkbox>
30 - <el-checkbox label="Simple brand exposure" name="type"></el-checkbox> 35 + <el-checkbox label="发布会活动" name="type"></el-checkbox>
31 </el-checkbox-group> 36 </el-checkbox-group>
32 </el-form-item> 37 </el-form-item>
33 - <el-form-item label="Resources"> 38 + <el-form-item label="资源选项">
34 <el-radio-group v-model="form.resource"> 39 <el-radio-group v-model="form.resource">
35 - <el-radio label="Sponsor"></el-radio> 40 + <el-radio label="需要赞助商"></el-radio>
36 - <el-radio label="Venue"></el-radio> 41 + <el-radio label="不需要赞助商"></el-radio>
37 </el-radio-group> 42 </el-radio-group>
38 </el-form-item> 43 </el-form-item>
39 - <el-form-item label="Activity form"> 44 + <el-form-item label="活动详情">
40 - <el-input type="textarea" v-model="form.desc"></el-input> 45 + <tinymce v-model="form.desc" :height="300" />
41 </el-form-item> 46 </el-form-item>
42 <el-form-item> 47 <el-form-item>
43 <el-button type="primary" @click="onSubmit">Create</el-button> 48 <el-button type="primary" @click="onSubmit">Create</el-button>
...@@ -48,37 +53,39 @@ ...@@ -48,37 +53,39 @@
48 </template> 53 </template>
49 54
50 <script> 55 <script>
56 +import Tinymce from "@/components/Tinymce";
51 export default { 57 export default {
58 + components: { Tinymce },
52 data() { 59 data() {
53 return { 60 return {
54 form: { 61 form: {
55 - name: '', 62 + name: "",
56 - region: '', 63 + region: "",
57 - date1: '', 64 + date1: "",
58 - date2: '', 65 + date2: "",
59 delivery: false, 66 delivery: false,
60 type: [], 67 type: [],
61 - resource: '', 68 + resource: "",
62 - desc: '' 69 + desc: ""
63 - }
64 } 70 }
71 + };
65 }, 72 },
66 methods: { 73 methods: {
67 onSubmit() { 74 onSubmit() {
68 - this.$message('submit!') 75 + this.$message("submit!");
69 }, 76 },
70 onCancel() { 77 onCancel() {
71 this.$message({ 78 this.$message({
72 - message: 'cancel!', 79 + message: "cancel!",
73 - type: 'warning' 80 + type: "warning"
74 - }) 81 + });
75 } 82 }
76 } 83 }
77 -} 84 +};
78 </script> 85 </script>
79 86
80 <style scoped> 87 <style scoped>
81 -.line{ 88 +.line {
82 text-align: center; 89 text-align: center;
83 } 90 }
84 </style> 91 </style>
......
1 +<!doctype html>
2 +<html>
3 +
4 +<head>
5 + <meta charset="utf-8">
6 + <title></title>
7 +
8 + <style>
9 + html {
10 + height: 100%;
11 + min-height: 100%;
12 + overflow: hidden;
13 + }
14 +
15 + html body {
16 + background-size: 163px;
17 + font: 14px/21px Monaco, sans-serif;
18 + color: #999;
19 + -webkit-font-smoothing: antialiased;
20 + -webkit-text-size-adjust: 100%;
21 + -moz-text-size-adjust: 100%;
22 + -ms-text-size-adjust: 100%;
23 + text-size-adjust: 100%;
24 + height: 100%;
25 + min-height: 100%;
26 + margin: 0px;
27 + }
28 +
29 + html body h4 {
30 + margin: 0;
31 + }
32 +
33 + .scene {
34 + display: flex;
35 + justify-content: center;
36 + align-items: center;
37 + height: 100%;
38 + background: #222;
39 + position: relative;
40 + }
41 +
42 + .loader {
43 + position: relative;
44 + width: 15em;
45 + height: 15em;
46 + background: linear-gradient(-225deg, #ff3cac 0%, #562b7c 52%, #2b86c5 100%);
47 + border-radius: 50%;
48 + animation: spin 0.5s linear infinite;
49 + }
50 +
51 + span {
52 + position: absolute;
53 + width: 100%;
54 + height: 100%;
55 + border-radius: inherit;
56 + background: inherit;
57 + }
58 +
59 + span:nth-child(1) {
60 + filter: blur(5px);
61 + }
62 +
63 + span:nth-child(2) {
64 + filter: blur(10px);
65 + }
66 +
67 + span:nth-child(3) {
68 + filter: blur(25px);
69 + }
70 +
71 + span:nth-child(4) {
72 + filter: blur(50px);
73 + }
74 +
75 + span::after {
76 + position: absolute;
77 + content: "";
78 + top: 10px;
79 + left: 10px;
80 + right: 10px;
81 + bottom: 10px;
82 + background: #222;
83 + border-radius: inherit;
84 + }
85 +
86 + .text {
87 + position: absolute;
88 + opacity: 0;
89 + animation: breath 3s ease-in-out infinite;
90 + }
91 +
92 + @keyframes breath {
93 + from {
94 + opacity: 0.05;
95 + }
96 +
97 + 50% {
98 + opacity: 1;
99 + }
100 +
101 + to {
102 + opacity: 0.05;
103 + }
104 + }
105 +
106 + @keyframes spin {
107 + to {
108 + transform: rotate(1turn);
109 + }
110 + }
111 + </style>
112 +</head>
113 +
114 +<body>
115 + <div class="scene">
116 + <div class="loader">
117 + <span></span>
118 + <span></span>
119 + <span></span>
120 + <span></span>
121 + </div>
122 + <div class="text">正在准备资源中...</div>
123 + </div>
124 +
125 +</body>
126 +
127 +</html>
...\ No newline at end of file ...\ No newline at end of file