Repository: hilongjw/vue-ssr-hmr-template Branch: master Commit: 3657f696367a Files: 40 Total size: 376.7 KB Directory structure: gitextract_w38dtpah/ ├── .babelrc ├── .gitignore ├── Dockerfile ├── README.md ├── app.js ├── build/ │ ├── build-prod.js │ ├── getEntries.js │ ├── webpack.base.js │ ├── webpack.config.js │ ├── webpack.production.js │ └── webpack.server.js ├── client/ │ ├── index/ │ │ ├── App.vue │ │ ├── app.js │ │ ├── assets/ │ │ │ ├── _ionicicon.css │ │ │ └── base.css │ │ ├── client-entry.js │ │ ├── components/ │ │ │ ├── Header.vue │ │ │ └── compA.vue │ │ ├── router/ │ │ │ └── index.js │ │ ├── server-entry.js │ │ ├── store/ │ │ │ └── index.js │ │ └── views/ │ │ ├── Article.vue │ │ ├── Home.vue │ │ ├── Login.vue │ │ └── Tag.vue │ └── login/ │ ├── App.vue │ └── client-entry.js ├── index.html ├── package.json ├── public/ │ ├── client/ │ │ ├── index.js │ │ └── login.js │ ├── css/ │ │ ├── index.css │ │ └── login.css │ └── server/ │ └── index.js └── server/ ├── routers/ │ ├── router.js │ └── view.js ├── views/ │ ├── index.pug │ └── login.pug └── vue-ssr/ ├── bundle-loader.js └── renderer.js ================================================ FILE CONTENTS ================================================ ================================================ FILE: .babelrc ================================================ { "presets": [ ["es2015", { "modules": false }], "stage-2" ] } ================================================ FILE: .gitignore ================================================ .DS_Store node_modules/ dist/ npm-debug.log ================================================ FILE: Dockerfile ================================================ FROM node:6.2.1 MAINTAINER Awe RUN mkdir -p /usr/src/app WORKDIR /usr/src/app COPY package.json /usr/src/app/ RUN npm install COPY . /usr/src/app EXPOSE 8080 ENTRYPOINT node app.js ================================================ FILE: README.md ================================================ # vue-ssr-hmr-template > a interesting Vue project template - Vue2 - Webpack2 - HotModuleReplacement - Server Side Render - Express ## Build Setup ``` bash # install dependencies npm i npm install supervisor -g # serve with hot reload at localhost:8080 npm run dev # build for production with minification npm run build # run app npm start ``` ## Directory - build webpack config - client front end project - server back end project (router/view) - app.js app entry ## Auto Webpack Entry getEntries( webpackHotMiddlewareConfig, // String webpackHotMiddlewareConfig, exceptList, // Array except some dir in client isServer // Boolean ) ``` const getEntries = require('./getEntries') const webpackHotMiddlewareConfig = 'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000' const developmentConf = merge(baseConfig, { ... entry: getEntries(webpackHotMiddlewareConfig, [], false) ... }) ``` ## Server Side Render [vue-ssr](https://github.com/hilongjw/vue-ssr) [vue-server-renderer](https://github.com/vuejs/vue/tree/dev/packages/vue-server-renderer) ## License [The MIT License](http://opensource.org/licenses/MIT) ================================================ FILE: app.js ================================================ const express = require('express') const path = require('path') const http = require('http') global.NODE_ENV = process.env.NODE_ENV || 'production' const PORT = 8080 const isDev = NODE_ENV === 'development'; const app = express() const router = require('./server/routers/router') app.set('views', path.join(__dirname, 'server/views')) app.set('view engine', 'pug') app.use(router) if (isDev) { // local variables for all views app.locals.env = NODE_ENV; app.locals.reload = true; // static assets served by webpack-dev-middleware & webpack-hot-middleware for development const webpack = require('webpack') const webpackDevMiddleware = require('webpack-dev-middleware') const webpackHotMiddleware = require('webpack-hot-middleware') const webpackDevConfig = require('./build/webpack.config.js') const compiler = webpack(webpackDevConfig) app.use(webpackDevMiddleware(compiler, { publicPath: webpackDevConfig.output.publicPath, noInfo: true, stats: { colors: true } })) app.use(webpackHotMiddleware(compiler)) const server = http.createServer(app) app.use(express.static(path.join(__dirname, 'public'))) server.listen(PORT, function(){ console.log('App (dev) is now running on PORT '+ PORT +'!') }) } else { // static assets served by express.static() for production app.use(express.static(path.join(__dirname, 'public'))) app.listen(PORT, function () { console.log('App (production) is now running on PORT '+ PORT +'!') }) } ================================================ FILE: build/build-prod.js ================================================ // https://github.com/shelljs/shelljs require('shelljs/global') env.NODE_ENV = 'production' var path = require('path') var ora = require('ora') var webpack = require('webpack') var webpackConfig = require('./webpack.production') var webpackServer = require('./webpack.server') var spinner = ora('building for production...') spinner.start() var staticPath = __dirname + '/../public/' rm('-rf', staticPath + 'css/') rm('-rf', staticPath + 'js/') rm('-rf', staticPath + 'client/') webpack(webpackConfig, function (err, stats) { spinner.stop() if (err) throw err process.stdout.write(stats.toString({ colors: true, modules: false, children: false, chunks: false, chunkModules: false }) + '\n') }) webpack(webpackServer, function (err, stats) { spinner.stop() if (err) throw err process.stdout.write(stats.toString({ colors: true, modules: false, children: false, chunks: false, chunkModules: false }) + '\n') }) ================================================ FILE: build/getEntries.js ================================================ const path = require('path') const fs = require('fs') const projectDir = path.resolve(__dirname, '../client/') module.exports = function (webpackHotMiddlewareConfig, exceptList, server) { let except = ['.DS_Store'] except = except.concat(exceptList) let entries = {} let floders = fs.readdirSync(projectDir) floders.forEach(floder => { if (except.indexOf(floder) === -1) { if (server) { entries[floder] = ['./client/' + floder + '/server-entry.js'] } else { if (webpackHotMiddlewareConfig) { entries[floder] = [webpackHotMiddlewareConfig, './client/' + floder + '/client-entry.js'] } else { entries[floder] = ['./client/' + floder + '/client-entry.js'] } } } }) return entries } ================================================ FILE: build/webpack.base.js ================================================ const path = require('path') const webpack = require('webpack') const webpackHotMiddlewareConfig = 'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000' const getEntries = require('./getEntries') module.exports = { context: path.resolve(__dirname, '../'), output: { path: path.resolve(__dirname, '../public'), publicPath: '/', filename: 'client/[name].js', chunkFilename: 'client/[name].js' }, resolve: { extensions: ['.js', '.vue'] }, module: { rules: [{ test: /\.vue$/, loader: 'vue-loader' }, { test: /\.js$/, loader: 'babel-loader', exclude: /node_modules/ }, { test: /\.(png|jpg|gif|svg|ttf|woff|eot)$/, loader: 'file-loader', query: { name: 'file/[name].[ext]' } }] }, plugins: [ new webpack.optimize.OccurrenceOrderPlugin(), new webpack.HotModuleReplacementPlugin(), new webpack.NoErrorsPlugin() ] } ================================================ FILE: build/webpack.config.js ================================================ const path = require('path') const webpack = require('webpack') const merge = require('webpack-merge') const baseConfig = require('./webpack.base') const getEntries = require('./getEntries') const webpackHotMiddlewareConfig = 'webpack-hot-middleware/client?path=/__webpack_hmr&timeout=20000' const developmentConf = merge(baseConfig, { entry: getEntries(webpackHotMiddlewareConfig), plugins: [ new webpack.LoaderOptionsPlugin({ vue: { postcss: [ require('autoprefixer')({ browsers: ['last 3 versions'] }) ] } }) ] }) module.exports = developmentConf ================================================ FILE: build/webpack.production.js ================================================ const webpack = require('webpack'); const path = require('path') const merge = require('webpack-merge') const baseConfig = require('./webpack.base') const getEntries = require('./getEntries') const OptimizeCssAssetsPlugin = require('optimize-css-assets-webpack-plugin') const ExtractTextPlugin = require('extract-text-webpack-plugin') const productionConf = merge(baseConfig, { entry: getEntries(), stats: { children: false }, plugins: [ new webpack.DefinePlugin({ 'process.env': { NODE_ENV: '"production"' } }), new webpack.optimize.UglifyJsPlugin({ compress: { warnings: false } }), new OptimizeCssAssetsPlugin({ cssProcessor: require('cssnano'), cssProcessorOptions: { discardComments: {removeAll: true } }, canPrint: true }), new webpack.LoaderOptionsPlugin({ vue: { loaders: { postcss: [ require('autoprefixer')({ browsers: ['last 3 versions'] }) ], css: ExtractTextPlugin.extract({ loader: "css-loader", fallback: "vue-style-loader" }) } } }), new ExtractTextPlugin('css/[name].css') ] }) module.exports = productionConf ================================================ FILE: build/webpack.server.js ================================================ const webpack = require('webpack') const base = require('./webpack.base') const getEntries = require('./getEntries') module.exports = Object.assign({}, base, { target: 'node', devtool: false, entry: getEntries(null, ['login'], true), output: Object.assign({}, base.output, { filename: 'server/[name].js', libraryTarget: 'commonjs2' }), externals: Object.keys(require('../package.json').dependencies), plugins: [ new webpack.DefinePlugin({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || 'development'), 'process.env.VUE_ENV': '"server"' }) ] }) ================================================ FILE: client/index/App.vue ================================================ ================================================ FILE: client/index/app.js ================================================ import Vue from 'vue' import store from './store' import router from './router' import App from './App.vue' import { sync } from 'vuex-router-sync' sync(store, router) const app = new Vue({ store, router, ...App }) export { app, router, store } ================================================ FILE: client/index/assets/_ionicicon.css ================================================ @charset "UTF-8"; /*! Ionicons, v2.0.1 Created by Ben Sperry for the Ionic Framework, http://ionicons.com/ https://twitter.com/benjsperry https://twitter.com/ionicframework MIT License: https://github.com/driftyco/ionicons Android-style icons originally built by Google’s Material Design Icons: https://github.com/google/material-design-icons used under CC BY http://creativecommons.org/licenses/by/4.0/ Modified icons to fit ionicon’s grid from original. */ @font-face { font-family: "Ionicons"; src: url("fonts/ionicons.eot?v=2.0.1"); src: url("fonts/ionicons.eot?v=2.0.1#iefix") format("embedded-opentype"), url("fonts/ionicons.ttf?v=2.0.1") format("truetype"), url("fonts/ionicons.woff?v=2.0.1") format("woff"), url("fonts/ionicons.svg?v=2.0.1#Ionicons") format("svg"); font-weight: normal; font-style: normal; } .ion, .ionicons, .ion-alert:before, .ion-alert-circled:before, .ion-android-add:before, .ion-android-add-circle:before, .ion-android-alarm-clock:before, .ion-android-alert:before, .ion-android-apps:before, .ion-android-archive:before, .ion-android-arrow-back:before, .ion-android-arrow-down:before, .ion-android-arrow-dropdown:before, .ion-android-arrow-dropdown-circle:before, .ion-android-arrow-dropleft:before, .ion-android-arrow-dropleft-circle:before, .ion-android-arrow-dropright:before, .ion-android-arrow-dropright-circle:before, .ion-android-arrow-dropup:before, .ion-android-arrow-dropup-circle:before, .ion-android-arrow-forward:before, .ion-android-arrow-up:before, .ion-android-attach:before, .ion-android-bar:before, .ion-android-bicycle:before, .ion-android-boat:before, .ion-android-bookmark:before, .ion-android-bulb:before, .ion-android-bus:before, .ion-android-calendar:before, .ion-android-call:before, .ion-android-camera:before, .ion-android-cancel:before, .ion-android-car:before, .ion-android-cart:before, .ion-android-chat:before, .ion-android-checkbox:before, .ion-android-checkbox-blank:before, .ion-android-checkbox-outline:before, .ion-android-checkbox-outline-blank:before, .ion-android-checkmark-circle:before, .ion-android-clipboard:before, .ion-android-close:before, .ion-android-cloud:before, .ion-android-cloud-circle:before, .ion-android-cloud-done:before, .ion-android-cloud-outline:before, .ion-android-color-palette:before, .ion-android-compass:before, .ion-android-contact:before, .ion-android-contacts:before, .ion-android-contract:before, .ion-android-create:before, .ion-android-delete:before, .ion-android-desktop:before, .ion-android-document:before, .ion-android-done:before, .ion-android-done-all:before, .ion-android-download:before, .ion-android-drafts:before, .ion-android-exit:before, .ion-android-expand:before, .ion-android-favorite:before, .ion-android-favorite-outline:before, .ion-android-film:before, .ion-android-folder:before, .ion-android-folder-open:before, .ion-android-funnel:before, .ion-android-globe:before, .ion-android-hand:before, .ion-android-hangout:before, .ion-android-happy:before, .ion-android-home:before, .ion-android-image:before, .ion-android-laptop:before, .ion-android-list:before, .ion-android-locate:before, .ion-android-lock:before, .ion-android-mail:before, .ion-android-map:before, .ion-android-menu:before, .ion-android-microphone:before, .ion-android-microphone-off:before, .ion-android-more-horizontal:before, .ion-android-more-vertical:before, .ion-android-navigate:before, .ion-android-notifications:before, .ion-android-notifications-none:before, .ion-android-notifications-off:before, .ion-android-open:before, .ion-android-options:before, .ion-android-people:before, .ion-android-person:before, .ion-android-person-add:before, .ion-android-phone-landscape:before, .ion-android-phone-portrait:before, .ion-android-pin:before, .ion-android-plane:before, .ion-android-playstore:before, .ion-android-print:before, .ion-android-radio-button-off:before, .ion-android-radio-button-on:before, .ion-android-refresh:before, .ion-android-remove:before, .ion-android-remove-circle:before, .ion-android-restaurant:before, .ion-android-sad:before, .ion-android-search:before, .ion-android-send:before, .ion-android-settings:before, .ion-android-share:before, .ion-android-share-alt:before, .ion-android-star:before, .ion-android-star-half:before, .ion-android-star-outline:before, .ion-android-stopwatch:before, .ion-android-subway:before, .ion-android-sunny:before, .ion-android-sync:before, .ion-android-textsms:before, .ion-android-time:before, .ion-android-train:before, .ion-android-unlock:before, .ion-android-upload:before, .ion-android-volume-down:before, .ion-android-volume-mute:before, .ion-android-volume-off:before, .ion-android-volume-up:before, .ion-android-walk:before, .ion-android-warning:before, .ion-android-watch:before, .ion-android-wifi:before, .ion-aperture:before, .ion-archive:before, .ion-arrow-down-a:before, .ion-arrow-down-b:before, .ion-arrow-down-c:before, .ion-arrow-expand:before, .ion-arrow-graph-down-left:before, .ion-arrow-graph-down-right:before, .ion-arrow-graph-up-left:before, .ion-arrow-graph-up-right:before, .ion-arrow-left-a:before, .ion-arrow-left-b:before, .ion-arrow-left-c:before, .ion-arrow-move:before, .ion-arrow-resize:before, .ion-arrow-return-left:before, .ion-arrow-return-right:before, .ion-arrow-right-a:before, .ion-arrow-right-b:before, .ion-arrow-right-c:before, .ion-arrow-shrink:before, .ion-arrow-swap:before, .ion-arrow-up-a:before, .ion-arrow-up-b:before, .ion-arrow-up-c:before, .ion-asterisk:before, .ion-at:before, .ion-backspace:before, .ion-backspace-outline:before, .ion-bag:before, .ion-battery-charging:before, .ion-battery-empty:before, .ion-battery-full:before, .ion-battery-half:before, .ion-battery-low:before, .ion-beaker:before, .ion-beer:before, .ion-bluetooth:before, .ion-bonfire:before, .ion-bookmark:before, .ion-bowtie:before, .ion-briefcase:before, .ion-bug:before, .ion-calculator:before, .ion-calendar:before, .ion-camera:before, .ion-card:before, .ion-cash:before, .ion-chatbox:before, .ion-chatbox-working:before, .ion-chatboxes:before, .ion-chatbubble:before, .ion-chatbubble-working:before, .ion-chatbubbles:before, .ion-checkmark:before, .ion-checkmark-circled:before, .ion-checkmark-round:before, .ion-chevron-down:before, .ion-chevron-left:before, .ion-chevron-right:before, .ion-chevron-up:before, .ion-clipboard:before, .ion-clock:before, .ion-close:before, .ion-close-circled:before, .ion-close-round:before, .ion-closed-captioning:before, .ion-cloud:before, .ion-code:before, .ion-code-download:before, .ion-code-working:before, .ion-coffee:before, .ion-compass:before, .ion-compose:before, .ion-connection-bars:before, .ion-contrast:before, .ion-crop:before, .ion-cube:before, .ion-disc:before, .ion-document:before, .ion-document-text:before, .ion-drag:before, .ion-earth:before, .ion-easel:before, .ion-edit:before, .ion-egg:before, .ion-eject:before, .ion-email:before, .ion-email-unread:before, .ion-erlenmeyer-flask:before, .ion-erlenmeyer-flask-bubbles:before, .ion-eye:before, .ion-eye-disabled:before, .ion-female:before, .ion-filing:before, .ion-film-marker:before, .ion-fireball:before, .ion-flag:before, .ion-flame:before, .ion-flash:before, .ion-flash-off:before, .ion-folder:before, .ion-fork:before, .ion-fork-repo:before, .ion-forward:before, .ion-funnel:before, .ion-gear-a:before, .ion-gear-b:before, .ion-grid:before, .ion-hammer:before, .ion-happy:before, .ion-happy-outline:before, .ion-headphone:before, .ion-heart:before, .ion-heart-broken:before, .ion-help:before, .ion-help-buoy:before, .ion-help-circled:before, .ion-home:before, .ion-icecream:before, .ion-image:before, .ion-images:before, .ion-information:before, .ion-information-circled:before, .ion-ionic:before, .ion-ios-alarm:before, .ion-ios-alarm-outline:before, .ion-ios-albums:before, .ion-ios-albums-outline:before, .ion-ios-americanfootball:before, .ion-ios-americanfootball-outline:before, .ion-ios-analytics:before, .ion-ios-analytics-outline:before, .ion-ios-arrow-back:before, .ion-ios-arrow-down:before, .ion-ios-arrow-forward:before, .ion-ios-arrow-left:before, .ion-ios-arrow-right:before, .ion-ios-arrow-thin-down:before, .ion-ios-arrow-thin-left:before, .ion-ios-arrow-thin-right:before, .ion-ios-arrow-thin-up:before, .ion-ios-arrow-up:before, .ion-ios-at:before, .ion-ios-at-outline:before, .ion-ios-barcode:before, .ion-ios-barcode-outline:before, .ion-ios-baseball:before, .ion-ios-baseball-outline:before, .ion-ios-basketball:before, .ion-ios-basketball-outline:before, .ion-ios-bell:before, .ion-ios-bell-outline:before, .ion-ios-body:before, .ion-ios-body-outline:before, .ion-ios-bolt:before, .ion-ios-bolt-outline:before, .ion-ios-book:before, .ion-ios-book-outline:before, .ion-ios-bookmarks:before, .ion-ios-bookmarks-outline:before, .ion-ios-box:before, .ion-ios-box-outline:before, .ion-ios-briefcase:before, .ion-ios-briefcase-outline:before, .ion-ios-browsers:before, .ion-ios-browsers-outline:before, .ion-ios-calculator:before, .ion-ios-calculator-outline:before, .ion-ios-calendar:before, .ion-ios-calendar-outline:before, .ion-ios-camera:before, .ion-ios-camera-outline:before, .ion-ios-cart:before, .ion-ios-cart-outline:before, .ion-ios-chatboxes:before, .ion-ios-chatboxes-outline:before, .ion-ios-chatbubble:before, .ion-ios-chatbubble-outline:before, .ion-ios-checkmark:before, .ion-ios-checkmark-empty:before, .ion-ios-checkmark-outline:before, .ion-ios-circle-filled:before, .ion-ios-circle-outline:before, .ion-ios-clock:before, .ion-ios-clock-outline:before, .ion-ios-close:before, .ion-ios-close-empty:before, .ion-ios-close-outline:before, .ion-ios-cloud:before, .ion-ios-cloud-download:before, .ion-ios-cloud-download-outline:before, .ion-ios-cloud-outline:before, .ion-ios-cloud-upload:before, .ion-ios-cloud-upload-outline:before, .ion-ios-cloudy:before, .ion-ios-cloudy-night:before, .ion-ios-cloudy-night-outline:before, .ion-ios-cloudy-outline:before, .ion-ios-cog:before, .ion-ios-cog-outline:before, .ion-ios-color-filter:before, .ion-ios-color-filter-outline:before, .ion-ios-color-wand:before, .ion-ios-color-wand-outline:before, .ion-ios-compose:before, .ion-ios-compose-outline:before, .ion-ios-contact:before, .ion-ios-contact-outline:before, .ion-ios-copy:before, .ion-ios-copy-outline:before, .ion-ios-crop:before, .ion-ios-crop-strong:before, .ion-ios-download:before, .ion-ios-download-outline:before, .ion-ios-drag:before, .ion-ios-email:before, .ion-ios-email-outline:before, .ion-ios-eye:before, .ion-ios-eye-outline:before, .ion-ios-fastforward:before, .ion-ios-fastforward-outline:before, .ion-ios-filing:before, .ion-ios-filing-outline:before, .ion-ios-film:before, .ion-ios-film-outline:before, .ion-ios-flag:before, .ion-ios-flag-outline:before, .ion-ios-flame:before, .ion-ios-flame-outline:before, .ion-ios-flask:before, .ion-ios-flask-outline:before, .ion-ios-flower:before, .ion-ios-flower-outline:before, .ion-ios-folder:before, .ion-ios-folder-outline:before, .ion-ios-football:before, .ion-ios-football-outline:before, .ion-ios-game-controller-a:before, .ion-ios-game-controller-a-outline:before, .ion-ios-game-controller-b:before, .ion-ios-game-controller-b-outline:before, .ion-ios-gear:before, .ion-ios-gear-outline:before, .ion-ios-glasses:before, .ion-ios-glasses-outline:before, .ion-ios-grid-view:before, .ion-ios-grid-view-outline:before, .ion-ios-heart:before, .ion-ios-heart-outline:before, .ion-ios-help:before, .ion-ios-help-empty:before, .ion-ios-help-outline:before, .ion-ios-home:before, .ion-ios-home-outline:before, .ion-ios-infinite:before, .ion-ios-infinite-outline:before, .ion-ios-information:before, .ion-ios-information-empty:before, .ion-ios-information-outline:before, .ion-ios-ionic-outline:before, .ion-ios-keypad:before, .ion-ios-keypad-outline:before, .ion-ios-lightbulb:before, .ion-ios-lightbulb-outline:before, .ion-ios-list:before, .ion-ios-list-outline:before, .ion-ios-location:before, .ion-ios-location-outline:before, .ion-ios-locked:before, .ion-ios-locked-outline:before, .ion-ios-loop:before, .ion-ios-loop-strong:before, .ion-ios-medical:before, .ion-ios-medical-outline:before, .ion-ios-medkit:before, .ion-ios-medkit-outline:before, .ion-ios-mic:before, .ion-ios-mic-off:before, .ion-ios-mic-outline:before, .ion-ios-minus:before, .ion-ios-minus-empty:before, .ion-ios-minus-outline:before, .ion-ios-monitor:before, .ion-ios-monitor-outline:before, .ion-ios-moon:before, .ion-ios-moon-outline:before, .ion-ios-more:before, .ion-ios-more-outline:before, .ion-ios-musical-note:before, .ion-ios-musical-notes:before, .ion-ios-navigate:before, .ion-ios-navigate-outline:before, .ion-ios-nutrition:before, .ion-ios-nutrition-outline:before, .ion-ios-paper:before, .ion-ios-paper-outline:before, .ion-ios-paperplane:before, .ion-ios-paperplane-outline:before, .ion-ios-partlysunny:before, .ion-ios-partlysunny-outline:before, .ion-ios-pause:before, .ion-ios-pause-outline:before, .ion-ios-paw:before, .ion-ios-paw-outline:before, .ion-ios-people:before, .ion-ios-people-outline:before, .ion-ios-person:before, .ion-ios-person-outline:before, .ion-ios-personadd:before, .ion-ios-personadd-outline:before, .ion-ios-photos:before, .ion-ios-photos-outline:before, .ion-ios-pie:before, .ion-ios-pie-outline:before, .ion-ios-pint:before, .ion-ios-pint-outline:before, .ion-ios-play:before, .ion-ios-play-outline:before, .ion-ios-plus:before, .ion-ios-plus-empty:before, .ion-ios-plus-outline:before, .ion-ios-pricetag:before, .ion-ios-pricetag-outline:before, .ion-ios-pricetags:before, .ion-ios-pricetags-outline:before, .ion-ios-printer:before, .ion-ios-printer-outline:before, .ion-ios-pulse:before, .ion-ios-pulse-strong:before, .ion-ios-rainy:before, .ion-ios-rainy-outline:before, .ion-ios-recording:before, .ion-ios-recording-outline:before, .ion-ios-redo:before, .ion-ios-redo-outline:before, .ion-ios-refresh:before, .ion-ios-refresh-empty:before, .ion-ios-refresh-outline:before, .ion-ios-reload:before, .ion-ios-reverse-camera:before, .ion-ios-reverse-camera-outline:before, .ion-ios-rewind:before, .ion-ios-rewind-outline:before, .ion-ios-rose:before, .ion-ios-rose-outline:before, .ion-ios-search:before, .ion-ios-search-strong:before, .ion-ios-settings:before, .ion-ios-settings-strong:before, .ion-ios-shuffle:before, .ion-ios-shuffle-strong:before, .ion-ios-skipbackward:before, .ion-ios-skipbackward-outline:before, .ion-ios-skipforward:before, .ion-ios-skipforward-outline:before, .ion-ios-snowy:before, .ion-ios-speedometer:before, .ion-ios-speedometer-outline:before, .ion-ios-star:before, .ion-ios-star-half:before, .ion-ios-star-outline:before, .ion-ios-stopwatch:before, .ion-ios-stopwatch-outline:before, .ion-ios-sunny:before, .ion-ios-sunny-outline:before, .ion-ios-telephone:before, .ion-ios-telephone-outline:before, .ion-ios-tennisball:before, .ion-ios-tennisball-outline:before, .ion-ios-thunderstorm:before, .ion-ios-thunderstorm-outline:before, .ion-ios-time:before, .ion-ios-time-outline:before, .ion-ios-timer:before, .ion-ios-timer-outline:before, .ion-ios-toggle:before, .ion-ios-toggle-outline:before, .ion-ios-trash:before, .ion-ios-trash-outline:before, .ion-ios-undo:before, .ion-ios-undo-outline:before, .ion-ios-unlocked:before, .ion-ios-unlocked-outline:before, .ion-ios-upload:before, .ion-ios-upload-outline:before, .ion-ios-videocam:before, .ion-ios-videocam-outline:before, .ion-ios-volume-high:before, .ion-ios-volume-low:before, .ion-ios-wineglass:before, .ion-ios-wineglass-outline:before, .ion-ios-world:before, .ion-ios-world-outline:before, .ion-ipad:before, .ion-iphone:before, .ion-ipod:before, .ion-jet:before, .ion-key:before, .ion-knife:before, .ion-laptop:before, .ion-leaf:before, .ion-levels:before, .ion-lightbulb:before, .ion-link:before, .ion-load-a:before, .ion-load-b:before, .ion-load-c:before, .ion-load-d:before, .ion-location:before, .ion-lock-combination:before, .ion-locked:before, .ion-log-in:before, .ion-log-out:before, .ion-loop:before, .ion-magnet:before, .ion-male:before, .ion-man:before, .ion-map:before, .ion-medkit:before, .ion-merge:before, .ion-mic-a:before, .ion-mic-b:before, .ion-mic-c:before, .ion-minus:before, .ion-minus-circled:before, .ion-minus-round:before, .ion-model-s:before, .ion-monitor:before, .ion-more:before, .ion-mouse:before, .ion-music-note:before, .ion-navicon:before, .ion-navicon-round:before, .ion-navigate:before, .ion-network:before, .ion-no-smoking:before, .ion-nuclear:before, .ion-outlet:before, .ion-paintbrush:before, .ion-paintbucket:before, .ion-paper-airplane:before, .ion-paperclip:before, .ion-pause:before, .ion-person:before, .ion-person-add:before, .ion-person-stalker:before, .ion-pie-graph:before, .ion-pin:before, .ion-pinpoint:before, .ion-pizza:before, .ion-plane:before, .ion-planet:before, .ion-play:before, .ion-playstation:before, .ion-plus:before, .ion-plus-circled:before, .ion-plus-round:before, .ion-podium:before, .ion-pound:before, .ion-power:before, .ion-pricetag:before, .ion-pricetags:before, .ion-printer:before, .ion-pull-request:before, .ion-qr-scanner:before, .ion-quote:before, .ion-radio-waves:before, .ion-record:before, .ion-refresh:before, .ion-reply:before, .ion-reply-all:before, .ion-ribbon-a:before, .ion-ribbon-b:before, .ion-sad:before, .ion-sad-outline:before, .ion-scissors:before, .ion-search:before, .ion-settings:before, .ion-share:before, .ion-shuffle:before, .ion-skip-backward:before, .ion-skip-forward:before, .ion-social-android:before, .ion-social-android-outline:before, .ion-social-angular:before, .ion-social-angular-outline:before, .ion-social-apple:before, .ion-social-apple-outline:before, .ion-social-bitcoin:before, .ion-social-bitcoin-outline:before, .ion-social-buffer:before, .ion-social-buffer-outline:before, .ion-social-chrome:before, .ion-social-chrome-outline:before, .ion-social-codepen:before, .ion-social-codepen-outline:before, .ion-social-css3:before, .ion-social-css3-outline:before, .ion-social-designernews:before, .ion-social-designernews-outline:before, .ion-social-dribbble:before, .ion-social-dribbble-outline:before, .ion-social-dropbox:before, .ion-social-dropbox-outline:before, .ion-social-euro:before, .ion-social-euro-outline:before, .ion-social-facebook:before, .ion-social-facebook-outline:before, .ion-social-foursquare:before, .ion-social-foursquare-outline:before, .ion-social-freebsd-devil:before, .ion-social-github:before, .ion-social-github-outline:before, .ion-social-google:before, .ion-social-google-outline:before, .ion-social-googleplus:before, .ion-social-googleplus-outline:before, .ion-social-hackernews:before, .ion-social-hackernews-outline:before, .ion-social-html5:before, .ion-social-html5-outline:before, .ion-social-instagram:before, .ion-social-instagram-outline:before, .ion-social-javascript:before, .ion-social-javascript-outline:before, .ion-social-linkedin:before, .ion-social-linkedin-outline:before, .ion-social-markdown:before, .ion-social-nodejs:before, .ion-social-octocat:before, .ion-social-pinterest:before, .ion-social-pinterest-outline:before, .ion-social-python:before, .ion-social-reddit:before, .ion-social-reddit-outline:before, .ion-social-rss:before, .ion-social-rss-outline:before, .ion-social-sass:before, .ion-social-skype:before, .ion-social-skype-outline:before, .ion-social-snapchat:before, .ion-social-snapchat-outline:before, .ion-social-tumblr:before, .ion-social-tumblr-outline:before, .ion-social-tux:before, .ion-social-twitch:before, .ion-social-twitch-outline:before, .ion-social-twitter:before, .ion-social-twitter-outline:before, .ion-social-usd:before, .ion-social-usd-outline:before, .ion-social-vimeo:before, .ion-social-vimeo-outline:before, .ion-social-whatsapp:before, .ion-social-whatsapp-outline:before, .ion-social-windows:before, .ion-social-windows-outline:before, .ion-social-wordpress:before, .ion-social-wordpress-outline:before, .ion-social-yahoo:before, .ion-social-yahoo-outline:before, .ion-social-yen:before, .ion-social-yen-outline:before, .ion-social-youtube:before, .ion-social-youtube-outline:before, .ion-soup-can:before, .ion-soup-can-outline:before, .ion-speakerphone:before, .ion-speedometer:before, .ion-spoon:before, .ion-star:before, .ion-stats-bars:before, .ion-steam:before, .ion-stop:before, .ion-thermometer:before, .ion-thumbsdown:before, .ion-thumbsup:before, .ion-toggle:before, .ion-toggle-filled:before, .ion-transgender:before, .ion-trash-a:before, .ion-trash-b:before, .ion-trophy:before, .ion-tshirt:before, .ion-tshirt-outline:before, .ion-umbrella:before, .ion-university:before, .ion-unlocked:before, .ion-upload:before, .ion-usb:before, .ion-videocamera:before, .ion-volume-high:before, .ion-volume-low:before, .ion-volume-medium:before, .ion-volume-mute:before, .ion-wand:before, .ion-waterdrop:before, .ion-wifi:before, .ion-wineglass:before, .ion-woman:before, .ion-wrench:before, .ion-xbox:before { display: inline-block; font-family: "Ionicons"; speak: none; font-style: normal; font-weight: normal; font-variant: normal; text-transform: none; text-rendering: auto; line-height: 1; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale } .ion-alert:before { content: "\f101" } .ion-alert-circled:before { content: "\f100" } .ion-android-add:before { content: "\f2c7" } .ion-android-add-circle:before { content: "\f359" } .ion-android-alarm-clock:before { content: "\f35a" } .ion-android-alert:before { content: "\f35b" } .ion-android-apps:before { content: "\f35c" } .ion-android-archive:before { content: "\f2c9" } .ion-android-arrow-back:before { content: "\f2ca" } .ion-android-arrow-down:before { content: "\f35d" } .ion-android-arrow-dropdown:before { content: "\f35f" } .ion-android-arrow-dropdown-circle:before { content: "\f35e" } .ion-android-arrow-dropleft:before { content: "\f361" } .ion-android-arrow-dropleft-circle:before { content: "\f360" } .ion-android-arrow-dropright:before { content: "\f363" } .ion-android-arrow-dropright-circle:before { content: "\f362" } .ion-android-arrow-dropup:before { content: "\f365" } .ion-android-arrow-dropup-circle:before { content: "\f364" } .ion-android-arrow-forward:before { content: "\f30f" } .ion-android-arrow-up:before { content: "\f366" } .ion-android-attach:before { content: "\f367" } .ion-android-bar:before { content: "\f368" } .ion-android-bicycle:before { content: "\f369" } .ion-android-boat:before { content: "\f36a" } .ion-android-bookmark:before { content: "\f36b" } .ion-android-bulb:before { content: "\f36c" } .ion-android-bus:before { content: "\f36d" } .ion-android-calendar:before { content: "\f2d1" } .ion-android-call:before { content: "\f2d2" } .ion-android-camera:before { content: "\f2d3" } .ion-android-cancel:before { content: "\f36e" } .ion-android-car:before { content: "\f36f" } .ion-android-cart:before { content: "\f370" } .ion-android-chat:before { content: "\f2d4" } .ion-android-checkbox:before { content: "\f374" } .ion-android-checkbox-blank:before { content: "\f371" } .ion-android-checkbox-outline:before { content: "\f373" } .ion-android-checkbox-outline-blank:before { content: "\f372" } .ion-android-checkmark-circle:before { content: "\f375" } .ion-android-clipboard:before { content: "\f376" } .ion-android-close:before { content: "\f2d7" } .ion-android-cloud:before { content: "\f37a" } .ion-android-cloud-circle:before { content: "\f377" } .ion-android-cloud-done:before { content: "\f378" } .ion-android-cloud-outline:before { content: "\f379" } .ion-android-color-palette:before { content: "\f37b" } .ion-android-compass:before { content: "\f37c" } .ion-android-contact:before { content: "\f2d8" } .ion-android-contacts:before { content: "\f2d9" } .ion-android-contract:before { content: "\f37d" } .ion-android-create:before { content: "\f37e" } .ion-android-delete:before { content: "\f37f" } .ion-android-desktop:before { content: "\f380" } .ion-android-document:before { content: "\f381" } .ion-android-done:before { content: "\f383" } .ion-android-done-all:before { content: "\f382" } .ion-android-download:before { content: "\f2dd" } .ion-android-drafts:before { content: "\f384" } .ion-android-exit:before { content: "\f385" } .ion-android-expand:before { content: "\f386" } .ion-android-favorite:before { content: "\f388" } .ion-android-favorite-outline:before { content: "\f387" } .ion-android-film:before { content: "\f389" } .ion-android-folder:before { content: "\f2e0" } .ion-android-folder-open:before { content: "\f38a" } .ion-android-funnel:before { content: "\f38b" } .ion-android-globe:before { content: "\f38c" } .ion-android-hand:before { content: "\f2e3" } .ion-android-hangout:before { content: "\f38d" } .ion-android-happy:before { content: "\f38e" } .ion-android-home:before { content: "\f38f" } .ion-android-image:before { content: "\f2e4" } .ion-android-laptop:before { content: "\f390" } .ion-android-list:before { content: "\f391" } .ion-android-locate:before { content: "\f2e9" } .ion-android-lock:before { content: "\f392" } .ion-android-mail:before { content: "\f2eb" } .ion-android-map:before { content: "\f393" } .ion-android-menu:before { content: "\f394" } .ion-android-microphone:before { content: "\f2ec" } .ion-android-microphone-off:before { content: "\f395" } .ion-android-more-horizontal:before { content: "\f396" } .ion-android-more-vertical:before { content: "\f397" } .ion-android-navigate:before { content: "\f398" } .ion-android-notifications:before { content: "\f39b" } .ion-android-notifications-none:before { content: "\f399" } .ion-android-notifications-off:before { content: "\f39a" } .ion-android-open:before { content: "\f39c" } .ion-android-options:before { content: "\f39d" } .ion-android-people:before { content: "\f39e" } .ion-android-person:before { content: "\f3a0" } .ion-android-person-add:before { content: "\f39f" } .ion-android-phone-landscape:before { content: "\f3a1" } .ion-android-phone-portrait:before { content: "\f3a2" } .ion-android-pin:before { content: "\f3a3" } .ion-android-plane:before { content: "\f3a4" } .ion-android-playstore:before { content: "\f2f0" } .ion-android-print:before { content: "\f3a5" } .ion-android-radio-button-off:before { content: "\f3a6" } .ion-android-radio-button-on:before { content: "\f3a7" } .ion-android-refresh:before { content: "\f3a8" } .ion-android-remove:before { content: "\f2f4" } .ion-android-remove-circle:before { content: "\f3a9" } .ion-android-restaurant:before { content: "\f3aa" } .ion-android-sad:before { content: "\f3ab" } .ion-android-search:before { content: "\f2f5" } .ion-android-send:before { content: "\f2f6" } .ion-android-settings:before { content: "\f2f7" } .ion-android-share:before { content: "\f2f8" } .ion-android-share-alt:before { content: "\f3ac" } .ion-android-star:before { content: "\f2fc" } .ion-android-star-half:before { content: "\f3ad" } .ion-android-star-outline:before { content: "\f3ae" } .ion-android-stopwatch:before { content: "\f2fd" } .ion-android-subway:before { content: "\f3af" } .ion-android-sunny:before { content: "\f3b0" } .ion-android-sync:before { content: "\f3b1" } .ion-android-textsms:before { content: "\f3b2" } .ion-android-time:before { content: "\f3b3" } .ion-android-train:before { content: "\f3b4" } .ion-android-unlock:before { content: "\f3b5" } .ion-android-upload:before { content: "\f3b6" } .ion-android-volume-down:before { content: "\f3b7" } .ion-android-volume-mute:before { content: "\f3b8" } .ion-android-volume-off:before { content: "\f3b9" } .ion-android-volume-up:before { content: "\f3ba" } .ion-android-walk:before { content: "\f3bb" } .ion-android-warning:before { content: "\f3bc" } .ion-android-watch:before { content: "\f3bd" } .ion-android-wifi:before { content: "\f305" } .ion-aperture:before { content: "\f313" } .ion-archive:before { content: "\f102" } .ion-arrow-down-a:before { content: "\f103" } .ion-arrow-down-b:before { content: "\f104" } .ion-arrow-down-c:before { content: "\f105" } .ion-arrow-expand:before { content: "\f25e" } .ion-arrow-graph-down-left:before { content: "\f25f" } .ion-arrow-graph-down-right:before { content: "\f260" } .ion-arrow-graph-up-left:before { content: "\f261" } .ion-arrow-graph-up-right:before { content: "\f262" } .ion-arrow-left-a:before { content: "\f106" } .ion-arrow-left-b:before { content: "\f107" } .ion-arrow-left-c:before { content: "\f108" } .ion-arrow-move:before { content: "\f263" } .ion-arrow-resize:before { content: "\f264" } .ion-arrow-return-left:before { content: "\f265" } .ion-arrow-return-right:before { content: "\f266" } .ion-arrow-right-a:before { content: "\f109" } .ion-arrow-right-b:before { content: "\f10a" } .ion-arrow-right-c:before { content: "\f10b" } .ion-arrow-shrink:before { content: "\f267" } .ion-arrow-swap:before { content: "\f268" } .ion-arrow-up-a:before { content: "\f10c" } .ion-arrow-up-b:before { content: "\f10d" } .ion-arrow-up-c:before { content: "\f10e" } .ion-asterisk:before { content: "\f314" } .ion-at:before { content: "\f10f" } .ion-backspace:before { content: "\f3bf" } .ion-backspace-outline:before { content: "\f3be" } .ion-bag:before { content: "\f110" } .ion-battery-charging:before { content: "\f111" } .ion-battery-empty:before { content: "\f112" } .ion-battery-full:before { content: "\f113" } .ion-battery-half:before { content: "\f114" } .ion-battery-low:before { content: "\f115" } .ion-beaker:before { content: "\f269" } .ion-beer:before { content: "\f26a" } .ion-bluetooth:before { content: "\f116" } .ion-bonfire:before { content: "\f315" } .ion-bookmark:before { content: "\f26b" } .ion-bowtie:before { content: "\f3c0" } .ion-briefcase:before { content: "\f26c" } .ion-bug:before { content: "\f2be" } .ion-calculator:before { content: "\f26d" } .ion-calendar:before { content: "\f117" } .ion-camera:before { content: "\f118" } .ion-card:before { content: "\f119" } .ion-cash:before { content: "\f316" } .ion-chatbox:before { content: "\f11b" } .ion-chatbox-working:before { content: "\f11a" } .ion-chatboxes:before { content: "\f11c" } .ion-chatbubble:before { content: "\f11e" } .ion-chatbubble-working:before { content: "\f11d" } .ion-chatbubbles:before { content: "\f11f" } .ion-checkmark:before { content: "\f122" } .ion-checkmark-circled:before { content: "\f120" } .ion-checkmark-round:before { content: "\f121" } .ion-chevron-down:before { content: "\f123" } .ion-chevron-left:before { content: "\f124" } .ion-chevron-right:before { content: "\f125" } .ion-chevron-up:before { content: "\f126" } .ion-clipboard:before { content: "\f127" } .ion-clock:before { content: "\f26e" } .ion-close:before { content: "\f12a" } .ion-close-circled:before { content: "\f128" } .ion-close-round:before { content: "\f129" } .ion-closed-captioning:before { content: "\f317" } .ion-cloud:before { content: "\f12b" } .ion-code:before { content: "\f271" } .ion-code-download:before { content: "\f26f" } .ion-code-working:before { content: "\f270" } .ion-coffee:before { content: "\f272" } .ion-compass:before { content: "\f273" } .ion-compose:before { content: "\f12c" } .ion-connection-bars:before { content: "\f274" } .ion-contrast:before { content: "\f275" } .ion-crop:before { content: "\f3c1" } .ion-cube:before { content: "\f318" } .ion-disc:before { content: "\f12d" } .ion-document:before { content: "\f12f" } .ion-document-text:before { content: "\f12e" } .ion-drag:before { content: "\f130" } .ion-earth:before { content: "\f276" } .ion-easel:before { content: "\f3c2" } .ion-edit:before { content: "\f2bf" } .ion-egg:before { content: "\f277" } .ion-eject:before { content: "\f131" } .ion-email:before { content: "\f132" } .ion-email-unread:before { content: "\f3c3" } .ion-erlenmeyer-flask:before { content: "\f3c5" } .ion-erlenmeyer-flask-bubbles:before { content: "\f3c4" } .ion-eye:before { content: "\f133" } .ion-eye-disabled:before { content: "\f306" } .ion-female:before { content: "\f278" } .ion-filing:before { content: "\f134" } .ion-film-marker:before { content: "\f135" } .ion-fireball:before { content: "\f319" } .ion-flag:before { content: "\f279" } .ion-flame:before { content: "\f31a" } .ion-flash:before { content: "\f137" } .ion-flash-off:before { content: "\f136" } .ion-folder:before { content: "\f139" } .ion-fork:before { content: "\f27a" } .ion-fork-repo:before { content: "\f2c0" } .ion-forward:before { content: "\f13a" } .ion-funnel:before { content: "\f31b" } .ion-gear-a:before { content: "\f13d" } .ion-gear-b:before { content: "\f13e" } .ion-grid:before { content: "\f13f" } .ion-hammer:before { content: "\f27b" } .ion-happy:before { content: "\f31c" } .ion-happy-outline:before { content: "\f3c6" } .ion-headphone:before { content: "\f140" } .ion-heart:before { content: "\f141" } .ion-heart-broken:before { content: "\f31d" } .ion-help:before { content: "\f143" } .ion-help-buoy:before { content: "\f27c" } .ion-help-circled:before { content: "\f142" } .ion-home:before { content: "\f144" } .ion-icecream:before { content: "\f27d" } .ion-image:before { content: "\f147" } .ion-images:before { content: "\f148" } .ion-information:before { content: "\f14a" } .ion-information-circled:before { content: "\f149" } .ion-ionic:before { content: "\f14b" } .ion-ios-alarm:before { content: "\f3c8" } .ion-ios-alarm-outline:before { content: "\f3c7" } .ion-ios-albums:before { content: "\f3ca" } .ion-ios-albums-outline:before { content: "\f3c9" } .ion-ios-americanfootball:before { content: "\f3cc" } .ion-ios-americanfootball-outline:before { content: "\f3cb" } .ion-ios-analytics:before { content: "\f3ce" } .ion-ios-analytics-outline:before { content: "\f3cd" } .ion-ios-arrow-back:before { content: "\f3cf" } .ion-ios-arrow-down:before { content: "\f3d0" } .ion-ios-arrow-forward:before { content: "\f3d1" } .ion-ios-arrow-left:before { content: "\f3d2" } .ion-ios-arrow-right:before { content: "\f3d3" } .ion-ios-arrow-thin-down:before { content: "\f3d4" } .ion-ios-arrow-thin-left:before { content: "\f3d5" } .ion-ios-arrow-thin-right:before { content: "\f3d6" } .ion-ios-arrow-thin-up:before { content: "\f3d7" } .ion-ios-arrow-up:before { content: "\f3d8" } .ion-ios-at:before { content: "\f3da" } .ion-ios-at-outline:before { content: "\f3d9" } .ion-ios-barcode:before { content: "\f3dc" } .ion-ios-barcode-outline:before { content: "\f3db" } .ion-ios-baseball:before { content: "\f3de" } .ion-ios-baseball-outline:before { content: "\f3dd" } .ion-ios-basketball:before { content: "\f3e0" } .ion-ios-basketball-outline:before { content: "\f3df" } .ion-ios-bell:before { content: "\f3e2" } .ion-ios-bell-outline:before { content: "\f3e1" } .ion-ios-body:before { content: "\f3e4" } .ion-ios-body-outline:before { content: "\f3e3" } .ion-ios-bolt:before { content: "\f3e6" } .ion-ios-bolt-outline:before { content: "\f3e5" } .ion-ios-book:before { content: "\f3e8" } .ion-ios-book-outline:before { content: "\f3e7" } .ion-ios-bookmarks:before { content: "\f3ea" } .ion-ios-bookmarks-outline:before { content: "\f3e9" } .ion-ios-box:before { content: "\f3ec" } .ion-ios-box-outline:before { content: "\f3eb" } .ion-ios-briefcase:before { content: "\f3ee" } .ion-ios-briefcase-outline:before { content: "\f3ed" } .ion-ios-browsers:before { content: "\f3f0" } .ion-ios-browsers-outline:before { content: "\f3ef" } .ion-ios-calculator:before { content: "\f3f2" } .ion-ios-calculator-outline:before { content: "\f3f1" } .ion-ios-calendar:before { content: "\f3f4" } .ion-ios-calendar-outline:before { content: "\f3f3" } .ion-ios-camera:before { content: "\f3f6" } .ion-ios-camera-outline:before { content: "\f3f5" } .ion-ios-cart:before { content: "\f3f8" } .ion-ios-cart-outline:before { content: "\f3f7" } .ion-ios-chatboxes:before { content: "\f3fa" } .ion-ios-chatboxes-outline:before { content: "\f3f9" } .ion-ios-chatbubble:before { content: "\f3fc" } .ion-ios-chatbubble-outline:before { content: "\f3fb" } .ion-ios-checkmark:before { content: "\f3ff" } .ion-ios-checkmark-empty:before { content: "\f3fd" } .ion-ios-checkmark-outline:before { content: "\f3fe" } .ion-ios-circle-filled:before { content: "\f400" } .ion-ios-circle-outline:before { content: "\f401" } .ion-ios-clock:before { content: "\f403" } .ion-ios-clock-outline:before { content: "\f402" } .ion-ios-close:before { content: "\f406" } .ion-ios-close-empty:before { content: "\f404" } .ion-ios-close-outline:before { content: "\f405" } .ion-ios-cloud:before { content: "\f40c" } .ion-ios-cloud-download:before { content: "\f408" } .ion-ios-cloud-download-outline:before { content: "\f407" } .ion-ios-cloud-outline:before { content: "\f409" } .ion-ios-cloud-upload:before { content: "\f40b" } .ion-ios-cloud-upload-outline:before { content: "\f40a" } .ion-ios-cloudy:before { content: "\f410" } .ion-ios-cloudy-night:before { content: "\f40e" } .ion-ios-cloudy-night-outline:before { content: "\f40d" } .ion-ios-cloudy-outline:before { content: "\f40f" } .ion-ios-cog:before { content: "\f412" } .ion-ios-cog-outline:before { content: "\f411" } .ion-ios-color-filter:before { content: "\f414" } .ion-ios-color-filter-outline:before { content: "\f413" } .ion-ios-color-wand:before { content: "\f416" } .ion-ios-color-wand-outline:before { content: "\f415" } .ion-ios-compose:before { content: "\f418" } .ion-ios-compose-outline:before { content: "\f417" } .ion-ios-contact:before { content: "\f41a" } .ion-ios-contact-outline:before { content: "\f419" } .ion-ios-copy:before { content: "\f41c" } .ion-ios-copy-outline:before { content: "\f41b" } .ion-ios-crop:before { content: "\f41e" } .ion-ios-crop-strong:before { content: "\f41d" } .ion-ios-download:before { content: "\f420" } .ion-ios-download-outline:before { content: "\f41f" } .ion-ios-drag:before { content: "\f421" } .ion-ios-email:before { content: "\f423" } .ion-ios-email-outline:before { content: "\f422" } .ion-ios-eye:before { content: "\f425" } .ion-ios-eye-outline:before { content: "\f424" } .ion-ios-fastforward:before { content: "\f427" } .ion-ios-fastforward-outline:before { content: "\f426" } .ion-ios-filing:before { content: "\f429" } .ion-ios-filing-outline:before { content: "\f428" } .ion-ios-film:before { content: "\f42b" } .ion-ios-film-outline:before { content: "\f42a" } .ion-ios-flag:before { content: "\f42d" } .ion-ios-flag-outline:before { content: "\f42c" } .ion-ios-flame:before { content: "\f42f" } .ion-ios-flame-outline:before { content: "\f42e" } .ion-ios-flask:before { content: "\f431" } .ion-ios-flask-outline:before { content: "\f430" } .ion-ios-flower:before { content: "\f433" } .ion-ios-flower-outline:before { content: "\f432" } .ion-ios-folder:before { content: "\f435" } .ion-ios-folder-outline:before { content: "\f434" } .ion-ios-football:before { content: "\f437" } .ion-ios-football-outline:before { content: "\f436" } .ion-ios-game-controller-a:before { content: "\f439" } .ion-ios-game-controller-a-outline:before { content: "\f438" } .ion-ios-game-controller-b:before { content: "\f43b" } .ion-ios-game-controller-b-outline:before { content: "\f43a" } .ion-ios-gear:before { content: "\f43d" } .ion-ios-gear-outline:before { content: "\f43c" } .ion-ios-glasses:before { content: "\f43f" } .ion-ios-glasses-outline:before { content: "\f43e" } .ion-ios-grid-view:before { content: "\f441" } .ion-ios-grid-view-outline:before { content: "\f440" } .ion-ios-heart:before { content: "\f443" } .ion-ios-heart-outline:before { content: "\f442" } .ion-ios-help:before { content: "\f446" } .ion-ios-help-empty:before { content: "\f444" } .ion-ios-help-outline:before { content: "\f445" } .ion-ios-home:before { content: "\f448" } .ion-ios-home-outline:before { content: "\f447" } .ion-ios-infinite:before { content: "\f44a" } .ion-ios-infinite-outline:before { content: "\f449" } .ion-ios-information:before { content: "\f44d" } .ion-ios-information-empty:before { content: "\f44b" } .ion-ios-information-outline:before { content: "\f44c" } .ion-ios-ionic-outline:before { content: "\f44e" } .ion-ios-keypad:before { content: "\f450" } .ion-ios-keypad-outline:before { content: "\f44f" } .ion-ios-lightbulb:before { content: "\f452" } .ion-ios-lightbulb-outline:before { content: "\f451" } .ion-ios-list:before { content: "\f454" } .ion-ios-list-outline:before { content: "\f453" } .ion-ios-location:before { content: "\f456" } .ion-ios-location-outline:before { content: "\f455" } .ion-ios-locked:before { content: "\f458" } .ion-ios-locked-outline:before { content: "\f457" } .ion-ios-loop:before { content: "\f45a" } .ion-ios-loop-strong:before { content: "\f459" } .ion-ios-medical:before { content: "\f45c" } .ion-ios-medical-outline:before { content: "\f45b" } .ion-ios-medkit:before { content: "\f45e" } .ion-ios-medkit-outline:before { content: "\f45d" } .ion-ios-mic:before { content: "\f461" } .ion-ios-mic-off:before { content: "\f45f" } .ion-ios-mic-outline:before { content: "\f460" } .ion-ios-minus:before { content: "\f464" } .ion-ios-minus-empty:before { content: "\f462" } .ion-ios-minus-outline:before { content: "\f463" } .ion-ios-monitor:before { content: "\f466" } .ion-ios-monitor-outline:before { content: "\f465" } .ion-ios-moon:before { content: "\f468" } .ion-ios-moon-outline:before { content: "\f467" } .ion-ios-more:before { content: "\f46a" } .ion-ios-more-outline:before { content: "\f469" } .ion-ios-musical-note:before { content: "\f46b" } .ion-ios-musical-notes:before { content: "\f46c" } .ion-ios-navigate:before { content: "\f46e" } .ion-ios-navigate-outline:before { content: "\f46d" } .ion-ios-nutrition:before { content: "\f470" } .ion-ios-nutrition-outline:before { content: "\f46f" } .ion-ios-paper:before { content: "\f472" } .ion-ios-paper-outline:before { content: "\f471" } .ion-ios-paperplane:before { content: "\f474" } .ion-ios-paperplane-outline:before { content: "\f473" } .ion-ios-partlysunny:before { content: "\f476" } .ion-ios-partlysunny-outline:before { content: "\f475" } .ion-ios-pause:before { content: "\f478" } .ion-ios-pause-outline:before { content: "\f477" } .ion-ios-paw:before { content: "\f47a" } .ion-ios-paw-outline:before { content: "\f479" } .ion-ios-people:before { content: "\f47c" } .ion-ios-people-outline:before { content: "\f47b" } .ion-ios-person:before { content: "\f47e" } .ion-ios-person-outline:before { content: "\f47d" } .ion-ios-personadd:before { content: "\f480" } .ion-ios-personadd-outline:before { content: "\f47f" } .ion-ios-photos:before { content: "\f482" } .ion-ios-photos-outline:before { content: "\f481" } .ion-ios-pie:before { content: "\f484" } .ion-ios-pie-outline:before { content: "\f483" } .ion-ios-pint:before { content: "\f486" } .ion-ios-pint-outline:before { content: "\f485" } .ion-ios-play:before { content: "\f488" } .ion-ios-play-outline:before { content: "\f487" } .ion-ios-plus:before { content: "\f48b" } .ion-ios-plus-empty:before { content: "\f489" } .ion-ios-plus-outline:before { content: "\f48a" } .ion-ios-pricetag:before { content: "\f48d" } .ion-ios-pricetag-outline:before { content: "\f48c" } .ion-ios-pricetags:before { content: "\f48f" } .ion-ios-pricetags-outline:before { content: "\f48e" } .ion-ios-printer:before { content: "\f491" } .ion-ios-printer-outline:before { content: "\f490" } .ion-ios-pulse:before { content: "\f493" } .ion-ios-pulse-strong:before { content: "\f492" } .ion-ios-rainy:before { content: "\f495" } .ion-ios-rainy-outline:before { content: "\f494" } .ion-ios-recording:before { content: "\f497" } .ion-ios-recording-outline:before { content: "\f496" } .ion-ios-redo:before { content: "\f499" } .ion-ios-redo-outline:before { content: "\f498" } .ion-ios-refresh:before { content: "\f49c" } .ion-ios-refresh-empty:before { content: "\f49a" } .ion-ios-refresh-outline:before { content: "\f49b" } .ion-ios-reload:before { content: "\f49d" } .ion-ios-reverse-camera:before { content: "\f49f" } .ion-ios-reverse-camera-outline:before { content: "\f49e" } .ion-ios-rewind:before { content: "\f4a1" } .ion-ios-rewind-outline:before { content: "\f4a0" } .ion-ios-rose:before { content: "\f4a3" } .ion-ios-rose-outline:before { content: "\f4a2" } .ion-ios-search:before { content: "\f4a5" } .ion-ios-search-strong:before { content: "\f4a4" } .ion-ios-settings:before { content: "\f4a7" } .ion-ios-settings-strong:before { content: "\f4a6" } .ion-ios-shuffle:before { content: "\f4a9" } .ion-ios-shuffle-strong:before { content: "\f4a8" } .ion-ios-skipbackward:before { content: "\f4ab" } .ion-ios-skipbackward-outline:before { content: "\f4aa" } .ion-ios-skipforward:before { content: "\f4ad" } .ion-ios-skipforward-outline:before { content: "\f4ac" } .ion-ios-snowy:before { content: "\f4ae" } .ion-ios-speedometer:before { content: "\f4b0" } .ion-ios-speedometer-outline:before { content: "\f4af" } .ion-ios-star:before { content: "\f4b3" } .ion-ios-star-half:before { content: "\f4b1" } .ion-ios-star-outline:before { content: "\f4b2" } .ion-ios-stopwatch:before { content: "\f4b5" } .ion-ios-stopwatch-outline:before { content: "\f4b4" } .ion-ios-sunny:before { content: "\f4b7" } .ion-ios-sunny-outline:before { content: "\f4b6" } .ion-ios-telephone:before { content: "\f4b9" } .ion-ios-telephone-outline:before { content: "\f4b8" } .ion-ios-tennisball:before { content: "\f4bb" } .ion-ios-tennisball-outline:before { content: "\f4ba" } .ion-ios-thunderstorm:before { content: "\f4bd" } .ion-ios-thunderstorm-outline:before { content: "\f4bc" } .ion-ios-time:before { content: "\f4bf" } .ion-ios-time-outline:before { content: "\f4be" } .ion-ios-timer:before { content: "\f4c1" } .ion-ios-timer-outline:before { content: "\f4c0" } .ion-ios-toggle:before { content: "\f4c3" } .ion-ios-toggle-outline:before { content: "\f4c2" } .ion-ios-trash:before { content: "\f4c5" } .ion-ios-trash-outline:before { content: "\f4c4" } .ion-ios-undo:before { content: "\f4c7" } .ion-ios-undo-outline:before { content: "\f4c6" } .ion-ios-unlocked:before { content: "\f4c9" } .ion-ios-unlocked-outline:before { content: "\f4c8" } .ion-ios-upload:before { content: "\f4cb" } .ion-ios-upload-outline:before { content: "\f4ca" } .ion-ios-videocam:before { content: "\f4cd" } .ion-ios-videocam-outline:before { content: "\f4cc" } .ion-ios-volume-high:before { content: "\f4ce" } .ion-ios-volume-low:before { content: "\f4cf" } .ion-ios-wineglass:before { content: "\f4d1" } .ion-ios-wineglass-outline:before { content: "\f4d0" } .ion-ios-world:before { content: "\f4d3" } .ion-ios-world-outline:before { content: "\f4d2" } .ion-ipad:before { content: "\f1f9" } .ion-iphone:before { content: "\f1fa" } .ion-ipod:before { content: "\f1fb" } .ion-jet:before { content: "\f295" } .ion-key:before { content: "\f296" } .ion-knife:before { content: "\f297" } .ion-laptop:before { content: "\f1fc" } .ion-leaf:before { content: "\f1fd" } .ion-levels:before { content: "\f298" } .ion-lightbulb:before { content: "\f299" } .ion-link:before { content: "\f1fe" } .ion-load-a:before { content: "\f29a" } .ion-load-b:before { content: "\f29b" } .ion-load-c:before { content: "\f29c" } .ion-load-d:before { content: "\f29d" } .ion-location:before { content: "\f1ff" } .ion-lock-combination:before { content: "\f4d4" } .ion-locked:before { content: "\f200" } .ion-log-in:before { content: "\f29e" } .ion-log-out:before { content: "\f29f" } .ion-loop:before { content: "\f201" } .ion-magnet:before { content: "\f2a0" } .ion-male:before { content: "\f2a1" } .ion-man:before { content: "\f202" } .ion-map:before { content: "\f203" } .ion-medkit:before { content: "\f2a2" } .ion-merge:before { content: "\f33f" } .ion-mic-a:before { content: "\f204" } .ion-mic-b:before { content: "\f205" } .ion-mic-c:before { content: "\f206" } .ion-minus:before { content: "\f209" } .ion-minus-circled:before { content: "\f207" } .ion-minus-round:before { content: "\f208" } .ion-model-s:before { content: "\f2c1" } .ion-monitor:before { content: "\f20a" } .ion-more:before { content: "\f20b" } .ion-mouse:before { content: "\f340" } .ion-music-note:before { content: "\f20c" } .ion-navicon:before { content: "\f20e" } .ion-navicon-round:before { content: "\f20d" } .ion-navigate:before { content: "\f2a3" } .ion-network:before { content: "\f341" } .ion-no-smoking:before { content: "\f2c2" } .ion-nuclear:before { content: "\f2a4" } .ion-outlet:before { content: "\f342" } .ion-paintbrush:before { content: "\f4d5" } .ion-paintbucket:before { content: "\f4d6" } .ion-paper-airplane:before { content: "\f2c3" } .ion-paperclip:before { content: "\f20f" } .ion-pause:before { content: "\f210" } .ion-person:before { content: "\f213" } .ion-person-add:before { content: "\f211" } .ion-person-stalker:before { content: "\f212" } .ion-pie-graph:before { content: "\f2a5" } .ion-pin:before { content: "\f2a6" } .ion-pinpoint:before { content: "\f2a7" } .ion-pizza:before { content: "\f2a8" } .ion-plane:before { content: "\f214" } .ion-planet:before { content: "\f343" } .ion-play:before { content: "\f215" } .ion-playstation:before { content: "\f30a" } .ion-plus:before { content: "\f218" } .ion-plus-circled:before { content: "\f216" } .ion-plus-round:before { content: "\f217" } .ion-podium:before { content: "\f344" } .ion-pound:before { content: "\f219" } .ion-power:before { content: "\f2a9" } .ion-pricetag:before { content: "\f2aa" } .ion-pricetags:before { content: "\f2ab" } .ion-printer:before { content: "\f21a" } .ion-pull-request:before { content: "\f345" } .ion-qr-scanner:before { content: "\f346" } .ion-quote:before { content: "\f347" } .ion-radio-waves:before { content: "\f2ac" } .ion-record:before { content: "\f21b" } .ion-refresh:before { content: "\f21c" } .ion-reply:before { content: "\f21e" } .ion-reply-all:before { content: "\f21d" } .ion-ribbon-a:before { content: "\f348" } .ion-ribbon-b:before { content: "\f349" } .ion-sad:before { content: "\f34a" } .ion-sad-outline:before { content: "\f4d7" } .ion-scissors:before { content: "\f34b" } .ion-search:before { content: "\f21f" } .ion-settings:before { content: "\f2ad" } .ion-share:before { content: "\f220" } .ion-shuffle:before { content: "\f221" } .ion-skip-backward:before { content: "\f222" } .ion-skip-forward:before { content: "\f223" } .ion-social-android:before { content: "\f225" } .ion-social-android-outline:before { content: "\f224" } .ion-social-angular:before { content: "\f4d9" } .ion-social-angular-outline:before { content: "\f4d8" } .ion-social-apple:before { content: "\f227" } .ion-social-apple-outline:before { content: "\f226" } .ion-social-bitcoin:before { content: "\f2af" } .ion-social-bitcoin-outline:before { content: "\f2ae" } .ion-social-buffer:before { content: "\f229" } .ion-social-buffer-outline:before { content: "\f228" } .ion-social-chrome:before { content: "\f4db" } .ion-social-chrome-outline:before { content: "\f4da" } .ion-social-codepen:before { content: "\f4dd" } .ion-social-codepen-outline:before { content: "\f4dc" } .ion-social-css3:before { content: "\f4df" } .ion-social-css3-outline:before { content: "\f4de" } .ion-social-designernews:before { content: "\f22b" } .ion-social-designernews-outline:before { content: "\f22a" } .ion-social-dribbble:before { content: "\f22d" } .ion-social-dribbble-outline:before { content: "\f22c" } .ion-social-dropbox:before { content: "\f22f" } .ion-social-dropbox-outline:before { content: "\f22e" } .ion-social-euro:before { content: "\f4e1" } .ion-social-euro-outline:before { content: "\f4e0" } .ion-social-facebook:before { content: "\f231" } .ion-social-facebook-outline:before { content: "\f230" } .ion-social-foursquare:before { content: "\f34d" } .ion-social-foursquare-outline:before { content: "\f34c" } .ion-social-freebsd-devil:before { content: "\f2c4" } .ion-social-github:before { content: "\f233" } .ion-social-github-outline:before { content: "\f232" } .ion-social-google:before { content: "\f34f" } .ion-social-google-outline:before { content: "\f34e" } .ion-social-googleplus:before { content: "\f235" } .ion-social-googleplus-outline:before { content: "\f234" } .ion-social-hackernews:before { content: "\f237" } .ion-social-hackernews-outline:before { content: "\f236" } .ion-social-html5:before { content: "\f4e3" } .ion-social-html5-outline:before { content: "\f4e2" } .ion-social-instagram:before { content: "\f351" } .ion-social-instagram-outline:before { content: "\f350" } .ion-social-javascript:before { content: "\f4e5" } .ion-social-javascript-outline:before { content: "\f4e4" } .ion-social-linkedin:before { content: "\f239" } .ion-social-linkedin-outline:before { content: "\f238" } .ion-social-markdown:before { content: "\f4e6" } .ion-social-nodejs:before { content: "\f4e7" } .ion-social-octocat:before { content: "\f4e8" } .ion-social-pinterest:before { content: "\f2b1" } .ion-social-pinterest-outline:before { content: "\f2b0" } .ion-social-python:before { content: "\f4e9" } .ion-social-reddit:before { content: "\f23b" } .ion-social-reddit-outline:before { content: "\f23a" } .ion-social-rss:before { content: "\f23d" } .ion-social-rss-outline:before { content: "\f23c" } .ion-social-sass:before { content: "\f4ea" } .ion-social-skype:before { content: "\f23f" } .ion-social-skype-outline:before { content: "\f23e" } .ion-social-snapchat:before { content: "\f4ec" } .ion-social-snapchat-outline:before { content: "\f4eb" } .ion-social-tumblr:before { content: "\f241" } .ion-social-tumblr-outline:before { content: "\f240" } .ion-social-tux:before { content: "\f2c5" } .ion-social-twitch:before { content: "\f4ee" } .ion-social-twitch-outline:before { content: "\f4ed" } .ion-social-twitter:before { content: "\f243" } .ion-social-twitter-outline:before { content: "\f242" } .ion-social-usd:before { content: "\f353" } .ion-social-usd-outline:before { content: "\f352" } .ion-social-vimeo:before { content: "\f245" } .ion-social-vimeo-outline:before { content: "\f244" } .ion-social-whatsapp:before { content: "\f4f0" } .ion-social-whatsapp-outline:before { content: "\f4ef" } .ion-social-windows:before { content: "\f247" } .ion-social-windows-outline:before { content: "\f246" } .ion-social-wordpress:before { content: "\f249" } .ion-social-wordpress-outline:before { content: "\f248" } .ion-social-yahoo:before { content: "\f24b" } .ion-social-yahoo-outline:before { content: "\f24a" } .ion-social-yen:before { content: "\f4f2" } .ion-social-yen-outline:before { content: "\f4f1" } .ion-social-youtube:before { content: "\f24d" } .ion-social-youtube-outline:before { content: "\f24c" } .ion-soup-can:before { content: "\f4f4" } .ion-soup-can-outline:before { content: "\f4f3" } .ion-speakerphone:before { content: "\f2b2" } .ion-speedometer:before { content: "\f2b3" } .ion-spoon:before { content: "\f2b4" } .ion-star:before { content: "\f24e" } .ion-stats-bars:before { content: "\f2b5" } .ion-steam:before { content: "\f30b" } .ion-stop:before { content: "\f24f" } .ion-thermometer:before { content: "\f2b6" } .ion-thumbsdown:before { content: "\f250" } .ion-thumbsup:before { content: "\f251" } .ion-toggle:before { content: "\f355" } .ion-toggle-filled:before { content: "\f354" } .ion-transgender:before { content: "\f4f5" } .ion-trash-a:before { content: "\f252" } .ion-trash-b:before { content: "\f253" } .ion-trophy:before { content: "\f356" } .ion-tshirt:before { content: "\f4f7" } .ion-tshirt-outline:before { content: "\f4f6" } .ion-umbrella:before { content: "\f2b7" } .ion-university:before { content: "\f357" } .ion-unlocked:before { content: "\f254" } .ion-upload:before { content: "\f255" } .ion-usb:before { content: "\f2b8" } .ion-videocamera:before { content: "\f256" } .ion-volume-high:before { content: "\f257" } .ion-volume-low:before { content: "\f258" } .ion-volume-medium:before { content: "\f259" } .ion-volume-mute:before { content: "\f25a" } .ion-wand:before { content: "\f358" } .ion-waterdrop:before { content: "\f25b" } .ion-wifi:before { content: "\f25c" } .ion-wineglass:before { content: "\f2b9" } .ion-woman:before { content: "\f25d" } .ion-wrench:before { content: "\f2ba" } .ion-xbox:before { content: "\f30c" } ================================================ FILE: client/index/assets/base.css ================================================ html, body { padding: 0; margin: 0; background: #f9f9f9; -webkit-font-smoothing: antialiased; font-family: 'Lantinghei SC', 'Open Sans', Arial, 'Hiragino Sans GB', 'Microsoft YaHei', 微软雅黑, STHeiti, 'WenQuanYi Micro Hei', SimSun, sans-serif; } @-webkit-keyframes loading { from { transform-origin: 50% 50%; -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { transform-origin: 50% 50%; -webkit-transform: rotate(360deg); transform: rotate(360deg); } } @keyframes loading { from { transform-origin: 50% 50%; -webkit-transform: rotate(0deg); transform: rotate(0deg); } to { transform-origin: 50% 50%; -webkit-transform: rotate(360deg); transform: rotate(360deg); } } .infinite-rotate { animation: loading 1s infinite linear; } ================================================ FILE: client/index/client-entry.js ================================================ import { app, store } from './app' store.replaceState(window.__INITIAL_STATE__) app.$mount('#app') ================================================ FILE: client/index/components/Header.vue ================================================ ================================================ FILE: client/index/components/compA.vue ================================================ ================================================ FILE: client/index/router/index.js ================================================ import Vue from 'vue' import Router from 'vue-router' Vue.use(Router) const Home = require('../views/Home.vue') const Article = require('../views/Article.vue') const Tag = require('../views/Tag.vue') const Login = require('../views/Login.vue') const router = new Router({ mode: 'history', scrollBehavior (to, from, savedPosition) { return { x: 0, y: 0 } }, routes: [{ path: '/', redirect: '/home' }, { path: '/home', name: 'home', component: Home }, { path: '/article', name: 'article', component: Article }, { path: '/tag', name: 'tag', component: Tag }, { path: '/login', name: 'login', component: Login }] }) router.beforeEach((to, from, next) => { router.app.$store.dispatch('hideHeaderNav') next() }) export default router ================================================ FILE: client/index/server-entry.js ================================================ import { app, router, store } from './app' const isDev = process.env.NODE_ENV !== 'production' // This exported function will be called by `bundleRenderer`. // This is where we perform data-prefetching to determine the // state of our application before actually rendering it. // Since data fetching is async, this function is expected to // return a Promise that resolves to the app instance. export default context => { // set router's location router.push(context.url) const s = isDev && Date.now() // Call preFetch hooks on components matched by the route. // A preFetch hook dispatches a store action and returns a Promise, // which is resolved when the action is complete and store state has been // updated. return Promise.all(router.getMatchedComponents().map(component => { if (component.preFetch) { return component.preFetch(store) } })).then(() => { isDev && console.log(`data pre-fetch: ${Date.now() - s}ms`) // After all preFetch hooks are resolved, our store is now // filled with the state needed to render the app. // Expose the state on the render context, and let the request handler // inline the state in the HTML response. This allows the client-side // store to pick-up the server-side state without having to duplicate // the initial data fetching on the client. context.initialState = store.state return app }) } ================================================ FILE: client/index/store/index.js ================================================ import Vue from 'vue' import Vuex from 'vuex' Vue.use(Vuex) // import { // getUser, // userLogout, // queryArticleById // } from '../api' const state = { HeaderNav: { show: false, navs: [{ text: '首页', route: { name: 'home' } }, { text: '文章', route: { name: 'article' } }, { text: '标签', route: { name: 'tag' } }] } } const mutations = { SET_HEADER_NAV (state, active) { state.HeaderNav.show = active } } const actions = { // for mobile nav showHeaderNav ({ commit }) { commit('SET_HEADER_NAV', true) }, hideHeaderNav ({ commit }) { commit('SET_HEADER_NAV', false) } } const getters = { HeaderNav: state => state.HeaderNav } const store = new Vuex.Store({ state, getters, actions, mutations }) export default store ================================================ FILE: client/index/views/Article.vue ================================================ ================================================ FILE: client/index/views/Home.vue ================================================ ================================================ FILE: client/index/views/Login.vue ================================================ ================================================ FILE: client/index/views/Tag.vue ================================================ ================================================ FILE: client/login/App.vue ================================================ ================================================ FILE: client/login/client-entry.js ================================================ import Vue from 'vue' import App from './App.vue' new Vue({ el: '#app', render: h => h(App) }) ================================================ FILE: index.html ================================================ vue-hackernews-2.0 {{ STYLE }} {{ APP }} ================================================ FILE: package.json ================================================ { "name": "cov-x", "description": "A Vue.js project", "author": "Awe ", "scripts": { "start": "node app", "dev": "cross-env NODE_ENV=development supervisor -w server,app.js app", "build": "cross-env NODE_ENV=production node build/build-prod", "build:server": "cross-env NODE_ENV=production webpack --config build/webpack.server.js --progress --hide-modules" }, "dependencies": { "express": "^4.14.0", "pug": "^2.0.0-beta11", "serialize-javascript": "^1.3.0", "vue": "^2.1.10", "vue-router": "^2.2.1", "vue-server-renderer": "^2.1.10", "vue-ssr": "^0.2.5", "vue-template-compiler": "^2.1.10", "vuex": "^2.1.2", "vuex-router-sync": "^4.1.2" }, "devDependencies": { "babel-core": "^6.0.0", "babel-loader": "^6.0.0", "babel-preset-es2015": "^6.13.2", "babel-preset-stage-2": "^6.17.0", "cross-env": "^1.0.6", "css-loader": "^0.23.1", "es6-promise": "^4.0.5", "extract-text-webpack-plugin": "^2.0.0-beta.3", "file-loader": "^0.8.4", "optimize-css-assets-webpack-plugin": "^1.3.0", "ora": "^0.3.0", "shelljs": "^0.7.4", "vue-loader": "^11.1.0", "webpack": "^2.2.1", "webpack-dev-middleware": "^1.10.1", "webpack-dev-server": "^2.4.1", "webpack-hot-middleware": "^2.17.0", "webpack-merge": "^3.0.0" } } ================================================ FILE: public/client/index.js ================================================ !function(t){function e(t){delete installedChunks[t]}function n(t){var e=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.charset="utf-8",n.src=d.p+""+t+"."+_+".hot-update.js",e.appendChild(n)}function r(){return new Promise(function(t,e){if("undefined"==typeof XMLHttpRequest)return e(new Error("No browser support"));try{var n=new XMLHttpRequest,r=d.p+""+_+".hot-update.json";n.open("GET",r,!0),n.timeout=1e4,n.send(null)}catch(t){return e(t)}n.onreadystatechange=function(){if(4===n.readyState)if(0===n.status)e(new Error("Manifest request to "+r+" timed out."));else if(404===n.status)t();else if(200!==n.status&&304!==n.status)e(new Error("Manifest request to "+r+" failed."));else{try{var o=JSON.parse(n.responseText)}catch(t){return void e(t)}t(o)}}})}function o(t){var e=T[t];if(!e)return d;var n=function(n){return e.hot.active?(T[n]?T[n].parents.indexOf(t)<0&&T[n].parents.push(t):x=[t],e.children.indexOf(n)<0&&e.children.push(n)):(console.warn("[HMR] unexpected require("+n+") from disposed module "+t),x=[]),w=!1,d(n)},r=function(t){return{configurable:!0,enumerable:!0,get:function(){return d[t]},set:function(e){d[t]=e}}};for(var o in d)Object.prototype.hasOwnProperty.call(d,o)&&Object.defineProperty(n,o,r(o));return Object.defineProperty(n,"e",{enumerable:!0,value:function(t){function e(){$--,"prepare"===k&&(E[t]||l(t),0===$&&0===A&&f())}return"ready"===k&&a("prepare"),$++,d.e(t).then(e,function(t){throw e(),t})}}),n}function i(t){var e={_acceptedDependencies:{},_declinedDependencies:{},_selfAccepted:!1,_selfDeclined:!1,_disposeHandlers:[],_main:w,active:!0,accept:function(t,n){if("undefined"==typeof t)e._selfAccepted=!0;else if("function"==typeof t)e._selfAccepted=t;else if("object"==typeof t)for(var r=0;r=0&&e._disposeHandlers.splice(n,1)},check:c,apply:p,status:function(t){return t?void O.push(t):k},addStatusHandler:function(t){O.push(t)},removeStatusHandler:function(t){var e=O.indexOf(t);e>=0&&O.splice(e,1)},data:b[t]};return w=!0,e}function a(t){k=t;for(var e=0;e0;){var i=r.pop(),a=i.id,s=i.chain;if(l=T[a],l&&!l.hot._selfAccepted){if(l.hot._selfDeclined)return{type:"self-declined",chain:s,moduleId:a};if(l.hot._main)return{type:"unaccepted",chain:s,moduleId:a};for(var c=0;c=0||(f.hot._acceptedDependencies[a]?(n[u]||(n[u]=[]),o(n[u],[a])):(delete n[u],e.push(u),r.push({chain:s.concat([u]),id:u})))}}}}return{type:"accepted",moduleId:t,outdatedModules:e,outdatedDependencies:n}}function o(t,e){for(var n=0;n ")),C.type){case"self-declined":n.onDeclined&&n.onDeclined(C),n.ignoreDeclined||(O=new Error("Aborted because of self decline: "+C.moduleId+E));break;case"declined":n.onDeclined&&n.onDeclined(C),n.ignoreDeclined||(O=new Error("Aborted because of declined dependency: "+C.moduleId+" in "+C.parentId+E));break;case"unaccepted":n.onUnaccepted&&n.onUnaccepted(C),n.ignoreUnaccepted||(O=new Error("Aborted because "+f+" is not accepted"+E));break;case"accepted":n.onAccepted&&n.onAccepted(C),A=!0;break;case"disposed":n.onDisposed&&n.onDisposed(C),$=!0;break;default:throw new Error("Unexception type "+C.type)}if(O)return a("abort"),Promise.reject(O);if(A){v[f]=m[f],o(h,C.outdatedModules);for(f in C.outdatedDependencies)Object.prototype.hasOwnProperty.call(C.outdatedDependencies,f)&&(p[f]||(p[f]=[]),o(p[f],C.outdatedDependencies[f]))}$&&(o(h,[C.moduleId]),v[f]=g)}var j=[];for(c=0;c0;)if(f=I.pop(),l=T[f]){var M={},D=l.hot._disposeHandlers;for(u=0;u=0&&N.parents.splice(P,1))}}var R,H;for(f in p)if(Object.prototype.hasOwnProperty.call(p,f)&&(l=T[f]))for(H=p[f],u=0;u=0&&l.children.splice(P,1);a("apply"),_=y;for(f in v)Object.prototype.hasOwnProperty.call(v,f)&&(t[f]=v[f]);var L=null;for(f in p)if(Object.prototype.hasOwnProperty.call(p,f)){l=T[f],H=p[f];var U=[];for(c=0;c=0||U.push(i);for(c=0;c-1)return t.splice(n,1)}}function a(t,e){return Cn.call(t,e)}function s(t){return"string"==typeof t||"number"==typeof t}function c(t){var e=Object.create(null);return function(n){var r=e[n];return r||(e[n]=t(n))}}function u(t,e){function n(n){var r=arguments.length;return r?r>1?t.apply(e,arguments):t.call(e,n):t.call(e)}return n._length=t.length,n}function l(t,e){e=e||0;for(var n=t.length-e,r=new Array(n);n--;)r[n]=t[n+e];return r}function f(t,e){for(var n in e)t[n]=e[n];return t}function p(t){return null!==t&&"object"==typeof t}function d(t){return jn.call(t)===Sn}function h(t){for(var e={},n=0;n1?l(n):n;for(var r=l(arguments,1),o=0,i=n.length;o=0&&vr[n].id>t.id;)n--;vr.splice(Math.max(n,_r)+1,0,t)}else vr.push(t);yr||(yr=!0,zn(At))}}function Et(t){xr.clear(),jt(t,xr)}function jt(t,e){var n,r,o=Array.isArray(t);if((o||p(t))&&Object.isExtensible(t)){if(t.__ob__){var i=t.__ob__.dep.id;if(e.has(i))return;e.add(i)}if(o)for(n=t.length;n--;)jt(t[n],e);else for(r=Object.keys(t),n=r.length;n--;)jt(t[r[n]],e)}}function St(t){t._watchers=[];var e=t.$options;e.props&&Tt(t,e.props),e.methods&&Dt(t,e.methods),e.data?Pt(t):$(t._data={},!0),e.computed&&It(t,e.computed),e.watch&&Nt(t,e.watch)}function Tt(t,e){var n=t.$options.propsData||{},r=t.$options._propKeys=Object.keys(e),o=!t.$parent;tr.shouldConvert=o;for(var i=function(o){var i=r[o];E(t,i,L(i,e,n,t))},a=0;a-1:t.test(e)}function Xt(t,e){for(var n in t){var r=t[n];if(r){var o=Jt(r.componentOptions);o&&!e(o)&&(Yt(r),t[n]=null)}}}function Yt(t){t&&(t.componentInstance._inactive||Ot(t.componentInstance,"deactivated"),t.componentInstance.$destroy())}function Zt(t){var e={};e.get=function(){return In},Object.defineProperty(t,"config",e),t.util=or,t.set=j,t.delete=S,t.nextTick=zn,t.options=Object.create(null),In._assetTypes.forEach(function(e){t.options[e+"s"]=Object.create(null)}),t.options._base=t,f(t.options.components,$r),Bt(t),zt(t),Gt(t),Kt(t)}function Qt(t){for(var e=t.data,n=t,r=t;r.componentInstance;)r=r.componentInstance._vnode,r.data&&(e=te(r.data,e));for(;n=n.parent;)n.data&&(e=te(e,n.data));return ee(e)}function te(t,e){return{staticClass:ne(t.staticClass,e.staticClass),class:t.class?[t.class,e.class]:e.class}}function ee(t){var e=t.class,n=t.staticClass;return n||e?ne(n,re(e)):""}function ne(t,e){return t?e?t+" "+e:t:e||""}function re(t){var e="";if(!t)return e;if("string"==typeof t)return t;if(Array.isArray(t)){for(var n,r=0,o=t.length;r-1?Vr[t]=e.constructor===window.HTMLUnknownElement||e.constructor===window.HTMLElement:Vr[t]=/HTMLUnknownElement/.test(e.toString())}function ae(t){if("string"==typeof t){if(t=document.querySelector(t),!t)return document.createElement("div")}return t}function se(t,e){var n=document.createElement(t);return"select"!==t?n:(e.data&&e.data.attrs&&"multiple"in e.data.attrs&&n.setAttribute("multiple","multiple"),n)}function ce(t,e){return document.createElementNS(Hr[t],e)}function ue(t){return document.createTextNode(t)}function le(t){return document.createComment(t)}function fe(t,e,n){t.insertBefore(e,n)}function pe(t,e){t.removeChild(e)}function de(t,e){t.appendChild(e)}function he(t){return t.parentNode}function ve(t){return t.nextSibling}function me(t){return t.tagName}function ye(t,e){t.textContent=e}function ge(t,e,n){t.setAttribute(e,n)}function _e(t,e){var n=t.data.ref;if(n){var r=t.context,o=t.componentInstance||t.elm,a=r.$refs;e?Array.isArray(a[n])?i(a[n],o):a[n]===o&&(a[n]=void 0):t.data.refInFor?Array.isArray(a[n])&&a[n].indexOf(o)<0?a[n].push(o):a[n]=[o]:a[n]=o}}function be(t){return null==t}function we(t){return null!=t}function xe(t,e){return t.key===e.key&&t.tag===e.tag&&t.isComment===e.isComment&&!t.data==!e.data}function Ce(t,e,n){var r,o,i={};for(r=e;r<=n;++r)o=t[r].key,we(o)&&(i[o]=r);return i}function Oe(t){function e(t){return new ir($.tagName(t).toLowerCase(),{},[],void 0,t)}function n(t,e){function n(){0===--n.listeners&&r(t)}return n.listeners=e,n}function r(t){var e=$.parentNode(t);e&&$.removeChild(e,t)}function i(t,e,n,r,o){if(t.isRootInsert=!o,!a(t,e,n,r)){var i=t.data,s=t.children,c=t.tag;we(c)?(t.elm=t.ns?$.createElementNS(t.ns,c):$.createElement(c,t),h(t),f(t,s,e),we(i)&&d(t,e),l(n,t.elm,r)):t.isComment?(t.elm=$.createComment(t.text),l(n,t.elm,r)):(t.elm=$.createTextNode(t.text),l(n,t.elm,r))}}function a(t,e,n,r){var o=t.data;if(we(o)){var i=we(t.componentInstance)&&o.keepAlive;if(we(o=o.hook)&&we(o=o.init)&&o(t,!1,n,r),we(t.componentInstance))return c(t,e),i&&u(t,e,n,r),!0}}function c(t,e){t.data.pendingInsert&&e.push.apply(e,t.data.pendingInsert),t.elm=t.componentInstance.$el,p(t)?(d(t,e),h(t)):(_e(t),e.push(t))}function u(t,e,n,r){for(var o,i=t;i.componentInstance;)if(i=i.componentInstance._vnode,we(o=i.data)&&we(o=o.transition)){for(o=0;op?(u=be(n[m+1])?null:n[m+1].elm,v(t,u,n,f,m,r)):f>m&&y(t,e,l,p)}function b(t,e,n,r){if(t!==e){if(e.isStatic&&t.isStatic&&e.key===t.key&&(e.isCloned||e.isOnce))return e.elm=t.elm,void(e.componentInstance=t.componentInstance);var o,i=e.data,a=we(i);a&&we(o=i.hook)&&we(o=o.prepatch)&&o(t,e);var s=e.elm=t.elm,c=t.children,u=e.children;if(a&&p(e)){for(o=0;o-1?e.split(/\s+/).forEach(function(e){return t.classList.add(e)}):t.classList.add(e);else{var n=" "+t.getAttribute("class")+" ";n.indexOf(" "+e+" ")<0&&t.setAttribute("class",(n+e).trim())}}function ze(t,e){if(e&&e.trim())if(t.classList)e.indexOf(" ")>-1?e.split(/\s+/).forEach(function(e){return t.classList.remove(e)}):t.classList.remove(e);else{for(var n=" "+t.getAttribute("class")+" ",r=" "+e+" ";n.indexOf(r)>=0;)n=n.replace(r," ");t.setAttribute("class",n.trim())}}function Ge(t){vo(function(){vo(t)})}function Ke(t,e){(t._transitionClasses||(t._transitionClasses=[])).push(e),Be(t,e)}function Je(t,e){t._transitionClasses&&i(t._transitionClasses,e),ze(t,e)}function We(t,e,n){var r=Xe(t,e),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===co?fo:ho,c=0,u=function(){t.removeEventListener(s,l),n()},l=function(e){e.target===t&&++c>=a&&u()};setTimeout(function(){c0&&(n=co,l=a,f=i.length):e===uo?u>0&&(n=uo,l=u,f=c.length):(l=Math.max(a,u),n=l>0?a>u?co:uo:null,f=n?n===co?i.length:c.length:0);var p=n===co&&mo.test(r[lo+"Property"]);return{type:n,timeout:l,propCount:f,hasTransform:p}}function Ye(t,e){for(;t.length1,P=n._enterCb=nn(function(){S&&(Je(n,k),Je(n,O)),P.cancelled?(S&&Je(n,C),j&&j(n)):E&&E(n),n._enterCb=null});t.data.show||ot(t.data.hook||(t.data.hook={}),"insert",function(){var e=n.parentNode,r=e&&e._pending&&e._pending[t.key];r&&r.tag===t.tag&&r.elm._leaveCb&&r.elm._leaveCb(),$&&$(n,P)},"transition-insert"),A&&A(n),S&&(Ke(n,C),Ke(n,O),Ge(function(){Ke(n,k),Je(n,C),P.cancelled||T||We(n,i,P)})),t.data.show&&(e&&e(),$&&$(n,P)),S||T||P()}}}function tn(t,e){function n(){y.cancelled||(t.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[t.key]=t),l&&l(r),v&&(Ke(r,s),Ke(r,u),Ge(function(){Ke(r,c),Je(r,s),y.cancelled||m||We(r,a,y)})),f&&f(r,y),v||m||y())}var r=t.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var o=en(t.data.transition);if(!o)return e();if(!r._leaveCb&&1===r.nodeType){var i=o.css,a=o.type,s=o.leaveClass,c=o.leaveToClass,u=o.leaveActiveClass,l=o.beforeLeave,f=o.leave,p=o.afterLeave,d=o.leaveCancelled,h=o.delayLeave,v=i!==!1&&!Ln,m=f&&(f._length||f.length)>1,y=r._leaveCb=nn(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[t.key]=null),v&&(Je(r,c),Je(r,u)),y.cancelled?(v&&Je(r,s),d&&d(r)):(e(),p&&p(r)),r._leaveCb=null});h?h(n):n()}}function en(t){if(t){if("object"==typeof t){var e={};return t.css!==!1&&f(e,yo(t.name||"v")),f(e,t),e}return"string"==typeof t?yo(t):void 0}}function nn(t){var e=!1;return function(){e||(e=!0,t())}}function rn(t,e){e.data.show||Qe(e)}function on(t,e,n){var r=e.value,o=t.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=t.options.length;s-1,a.selected!==i&&(a.selected=i);else if(y(sn(a),r))return void(t.selectedIndex!==s&&(t.selectedIndex=s));o||(t.selectedIndex=-1)}}function an(t,e){for(var n=0,r=e.length;n0,Un=Rn&&Rn.indexOf("edge/")>0,qn=Rn&&Rn.indexOf("android")>0,Vn=Rn&&/iphone|ipad|ipod|ios/.test(Rn),Fn=function(){return void 0===bn&&(bn=!Nn&&"undefined"!=typeof e&&"server"===e.process.env.VUE_ENV),bn},Bn=Nn&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,zn=function(){function t(){r=!1;var t=n.slice(0);n.length=0;for(var e=0;e1&&(e[n[0].trim()]=n[1].trim())}}),e}),eo=/^--/,no=/\s*!important$/,ro=function(t,e,n){eo.test(e)?t.style.setProperty(e,n):no.test(n)?t.style.setProperty(e,n.replace(no,""),"important"):t.style[io(e)]=n},oo=["Webkit","Moz","ms"],io=c(function(t){if(jr=jr||document.createElement("div"),t=kn(t),"filter"!==t&&t in jr.style)return t;for(var e=t.charAt(0).toUpperCase()+t.slice(1),n=0;n800&&this.$store.dispatch("hideHeaderNav")},toggleMNav:function(){this.HeaderNav.show?this.$store.dispatch("hideHeaderNav"):this.$store.dispatch("showHeaderNav")}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"Article",serverCacheKey:function(){return"tag"}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var r=n(22),o=n.n(r);e.default={name:"Home",serverCacheKey:function(){return"home"},data:function(){return{list:["test","233"]}},components:{compA:o.a},methods:{addOne:function(){this.list.push("233")}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"Login",serverCacheKey:function(){return"login"},methods:{refresh:function(){location.reload()}}}},function(t,e,n){"use strict";Object.defineProperty(e,"__esModule",{value:!0}),e.default={name:"Tag",serverCacheKey:function(){return"tag"}}},,function(t,e){},function(t,e){},function(t,e){},function(t,e){},,function(t,e,n){n(15),n(16),n(17);var r=n(0)(n(8),n(28),null,null);t.exports=r.exports},function(t,e,n){n(18);var r=n(0)(n(9),n(31),null,null);t.exports=r.exports},function(t,e,n){var r=n(0)(null,n(29),null,null);t.exports=r.exports},function(t,e,n){var r=n(0)(n(10),n(30),null,null);t.exports=r.exports},function(t,e,n){var r=n(0)(n(11),n(32),null,null);t.exports=r.exports},function(t,e,n){var r=n(0)(n(12),n(35),null,null);t.exports=r.exports},function(t,e,n){var r=n(0)(n(13),n(34),null,null);t.exports=r.exports},,function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",{attrs:{id:"app"}},[n("um-header"),t._v(" "),n("router-view",{staticClass:"view"})],1)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[t._v("\n I'm compA\n")])},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;t._self._c||e;return t._m(0)},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"content home"},[n("div",{staticClass:"readme"},[n("a",{attrs:{href:"https://github.com/hilongjw/vue-ssr"}},[n("h2",[t._v("Vue SSR")])]),t._v(" "),n("p",[t._v("\n Use Vue 2.0 server-side rendering with Express\n ")])])])])}]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("header",{staticClass:"header"},[n("div",{staticClass:"header-nav-m",on:{click:t.toggleMNav}},[n("div",{staticClass:"header-nav-m-menu ion-navicon"})]),t._v(" "),n("transition",{attrs:{name:"header-nav"}},[n("div",{directives:[{name:"show",rawName:"v-show",value:t.HeaderNav.show,expression:"HeaderNav.show"}],staticClass:"header-nav-m-list"},t._l(t.HeaderNav.navs,function(e){return n("router-link",{staticClass:"header-nav-item-m",attrs:{to:e.route}},[t._v(t._s(e.text))])}))]),t._v(" "),n("router-link",{staticClass:"header-logo",attrs:{to:"/home"}},[n("span",{staticClass:"header-logo-content"},[t._v("Cov-X")])]),t._v(" "),n("nav",{staticClass:"header-nav"},t._l(t.HeaderNav.navs,function(e){return n("router-link",{staticClass:"header-nav-item",attrs:{to:e.route}},[t._v(t._s(e.text))])})),t._v(" "),t._t("default"),t._v(" "),t.User?t._e():n("router-link",{staticClass:"header-logo",attrs:{to:"/login"}},[n("div",{staticClass:"header-sign"},[n("button",{attrs:{button:t.button.signUp}},[t._v("登录")]),t._v(" "),n("button",{attrs:{button:t.button.signIn}},[t._v("注册")])])])],2)},staticRenderFns:[]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"content home"},[t._v("\n it's home page\n "),t._l(t.list,function(e){return n("div",[t._v(t._s(e))])}),t._v(" "),n("button",{on:{click:t.addOne}},[t._v("add a 233")]),t._v(" "),n("comp-a")],2)])},staticRenderFns:[]}},,function(t,e){t.exports={render:function(){var t=this,e=t.$createElement;t._self._c||e;return t._m(0)},staticRenderFns:[function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"content home"},[t._v("\n it's entry page\n ")])])}]}},function(t,e){t.exports={render:function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("div",{staticClass:"content home"},[t._v("\n it's fake Login\n "),n("button",{on:{click:t.refresh}},[t._v(" refresh ")])])])},staticRenderFns:[]}},function(t,e,n){"use strict";function r(t,e){t||"undefined"!=typeof console&&console.warn("[vue-router] "+e)}function o(t,e){switch(typeof e){case"undefined":return;case"object":return e;case"function":return e(t);case"boolean":return e?t.params:void 0;default:r(!1,'props in "'+t.path+'" is a '+typeof e+", expecting an object, function or boolean.")}}function i(t,e){if(void 0===e&&(e={}),t){var n;try{n=a(t)}catch(t){n={}}for(var r in e)n[r]=e[r];return n}return e}function a(t){var e={};return(t=t.trim().replace(/^(\?|#|&)/,""))?(t.split("&").forEach(function(t){var n=t.replace(/\+/g," ").split("="),r=Pt(n.shift()),o=n.length>0?Pt(n.join("=")):null;void 0===e[r]?e[r]=o:Array.isArray(e[r])?e[r].push(o):e[r]=[e[r],o]}),e):e}function s(t){var e=t?Object.keys(t).map(function(e){var n=t[e];if(void 0===n)return"";if(null===n)return Tt(e);if(Array.isArray(n)){var r=[];return n.slice().forEach(function(t){void 0!==t&&(null===t?r.push(Tt(e)):r.push(Tt(e)+"="+Tt(t)))}),r.join("&")}return Tt(e)+"="+Tt(n)}).filter(function(t){return t.length>0}).join("&"):null;return e?"?"+e:""}function c(t,e,n){var r={name:e.name||t&&t.name,meta:t&&t.meta||{},path:e.path||"/",hash:e.hash||"",query:e.query||{},params:e.params||{},fullPath:l(e),matched:t?u(t):[]};return n&&(r.redirectedFrom=l(n)),Object.freeze(r)}function u(t){for(var e=[];t;)e.unshift(t),t=t.parent;return e}function l(t){var e=t.path,n=t.query;void 0===n&&(n={});var r=t.hash;return void 0===r&&(r=""),(e||"/")+s(n)+r}function f(t,e){return e===Mt?t===e:!!e&&(t.path&&e.path?t.path.replace(It,"")===e.path.replace(It,"")&&t.hash===e.hash&&p(t.query,e.query):!(!t.name||!e.name)&&(t.name===e.name&&t.hash===e.hash&&p(t.query,e.query)&&p(t.params,e.params)))}function p(t,e){void 0===t&&(t={}),void 0===e&&(e={});var n=Object.keys(t),r=Object.keys(e);return n.length===r.length&&n.every(function(n){return String(t[n])===String(e[n])})}function d(t,e){return 0===t.path.replace(It,"/").indexOf(e.path.replace(It,"/"))&&(!e.hash||t.hash===e.hash)&&h(t.query,e.query)}function h(t,e){for(var n in e)if(!(n in t))return!1;return!0}function v(t){if(!(t.metaKey||t.ctrlKey||t.shiftKey||t.defaultPrevented||void 0!==t.button&&0!==t.button)){if(t.target&&t.target.getAttribute){var e=t.target.getAttribute("target");if(/\b_blank\b/i.test(e))return}return t.preventDefault&&t.preventDefault(),!0}}function m(t){if(t)for(var e,n=0;n=0&&(e=t.slice(r),t=t.slice(0,r));var o=t.indexOf("?");return o>=0&&(n=t.slice(o+1),t=t.slice(0,o)),{path:t,query:n,hash:e}}function b(t){return t.replace(/\/\//g,"/")}function w(t,e,n){var r=e||Object.create(null),o=n||Object.create(null);return t.forEach(function(t){x(r,o,t)}),{pathMap:r,nameMap:o}}function x(t,e,n,r,o){var i=n.path,a=n.name,s={path:C(i,r),components:n.components||{default:n.component},instances:{},name:a,parent:r,matchAs:o,redirect:n.redirect,beforeEnter:n.beforeEnter,meta:n.meta||{},props:null==n.props?{}:n.components?n.props:{default:n.props}};if(n.children&&n.children.forEach(function(n){var r=o?b(o+"/"+n.path):void 0;x(t,e,n,s,r)}),void 0!==n.alias)if(Array.isArray(n.alias))n.alias.forEach(function(o){var i={path:o,children:n.children};x(t,e,i,r,s.path)});else{var c={path:n.alias,children:n.children};x(t,e,c,r,s.path)}t[s.path]||(t[s.path]=s),a&&(e[a]||(e[a]=s))}function C(t,e){return t=t.replace(/\/$/,""),"/"===t[0]?t:null==e?t:b(e.path+"/"+t)}function O(t,e){for(var n,r=[],o=0,i=0,a="",s=e&&e.delimiter||"/";null!=(n=Gt.exec(t));){var c=n[0],u=n[1],l=n.index;if(a+=t.slice(i,l),i=l+c.length,u)a+=u[1];else{var f=t[i],p=n[2],d=n[3],h=n[4],v=n[5],m=n[6],y=n[7];a&&(r.push(a),a="");var g=null!=p&&null!=f&&f!==p,_="+"===m||"*"===m,b="?"===m||"*"===m,w=n[2]||s,x=h||v;r.push({name:d||o++,prefix:p||"",delimiter:w,optional:b,repeat:_,partial:g,asterisk:!!y,pattern:x?S(x):y?".*":"[^"+j(w)+"]+?"})}}return i-1&&(r.params[c]=e.params[c]);if(i)return r.path=L(i.path,r.params,'named route "'+o+'"'),a(i,r,n)}else if(r.path){r.params={};for(var f in u)if(F(f,r.params,r.path))return a(u[f],r,n)}return a(null,r)}function o(t,e){var o=t.redirect,i="function"==typeof o?o(c(t,e)):o;if("string"==typeof i&&(i={path:i}),!i||"object"!=typeof i)return a(null,e);var s=i,u=s.name,f=s.path,p=e.query,d=e.hash,h=e.params;if(p=s.hasOwnProperty("query")?s.query:p,d=s.hasOwnProperty("hash")?s.hash:d,h=s.hasOwnProperty("params")?s.params:h,u){l[u];return n({_normalized:!0,name:u,query:p,hash:d,params:h},void 0,e)}if(f){var v=B(f,t),m=L(v,h,'redirect route with path "'+v+'"');return n({_normalized:!0,path:m,query:p,hash:d},void 0,e)}return r(!1,"invalid redirect option: "+JSON.stringify(i)),a(null,e)}function i(t,e,r){var o=L(r,e.params,'aliased route with path "'+r+'"'),i=n({_normalized:!0,path:o});if(i){var s=i.matched,c=s[s.length-1];return e.params=i.params,a(c,e)}return a(null,e)}function a(t,e,n){return t&&t.redirect?o(t,n||e):t&&t.matchAs?i(t,e,t.matchAs):c(t,e,n)}var s=w(t),u=s.pathMap,l=s.nameMap;return{match:n,addRoutes:e}}function F(t,e,n){var r=H(t),o=r.regexp,i=r.keys,a=n.match(o);if(!a)return!1;if(!e)return!0;for(var s=1,c=a.length;s=t.length?n():t[o]?e(t[o],function(){r(o+1)}):r(o+1)};r(0)}function it(t){if(!t)if(Ht){var e=document.querySelector("base");t=e?e.getAttribute("href"):"/"}else t="/";return"/"!==t.charAt(0)&&(t="/"+t),t.replace(/\/$/,"")}function at(t,e){var n,r=Math.max(t.length,e.length);for(n=0;n=0?e:0)+"#"+t)}function kt(t,e,n){var r="hash"===n?"#"+e:e;return t?b(t+"/"+r):r}var At,$t={name:"router-view",functional:!0,props:{name:{type:String,default:"default"}},render:function(t,e){var n=e.props,r=e.children,i=e.parent,a=e.data;a.routerView=!0;for(var s=n.name,c=i.$route,u=i._routerViewCache||(i._routerViewCache={}),l=0,f=!1;i;)i.$vnode&&i.$vnode.data.routerView&&l++,i._inactive&&(f=!0),i=i.$parent;if(a.routerViewDepth=l,f)return t(u[s],a,r);var p=c.matched[l];if(!p)return u[s]=null,t();var d=u[s]=p.components[s],h=a.hook||(a.hook={});return h.init=function(t){p.instances[s]=t.child},h.prepatch=function(t,e){p.instances[s]=e.child},h.destroy=function(t){p.instances[s]===t.child&&(p.instances[s]=void 0)},a.props=o(c,p.props&&p.props[s]),t(d,a,r)}},Et=/[!'()*]/g,jt=function(t){return"%"+t.charCodeAt(0).toString(16)},St=/%2C/g,Tt=function(t){return encodeURIComponent(t).replace(Et,jt).replace(St,",")},Pt=decodeURIComponent,It=/\/?$/,Mt=c(null,{path:"/"}),Dt=[String,Object],Nt=[String,Array],Rt={name:"router-link",props:{to:{type:Dt,required:!0},tag:{type:String,default:"a"},exact:Boolean,append:Boolean,replace:Boolean,activeClass:String,event:{type:Nt,default:"click"}},render:function(t){var e=this,n=this.$router,r=this.$route,o=n.resolve(this.to,r,this.append),i=o.location,a=o.route,s=o.href,u={},l=this.activeClass||n.options.linkActiveClass||"router-link-active",p=i.path?c(null,i):a;u[l]=this.exact?f(r,p):d(r,p);var h=function(t){v(t)&&(e.replace?n.replace(i):n.push(i))},y={click:v};Array.isArray(this.event)?this.event.forEach(function(t){y[t]=h}):y[this.event]=h;var g={class:u};if("a"===this.tag)g.on=y,g.attrs={href:s};else{var _=m(this.$slots.default);if(_){_.isStatic=!1;var b=At.util.extend,w=_.data=b({},_.data);w.on=y;var x=_.data.attrs=b({},_.data.attrs);x.href=s}else g.on=y}return t(this.tag,g,this.$slots.default)}},Ht="undefined"!=typeof window,Lt=Array.isArray||function(t){return"[object Array]"==Object.prototype.toString.call(t)},Ut=Lt,qt=R,Vt=O,Ft=k,Bt=E,zt=N,Gt=new RegExp(["(\\\\.)","([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))"].join("|"),"g");qt.parse=Vt,qt.compile=Ft,qt.tokensToFunction=Bt,qt.tokensToRegExp=zt;var Kt=Object.create(null),Jt=Object.create(null),Wt=Object.create(null),Xt=Ht&&function(){var t=window.navigator.userAgent;return(t.indexOf("Android 2.")===-1&&t.indexOf("Android 4.0")===-1||t.indexOf("Mobile Safari")===-1||t.indexOf("Chrome")!==-1||t.indexOf("Windows Phone")!==-1)&&(window.history&&"pushState"in window.history)}(),Yt=Ht&&window.performance&&window.performance.now?window.performance:Date,Zt=Q(),Qt=function(t,e){this.router=t,this.base=it(e),this.current=Mt,this.pending=null,this.ready=!1,this.readyCbs=[]};Qt.prototype.listen=function(t){this.cb=t},Qt.prototype.onReady=function(t){this.ready?t():this.readyCbs.push(t)},Qt.prototype.transitionTo=function(t,e,n){var r=this,o=this.router.match(t,this.current);this.confirmTransition(o,function(){r.updateRoute(o),e&&e(o),r.ensureURL(),r.ready||(r.ready=!0,r.readyCbs.forEach(function(t){t(o)}))},n)},Qt.prototype.confirmTransition=function(t,e,n){var r=this,o=this.current,i=function(){n&&n()};if(f(t,o)&&t.matched.length===o.matched.length)return this.ensureURL(),i();var a=at(this.current.matched,t.matched),s=a.updated,c=a.deactivated,u=a.activated,l=[].concat(ut(c),this.router.beforeHooks,lt(s),u.map(function(t){return t.beforeEnter}),vt(u));this.pending=t;var p=function(e,n){return r.pending!==t?i():void e(t,o,function(t){t===!1?(r.ensureURL(!0),i()):"string"==typeof t||"object"==typeof t?("object"==typeof t&&t.replace?r.replace(t):r.push(t),i()):n(t)})};ot(l,p,function(){var n=[],o=function(){return r.current===t},a=pt(u,n,o);ot(a,p,function(){return r.pending!==t?i():(r.pending=null,e(t),void(r.router.app&&r.router.app.$nextTick(function(){n.forEach(function(t){return t()})})))})})},Qt.prototype.updateRoute=function(t){var e=this.current;this.current=t,this.cb&&this.cb(t),this.router.afterHooks.forEach(function(n){n&&n(t,e)})};var te=function(t){function e(e,n){var r=this;t.call(this,e,n);var o=e.options.scrollBehavior;o&&z(),window.addEventListener("popstate",function(t){r.transitionTo(_t(r.base),function(t){o&&G(e,t,r.current,!0)})})}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.go=function(t){window.history.go(t)},e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,function(t){nt(b(r.base+t.fullPath)),G(r.router,t,r.current,!1),e&&e(t)},n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,function(t){rt(b(r.base+t.fullPath)),G(r.router,t,r.current,!1),e&&e(t)},n)},e.prototype.ensureURL=function(t){if(_t(this.base)!==this.current.fullPath){var e=b(this.base+this.current.fullPath);t?nt(e):rt(e)}},e.prototype.getCurrentLocation=function(){return _t(this.base)},e}(Qt),ee=function(t){function e(e,n,r){t.call(this,e,n),r&&bt(this.base)||wt()}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.setupListeners=function(){var t=this;window.addEventListener("hashchange",function(){wt()&&t.transitionTo(xt(),function(t){Ot(t.fullPath)})})},e.prototype.push=function(t,e,n){this.transitionTo(t,function(t){Ct(t.fullPath),e&&e(t)},n)},e.prototype.replace=function(t,e,n){this.transitionTo(t,function(t){Ot(t.fullPath),e&&e(t)},n)},e.prototype.go=function(t){window.history.go(t)},e.prototype.ensureURL=function(t){var e=this.current.fullPath;xt()!==e&&(t?Ct(e):Ot(e))},e.prototype.getCurrentLocation=function(){return xt()},e}(Qt),ne=function(t){function e(e,n){t.call(this,e,n),this.stack=[],this.index=-1}return t&&(e.__proto__=t),e.prototype=Object.create(t&&t.prototype),e.prototype.constructor=e,e.prototype.push=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index+1).concat(t),r.index++,e&&e(t)},n)},e.prototype.replace=function(t,e,n){var r=this;this.transitionTo(t,function(t){r.stack=r.stack.slice(0,r.index).concat(t),e&&e(t)},n)},e.prototype.go=function(t){var e=this,n=this.index+t;if(!(n<0||n>=this.stack.length)){var r=this.stack[n];this.confirmTransition(r,function(){e.index=n,e.updateRoute(r)})}},e.prototype.getCurrentLocation=function(){var t=this.stack[this.stack.length-1];return t?t.fullPath:"/"},e.prototype.ensureURL=function(){},e}(Qt),re=function(t){void 0===t&&(t={}),this.app=null,this.apps=[],this.options=t,this.beforeHooks=[],this.afterHooks=[],this.matcher=V(t.routes||[]);var e=t.mode||"hash";switch(this.fallback="history"===e&&!Xt,this.fallback&&(e="hash"),Ht||(e="abstract"),this.mode=e,e){case"history":this.history=new te(this,t.base);break;case"hash":this.history=new ee(this,t.base,this.fallback);break;case"abstract":this.history=new ne(this,t.base)}},oe={currentRoute:{}};re.prototype.match=function(t,e,n){return this.matcher.match(t,e,n)},oe.currentRoute.get=function(){return this.history&&this.history.current},re.prototype.init=function(t){var e=this;if(this.apps.push(t),!this.app){this.app=t;var n=this.history;if(n instanceof te)n.transitionTo(n.getCurrentLocation());else if(n instanceof ee){var r=function(){n.setupListeners()};n.transitionTo(n.getCurrentLocation(),r,r)}n.listen(function(t){e.apps.forEach(function(e){e._route=t})})}},re.prototype.beforeEach=function(t){this.beforeHooks.push(t)},re.prototype.afterEach=function(t){this.afterHooks.push(t)},re.prototype.onReady=function(t){this.history.onReady(t)},re.prototype.push=function(t,e,n){this.history.push(t,e,n)},re.prototype.replace=function(t,e,n){this.history.replace(t,e,n)},re.prototype.go=function(t){this.history.go(t)},re.prototype.back=function(){this.go(-1)},re.prototype.forward=function(){this.go(1)},re.prototype.getMatchedComponents=function(t){var e=t?this.resolve(t).route:this.currentRoute;return e?[].concat.apply([],e.matched.map(function(t){return Object.keys(t.components).map(function(e){return t.components[e]})})):[]},re.prototype.resolve=function(t,e,n){var r=U(t,e||this.history.current,n),o=this.match(r,e),i=o.redirectedFrom||o.fullPath,a=this.history.base,s=kt(a,i,this.mode);return{location:r,route:o,href:s,normalizedTo:r,resolved:o}},re.prototype.addRoutes=function(t){this.matcher.addRoutes(t),this.history.current!==Mt&&this.history.transitionTo(this.history.getCurrentLocation())},Object.defineProperties(re.prototype,oe),re.install=y,re.version="2.2.1",Ht&&window.Vue&&window.Vue.use(re),t.exports=re},function(t,e){function n(t,e){var r={name:t.name,path:t.path,hash:t.hash,query:t.query,params:t.params,fullPath:t.fullPath,meta:t.meta};return e&&(r.from=n(e)),Object.freeze(r)}e.sync=function(t,e,r){var o=(r||{}).moduleName||"route";t.registerModule(o,{state:n(e.currentRoute),mutations:{"router/ROUTE_CHANGED":function(e,r){t.state[o]=n(r.to,r.from)}}});var i,a=!1;t.watch(function(t){return t[o]},function(t){t.fullPath!==i&&(a=!0,i=t.fullPath,e.push(t))},{sync:!0}),e.afterEach(function(e,n){return a?void(a=!1):(i=e.fullPath,void t.commit("router/ROUTE_CHANGED",{to:e,from:n}))})}},function(t,e,n){/** * vuex v2.1.2 * (c) 2017 Evan You * @license MIT */ !function(e,n){t.exports=n()}(this,function(){"use strict";function t(t){w&&(t._devtoolHook=w,w.emit("vuex:init",t),w.on("vuex:travel-to-state",function(e){t.replaceState(e)}),t.subscribe(function(t,e){w.emit("vuex:mutation",t,e)}))}function e(t){return Array.isArray(t)?t.map(function(t){return{key:t,val:t}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}})}function n(t){return function(e,n){return"string"!=typeof e?(n=e,e=""):"/"!==e.charAt(e.length-1)&&(e+="/"),t(e,n)}}function r(t,e,n){var r=t._modulesNamespaceMap[n];return r||console.error("[vuex] module namespace not found in "+e+"(): "+n),r}function o(t,e){Object.keys(t).forEach(function(n){return e(t[n],n)})}function i(t){return null!==t&&"object"==typeof t}function a(t){return t&&"function"==typeof t.then}function s(t,e){if(!t)throw new Error("[vuex] "+e)}function c(t,e){if(t.update(e),e.modules)for(var n in e.modules){if(!t.getChild(n))return void console.warn("[vuex] trying to add a new module '"+n+"' on hot reloading, manual reload is needed");c(t.getChild(n),e.modules[n])}}function u(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var n=t.state;f(t,n,[],t._modules.root,!0),l(t,n,e)}function l(t,e,n){var r=t._vm;t.getters={};var i=t._wrappedGetters,a={};o(i,function(e,n){a[n]=function(){return e(t)},Object.defineProperty(t.getters,n,{get:function(){return t._vm[n]},enumerable:!0})});var s=S.config.silent;S.config.silent=!0,t._vm=new S({data:{state:e},computed:a}),S.config.silent=s,t.strict&&y(t),r&&(n&&t._withCommit(function(){r.state=null}),S.nextTick(function(){return r.$destroy()}))}function f(t,e,n,r,o){var i=!n.length,a=t._modules.getNamespace(n);if(a&&(t._modulesNamespaceMap[a]=r),!i&&!o){var s=g(e,n.slice(0,-1)),c=n[n.length-1];t._withCommit(function(){S.set(s,c,r.state)})}var u=r.context=p(t,a,n);r.forEachMutation(function(e,n){var r=a+n;h(t,r,e,u)}),r.forEachAction(function(e,n){var r=a+n;v(t,r,e,u)}),r.forEachGetter(function(e,n){var r=a+n;m(t,r,e,u)}),r.forEachChild(function(r,i){f(t,e,n.concat(i),r,o)})}function p(t,e,n){var r=""===e,o={dispatch:r?t.dispatch:function(n,r,o){var i=_(n,r,o),a=i.payload,s=i.options,c=i.type;return s&&s.root||(c=e+c,t._actions[c])?t.dispatch(c,a):void console.error("[vuex] unknown local action type: "+i.type+", global type: "+c)},commit:r?t.commit:function(n,r,o){var i=_(n,r,o),a=i.payload,s=i.options,c=i.type;return s&&s.root||(c=e+c,t._mutations[c])?void t.commit(c,a,s):void console.error("[vuex] unknown local mutation type: "+i.type+", global type: "+c)}};return Object.defineProperties(o,{getters:{get:r?function(){return t.getters}:function(){return d(t,e)}},state:{get:function(){return g(t.state,n)}}}),o}function d(t,e){var n={},r=e.length;return Object.keys(t.getters).forEach(function(o){if(o.slice(0,r)===e){var i=o.slice(r);Object.defineProperty(n,i,{get:function(){return t.getters[o]},enumerable:!0})}}),n}function h(t,e,n,r){var o=t._mutations[e]||(t._mutations[e]=[]);o.push(function(t){n(r.state,t)})}function v(t,e,n,r){var o=t._actions[e]||(t._actions[e]=[]);o.push(function(e,o){var i=n({dispatch:r.dispatch,commit:r.commit,getters:r.getters,state:r.state,rootGetters:t.getters,rootState:t.state},e,o);return a(i)||(i=Promise.resolve(i)),t._devtoolHook?i.catch(function(e){throw t._devtoolHook.emit("vuex:error",e),e}):i})}function m(t,e,n,r){return t._wrappedGetters[e]?void console.error("[vuex] duplicate getter key: "+e):void(t._wrappedGetters[e]=function(t){return n(r.state,r.getters,t.state,t.getters)})}function y(t){t._vm.$watch("state",function(){s(t._committing,"Do not mutate vuex store state outside mutation handlers.")},{deep:!0,sync:!0})}function g(t,e){return e.length?e.reduce(function(t,e){return t[e]},t):t}function _(t,e,n){return i(t)&&t.type&&(n=e,e=t,t=t.type),s("string"==typeof t,"Expects string as the type, but found "+typeof t+"."),{type:t,payload:e,options:n}}function b(t){return S?void console.error("[vuex] already installed. Vue.use(Vuex) should be called only once."):(S=t,void x(S))}var w="undefined"!=typeof window&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,x=function(t){function e(){var t=this.$options;t.store?this.$store=t.store:t.parent&&t.parent.$store&&(this.$store=t.parent.$store)}var n=Number(t.version.split(".")[0]);if(n>=2){var r=t.config._lifecycleHooks.indexOf("init")>-1;t.mixin(r?{init:e}:{beforeCreate:e})}else{var o=t.prototype._init;t.prototype._init=function(t){void 0===t&&(t={}),t.init=t.init?[e].concat(t.init):e,o.call(this,t)}}},C=n(function(t,n){var o={};return e(n).forEach(function(e){var n=e.key,i=e.val;o[n]=function(){var e=this.$store.state,n=this.$store.getters;if(t){var o=r(this.$store,"mapState",t);if(!o)return;e=o.context.state,n=o.context.getters}return"function"==typeof i?i.call(this,e,n):e[i]}}),o}),O=n(function(t,n){var o={};return e(n).forEach(function(e){var n=e.key,i=e.val;i=t+i,o[n]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(!t||r(this.$store,"mapMutations",t))return this.$store.commit.apply(this.$store,[i].concat(e))}}),o}),k=n(function(t,n){var o={};return e(n).forEach(function(e){var n=e.key,i=e.val;i=t+i,o[n]=function(){if(!t||r(this.$store,"mapGetters",t))return i in this.$store.getters?this.$store.getters[i]:void console.error("[vuex] unknown getter: "+i)}}),o}),A=n(function(t,n){var o={};return e(n).forEach(function(e){var n=e.key,i=e.val;i=t+i,o[n]=function(){for(var e=[],n=arguments.length;n--;)e[n]=arguments[n];if(!t||r(this.$store,"mapActions",t))return this.$store.dispatch.apply(this.$store,[i].concat(e))}}),o}),$=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t},E={state:{},namespaced:{}};E.state.get=function(){return this._rawModule.state||{}},E.namespaced.get=function(){return!!this._rawModule.namespaced},$.prototype.addChild=function(t,e){this._children[t]=e},$.prototype.removeChild=function(t){delete this._children[t]},$.prototype.getChild=function(t){return this._children[t]},$.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},$.prototype.forEachChild=function(t){o(this._children,t)},$.prototype.forEachGetter=function(t){this._rawModule.getters&&o(this._rawModule.getters,t)},$.prototype.forEachAction=function(t){this._rawModule.actions&&o(this._rawModule.actions,t)},$.prototype.forEachMutation=function(t){this._rawModule.mutations&&o(this._rawModule.mutations,t)},Object.defineProperties($.prototype,E);var j=function(t){var e=this;this.root=new $(t,!1),t.modules&&o(t.modules,function(t,n){e.register([n],t,!1)})};j.prototype.get=function(t){return t.reduce(function(t,e){return t.getChild(e)},this.root)},j.prototype.getNamespace=function(t){var e=this.root;return t.reduce(function(t,n){return e=e.getChild(n),t+(e.namespaced?n+"/":"")},"")},j.prototype.update=function(t){c(this.root,t)},j.prototype.register=function(t,e,n){var r=this;void 0===n&&(n=!0);var i=this.get(t.slice(0,-1)),a=new $(e,n);i.addChild(t[t.length-1],a),e.modules&&o(e.modules,function(e,o){r.register(t.concat(o),e,n)})},j.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),n=t[t.length-1];e.getChild(n).runtime&&e.removeChild(n)};var S,T=function(e){var n=this;void 0===e&&(e={}),s(S,"must call Vue.use(Vuex) before creating a store instance."),s("undefined"!=typeof Promise,"vuex requires a Promise polyfill in this browser.");var r=e.state;void 0===r&&(r={});var o=e.plugins;void 0===o&&(o=[]);var i=e.strict;void 0===i&&(i=!1),this._committing=!1,this._actions=Object.create(null),this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new j(e),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._watcherVM=new S;var a=this,c=this,u=c.dispatch,p=c.commit;this.dispatch=function(t,e){return u.call(a,t,e)},this.commit=function(t,e,n){return p.call(a,t,e,n)},this.strict=i,f(this,r,[],this._modules.root),l(this,r),o.concat(t).forEach(function(t){return t(n)})},P={state:{}};P.state.get=function(){return this._vm.$data.state},P.state.set=function(t){s(!1,"Use store.replaceState() to explicit replace store state.")},T.prototype.commit=function(t,e,n){var r=this,o=_(t,e,n),i=o.type,a=o.payload,s=o.options,c={type:i,payload:a},u=this._mutations[i];return u?(this._withCommit(function(){u.forEach(function(t){t(a)})}),this._subscribers.forEach(function(t){return t(c,r.state)}),void(s&&s.silent&&console.warn("[vuex] mutation type: "+i+". Silent option has been removed. Use the filter functionality in the vue-devtools"))):void console.error("[vuex] unknown mutation type: "+i)},T.prototype.dispatch=function(t,e){var n=_(t,e),r=n.type,o=n.payload,i=this._actions[r];return i?i.length>1?Promise.all(i.map(function(t){return t(o)})):i[0](o):void console.error("[vuex] unknown action type: "+r)},T.prototype.subscribe=function(t){var e=this._subscribers;return e.indexOf(t)<0&&e.push(t),function(){var n=e.indexOf(t);n>-1&&e.splice(n,1)}},T.prototype.watch=function(t,e,n){var r=this;return s("function"==typeof t,"store.watch only accepts a function."),this._watcherVM.$watch(function(){return t(r.state,r.getters)},e,n)},T.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._vm.state=t})},T.prototype.registerModule=function(t,e){"string"==typeof t&&(t=[t]),s(Array.isArray(t),"module path must be a string or an Array."),this._modules.register(t,e),f(this,this.state,t,this._modules.get(t)),l(this,this.state)},T.prototype.unregisterModule=function(t){var e=this;"string"==typeof t&&(t=[t]),s(Array.isArray(t),"module path must be a string or an Array."),this._modules.unregister(t),this._withCommit(function(){var n=g(e.state,t.slice(0,-1));S.delete(n,t[t.length-1])}),u(this)},T.prototype.hotUpdate=function(t){this._modules.update(t),u(this,!0)},T.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(T.prototype,P),"undefined"!=typeof window&&window.Vue&&b(window.Vue);var I={Store:T,install:b,version:"2.1.2",mapState:C,mapMutations:O,mapGetters:k,mapActions:A};return I})},function(t,e,n){t.exports=n(3)}]); ================================================ FILE: public/client/login.js ================================================ !function(e){function t(e){delete installedChunks[e]}function n(e){var t=document.getElementsByTagName("head")[0],n=document.createElement("script");n.type="text/javascript",n.charset="utf-8",n.src=p.p+""+e+"."+g+".hot-update.js",t.appendChild(n)}function r(){return new Promise(function(e,t){if("undefined"==typeof XMLHttpRequest)return t(new Error("No browser support"));try{var n=new XMLHttpRequest,r=p.p+""+g+".hot-update.json";n.open("GET",r,!0),n.timeout=1e4,n.send(null)}catch(e){return t(e)}n.onreadystatechange=function(){if(4===n.readyState)if(0===n.status)t(new Error("Manifest request to "+r+" timed out."));else if(404===n.status)e();else if(200!==n.status&&304!==n.status)t(new Error("Manifest request to "+r+" failed."));else{try{var o=JSON.parse(n.responseText)}catch(e){return void t(e)}e(o)}}})}function o(e){var t=I[e];if(!t)return p;var n=function(n){return t.hot.active?(I[n]?I[n].parents.indexOf(e)<0&&I[n].parents.push(e):C=[e],t.children.indexOf(n)<0&&t.children.push(n)):(console.warn("[HMR] unexpected require("+n+") from disposed module "+e),C=[]),w=!1,p(n)},r=function(e){return{configurable:!0,enumerable:!0,get:function(){return p[e]},set:function(t){p[e]=t}}};for(var o in p)Object.prototype.hasOwnProperty.call(p,o)&&Object.defineProperty(n,o,r(o));return Object.defineProperty(n,"e",{enumerable:!0,value:function(e){function t(){$--,"prepare"===k&&(E[e]||l(e),0===$&&0===A&&d())}return"ready"===k&&a("prepare"),$++,p.e(e).then(t,function(e){throw t(),e})}}),n}function i(e){var t={_acceptedDependencies:{},_declinedDependencies:{},_selfAccepted:!1,_selfDeclined:!1,_disposeHandlers:[],_main:w,active:!0,accept:function(e,n){if("undefined"==typeof e)t._selfAccepted=!0;else if("function"==typeof e)t._selfAccepted=e;else if("object"==typeof e)for(var r=0;r=0&&t._disposeHandlers.splice(n,1)},check:c,apply:f,status:function(e){return e?void O.push(e):k},addStatusHandler:function(e){O.push(e)},removeStatusHandler:function(e){var t=O.indexOf(e);t>=0&&O.splice(t,1)},data:b[e]};return w=!0,t}function a(e){k=e;for(var t=0;t0;){var i=r.pop(),a=i.id,s=i.chain;if(l=I[a],l&&!l.hot._selfAccepted){if(l.hot._selfDeclined)return{type:"self-declined",chain:s,moduleId:a};if(l.hot._main)return{type:"unaccepted",chain:s,moduleId:a};for(var c=0;c=0||(d.hot._acceptedDependencies[a]?(n[u]||(n[u]=[]),o(n[u],[a])):(delete n[u],t.push(u),r.push({chain:s.concat([u]),id:u})))}}}}return{type:"accepted",moduleId:e,outdatedModules:t,outdatedDependencies:n}}function o(e,t){for(var n=0;n ")),x.type){case"self-declined":n.onDeclined&&n.onDeclined(x),n.ignoreDeclined||(O=new Error("Aborted because of self decline: "+x.moduleId+E));break;case"declined":n.onDeclined&&n.onDeclined(x),n.ignoreDeclined||(O=new Error("Aborted because of declined dependency: "+x.moduleId+" in "+x.parentId+E));break;case"unaccepted":n.onUnaccepted&&n.onUnaccepted(x),n.ignoreUnaccepted||(O=new Error("Aborted because "+d+" is not accepted"+E));break;case"accepted":n.onAccepted&&n.onAccepted(x),A=!0;break;case"disposed":n.onDisposed&&n.onDisposed(x),$=!0;break;default:throw new Error("Unexception type "+x.type)}if(O)return a("abort"),Promise.reject(O);if(A){h[d]=m[d],o(v,x.outdatedModules);for(d in x.outdatedDependencies)Object.prototype.hasOwnProperty.call(x.outdatedDependencies,d)&&(f[d]||(f[d]=[]),o(f[d],x.outdatedDependencies[d]))}$&&(o(v,[x.moduleId]),h[d]=_)}var j=[];for(c=0;c0;)if(d=T.pop(),l=I[d]){var P={},M=l.hot._disposeHandlers;for(u=0;u=0&&N.parents.splice(D,1))}}var L,H;for(d in f)if(Object.prototype.hasOwnProperty.call(f,d)&&(l=I[d]))for(H=f[d],u=0;u=0&&l.children.splice(D,1);a("apply"),g=y;for(d in h)Object.prototype.hasOwnProperty.call(h,d)&&(e[d]=h[d]);var U=null;for(d in f)if(Object.prototype.hasOwnProperty.call(f,d)){l=I[d],H=f[d];var R=[];for(c=0;c=0||R.push(i);for(c=0;c-1)return e.splice(n,1)}}function a(e,t){return xn.call(e,t)}function s(e){return"string"==typeof e||"number"==typeof e}function c(e){var t=Object.create(null);return function(n){var r=t[n];return r||(t[n]=e(n))}}function u(e,t){function n(n){var r=arguments.length;return r?r>1?e.apply(t,arguments):e.call(t,n):e.call(t)}return n._length=e.length,n}function l(e,t){t=t||0;for(var n=e.length-t,r=new Array(n);n--;)r[n]=e[n+t];return r}function d(e,t){for(var n in t)e[n]=t[n];return e}function f(e){return null!==e&&"object"==typeof e}function p(e){return jn.call(e)===Sn}function v(e){for(var t={},n=0;n1?l(n):n;for(var r=l(arguments,1),o=0,i=n.length;o=0&&hr[n].id>e.id;)n--;hr.splice(Math.max(n,gr)+1,0,e)}else hr.push(e);yr||(yr=!0,zn(Ae))}}function Ee(e){Cr.clear(),je(e,Cr)}function je(e,t){var n,r,o=Array.isArray(e);if((o||f(e))&&Object.isExtensible(e)){if(e.__ob__){var i=e.__ob__.dep.id;if(t.has(i))return;t.add(i)}if(o)for(n=e.length;n--;)je(e[n],t);else for(r=Object.keys(e),n=r.length;n--;)je(e[r[n]],t)}}function Se(e){e._watchers=[];var t=e.$options;t.props&&Ie(e,t.props),t.methods&&Me(e,t.methods),t.data?De(e):$(e._data={},!0),t.computed&&Te(e,t.computed),t.watch&&Ne(e,t.watch)}function Ie(e,t){var n=e.$options.propsData||{},r=e.$options._propKeys=Object.keys(t),o=!e.$parent;er.shouldConvert=o;for(var i=function(o){var i=r[o];E(e,i,U(i,t,n,e))},a=0;a-1:e.test(t)}function Xe(e,t){for(var n in e){var r=e[n];if(r){var o=Je(r.componentOptions);o&&!t(o)&&(Ze(r),e[n]=null)}}}function Ze(e){e&&(e.componentInstance._inactive||Oe(e.componentInstance,"deactivated"),e.componentInstance.$destroy())}function Qe(e){var t={};t.get=function(){return Tn},Object.defineProperty(e,"config",t),e.util=or,e.set=j,e.delete=S,e.nextTick=zn,e.options=Object.create(null),Tn._assetTypes.forEach(function(t){e.options[t+"s"]=Object.create(null)}),e.options._base=e,d(e.options.components,$r),qe(e),ze(e),Ke(e),We(e)}function Ye(e){for(var t=e.data,n=e,r=e;r.componentInstance;)r=r.componentInstance._vnode,r.data&&(t=et(r.data,t));for(;n=n.parent;)n.data&&(t=et(t,n.data));return tt(t)}function et(e,t){return{staticClass:nt(e.staticClass,t.staticClass),class:e.class?[e.class,t.class]:t.class}}function tt(e){var t=e.class,n=e.staticClass;return n||t?nt(n,rt(t)):""}function nt(e,t){return e?t?e+" "+t:e:t||""}function rt(e){var t="";if(!e)return t;if("string"==typeof e)return e;if(Array.isArray(e)){for(var n,r=0,o=e.length;r-1?Fr[e]=t.constructor===window.HTMLUnknownElement||t.constructor===window.HTMLElement:Fr[e]=/HTMLUnknownElement/.test(t.toString())}function at(e){if("string"==typeof e){if(e=document.querySelector(e),!e)return document.createElement("div")}return e}function st(e,t){var n=document.createElement(e);return"select"!==e?n:(t.data&&t.data.attrs&&"multiple"in t.data.attrs&&n.setAttribute("multiple","multiple"),n)}function ct(e,t){return document.createElementNS(Hr[e],t)}function ut(e){return document.createTextNode(e)}function lt(e){return document.createComment(e)}function dt(e,t,n){e.insertBefore(t,n)}function ft(e,t){e.removeChild(t)}function pt(e,t){e.appendChild(t)}function vt(e){return e.parentNode}function ht(e){return e.nextSibling}function mt(e){return e.tagName}function yt(e,t){e.textContent=t}function _t(e,t,n){e.setAttribute(t,n)}function gt(e,t){var n=e.data.ref;if(n){var r=e.context,o=e.componentInstance||e.elm,a=r.$refs;t?Array.isArray(a[n])?i(a[n],o):a[n]===o&&(a[n]=void 0):e.data.refInFor?Array.isArray(a[n])&&a[n].indexOf(o)<0?a[n].push(o):a[n]=[o]:a[n]=o}}function bt(e){return null==e}function wt(e){return null!=e}function Ct(e,t){return e.key===t.key&&e.tag===t.tag&&e.isComment===t.isComment&&!e.data==!t.data}function xt(e,t,n){var r,o,i={};for(r=t;r<=n;++r)o=e[r].key,wt(o)&&(i[o]=r);return i}function Ot(e){function t(e){return new ir($.tagName(e).toLowerCase(),{},[],void 0,e)}function n(e,t){function n(){0===--n.listeners&&r(e)}return n.listeners=t,n}function r(e){var t=$.parentNode(e);t&&$.removeChild(t,e)}function i(e,t,n,r,o){if(e.isRootInsert=!o,!a(e,t,n,r)){var i=e.data,s=e.children,c=e.tag;wt(c)?(e.elm=e.ns?$.createElementNS(e.ns,c):$.createElement(c,e),v(e),d(e,s,t),wt(i)&&p(e,t),l(n,e.elm,r)):e.isComment?(e.elm=$.createComment(e.text),l(n,e.elm,r)):(e.elm=$.createTextNode(e.text),l(n,e.elm,r))}}function a(e,t,n,r){var o=e.data;if(wt(o)){var i=wt(e.componentInstance)&&o.keepAlive;if(wt(o=o.hook)&&wt(o=o.init)&&o(e,!1,n,r),wt(e.componentInstance))return c(e,t),i&&u(e,t,n,r),!0}}function c(e,t){e.data.pendingInsert&&t.push.apply(t,e.data.pendingInsert),e.elm=e.componentInstance.$el,f(e)?(p(e,t),v(e)):(gt(e),t.push(e))}function u(e,t,n,r){for(var o,i=e;i.componentInstance;)if(i=i.componentInstance._vnode,wt(o=i.data)&&wt(o=o.transition)){for(o=0;of?(u=bt(n[m+1])?null:n[m+1].elm,h(e,u,n,d,m,r)):d>m&&y(e,t,l,f)}function b(e,t,n,r){if(e!==t){if(t.isStatic&&e.isStatic&&t.key===e.key&&(t.isCloned||t.isOnce))return t.elm=e.elm,void(t.componentInstance=e.componentInstance);var o,i=t.data,a=wt(i);a&&wt(o=i.hook)&&wt(o=o.prepatch)&&o(e,t);var s=t.elm=e.elm,c=e.children,u=t.children;if(a&&f(t)){for(o=0;o-1?t.split(/\s+/).forEach(function(t){return e.classList.add(t)}):e.classList.add(t);else{var n=" "+e.getAttribute("class")+" ";n.indexOf(" "+t+" ")<0&&e.setAttribute("class",(n+t).trim())}}function zt(e,t){if(t&&t.trim())if(e.classList)t.indexOf(" ")>-1?t.split(/\s+/).forEach(function(t){return e.classList.remove(t)}):e.classList.remove(t);else{for(var n=" "+e.getAttribute("class")+" ",r=" "+t+" ";n.indexOf(r)>=0;)n=n.replace(r," ");e.setAttribute("class",n.trim())}}function Kt(e){ho(function(){ho(e)})}function Wt(e,t){(e._transitionClasses||(e._transitionClasses=[])).push(t),qt(e,t)}function Jt(e,t){e._transitionClasses&&i(e._transitionClasses,t),zt(e,t)}function Gt(e,t,n){var r=Xt(e,t),o=r.type,i=r.timeout,a=r.propCount;if(!o)return n();var s=o===co?fo:vo,c=0,u=function(){e.removeEventListener(s,l),n()},l=function(t){t.target===e&&++c>=a&&u()};setTimeout(function(){c0&&(n=co,l=a,d=i.length):t===uo?u>0&&(n=uo,l=u,d=c.length):(l=Math.max(a,u),n=l>0?a>u?co:uo:null,d=n?n===co?i.length:c.length:0);var f=n===co&&mo.test(r[lo+"Property"]);return{type:n,timeout:l,propCount:d,hasTransform:f}}function Zt(e,t){for(;e.length1,D=n._enterCb=nn(function(){S&&(Jt(n,k),Jt(n,O)),D.cancelled?(S&&Jt(n,x),j&&j(n)):E&&E(n),n._enterCb=null});e.data.show||oe(e.data.hook||(e.data.hook={}),"insert",function(){var t=n.parentNode,r=t&&t._pending&&t._pending[e.key];r&&r.tag===e.tag&&r.elm._leaveCb&&r.elm._leaveCb(),$&&$(n,D)},"transition-insert"),A&&A(n),S&&(Wt(n,x),Wt(n,O),Kt(function(){Wt(n,k),Jt(n,x),D.cancelled||I||Gt(n,i,D)})),e.data.show&&(t&&t(),$&&$(n,D)),S||I||D()}}}function en(e,t){function n(){y.cancelled||(e.data.show||((r.parentNode._pending||(r.parentNode._pending={}))[e.key]=e),l&&l(r),h&&(Wt(r,s),Wt(r,u),Kt(function(){Wt(r,c),Jt(r,s),y.cancelled||m||Gt(r,a,y)})),d&&d(r,y),h||m||y())}var r=e.elm;r._enterCb&&(r._enterCb.cancelled=!0,r._enterCb());var o=tn(e.data.transition);if(!o)return t();if(!r._leaveCb&&1===r.nodeType){var i=o.css,a=o.type,s=o.leaveClass,c=o.leaveToClass,u=o.leaveActiveClass,l=o.beforeLeave,d=o.leave,f=o.afterLeave,p=o.leaveCancelled,v=o.delayLeave,h=i!==!1&&!Un,m=d&&(d._length||d.length)>1,y=r._leaveCb=nn(function(){r.parentNode&&r.parentNode._pending&&(r.parentNode._pending[e.key]=null),h&&(Jt(r,c),Jt(r,u)),y.cancelled?(h&&Jt(r,s),p&&p(r)):(t(),f&&f(r)),r._leaveCb=null});v?v(n):n()}}function tn(e){if(e){if("object"==typeof e){var t={};return e.css!==!1&&d(t,yo(e.name||"v")),d(t,e),t}return"string"==typeof e?yo(e):void 0}}function nn(e){var t=!1;return function(){t||(t=!0,e())}}function rn(e,t){t.data.show||Yt(t)}function on(e,t,n){var r=t.value,o=e.multiple;if(!o||Array.isArray(r)){for(var i,a,s=0,c=e.options.length;s-1,a.selected!==i&&(a.selected=i);else if(y(sn(a),r))return void(e.selectedIndex!==s&&(e.selectedIndex=s));o||(e.selectedIndex=-1)}}function an(e,t){for(var n=0,r=t.length;n0,Rn=Ln&&Ln.indexOf("edge/")>0,Bn=Ln&&Ln.indexOf("android")>0,Fn=Ln&&/iphone|ipad|ipod|ios/.test(Ln),Vn=function(){return void 0===bn&&(bn=!Nn&&"undefined"!=typeof t&&"server"===t.process.env.VUE_ENV),bn},qn=Nn&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,zn=function(){function e(){r=!1;var e=n.slice(0);n.length=0;for(var t=0;t1&&(t[n[0].trim()]=n[1].trim())}}),t}),to=/^--/,no=/\s*!important$/,ro=function(e,t,n){to.test(t)?e.style.setProperty(t,n):no.test(n)?e.style.setProperty(t,n.replace(no,""),"important"):e.style[io(t)]=n},oo=["Webkit","Moz","ms"],io=c(function(e){if(jr=jr||document.createElement("div"),e=kn(e),"filter"!==e&&e in jr.style)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=0;n${style.css}` } return css } /***/ }), /* 3 */ /***/ (function(module, exports) { module.exports = require("vue"); /***/ }), /* 4 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__.p + "file/ionicons.eot"; /***/ }), /* 5 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__app__ = __webpack_require__(6); var isDev = "production" !== 'production'; // This exported function will be called by `bundleRenderer`. // This is where we perform data-prefetching to determine the // state of our application before actually rendering it. // Since data fetching is async, this function is expected to // return a Promise that resolves to the app instance. /* harmony default export */ __webpack_exports__["default"] = function (context) { // set router's location __WEBPACK_IMPORTED_MODULE_0__app__["a" /* router */].push(context.url); var s = isDev && Date.now(); // Call preFetch hooks on components matched by the route. // A preFetch hook dispatches a store action and returns a Promise, // which is resolved when the action is complete and store state has been // updated. return Promise.all(__WEBPACK_IMPORTED_MODULE_0__app__["a" /* router */].getMatchedComponents().map(function (component) { if (component.preFetch) { return component.preFetch(__WEBPACK_IMPORTED_MODULE_0__app__["b" /* store */]); } })).then(function () { isDev && console.log('data pre-fetch: ' + (Date.now() - s) + 'ms'); // After all preFetch hooks are resolved, our store is now // filled with the state needed to render the app. // Expose the state on the render context, and let the request handler // inline the state in the HTML response. This allows the client-side // store to pick-up the server-side state without having to duplicate // the initial data fetching on the client. context.initialState = __WEBPACK_IMPORTED_MODULE_0__app__["b" /* store */].state; return __WEBPACK_IMPORTED_MODULE_0__app__["c" /* app */]; }); }; /***/ }), /* 6 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__store__ = __webpack_require__(8); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__router__ = __webpack_require__(7); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__App_vue__ = __webpack_require__(22); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__App_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_3__App_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vuex_router_sync__ = __webpack_require__(43); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_4_vuex_router_sync___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_4_vuex_router_sync__); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return __WEBPACK_IMPORTED_MODULE_2__router__["a"]; }); /* harmony reexport (binding) */ __webpack_require__.d(__webpack_exports__, "b", function() { return __WEBPACK_IMPORTED_MODULE_1__store__["a"]; }); /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "c", function() { return app; }); var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; __webpack_require__.i(__WEBPACK_IMPORTED_MODULE_4_vuex_router_sync__["sync"])(__WEBPACK_IMPORTED_MODULE_1__store__["a" /* default */], __WEBPACK_IMPORTED_MODULE_2__router__["a" /* default */]); var app = new __WEBPACK_IMPORTED_MODULE_0_vue___default.a(_extends({ store: __WEBPACK_IMPORTED_MODULE_1__store__["a" /* default */], router: __WEBPACK_IMPORTED_MODULE_2__router__["a" /* default */] }, __WEBPACK_IMPORTED_MODULE_3__App_vue___default.a)); /***/ }), /* 7 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_router__ = __webpack_require__(41); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vue_router___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vue_router__); __WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_1_vue_router___default.a); var Home = __webpack_require__(26); var Article = __webpack_require__(25); var Tag = __webpack_require__(28); var Login = __webpack_require__(27); var router = new __WEBPACK_IMPORTED_MODULE_1_vue_router___default.a({ mode: 'history', scrollBehavior: function scrollBehavior(to, from, savedPosition) { return { x: 0, y: 0 }; }, routes: [{ path: '/', redirect: '/home' }, { path: '/home', name: 'home', component: Home }, { path: '/article', name: 'article', component: Article }, { path: '/tag', name: 'tag', component: Tag }, { path: '/login', name: 'login', component: Login }] }); router.beforeEach(function (to, from, next) { router.app.$store.dispatch('hideHeaderNav'); next(); }); /* harmony default export */ __webpack_exports__["a"] = router; /***/ }), /* 8 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue__ = __webpack_require__(3); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0_vue__); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vuex__ = __webpack_require__(42); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_1_vuex___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_1_vuex__); __WEBPACK_IMPORTED_MODULE_0_vue___default.a.use(__WEBPACK_IMPORTED_MODULE_1_vuex___default.a); // import { // getUser, // userLogout, // queryArticleById // } from '../api' var state = { HeaderNav: { show: false, navs: [{ text: '首页', route: { name: 'home' } }, { text: '文章', route: { name: 'article' } }, { text: '标签', route: { name: 'tag' } }] } }; var mutations = { SET_HEADER_NAV: function SET_HEADER_NAV(state, active) { state.HeaderNav.show = active; } }; var actions = { // for mobile nav showHeaderNav: function showHeaderNav(_ref) { var commit = _ref.commit; commit('SET_HEADER_NAV', true); }, hideHeaderNav: function hideHeaderNav(_ref2) { var commit = _ref2.commit; commit('SET_HEADER_NAV', false); } }; var getters = { HeaderNav: function HeaderNav(state) { return state.HeaderNav; } }; var store = new __WEBPACK_IMPORTED_MODULE_1_vuex___default.a.Store({ state: state, getters: getters, actions: actions, mutations: mutations }); /* harmony default export */ __webpack_exports__["a"] = store; /***/ }), /* 9 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_Header_vue__ = __webpack_require__(23); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_Header_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_Header_vue__); // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ __webpack_exports__["default"] = { components: { umHeader: __WEBPACK_IMPORTED_MODULE_0__components_Header_vue___default.a } }; /***/ }), /* 10 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ __webpack_exports__["default"] = { data: function data() { return { button: { signIn: { show: true, state: 'success', line: false, loading: false }, signUp: { show: true, state: 'success', line: true, loading: false } } }; }, computed: { HeaderNav: function HeaderNav() { return this.$store.getters.HeaderNav; }, User: function User() { return this.$store.getters.User; } }, mounted: function mounted() { window.addEventListener('resize', this.checkMobile); }, methods: { checkMobile: function checkMobile() { if (window.innerWidth > 800) { this.$store.dispatch('hideHeaderNav'); } }, toggleMNav: function toggleMNav() { if (this.HeaderNav.show) { this.$store.dispatch('hideHeaderNav'); } else { this.$store.dispatch('showHeaderNav'); } } } }; /***/ }), /* 11 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // // // // // // // // // // // // /* harmony default export */ __webpack_exports__["default"] = { name: 'Article', serverCacheKey: function serverCacheKey() { return 'tag'; } }; /***/ }), /* 12 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_compA_vue__ = __webpack_require__(24); /* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__components_compA_vue___default = __webpack_require__.n(__WEBPACK_IMPORTED_MODULE_0__components_compA_vue__); // // // // // // // // // // // /* harmony default export */ __webpack_exports__["default"] = { name: 'Home', serverCacheKey: function serverCacheKey() { return 'home'; }, data: function data() { return { list: ['test', '233'] }; }, components: { compA: __WEBPACK_IMPORTED_MODULE_0__components_compA_vue___default.a }, methods: { addOne: function addOne() { this.list.push('233'); } } }; /***/ }), /* 13 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // // // // // // /* harmony default export */ __webpack_exports__["default"] = { name: 'Login', serverCacheKey: function serverCacheKey() { return 'login'; }, methods: { refresh: function refresh() { location.reload(); } } }; /***/ }), /* 14 */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; Object.defineProperty(__webpack_exports__, "__esModule", { value: true }); // // // // // // // /* harmony default export */ __webpack_exports__["default"] = { name: 'Tag', serverCacheKey: function serverCacheKey() { return 'tag'; } }; /***/ }), /* 15 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(1)(); // imports // module exports.push([module.i, "@charset \"UTF-8\";\n/*!\n Ionicons, v2.0.1\n Created by Ben Sperry for the Ionic Framework, http://ionicons.com/\n https://twitter.com/benjsperry https://twitter.com/ionicframework\n MIT License: https://github.com/driftyco/ionicons\n\n Android-style icons originally built by Google’s\n Material Design Icons: https://github.com/google/material-design-icons\n used under CC BY http://creativecommons.org/licenses/by/4.0/\n Modified icons to fit ionicon’s grid from original.\n*/@font-face{font-family:Ionicons;src:url(" + __webpack_require__(4) + ");src:url(" + __webpack_require__(4) + "#iefix) format(\"embedded-opentype\"),url(" + __webpack_require__(20) + ") format(\"truetype\"),url(" + __webpack_require__(21) + ") format(\"woff\"),url(" + __webpack_require__(19) + "#Ionicons) format(\"svg\");font-weight:400;font-style:normal}.ion,.ion-alert-circled:before,.ion-alert:before,.ion-android-add-circle:before,.ion-android-add:before,.ion-android-alarm-clock:before,.ion-android-alert:before,.ion-android-apps:before,.ion-android-archive:before,.ion-android-arrow-back:before,.ion-android-arrow-down:before,.ion-android-arrow-dropdown-circle:before,.ion-android-arrow-dropdown:before,.ion-android-arrow-dropleft-circle:before,.ion-android-arrow-dropleft:before,.ion-android-arrow-dropright-circle:before,.ion-android-arrow-dropright:before,.ion-android-arrow-dropup-circle:before,.ion-android-arrow-dropup:before,.ion-android-arrow-forward:before,.ion-android-arrow-up:before,.ion-android-attach:before,.ion-android-bar:before,.ion-android-bicycle:before,.ion-android-boat:before,.ion-android-bookmark:before,.ion-android-bulb:before,.ion-android-bus:before,.ion-android-calendar:before,.ion-android-call:before,.ion-android-camera:before,.ion-android-cancel:before,.ion-android-car:before,.ion-android-cart:before,.ion-android-chat:before,.ion-android-checkbox-blank:before,.ion-android-checkbox-outline-blank:before,.ion-android-checkbox-outline:before,.ion-android-checkbox:before,.ion-android-checkmark-circle:before,.ion-android-clipboard:before,.ion-android-close:before,.ion-android-cloud-circle:before,.ion-android-cloud-done:before,.ion-android-cloud-outline:before,.ion-android-cloud:before,.ion-android-color-palette:before,.ion-android-compass:before,.ion-android-contact:before,.ion-android-contacts:before,.ion-android-contract:before,.ion-android-create:before,.ion-android-delete:before,.ion-android-desktop:before,.ion-android-document:before,.ion-android-done-all:before,.ion-android-done:before,.ion-android-download:before,.ion-android-drafts:before,.ion-android-exit:before,.ion-android-expand:before,.ion-android-favorite-outline:before,.ion-android-favorite:before,.ion-android-film:before,.ion-android-folder-open:before,.ion-android-folder:before,.ion-android-funnel:before,.ion-android-globe:before,.ion-android-hand:before,.ion-android-hangout:before,.ion-android-happy:before,.ion-android-home:before,.ion-android-image:before,.ion-android-laptop:before,.ion-android-list:before,.ion-android-locate:before,.ion-android-lock:before,.ion-android-mail:before,.ion-android-map:before,.ion-android-menu:before,.ion-android-microphone-off:before,.ion-android-microphone:before,.ion-android-more-horizontal:before,.ion-android-more-vertical:before,.ion-android-navigate:before,.ion-android-notifications-none:before,.ion-android-notifications-off:before,.ion-android-notifications:before,.ion-android-open:before,.ion-android-options:before,.ion-android-people:before,.ion-android-person-add:before,.ion-android-person:before,.ion-android-phone-landscape:before,.ion-android-phone-portrait:before,.ion-android-pin:before,.ion-android-plane:before,.ion-android-playstore:before,.ion-android-print:before,.ion-android-radio-button-off:before,.ion-android-radio-button-on:before,.ion-android-refresh:before,.ion-android-remove-circle:before,.ion-android-remove:before,.ion-android-restaurant:before,.ion-android-sad:before,.ion-android-search:before,.ion-android-send:before,.ion-android-settings:before,.ion-android-share-alt:before,.ion-android-share:before,.ion-android-star-half:before,.ion-android-star-outline:before,.ion-android-star:before,.ion-android-stopwatch:before,.ion-android-subway:before,.ion-android-sunny:before,.ion-android-sync:before,.ion-android-textsms:before,.ion-android-time:before,.ion-android-train:before,.ion-android-unlock:before,.ion-android-upload:before,.ion-android-volume-down:before,.ion-android-volume-mute:before,.ion-android-volume-off:before,.ion-android-volume-up:before,.ion-android-walk:before,.ion-android-warning:before,.ion-android-watch:before,.ion-android-wifi:before,.ion-aperture:before,.ion-archive:before,.ion-arrow-down-a:before,.ion-arrow-down-b:before,.ion-arrow-down-c:before,.ion-arrow-expand:before,.ion-arrow-graph-down-left:before,.ion-arrow-graph-down-right:before,.ion-arrow-graph-up-left:before,.ion-arrow-graph-up-right:before,.ion-arrow-left-a:before,.ion-arrow-left-b:before,.ion-arrow-left-c:before,.ion-arrow-move:before,.ion-arrow-resize:before,.ion-arrow-return-left:before,.ion-arrow-return-right:before,.ion-arrow-right-a:before,.ion-arrow-right-b:before,.ion-arrow-right-c:before,.ion-arrow-shrink:before,.ion-arrow-swap:before,.ion-arrow-up-a:before,.ion-arrow-up-b:before,.ion-arrow-up-c:before,.ion-asterisk:before,.ion-at:before,.ion-backspace-outline:before,.ion-backspace:before,.ion-bag:before,.ion-battery-charging:before,.ion-battery-empty:before,.ion-battery-full:before,.ion-battery-half:before,.ion-battery-low:before,.ion-beaker:before,.ion-beer:before,.ion-bluetooth:before,.ion-bonfire:before,.ion-bookmark:before,.ion-bowtie:before,.ion-briefcase:before,.ion-bug:before,.ion-calculator:before,.ion-calendar:before,.ion-camera:before,.ion-card:before,.ion-cash:before,.ion-chatbox-working:before,.ion-chatbox:before,.ion-chatboxes:before,.ion-chatbubble-working:before,.ion-chatbubble:before,.ion-chatbubbles:before,.ion-checkmark-circled:before,.ion-checkmark-round:before,.ion-checkmark:before,.ion-chevron-down:before,.ion-chevron-left:before,.ion-chevron-right:before,.ion-chevron-up:before,.ion-clipboard:before,.ion-clock:before,.ion-close-circled:before,.ion-close-round:before,.ion-close:before,.ion-closed-captioning:before,.ion-cloud:before,.ion-code-download:before,.ion-code-working:before,.ion-code:before,.ion-coffee:before,.ion-compass:before,.ion-compose:before,.ion-connection-bars:before,.ion-contrast:before,.ion-crop:before,.ion-cube:before,.ion-disc:before,.ion-document-text:before,.ion-document:before,.ion-drag:before,.ion-earth:before,.ion-easel:before,.ion-edit:before,.ion-egg:before,.ion-eject:before,.ion-email-unread:before,.ion-email:before,.ion-erlenmeyer-flask-bubbles:before,.ion-erlenmeyer-flask:before,.ion-eye-disabled:before,.ion-eye:before,.ion-female:before,.ion-filing:before,.ion-film-marker:before,.ion-fireball:before,.ion-flag:before,.ion-flame:before,.ion-flash-off:before,.ion-flash:before,.ion-folder:before,.ion-fork-repo:before,.ion-fork:before,.ion-forward:before,.ion-funnel:before,.ion-gear-a:before,.ion-gear-b:before,.ion-grid:before,.ion-hammer:before,.ion-happy-outline:before,.ion-happy:before,.ion-headphone:before,.ion-heart-broken:before,.ion-heart:before,.ion-help-buoy:before,.ion-help-circled:before,.ion-help:before,.ion-home:before,.ion-icecream:before,.ion-image:before,.ion-images:before,.ion-information-circled:before,.ion-information:before,.ion-ionic:before,.ion-ios-alarm-outline:before,.ion-ios-alarm:before,.ion-ios-albums-outline:before,.ion-ios-albums:before,.ion-ios-americanfootball-outline:before,.ion-ios-americanfootball:before,.ion-ios-analytics-outline:before,.ion-ios-analytics:before,.ion-ios-arrow-back:before,.ion-ios-arrow-down:before,.ion-ios-arrow-forward:before,.ion-ios-arrow-left:before,.ion-ios-arrow-right:before,.ion-ios-arrow-thin-down:before,.ion-ios-arrow-thin-left:before,.ion-ios-arrow-thin-right:before,.ion-ios-arrow-thin-up:before,.ion-ios-arrow-up:before,.ion-ios-at-outline:before,.ion-ios-at:before,.ion-ios-barcode-outline:before,.ion-ios-barcode:before,.ion-ios-baseball-outline:before,.ion-ios-baseball:before,.ion-ios-basketball-outline:before,.ion-ios-basketball:before,.ion-ios-bell-outline:before,.ion-ios-bell:before,.ion-ios-body-outline:before,.ion-ios-body:before,.ion-ios-bolt-outline:before,.ion-ios-bolt:before,.ion-ios-book-outline:before,.ion-ios-book:before,.ion-ios-bookmarks-outline:before,.ion-ios-bookmarks:before,.ion-ios-box-outline:before,.ion-ios-box:before,.ion-ios-briefcase-outline:before,.ion-ios-briefcase:before,.ion-ios-browsers-outline:before,.ion-ios-browsers:before,.ion-ios-calculator-outline:before,.ion-ios-calculator:before,.ion-ios-calendar-outline:before,.ion-ios-calendar:before,.ion-ios-camera-outline:before,.ion-ios-camera:before,.ion-ios-cart-outline:before,.ion-ios-cart:before,.ion-ios-chatboxes-outline:before,.ion-ios-chatboxes:before,.ion-ios-chatbubble-outline:before,.ion-ios-chatbubble:before,.ion-ios-checkmark-empty:before,.ion-ios-checkmark-outline:before,.ion-ios-checkmark:before,.ion-ios-circle-filled:before,.ion-ios-circle-outline:before,.ion-ios-clock-outline:before,.ion-ios-clock:before,.ion-ios-close-empty:before,.ion-ios-close-outline:before,.ion-ios-close:before,.ion-ios-cloud-download-outline:before,.ion-ios-cloud-download:before,.ion-ios-cloud-outline:before,.ion-ios-cloud-upload-outline:before,.ion-ios-cloud-upload:before,.ion-ios-cloud:before,.ion-ios-cloudy-night-outline:before,.ion-ios-cloudy-night:before,.ion-ios-cloudy-outline:before,.ion-ios-cloudy:before,.ion-ios-cog-outline:before,.ion-ios-cog:before,.ion-ios-color-filter-outline:before,.ion-ios-color-filter:before,.ion-ios-color-wand-outline:before,.ion-ios-color-wand:before,.ion-ios-compose-outline:before,.ion-ios-compose:before,.ion-ios-contact-outline:before,.ion-ios-contact:before,.ion-ios-copy-outline:before,.ion-ios-copy:before,.ion-ios-crop-strong:before,.ion-ios-crop:before,.ion-ios-download-outline:before,.ion-ios-download:before,.ion-ios-drag:before,.ion-ios-email-outline:before,.ion-ios-email:before,.ion-ios-eye-outline:before,.ion-ios-eye:before,.ion-ios-fastforward-outline:before,.ion-ios-fastforward:before,.ion-ios-filing-outline:before,.ion-ios-filing:before,.ion-ios-film-outline:before,.ion-ios-film:before,.ion-ios-flag-outline:before,.ion-ios-flag:before,.ion-ios-flame-outline:before,.ion-ios-flame:before,.ion-ios-flask-outline:before,.ion-ios-flask:before,.ion-ios-flower-outline:before,.ion-ios-flower:before,.ion-ios-folder-outline:before,.ion-ios-folder:before,.ion-ios-football-outline:before,.ion-ios-football:before,.ion-ios-game-controller-a-outline:before,.ion-ios-game-controller-a:before,.ion-ios-game-controller-b-outline:before,.ion-ios-game-controller-b:before,.ion-ios-gear-outline:before,.ion-ios-gear:before,.ion-ios-glasses-outline:before,.ion-ios-glasses:before,.ion-ios-grid-view-outline:before,.ion-ios-grid-view:before,.ion-ios-heart-outline:before,.ion-ios-heart:before,.ion-ios-help-empty:before,.ion-ios-help-outline:before,.ion-ios-help:before,.ion-ios-home-outline:before,.ion-ios-home:before,.ion-ios-infinite-outline:before,.ion-ios-infinite:before,.ion-ios-information-empty:before,.ion-ios-information-outline:before,.ion-ios-information:before,.ion-ios-ionic-outline:before,.ion-ios-keypad-outline:before,.ion-ios-keypad:before,.ion-ios-lightbulb-outline:before,.ion-ios-lightbulb:before,.ion-ios-list-outline:before,.ion-ios-list:before,.ion-ios-location-outline:before,.ion-ios-location:before,.ion-ios-locked-outline:before,.ion-ios-locked:before,.ion-ios-loop-strong:before,.ion-ios-loop:before,.ion-ios-medical-outline:before,.ion-ios-medical:before,.ion-ios-medkit-outline:before,.ion-ios-medkit:before,.ion-ios-mic-off:before,.ion-ios-mic-outline:before,.ion-ios-mic:before,.ion-ios-minus-empty:before,.ion-ios-minus-outline:before,.ion-ios-minus:before,.ion-ios-monitor-outline:before,.ion-ios-monitor:before,.ion-ios-moon-outline:before,.ion-ios-moon:before,.ion-ios-more-outline:before,.ion-ios-more:before,.ion-ios-musical-note:before,.ion-ios-musical-notes:before,.ion-ios-navigate-outline:before,.ion-ios-navigate:before,.ion-ios-nutrition-outline:before,.ion-ios-nutrition:before,.ion-ios-paper-outline:before,.ion-ios-paper:before,.ion-ios-paperplane-outline:before,.ion-ios-paperplane:before,.ion-ios-partlysunny-outline:before,.ion-ios-partlysunny:before,.ion-ios-pause-outline:before,.ion-ios-pause:before,.ion-ios-paw-outline:before,.ion-ios-paw:before,.ion-ios-people-outline:before,.ion-ios-people:before,.ion-ios-person-outline:before,.ion-ios-person:before,.ion-ios-personadd-outline:before,.ion-ios-personadd:before,.ion-ios-photos-outline:before,.ion-ios-photos:before,.ion-ios-pie-outline:before,.ion-ios-pie:before,.ion-ios-pint-outline:before,.ion-ios-pint:before,.ion-ios-play-outline:before,.ion-ios-play:before,.ion-ios-plus-empty:before,.ion-ios-plus-outline:before,.ion-ios-plus:before,.ion-ios-pricetag-outline:before,.ion-ios-pricetag:before,.ion-ios-pricetags-outline:before,.ion-ios-pricetags:before,.ion-ios-printer-outline:before,.ion-ios-printer:before,.ion-ios-pulse-strong:before,.ion-ios-pulse:before,.ion-ios-rainy-outline:before,.ion-ios-rainy:before,.ion-ios-recording-outline:before,.ion-ios-recording:before,.ion-ios-redo-outline:before,.ion-ios-redo:before,.ion-ios-refresh-empty:before,.ion-ios-refresh-outline:before,.ion-ios-refresh:before,.ion-ios-reload:before,.ion-ios-reverse-camera-outline:before,.ion-ios-reverse-camera:before,.ion-ios-rewind-outline:before,.ion-ios-rewind:before,.ion-ios-rose-outline:before,.ion-ios-rose:before,.ion-ios-search-strong:before,.ion-ios-search:before,.ion-ios-settings-strong:before,.ion-ios-settings:before,.ion-ios-shuffle-strong:before,.ion-ios-shuffle:before,.ion-ios-skipbackward-outline:before,.ion-ios-skipbackward:before,.ion-ios-skipforward-outline:before,.ion-ios-skipforward:before,.ion-ios-snowy:before,.ion-ios-speedometer-outline:before,.ion-ios-speedometer:before,.ion-ios-star-half:before,.ion-ios-star-outline:before,.ion-ios-star:before,.ion-ios-stopwatch-outline:before,.ion-ios-stopwatch:before,.ion-ios-sunny-outline:before,.ion-ios-sunny:before,.ion-ios-telephone-outline:before,.ion-ios-telephone:before,.ion-ios-tennisball-outline:before,.ion-ios-tennisball:before,.ion-ios-thunderstorm-outline:before,.ion-ios-thunderstorm:before,.ion-ios-time-outline:before,.ion-ios-time:before,.ion-ios-timer-outline:before,.ion-ios-timer:before,.ion-ios-toggle-outline:before,.ion-ios-toggle:before,.ion-ios-trash-outline:before,.ion-ios-trash:before,.ion-ios-undo-outline:before,.ion-ios-undo:before,.ion-ios-unlocked-outline:before,.ion-ios-unlocked:before,.ion-ios-upload-outline:before,.ion-ios-upload:before,.ion-ios-videocam-outline:before,.ion-ios-videocam:before,.ion-ios-volume-high:before,.ion-ios-volume-low:before,.ion-ios-wineglass-outline:before,.ion-ios-wineglass:before,.ion-ios-world-outline:before,.ion-ios-world:before,.ion-ipad:before,.ion-iphone:before,.ion-ipod:before,.ion-jet:before,.ion-key:before,.ion-knife:before,.ion-laptop:before,.ion-leaf:before,.ion-levels:before,.ion-lightbulb:before,.ion-link:before,.ion-load-a:before,.ion-load-b:before,.ion-load-c:before,.ion-load-d:before,.ion-location:before,.ion-lock-combination:before,.ion-locked:before,.ion-log-in:before,.ion-log-out:before,.ion-loop:before,.ion-magnet:before,.ion-male:before,.ion-man:before,.ion-map:before,.ion-medkit:before,.ion-merge:before,.ion-mic-a:before,.ion-mic-b:before,.ion-mic-c:before,.ion-minus-circled:before,.ion-minus-round:before,.ion-minus:before,.ion-model-s:before,.ion-monitor:before,.ion-more:before,.ion-mouse:before,.ion-music-note:before,.ion-navicon-round:before,.ion-navicon:before,.ion-navigate:before,.ion-network:before,.ion-no-smoking:before,.ion-nuclear:before,.ion-outlet:before,.ion-paintbrush:before,.ion-paintbucket:before,.ion-paper-airplane:before,.ion-paperclip:before,.ion-pause:before,.ion-person-add:before,.ion-person-stalker:before,.ion-person:before,.ion-pie-graph:before,.ion-pin:before,.ion-pinpoint:before,.ion-pizza:before,.ion-plane:before,.ion-planet:before,.ion-play:before,.ion-playstation:before,.ion-plus-circled:before,.ion-plus-round:before,.ion-plus:before,.ion-podium:before,.ion-pound:before,.ion-power:before,.ion-pricetag:before,.ion-pricetags:before,.ion-printer:before,.ion-pull-request:before,.ion-qr-scanner:before,.ion-quote:before,.ion-radio-waves:before,.ion-record:before,.ion-refresh:before,.ion-reply-all:before,.ion-reply:before,.ion-ribbon-a:before,.ion-ribbon-b:before,.ion-sad-outline:before,.ion-sad:before,.ion-scissors:before,.ion-search:before,.ion-settings:before,.ion-share:before,.ion-shuffle:before,.ion-skip-backward:before,.ion-skip-forward:before,.ion-social-android-outline:before,.ion-social-android:before,.ion-social-angular-outline:before,.ion-social-angular:before,.ion-social-apple-outline:before,.ion-social-apple:before,.ion-social-bitcoin-outline:before,.ion-social-bitcoin:before,.ion-social-buffer-outline:before,.ion-social-buffer:before,.ion-social-chrome-outline:before,.ion-social-chrome:before,.ion-social-codepen-outline:before,.ion-social-codepen:before,.ion-social-css3-outline:before,.ion-social-css3:before,.ion-social-designernews-outline:before,.ion-social-designernews:before,.ion-social-dribbble-outline:before,.ion-social-dribbble:before,.ion-social-dropbox-outline:before,.ion-social-dropbox:before,.ion-social-euro-outline:before,.ion-social-euro:before,.ion-social-facebook-outline:before,.ion-social-facebook:before,.ion-social-foursquare-outline:before,.ion-social-foursquare:before,.ion-social-freebsd-devil:before,.ion-social-github-outline:before,.ion-social-github:before,.ion-social-google-outline:before,.ion-social-google:before,.ion-social-googleplus-outline:before,.ion-social-googleplus:before,.ion-social-hackernews-outline:before,.ion-social-hackernews:before,.ion-social-html5-outline:before,.ion-social-html5:before,.ion-social-instagram-outline:before,.ion-social-instagram:before,.ion-social-javascript-outline:before,.ion-social-javascript:before,.ion-social-linkedin-outline:before,.ion-social-linkedin:before,.ion-social-markdown:before,.ion-social-nodejs:before,.ion-social-octocat:before,.ion-social-pinterest-outline:before,.ion-social-pinterest:before,.ion-social-python:before,.ion-social-reddit-outline:before,.ion-social-reddit:before,.ion-social-rss-outline:before,.ion-social-rss:before,.ion-social-sass:before,.ion-social-skype-outline:before,.ion-social-skype:before,.ion-social-snapchat-outline:before,.ion-social-snapchat:before,.ion-social-tumblr-outline:before,.ion-social-tumblr:before,.ion-social-tux:before,.ion-social-twitch-outline:before,.ion-social-twitch:before,.ion-social-twitter-outline:before,.ion-social-twitter:before,.ion-social-usd-outline:before,.ion-social-usd:before,.ion-social-vimeo-outline:before,.ion-social-vimeo:before,.ion-social-whatsapp-outline:before,.ion-social-whatsapp:before,.ion-social-windows-outline:before,.ion-social-windows:before,.ion-social-wordpress-outline:before,.ion-social-wordpress:before,.ion-social-yahoo-outline:before,.ion-social-yahoo:before,.ion-social-yen-outline:before,.ion-social-yen:before,.ion-social-youtube-outline:before,.ion-social-youtube:before,.ion-soup-can-outline:before,.ion-soup-can:before,.ion-speakerphone:before,.ion-speedometer:before,.ion-spoon:before,.ion-star:before,.ion-stats-bars:before,.ion-steam:before,.ion-stop:before,.ion-thermometer:before,.ion-thumbsdown:before,.ion-thumbsup:before,.ion-toggle-filled:before,.ion-toggle:before,.ion-transgender:before,.ion-trash-a:before,.ion-trash-b:before,.ion-trophy:before,.ion-tshirt-outline:before,.ion-tshirt:before,.ion-umbrella:before,.ion-university:before,.ion-unlocked:before,.ion-upload:before,.ion-usb:before,.ion-videocamera:before,.ion-volume-high:before,.ion-volume-low:before,.ion-volume-medium:before,.ion-volume-mute:before,.ion-wand:before,.ion-waterdrop:before,.ion-wifi:before,.ion-wineglass:before,.ion-woman:before,.ion-wrench:before,.ion-xbox:before,.ionicons{display:inline-block;font-family:Ionicons;speak:none;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;text-rendering:auto;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.ion-alert:before{content:\"\\F101\"}.ion-alert-circled:before{content:\"\\F100\"}.ion-android-add:before{content:\"\\F2C7\"}.ion-android-add-circle:before{content:\"\\F359\"}.ion-android-alarm-clock:before{content:\"\\F35A\"}.ion-android-alert:before{content:\"\\F35B\"}.ion-android-apps:before{content:\"\\F35C\"}.ion-android-archive:before{content:\"\\F2C9\"}.ion-android-arrow-back:before{content:\"\\F2CA\"}.ion-android-arrow-down:before{content:\"\\F35D\"}.ion-android-arrow-dropdown:before{content:\"\\F35F\"}.ion-android-arrow-dropdown-circle:before{content:\"\\F35E\"}.ion-android-arrow-dropleft:before{content:\"\\F361\"}.ion-android-arrow-dropleft-circle:before{content:\"\\F360\"}.ion-android-arrow-dropright:before{content:\"\\F363\"}.ion-android-arrow-dropright-circle:before{content:\"\\F362\"}.ion-android-arrow-dropup:before{content:\"\\F365\"}.ion-android-arrow-dropup-circle:before{content:\"\\F364\"}.ion-android-arrow-forward:before{content:\"\\F30F\"}.ion-android-arrow-up:before{content:\"\\F366\"}.ion-android-attach:before{content:\"\\F367\"}.ion-android-bar:before{content:\"\\F368\"}.ion-android-bicycle:before{content:\"\\F369\"}.ion-android-boat:before{content:\"\\F36A\"}.ion-android-bookmark:before{content:\"\\F36B\"}.ion-android-bulb:before{content:\"\\F36C\"}.ion-android-bus:before{content:\"\\F36D\"}.ion-android-calendar:before{content:\"\\F2D1\"}.ion-android-call:before{content:\"\\F2D2\"}.ion-android-camera:before{content:\"\\F2D3\"}.ion-android-cancel:before{content:\"\\F36E\"}.ion-android-car:before{content:\"\\F36F\"}.ion-android-cart:before{content:\"\\F370\"}.ion-android-chat:before{content:\"\\F2D4\"}.ion-android-checkbox:before{content:\"\\F374\"}.ion-android-checkbox-blank:before{content:\"\\F371\"}.ion-android-checkbox-outline:before{content:\"\\F373\"}.ion-android-checkbox-outline-blank:before{content:\"\\F372\"}.ion-android-checkmark-circle:before{content:\"\\F375\"}.ion-android-clipboard:before{content:\"\\F376\"}.ion-android-close:before{content:\"\\F2D7\"}.ion-android-cloud:before{content:\"\\F37A\"}.ion-android-cloud-circle:before{content:\"\\F377\"}.ion-android-cloud-done:before{content:\"\\F378\"}.ion-android-cloud-outline:before{content:\"\\F379\"}.ion-android-color-palette:before{content:\"\\F37B\"}.ion-android-compass:before{content:\"\\F37C\"}.ion-android-contact:before{content:\"\\F2D8\"}.ion-android-contacts:before{content:\"\\F2D9\"}.ion-android-contract:before{content:\"\\F37D\"}.ion-android-create:before{content:\"\\F37E\"}.ion-android-delete:before{content:\"\\F37F\"}.ion-android-desktop:before{content:\"\\F380\"}.ion-android-document:before{content:\"\\F381\"}.ion-android-done:before{content:\"\\F383\"}.ion-android-done-all:before{content:\"\\F382\"}.ion-android-download:before{content:\"\\F2DD\"}.ion-android-drafts:before{content:\"\\F384\"}.ion-android-exit:before{content:\"\\F385\"}.ion-android-expand:before{content:\"\\F386\"}.ion-android-favorite:before{content:\"\\F388\"}.ion-android-favorite-outline:before{content:\"\\F387\"}.ion-android-film:before{content:\"\\F389\"}.ion-android-folder:before{content:\"\\F2E0\"}.ion-android-folder-open:before{content:\"\\F38A\"}.ion-android-funnel:before{content:\"\\F38B\"}.ion-android-globe:before{content:\"\\F38C\"}.ion-android-hand:before{content:\"\\F2E3\"}.ion-android-hangout:before{content:\"\\F38D\"}.ion-android-happy:before{content:\"\\F38E\"}.ion-android-home:before{content:\"\\F38F\"}.ion-android-image:before{content:\"\\F2E4\"}.ion-android-laptop:before{content:\"\\F390\"}.ion-android-list:before{content:\"\\F391\"}.ion-android-locate:before{content:\"\\F2E9\"}.ion-android-lock:before{content:\"\\F392\"}.ion-android-mail:before{content:\"\\F2EB\"}.ion-android-map:before{content:\"\\F393\"}.ion-android-menu:before{content:\"\\F394\"}.ion-android-microphone:before{content:\"\\F2EC\"}.ion-android-microphone-off:before{content:\"\\F395\"}.ion-android-more-horizontal:before{content:\"\\F396\"}.ion-android-more-vertical:before{content:\"\\F397\"}.ion-android-navigate:before{content:\"\\F398\"}.ion-android-notifications:before{content:\"\\F39B\"}.ion-android-notifications-none:before{content:\"\\F399\"}.ion-android-notifications-off:before{content:\"\\F39A\"}.ion-android-open:before{content:\"\\F39C\"}.ion-android-options:before{content:\"\\F39D\"}.ion-android-people:before{content:\"\\F39E\"}.ion-android-person:before{content:\"\\F3A0\"}.ion-android-person-add:before{content:\"\\F39F\"}.ion-android-phone-landscape:before{content:\"\\F3A1\"}.ion-android-phone-portrait:before{content:\"\\F3A2\"}.ion-android-pin:before{content:\"\\F3A3\"}.ion-android-plane:before{content:\"\\F3A4\"}.ion-android-playstore:before{content:\"\\F2F0\"}.ion-android-print:before{content:\"\\F3A5\"}.ion-android-radio-button-off:before{content:\"\\F3A6\"}.ion-android-radio-button-on:before{content:\"\\F3A7\"}.ion-android-refresh:before{content:\"\\F3A8\"}.ion-android-remove:before{content:\"\\F2F4\"}.ion-android-remove-circle:before{content:\"\\F3A9\"}.ion-android-restaurant:before{content:\"\\F3AA\"}.ion-android-sad:before{content:\"\\F3AB\"}.ion-android-search:before{content:\"\\F2F5\"}.ion-android-send:before{content:\"\\F2F6\"}.ion-android-settings:before{content:\"\\F2F7\"}.ion-android-share:before{content:\"\\F2F8\"}.ion-android-share-alt:before{content:\"\\F3AC\"}.ion-android-star:before{content:\"\\F2FC\"}.ion-android-star-half:before{content:\"\\F3AD\"}.ion-android-star-outline:before{content:\"\\F3AE\"}.ion-android-stopwatch:before{content:\"\\F2FD\"}.ion-android-subway:before{content:\"\\F3AF\"}.ion-android-sunny:before{content:\"\\F3B0\"}.ion-android-sync:before{content:\"\\F3B1\"}.ion-android-textsms:before{content:\"\\F3B2\"}.ion-android-time:before{content:\"\\F3B3\"}.ion-android-train:before{content:\"\\F3B4\"}.ion-android-unlock:before{content:\"\\F3B5\"}.ion-android-upload:before{content:\"\\F3B6\"}.ion-android-volume-down:before{content:\"\\F3B7\"}.ion-android-volume-mute:before{content:\"\\F3B8\"}.ion-android-volume-off:before{content:\"\\F3B9\"}.ion-android-volume-up:before{content:\"\\F3BA\"}.ion-android-walk:before{content:\"\\F3BB\"}.ion-android-warning:before{content:\"\\F3BC\"}.ion-android-watch:before{content:\"\\F3BD\"}.ion-android-wifi:before{content:\"\\F305\"}.ion-aperture:before{content:\"\\F313\"}.ion-archive:before{content:\"\\F102\"}.ion-arrow-down-a:before{content:\"\\F103\"}.ion-arrow-down-b:before{content:\"\\F104\"}.ion-arrow-down-c:before{content:\"\\F105\"}.ion-arrow-expand:before{content:\"\\F25E\"}.ion-arrow-graph-down-left:before{content:\"\\F25F\"}.ion-arrow-graph-down-right:before{content:\"\\F260\"}.ion-arrow-graph-up-left:before{content:\"\\F261\"}.ion-arrow-graph-up-right:before{content:\"\\F262\"}.ion-arrow-left-a:before{content:\"\\F106\"}.ion-arrow-left-b:before{content:\"\\F107\"}.ion-arrow-left-c:before{content:\"\\F108\"}.ion-arrow-move:before{content:\"\\F263\"}.ion-arrow-resize:before{content:\"\\F264\"}.ion-arrow-return-left:before{content:\"\\F265\"}.ion-arrow-return-right:before{content:\"\\F266\"}.ion-arrow-right-a:before{content:\"\\F109\"}.ion-arrow-right-b:before{content:\"\\F10A\"}.ion-arrow-right-c:before{content:\"\\F10B\"}.ion-arrow-shrink:before{content:\"\\F267\"}.ion-arrow-swap:before{content:\"\\F268\"}.ion-arrow-up-a:before{content:\"\\F10C\"}.ion-arrow-up-b:before{content:\"\\F10D\"}.ion-arrow-up-c:before{content:\"\\F10E\"}.ion-asterisk:before{content:\"\\F314\"}.ion-at:before{content:\"\\F10F\"}.ion-backspace:before{content:\"\\F3BF\"}.ion-backspace-outline:before{content:\"\\F3BE\"}.ion-bag:before{content:\"\\F110\"}.ion-battery-charging:before{content:\"\\F111\"}.ion-battery-empty:before{content:\"\\F112\"}.ion-battery-full:before{content:\"\\F113\"}.ion-battery-half:before{content:\"\\F114\"}.ion-battery-low:before{content:\"\\F115\"}.ion-beaker:before{content:\"\\F269\"}.ion-beer:before{content:\"\\F26A\"}.ion-bluetooth:before{content:\"\\F116\"}.ion-bonfire:before{content:\"\\F315\"}.ion-bookmark:before{content:\"\\F26B\"}.ion-bowtie:before{content:\"\\F3C0\"}.ion-briefcase:before{content:\"\\F26C\"}.ion-bug:before{content:\"\\F2BE\"}.ion-calculator:before{content:\"\\F26D\"}.ion-calendar:before{content:\"\\F117\"}.ion-camera:before{content:\"\\F118\"}.ion-card:before{content:\"\\F119\"}.ion-cash:before{content:\"\\F316\"}.ion-chatbox:before{content:\"\\F11B\"}.ion-chatbox-working:before{content:\"\\F11A\"}.ion-chatboxes:before{content:\"\\F11C\"}.ion-chatbubble:before{content:\"\\F11E\"}.ion-chatbubble-working:before{content:\"\\F11D\"}.ion-chatbubbles:before{content:\"\\F11F\"}.ion-checkmark:before{content:\"\\F122\"}.ion-checkmark-circled:before{content:\"\\F120\"}.ion-checkmark-round:before{content:\"\\F121\"}.ion-chevron-down:before{content:\"\\F123\"}.ion-chevron-left:before{content:\"\\F124\"}.ion-chevron-right:before{content:\"\\F125\"}.ion-chevron-up:before{content:\"\\F126\"}.ion-clipboard:before{content:\"\\F127\"}.ion-clock:before{content:\"\\F26E\"}.ion-close:before{content:\"\\F12A\"}.ion-close-circled:before{content:\"\\F128\"}.ion-close-round:before{content:\"\\F129\"}.ion-closed-captioning:before{content:\"\\F317\"}.ion-cloud:before{content:\"\\F12B\"}.ion-code:before{content:\"\\F271\"}.ion-code-download:before{content:\"\\F26F\"}.ion-code-working:before{content:\"\\F270\"}.ion-coffee:before{content:\"\\F272\"}.ion-compass:before{content:\"\\F273\"}.ion-compose:before{content:\"\\F12C\"}.ion-connection-bars:before{content:\"\\F274\"}.ion-contrast:before{content:\"\\F275\"}.ion-crop:before{content:\"\\F3C1\"}.ion-cube:before{content:\"\\F318\"}.ion-disc:before{content:\"\\F12D\"}.ion-document:before{content:\"\\F12F\"}.ion-document-text:before{content:\"\\F12E\"}.ion-drag:before{content:\"\\F130\"}.ion-earth:before{content:\"\\F276\"}.ion-easel:before{content:\"\\F3C2\"}.ion-edit:before{content:\"\\F2BF\"}.ion-egg:before{content:\"\\F277\"}.ion-eject:before{content:\"\\F131\"}.ion-email:before{content:\"\\F132\"}.ion-email-unread:before{content:\"\\F3C3\"}.ion-erlenmeyer-flask:before{content:\"\\F3C5\"}.ion-erlenmeyer-flask-bubbles:before{content:\"\\F3C4\"}.ion-eye:before{content:\"\\F133\"}.ion-eye-disabled:before{content:\"\\F306\"}.ion-female:before{content:\"\\F278\"}.ion-filing:before{content:\"\\F134\"}.ion-film-marker:before{content:\"\\F135\"}.ion-fireball:before{content:\"\\F319\"}.ion-flag:before{content:\"\\F279\"}.ion-flame:before{content:\"\\F31A\"}.ion-flash:before{content:\"\\F137\"}.ion-flash-off:before{content:\"\\F136\"}.ion-folder:before{content:\"\\F139\"}.ion-fork:before{content:\"\\F27A\"}.ion-fork-repo:before{content:\"\\F2C0\"}.ion-forward:before{content:\"\\F13A\"}.ion-funnel:before{content:\"\\F31B\"}.ion-gear-a:before{content:\"\\F13D\"}.ion-gear-b:before{content:\"\\F13E\"}.ion-grid:before{content:\"\\F13F\"}.ion-hammer:before{content:\"\\F27B\"}.ion-happy:before{content:\"\\F31C\"}.ion-happy-outline:before{content:\"\\F3C6\"}.ion-headphone:before{content:\"\\F140\"}.ion-heart:before{content:\"\\F141\"}.ion-heart-broken:before{content:\"\\F31D\"}.ion-help:before{content:\"\\F143\"}.ion-help-buoy:before{content:\"\\F27C\"}.ion-help-circled:before{content:\"\\F142\"}.ion-home:before{content:\"\\F144\"}.ion-icecream:before{content:\"\\F27D\"}.ion-image:before{content:\"\\F147\"}.ion-images:before{content:\"\\F148\"}.ion-information:before{content:\"\\F14A\"}.ion-information-circled:before{content:\"\\F149\"}.ion-ionic:before{content:\"\\F14B\"}.ion-ios-alarm:before{content:\"\\F3C8\"}.ion-ios-alarm-outline:before{content:\"\\F3C7\"}.ion-ios-albums:before{content:\"\\F3CA\"}.ion-ios-albums-outline:before{content:\"\\F3C9\"}.ion-ios-americanfootball:before{content:\"\\F3CC\"}.ion-ios-americanfootball-outline:before{content:\"\\F3CB\"}.ion-ios-analytics:before{content:\"\\F3CE\"}.ion-ios-analytics-outline:before{content:\"\\F3CD\"}.ion-ios-arrow-back:before{content:\"\\F3CF\"}.ion-ios-arrow-down:before{content:\"\\F3D0\"}.ion-ios-arrow-forward:before{content:\"\\F3D1\"}.ion-ios-arrow-left:before{content:\"\\F3D2\"}.ion-ios-arrow-right:before{content:\"\\F3D3\"}.ion-ios-arrow-thin-down:before{content:\"\\F3D4\"}.ion-ios-arrow-thin-left:before{content:\"\\F3D5\"}.ion-ios-arrow-thin-right:before{content:\"\\F3D6\"}.ion-ios-arrow-thin-up:before{content:\"\\F3D7\"}.ion-ios-arrow-up:before{content:\"\\F3D8\"}.ion-ios-at:before{content:\"\\F3DA\"}.ion-ios-at-outline:before{content:\"\\F3D9\"}.ion-ios-barcode:before{content:\"\\F3DC\"}.ion-ios-barcode-outline:before{content:\"\\F3DB\"}.ion-ios-baseball:before{content:\"\\F3DE\"}.ion-ios-baseball-outline:before{content:\"\\F3DD\"}.ion-ios-basketball:before{content:\"\\F3E0\"}.ion-ios-basketball-outline:before{content:\"\\F3DF\"}.ion-ios-bell:before{content:\"\\F3E2\"}.ion-ios-bell-outline:before{content:\"\\F3E1\"}.ion-ios-body:before{content:\"\\F3E4\"}.ion-ios-body-outline:before{content:\"\\F3E3\"}.ion-ios-bolt:before{content:\"\\F3E6\"}.ion-ios-bolt-outline:before{content:\"\\F3E5\"}.ion-ios-book:before{content:\"\\F3E8\"}.ion-ios-book-outline:before{content:\"\\F3E7\"}.ion-ios-bookmarks:before{content:\"\\F3EA\"}.ion-ios-bookmarks-outline:before{content:\"\\F3E9\"}.ion-ios-box:before{content:\"\\F3EC\"}.ion-ios-box-outline:before{content:\"\\F3EB\"}.ion-ios-briefcase:before{content:\"\\F3EE\"}.ion-ios-briefcase-outline:before{content:\"\\F3ED\"}.ion-ios-browsers:before{content:\"\\F3F0\"}.ion-ios-browsers-outline:before{content:\"\\F3EF\"}.ion-ios-calculator:before{content:\"\\F3F2\"}.ion-ios-calculator-outline:before{content:\"\\F3F1\"}.ion-ios-calendar:before{content:\"\\F3F4\"}.ion-ios-calendar-outline:before{content:\"\\F3F3\"}.ion-ios-camera:before{content:\"\\F3F6\"}.ion-ios-camera-outline:before{content:\"\\F3F5\"}.ion-ios-cart:before{content:\"\\F3F8\"}.ion-ios-cart-outline:before{content:\"\\F3F7\"}.ion-ios-chatboxes:before{content:\"\\F3FA\"}.ion-ios-chatboxes-outline:before{content:\"\\F3F9\"}.ion-ios-chatbubble:before{content:\"\\F3FC\"}.ion-ios-chatbubble-outline:before{content:\"\\F3FB\"}.ion-ios-checkmark:before{content:\"\\F3FF\"}.ion-ios-checkmark-empty:before{content:\"\\F3FD\"}.ion-ios-checkmark-outline:before{content:\"\\F3FE\"}.ion-ios-circle-filled:before{content:\"\\F400\"}.ion-ios-circle-outline:before{content:\"\\F401\"}.ion-ios-clock:before{content:\"\\F403\"}.ion-ios-clock-outline:before{content:\"\\F402\"}.ion-ios-close:before{content:\"\\F406\"}.ion-ios-close-empty:before{content:\"\\F404\"}.ion-ios-close-outline:before{content:\"\\F405\"}.ion-ios-cloud:before{content:\"\\F40C\"}.ion-ios-cloud-download:before{content:\"\\F408\"}.ion-ios-cloud-download-outline:before{content:\"\\F407\"}.ion-ios-cloud-outline:before{content:\"\\F409\"}.ion-ios-cloud-upload:before{content:\"\\F40B\"}.ion-ios-cloud-upload-outline:before{content:\"\\F40A\"}.ion-ios-cloudy:before{content:\"\\F410\"}.ion-ios-cloudy-night:before{content:\"\\F40E\"}.ion-ios-cloudy-night-outline:before{content:\"\\F40D\"}.ion-ios-cloudy-outline:before{content:\"\\F40F\"}.ion-ios-cog:before{content:\"\\F412\"}.ion-ios-cog-outline:before{content:\"\\F411\"}.ion-ios-color-filter:before{content:\"\\F414\"}.ion-ios-color-filter-outline:before{content:\"\\F413\"}.ion-ios-color-wand:before{content:\"\\F416\"}.ion-ios-color-wand-outline:before{content:\"\\F415\"}.ion-ios-compose:before{content:\"\\F418\"}.ion-ios-compose-outline:before{content:\"\\F417\"}.ion-ios-contact:before{content:\"\\F41A\"}.ion-ios-contact-outline:before{content:\"\\F419\"}.ion-ios-copy:before{content:\"\\F41C\"}.ion-ios-copy-outline:before{content:\"\\F41B\"}.ion-ios-crop:before{content:\"\\F41E\"}.ion-ios-crop-strong:before{content:\"\\F41D\"}.ion-ios-download:before{content:\"\\F420\"}.ion-ios-download-outline:before{content:\"\\F41F\"}.ion-ios-drag:before{content:\"\\F421\"}.ion-ios-email:before{content:\"\\F423\"}.ion-ios-email-outline:before{content:\"\\F422\"}.ion-ios-eye:before{content:\"\\F425\"}.ion-ios-eye-outline:before{content:\"\\F424\"}.ion-ios-fastforward:before{content:\"\\F427\"}.ion-ios-fastforward-outline:before{content:\"\\F426\"}.ion-ios-filing:before{content:\"\\F429\"}.ion-ios-filing-outline:before{content:\"\\F428\"}.ion-ios-film:before{content:\"\\F42B\"}.ion-ios-film-outline:before{content:\"\\F42A\"}.ion-ios-flag:before{content:\"\\F42D\"}.ion-ios-flag-outline:before{content:\"\\F42C\"}.ion-ios-flame:before{content:\"\\F42F\"}.ion-ios-flame-outline:before{content:\"\\F42E\"}.ion-ios-flask:before{content:\"\\F431\"}.ion-ios-flask-outline:before{content:\"\\F430\"}.ion-ios-flower:before{content:\"\\F433\"}.ion-ios-flower-outline:before{content:\"\\F432\"}.ion-ios-folder:before{content:\"\\F435\"}.ion-ios-folder-outline:before{content:\"\\F434\"}.ion-ios-football:before{content:\"\\F437\"}.ion-ios-football-outline:before{content:\"\\F436\"}.ion-ios-game-controller-a:before{content:\"\\F439\"}.ion-ios-game-controller-a-outline:before{content:\"\\F438\"}.ion-ios-game-controller-b:before{content:\"\\F43B\"}.ion-ios-game-controller-b-outline:before{content:\"\\F43A\"}.ion-ios-gear:before{content:\"\\F43D\"}.ion-ios-gear-outline:before{content:\"\\F43C\"}.ion-ios-glasses:before{content:\"\\F43F\"}.ion-ios-glasses-outline:before{content:\"\\F43E\"}.ion-ios-grid-view:before{content:\"\\F441\"}.ion-ios-grid-view-outline:before{content:\"\\F440\"}.ion-ios-heart:before{content:\"\\F443\"}.ion-ios-heart-outline:before{content:\"\\F442\"}.ion-ios-help:before{content:\"\\F446\"}.ion-ios-help-empty:before{content:\"\\F444\"}.ion-ios-help-outline:before{content:\"\\F445\"}.ion-ios-home:before{content:\"\\F448\"}.ion-ios-home-outline:before{content:\"\\F447\"}.ion-ios-infinite:before{content:\"\\F44A\"}.ion-ios-infinite-outline:before{content:\"\\F449\"}.ion-ios-information:before{content:\"\\F44D\"}.ion-ios-information-empty:before{content:\"\\F44B\"}.ion-ios-information-outline:before{content:\"\\F44C\"}.ion-ios-ionic-outline:before{content:\"\\F44E\"}.ion-ios-keypad:before{content:\"\\F450\"}.ion-ios-keypad-outline:before{content:\"\\F44F\"}.ion-ios-lightbulb:before{content:\"\\F452\"}.ion-ios-lightbulb-outline:before{content:\"\\F451\"}.ion-ios-list:before{content:\"\\F454\"}.ion-ios-list-outline:before{content:\"\\F453\"}.ion-ios-location:before{content:\"\\F456\"}.ion-ios-location-outline:before{content:\"\\F455\"}.ion-ios-locked:before{content:\"\\F458\"}.ion-ios-locked-outline:before{content:\"\\F457\"}.ion-ios-loop:before{content:\"\\F45A\"}.ion-ios-loop-strong:before{content:\"\\F459\"}.ion-ios-medical:before{content:\"\\F45C\"}.ion-ios-medical-outline:before{content:\"\\F45B\"}.ion-ios-medkit:before{content:\"\\F45E\"}.ion-ios-medkit-outline:before{content:\"\\F45D\"}.ion-ios-mic:before{content:\"\\F461\"}.ion-ios-mic-off:before{content:\"\\F45F\"}.ion-ios-mic-outline:before{content:\"\\F460\"}.ion-ios-minus:before{content:\"\\F464\"}.ion-ios-minus-empty:before{content:\"\\F462\"}.ion-ios-minus-outline:before{content:\"\\F463\"}.ion-ios-monitor:before{content:\"\\F466\"}.ion-ios-monitor-outline:before{content:\"\\F465\"}.ion-ios-moon:before{content:\"\\F468\"}.ion-ios-moon-outline:before{content:\"\\F467\"}.ion-ios-more:before{content:\"\\F46A\"}.ion-ios-more-outline:before{content:\"\\F469\"}.ion-ios-musical-note:before{content:\"\\F46B\"}.ion-ios-musical-notes:before{content:\"\\F46C\"}.ion-ios-navigate:before{content:\"\\F46E\"}.ion-ios-navigate-outline:before{content:\"\\F46D\"}.ion-ios-nutrition:before{content:\"\\F470\"}.ion-ios-nutrition-outline:before{content:\"\\F46F\"}.ion-ios-paper:before{content:\"\\F472\"}.ion-ios-paper-outline:before{content:\"\\F471\"}.ion-ios-paperplane:before{content:\"\\F474\"}.ion-ios-paperplane-outline:before{content:\"\\F473\"}.ion-ios-partlysunny:before{content:\"\\F476\"}.ion-ios-partlysunny-outline:before{content:\"\\F475\"}.ion-ios-pause:before{content:\"\\F478\"}.ion-ios-pause-outline:before{content:\"\\F477\"}.ion-ios-paw:before{content:\"\\F47A\"}.ion-ios-paw-outline:before{content:\"\\F479\"}.ion-ios-people:before{content:\"\\F47C\"}.ion-ios-people-outline:before{content:\"\\F47B\"}.ion-ios-person:before{content:\"\\F47E\"}.ion-ios-person-outline:before{content:\"\\F47D\"}.ion-ios-personadd:before{content:\"\\F480\"}.ion-ios-personadd-outline:before{content:\"\\F47F\"}.ion-ios-photos:before{content:\"\\F482\"}.ion-ios-photos-outline:before{content:\"\\F481\"}.ion-ios-pie:before{content:\"\\F484\"}.ion-ios-pie-outline:before{content:\"\\F483\"}.ion-ios-pint:before{content:\"\\F486\"}.ion-ios-pint-outline:before{content:\"\\F485\"}.ion-ios-play:before{content:\"\\F488\"}.ion-ios-play-outline:before{content:\"\\F487\"}.ion-ios-plus:before{content:\"\\F48B\"}.ion-ios-plus-empty:before{content:\"\\F489\"}.ion-ios-plus-outline:before{content:\"\\F48A\"}.ion-ios-pricetag:before{content:\"\\F48D\"}.ion-ios-pricetag-outline:before{content:\"\\F48C\"}.ion-ios-pricetags:before{content:\"\\F48F\"}.ion-ios-pricetags-outline:before{content:\"\\F48E\"}.ion-ios-printer:before{content:\"\\F491\"}.ion-ios-printer-outline:before{content:\"\\F490\"}.ion-ios-pulse:before{content:\"\\F493\"}.ion-ios-pulse-strong:before{content:\"\\F492\"}.ion-ios-rainy:before{content:\"\\F495\"}.ion-ios-rainy-outline:before{content:\"\\F494\"}.ion-ios-recording:before{content:\"\\F497\"}.ion-ios-recording-outline:before{content:\"\\F496\"}.ion-ios-redo:before{content:\"\\F499\"}.ion-ios-redo-outline:before{content:\"\\F498\"}.ion-ios-refresh:before{content:\"\\F49C\"}.ion-ios-refresh-empty:before{content:\"\\F49A\"}.ion-ios-refresh-outline:before{content:\"\\F49B\"}.ion-ios-reload:before{content:\"\\F49D\"}.ion-ios-reverse-camera:before{content:\"\\F49F\"}.ion-ios-reverse-camera-outline:before{content:\"\\F49E\"}.ion-ios-rewind:before{content:\"\\F4A1\"}.ion-ios-rewind-outline:before{content:\"\\F4A0\"}.ion-ios-rose:before{content:\"\\F4A3\"}.ion-ios-rose-outline:before{content:\"\\F4A2\"}.ion-ios-search:before{content:\"\\F4A5\"}.ion-ios-search-strong:before{content:\"\\F4A4\"}.ion-ios-settings:before{content:\"\\F4A7\"}.ion-ios-settings-strong:before{content:\"\\F4A6\"}.ion-ios-shuffle:before{content:\"\\F4A9\"}.ion-ios-shuffle-strong:before{content:\"\\F4A8\"}.ion-ios-skipbackward:before{content:\"\\F4AB\"}.ion-ios-skipbackward-outline:before{content:\"\\F4AA\"}.ion-ios-skipforward:before{content:\"\\F4AD\"}.ion-ios-skipforward-outline:before{content:\"\\F4AC\"}.ion-ios-snowy:before{content:\"\\F4AE\"}.ion-ios-speedometer:before{content:\"\\F4B0\"}.ion-ios-speedometer-outline:before{content:\"\\F4AF\"}.ion-ios-star:before{content:\"\\F4B3\"}.ion-ios-star-half:before{content:\"\\F4B1\"}.ion-ios-star-outline:before{content:\"\\F4B2\"}.ion-ios-stopwatch:before{content:\"\\F4B5\"}.ion-ios-stopwatch-outline:before{content:\"\\F4B4\"}.ion-ios-sunny:before{content:\"\\F4B7\"}.ion-ios-sunny-outline:before{content:\"\\F4B6\"}.ion-ios-telephone:before{content:\"\\F4B9\"}.ion-ios-telephone-outline:before{content:\"\\F4B8\"}.ion-ios-tennisball:before{content:\"\\F4BB\"}.ion-ios-tennisball-outline:before{content:\"\\F4BA\"}.ion-ios-thunderstorm:before{content:\"\\F4BD\"}.ion-ios-thunderstorm-outline:before{content:\"\\F4BC\"}.ion-ios-time:before{content:\"\\F4BF\"}.ion-ios-time-outline:before{content:\"\\F4BE\"}.ion-ios-timer:before{content:\"\\F4C1\"}.ion-ios-timer-outline:before{content:\"\\F4C0\"}.ion-ios-toggle:before{content:\"\\F4C3\"}.ion-ios-toggle-outline:before{content:\"\\F4C2\"}.ion-ios-trash:before{content:\"\\F4C5\"}.ion-ios-trash-outline:before{content:\"\\F4C4\"}.ion-ios-undo:before{content:\"\\F4C7\"}.ion-ios-undo-outline:before{content:\"\\F4C6\"}.ion-ios-unlocked:before{content:\"\\F4C9\"}.ion-ios-unlocked-outline:before{content:\"\\F4C8\"}.ion-ios-upload:before{content:\"\\F4CB\"}.ion-ios-upload-outline:before{content:\"\\F4CA\"}.ion-ios-videocam:before{content:\"\\F4CD\"}.ion-ios-videocam-outline:before{content:\"\\F4CC\"}.ion-ios-volume-high:before{content:\"\\F4CE\"}.ion-ios-volume-low:before{content:\"\\F4CF\"}.ion-ios-wineglass:before{content:\"\\F4D1\"}.ion-ios-wineglass-outline:before{content:\"\\F4D0\"}.ion-ios-world:before{content:\"\\F4D3\"}.ion-ios-world-outline:before{content:\"\\F4D2\"}.ion-ipad:before{content:\"\\F1F9\"}.ion-iphone:before{content:\"\\F1FA\"}.ion-ipod:before{content:\"\\F1FB\"}.ion-jet:before{content:\"\\F295\"}.ion-key:before{content:\"\\F296\"}.ion-knife:before{content:\"\\F297\"}.ion-laptop:before{content:\"\\F1FC\"}.ion-leaf:before{content:\"\\F1FD\"}.ion-levels:before{content:\"\\F298\"}.ion-lightbulb:before{content:\"\\F299\"}.ion-link:before{content:\"\\F1FE\"}.ion-load-a:before{content:\"\\F29A\"}.ion-load-b:before{content:\"\\F29B\"}.ion-load-c:before{content:\"\\F29C\"}.ion-load-d:before{content:\"\\F29D\"}.ion-location:before{content:\"\\F1FF\"}.ion-lock-combination:before{content:\"\\F4D4\"}.ion-locked:before{content:\"\\F200\"}.ion-log-in:before{content:\"\\F29E\"}.ion-log-out:before{content:\"\\F29F\"}.ion-loop:before{content:\"\\F201\"}.ion-magnet:before{content:\"\\F2A0\"}.ion-male:before{content:\"\\F2A1\"}.ion-man:before{content:\"\\F202\"}.ion-map:before{content:\"\\F203\"}.ion-medkit:before{content:\"\\F2A2\"}.ion-merge:before{content:\"\\F33F\"}.ion-mic-a:before{content:\"\\F204\"}.ion-mic-b:before{content:\"\\F205\"}.ion-mic-c:before{content:\"\\F206\"}.ion-minus:before{content:\"\\F209\"}.ion-minus-circled:before{content:\"\\F207\"}.ion-minus-round:before{content:\"\\F208\"}.ion-model-s:before{content:\"\\F2C1\"}.ion-monitor:before{content:\"\\F20A\"}.ion-more:before{content:\"\\F20B\"}.ion-mouse:before{content:\"\\F340\"}.ion-music-note:before{content:\"\\F20C\"}.ion-navicon:before{content:\"\\F20E\"}.ion-navicon-round:before{content:\"\\F20D\"}.ion-navigate:before{content:\"\\F2A3\"}.ion-network:before{content:\"\\F341\"}.ion-no-smoking:before{content:\"\\F2C2\"}.ion-nuclear:before{content:\"\\F2A4\"}.ion-outlet:before{content:\"\\F342\"}.ion-paintbrush:before{content:\"\\F4D5\"}.ion-paintbucket:before{content:\"\\F4D6\"}.ion-paper-airplane:before{content:\"\\F2C3\"}.ion-paperclip:before{content:\"\\F20F\"}.ion-pause:before{content:\"\\F210\"}.ion-person:before{content:\"\\F213\"}.ion-person-add:before{content:\"\\F211\"}.ion-person-stalker:before{content:\"\\F212\"}.ion-pie-graph:before{content:\"\\F2A5\"}.ion-pin:before{content:\"\\F2A6\"}.ion-pinpoint:before{content:\"\\F2A7\"}.ion-pizza:before{content:\"\\F2A8\"}.ion-plane:before{content:\"\\F214\"}.ion-planet:before{content:\"\\F343\"}.ion-play:before{content:\"\\F215\"}.ion-playstation:before{content:\"\\F30A\"}.ion-plus:before{content:\"\\F218\"}.ion-plus-circled:before{content:\"\\F216\"}.ion-plus-round:before{content:\"\\F217\"}.ion-podium:before{content:\"\\F344\"}.ion-pound:before{content:\"\\F219\"}.ion-power:before{content:\"\\F2A9\"}.ion-pricetag:before{content:\"\\F2AA\"}.ion-pricetags:before{content:\"\\F2AB\"}.ion-printer:before{content:\"\\F21A\"}.ion-pull-request:before{content:\"\\F345\"}.ion-qr-scanner:before{content:\"\\F346\"}.ion-quote:before{content:\"\\F347\"}.ion-radio-waves:before{content:\"\\F2AC\"}.ion-record:before{content:\"\\F21B\"}.ion-refresh:before{content:\"\\F21C\"}.ion-reply:before{content:\"\\F21E\"}.ion-reply-all:before{content:\"\\F21D\"}.ion-ribbon-a:before{content:\"\\F348\"}.ion-ribbon-b:before{content:\"\\F349\"}.ion-sad:before{content:\"\\F34A\"}.ion-sad-outline:before{content:\"\\F4D7\"}.ion-scissors:before{content:\"\\F34B\"}.ion-search:before{content:\"\\F21F\"}.ion-settings:before{content:\"\\F2AD\"}.ion-share:before{content:\"\\F220\"}.ion-shuffle:before{content:\"\\F221\"}.ion-skip-backward:before{content:\"\\F222\"}.ion-skip-forward:before{content:\"\\F223\"}.ion-social-android:before{content:\"\\F225\"}.ion-social-android-outline:before{content:\"\\F224\"}.ion-social-angular:before{content:\"\\F4D9\"}.ion-social-angular-outline:before{content:\"\\F4D8\"}.ion-social-apple:before{content:\"\\F227\"}.ion-social-apple-outline:before{content:\"\\F226\"}.ion-social-bitcoin:before{content:\"\\F2AF\"}.ion-social-bitcoin-outline:before{content:\"\\F2AE\"}.ion-social-buffer:before{content:\"\\F229\"}.ion-social-buffer-outline:before{content:\"\\F228\"}.ion-social-chrome:before{content:\"\\F4DB\"}.ion-social-chrome-outline:before{content:\"\\F4DA\"}.ion-social-codepen:before{content:\"\\F4DD\"}.ion-social-codepen-outline:before{content:\"\\F4DC\"}.ion-social-css3:before{content:\"\\F4DF\"}.ion-social-css3-outline:before{content:\"\\F4DE\"}.ion-social-designernews:before{content:\"\\F22B\"}.ion-social-designernews-outline:before{content:\"\\F22A\"}.ion-social-dribbble:before{content:\"\\F22D\"}.ion-social-dribbble-outline:before{content:\"\\F22C\"}.ion-social-dropbox:before{content:\"\\F22F\"}.ion-social-dropbox-outline:before{content:\"\\F22E\"}.ion-social-euro:before{content:\"\\F4E1\"}.ion-social-euro-outline:before{content:\"\\F4E0\"}.ion-social-facebook:before{content:\"\\F231\"}.ion-social-facebook-outline:before{content:\"\\F230\"}.ion-social-foursquare:before{content:\"\\F34D\"}.ion-social-foursquare-outline:before{content:\"\\F34C\"}.ion-social-freebsd-devil:before{content:\"\\F2C4\"}.ion-social-github:before{content:\"\\F233\"}.ion-social-github-outline:before{content:\"\\F232\"}.ion-social-google:before{content:\"\\F34F\"}.ion-social-google-outline:before{content:\"\\F34E\"}.ion-social-googleplus:before{content:\"\\F235\"}.ion-social-googleplus-outline:before{content:\"\\F234\"}.ion-social-hackernews:before{content:\"\\F237\"}.ion-social-hackernews-outline:before{content:\"\\F236\"}.ion-social-html5:before{content:\"\\F4E3\"}.ion-social-html5-outline:before{content:\"\\F4E2\"}.ion-social-instagram:before{content:\"\\F351\"}.ion-social-instagram-outline:before{content:\"\\F350\"}.ion-social-javascript:before{content:\"\\F4E5\"}.ion-social-javascript-outline:before{content:\"\\F4E4\"}.ion-social-linkedin:before{content:\"\\F239\"}.ion-social-linkedin-outline:before{content:\"\\F238\"}.ion-social-markdown:before{content:\"\\F4E6\"}.ion-social-nodejs:before{content:\"\\F4E7\"}.ion-social-octocat:before{content:\"\\F4E8\"}.ion-social-pinterest:before{content:\"\\F2B1\"}.ion-social-pinterest-outline:before{content:\"\\F2B0\"}.ion-social-python:before{content:\"\\F4E9\"}.ion-social-reddit:before{content:\"\\F23B\"}.ion-social-reddit-outline:before{content:\"\\F23A\"}.ion-social-rss:before{content:\"\\F23D\"}.ion-social-rss-outline:before{content:\"\\F23C\"}.ion-social-sass:before{content:\"\\F4EA\"}.ion-social-skype:before{content:\"\\F23F\"}.ion-social-skype-outline:before{content:\"\\F23E\"}.ion-social-snapchat:before{content:\"\\F4EC\"}.ion-social-snapchat-outline:before{content:\"\\F4EB\"}.ion-social-tumblr:before{content:\"\\F241\"}.ion-social-tumblr-outline:before{content:\"\\F240\"}.ion-social-tux:before{content:\"\\F2C5\"}.ion-social-twitch:before{content:\"\\F4EE\"}.ion-social-twitch-outline:before{content:\"\\F4ED\"}.ion-social-twitter:before{content:\"\\F243\"}.ion-social-twitter-outline:before{content:\"\\F242\"}.ion-social-usd:before{content:\"\\F353\"}.ion-social-usd-outline:before{content:\"\\F352\"}.ion-social-vimeo:before{content:\"\\F245\"}.ion-social-vimeo-outline:before{content:\"\\F244\"}.ion-social-whatsapp:before{content:\"\\F4F0\"}.ion-social-whatsapp-outline:before{content:\"\\F4EF\"}.ion-social-windows:before{content:\"\\F247\"}.ion-social-windows-outline:before{content:\"\\F246\"}.ion-social-wordpress:before{content:\"\\F249\"}.ion-social-wordpress-outline:before{content:\"\\F248\"}.ion-social-yahoo:before{content:\"\\F24B\"}.ion-social-yahoo-outline:before{content:\"\\F24A\"}.ion-social-yen:before{content:\"\\F4F2\"}.ion-social-yen-outline:before{content:\"\\F4F1\"}.ion-social-youtube:before{content:\"\\F24D\"}.ion-social-youtube-outline:before{content:\"\\F24C\"}.ion-soup-can:before{content:\"\\F4F4\"}.ion-soup-can-outline:before{content:\"\\F4F3\"}.ion-speakerphone:before{content:\"\\F2B2\"}.ion-speedometer:before{content:\"\\F2B3\"}.ion-spoon:before{content:\"\\F2B4\"}.ion-star:before{content:\"\\F24E\"}.ion-stats-bars:before{content:\"\\F2B5\"}.ion-steam:before{content:\"\\F30B\"}.ion-stop:before{content:\"\\F24F\"}.ion-thermometer:before{content:\"\\F2B6\"}.ion-thumbsdown:before{content:\"\\F250\"}.ion-thumbsup:before{content:\"\\F251\"}.ion-toggle:before{content:\"\\F355\"}.ion-toggle-filled:before{content:\"\\F354\"}.ion-transgender:before{content:\"\\F4F5\"}.ion-trash-a:before{content:\"\\F252\"}.ion-trash-b:before{content:\"\\F253\"}.ion-trophy:before{content:\"\\F356\"}.ion-tshirt:before{content:\"\\F4F7\"}.ion-tshirt-outline:before{content:\"\\F4F6\"}.ion-umbrella:before{content:\"\\F2B7\"}.ion-university:before{content:\"\\F357\"}.ion-unlocked:before{content:\"\\F254\"}.ion-upload:before{content:\"\\F255\"}.ion-usb:before{content:\"\\F2B8\"}.ion-videocamera:before{content:\"\\F256\"}.ion-volume-high:before{content:\"\\F257\"}.ion-volume-low:before{content:\"\\F258\"}.ion-volume-medium:before{content:\"\\F259\"}.ion-volume-mute:before{content:\"\\F25A\"}.ion-wand:before{content:\"\\F358\"}.ion-waterdrop:before{content:\"\\F25B\"}.ion-wifi:before{content:\"\\F25C\"}.ion-wineglass:before{content:\"\\F2B9\"}.ion-woman:before{content:\"\\F25D\"}.ion-wrench:before{content:\"\\F2BA\"}.ion-xbox:before{content:\"\\F30C\"}", ""]); // exports /***/ }), /* 16 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(1)(); // imports // module exports.push([module.i, "body,html{padding:0;margin:0;background:#f9f9f9;-webkit-font-smoothing:antialiased;font-family:Lantinghei SC,Open Sans,Arial,Hiragino Sans GB,Microsoft YaHei,微软雅黑,STHeiti,WenQuanYi Micro Hei,SimSun,sans-serif}@-webkit-keyframes loading{0%{transform-origin:50% 50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{transform-origin:50% 50%;-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes loading{0%{transform-origin:50% 50%;-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{transform-origin:50% 50%;-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.infinite-rotate{animation:loading 1s infinite linear}", ""]); // exports /***/ }), /* 17 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(1)(); // imports // module exports.push([module.i, ".view{text-align:center;padding-top:1rem}.content{display:inline-block;width:960px;min-height:100vh;background-color:#fff;padding:1rem}@media (max-width:768px){.content{width:100%;padding:.5rem;box-sizing:border-box}}", ""]); // exports /***/ }), /* 18 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(1)(); // imports // module exports.push([module.i, ".header{display:flex;background:#fff;height:4rem;line-height:4rem;padding:0 2rem;box-shadow:0 0 1px rgba(0,0,0,.15)}.header-logo{margin-right:1rem;flex-shrink:0;font-family:serif;font-size:1.4rem;line-height:4rem;color:#000;text-decoration:none}.header-logo-image{height:1.4rem;vertical-align:top;margin:1.4rem 0 0}.header-logo-content{height:4rem;vertical-align:text-bottom}.header-nav{width:100%;display:flex}.header-nav-item{text-decoration:none;color:#777;display:block;margin:0 1rem}.header-nav-item.router-link-active{color:#03a9f4}.header-sign{flex-shrink:0}.header-sign .um-button{line-height:1.5rem;min-width:4rem}.header-nav-m{display:none;position:absolute;left:0;top:0;height:4rem;width:4rem;text-align:center;font-size:2rem}.header-nav-m-list{position:absolute;z-index:100;font-size:1rem;background:#ccc;width:100%;top:4rem;left:0;border-top:1px solid #f7f7f7}.header-nav-item-m{width:100%;display:block;text-align:center;line-height:3rem;background:#fff;border-bottom:1px solid #f7f7f7;text-decoration:none;color:#333}.header-nav-enter-active{animation:header-nav-in .3s cubic-bezier(.215,.61,.355,1)}.header-nav-leave-active{animation:header-nav-out .3s cubic-bezier(.215,.61,.355,1)}@keyframes header-nav-in{0%{transform:translate3d(0,30%,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes header-nav-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,30%,0);opacity:0}}@media (max-width:768px){.header-nav-item{display:none}.header{padding-left:4rem;padding-right:1rem}.header-nav-m,.header-nav-m .header-nav-item{display:initial}}", ""]); // exports /***/ }), /* 19 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__.p + "file/ionicons.svg"; /***/ }), /* 20 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__.p + "file/ionicons.ttf"; /***/ }), /* 21 */ /***/ (function(module, exports, __webpack_require__) { module.exports = __webpack_require__.p + "file/ionicons.woff"; /***/ }), /* 22 */ /***/ (function(module, exports, __webpack_require__) { /* styles */ __webpack_require__(36) __webpack_require__(37) __webpack_require__(38) var Component = __webpack_require__(0)( /* script */ __webpack_require__(9), /* template */ __webpack_require__(29), /* scopeId */ null, /* cssModules */ null ) module.exports = Component.exports /***/ }), /* 23 */ /***/ (function(module, exports, __webpack_require__) { /* styles */ __webpack_require__(39) var Component = __webpack_require__(0)( /* script */ __webpack_require__(10), /* template */ __webpack_require__(32), /* scopeId */ null, /* cssModules */ null ) module.exports = Component.exports /***/ }), /* 24 */ /***/ (function(module, exports, __webpack_require__) { var Component = __webpack_require__(0)( /* script */ null, /* template */ __webpack_require__(30), /* scopeId */ null, /* cssModules */ null ) module.exports = Component.exports /***/ }), /* 25 */ /***/ (function(module, exports, __webpack_require__) { var Component = __webpack_require__(0)( /* script */ __webpack_require__(11), /* template */ __webpack_require__(31), /* scopeId */ null, /* cssModules */ null ) module.exports = Component.exports /***/ }), /* 26 */ /***/ (function(module, exports, __webpack_require__) { var Component = __webpack_require__(0)( /* script */ __webpack_require__(12), /* template */ __webpack_require__(33), /* scopeId */ null, /* cssModules */ null ) module.exports = Component.exports /***/ }), /* 27 */ /***/ (function(module, exports, __webpack_require__) { var Component = __webpack_require__(0)( /* script */ __webpack_require__(13), /* template */ __webpack_require__(35), /* scopeId */ null, /* cssModules */ null ) module.exports = Component.exports /***/ }), /* 28 */ /***/ (function(module, exports, __webpack_require__) { var Component = __webpack_require__(0)( /* script */ __webpack_require__(14), /* template */ __webpack_require__(34), /* scopeId */ null, /* cssModules */ null ) module.exports = Component.exports /***/ }), /* 29 */ /***/ (function(module, exports) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _c('div', { attrs: { "id": "app" } }, [_c('um-header'), _vm._v(" "), _c('router-view', { staticClass: "view" })], 1) },staticRenderFns: []} /***/ }), /* 30 */ /***/ (function(module, exports) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _c('div', [_vm._v("\n I'm compA\n")]) },staticRenderFns: []} /***/ }), /* 31 */ /***/ (function(module, exports) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _vm._m(0) },staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _c('div', [_c('div', { staticClass: "content home" }, [_c('div', { staticClass: "readme" }, [_c('a', { attrs: { "href": "https://github.com/hilongjw/vue-ssr" } }, [_c('h2', [_vm._v("Vue SSR")])]), _vm._v(" "), _c('p', [_vm._v("\n Use Vue 2.0 server-side rendering with Express\n ")])])])]) }]} /***/ }), /* 32 */ /***/ (function(module, exports) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _c('header', { staticClass: "header" }, [_c('div', { staticClass: "header-nav-m", on: { "click": _vm.toggleMNav } }, [_c('div', { staticClass: "header-nav-m-menu ion-navicon" })]), _vm._v(" "), _c('transition', { attrs: { "name": "header-nav" } }, [_c('div', { directives: [{ name: "show", rawName: "v-show", value: (_vm.HeaderNav.show), expression: "HeaderNav.show" }], staticClass: "header-nav-m-list" }, _vm._l((_vm.HeaderNav.navs), function(nav) { return _c('router-link', { staticClass: "header-nav-item-m", attrs: { "to": nav.route } }, [_vm._v(_vm._s(nav.text))]) }))]), _vm._v(" "), _c('router-link', { staticClass: "header-logo", attrs: { "to": "/home" } }, [_c('span', { staticClass: "header-logo-content" }, [_vm._v("Cov-X")])]), _vm._v(" "), _c('nav', { staticClass: "header-nav" }, _vm._l((_vm.HeaderNav.navs), function(nav) { return _c('router-link', { staticClass: "header-nav-item", attrs: { "to": nav.route } }, [_vm._v(_vm._s(nav.text))]) })), _vm._v(" "), _vm._t("default"), _vm._v(" "), (!_vm.User) ? _c('router-link', { staticClass: "header-logo", attrs: { "to": "/login" } }, [_c('div', { staticClass: "header-sign" }, [_c('button', { attrs: { "button": _vm.button.signUp } }, [_vm._v("登录")]), _vm._v(" "), _c('button', { attrs: { "button": _vm.button.signIn } }, [_vm._v("注册")])])]) : _vm._e()], 2) },staticRenderFns: []} /***/ }), /* 33 */ /***/ (function(module, exports) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _c('div', [_c('div', { staticClass: "content home" }, [_vm._v("\n it's home page\n "), _vm._l((_vm.list), function(item) { return _c('div', [_vm._v(_vm._s(item))]) }), _vm._v(" "), _c('button', { on: { "click": _vm.addOne } }, [_vm._v("add a 233")]), _vm._v(" "), _c('comp-a')], 2)]) },staticRenderFns: []} /***/ }), /* 34 */ /***/ (function(module, exports) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _vm._m(0) },staticRenderFns: [function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _c('div', [_c('div', { staticClass: "content home" }, [_vm._v("\n it's entry page\n ")])]) }]} /***/ }), /* 35 */ /***/ (function(module, exports) { module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h; return _c('div', [_c('div', { staticClass: "content home" }, [_vm._v("\n it's fake Login\n "), _c('button', { on: { "click": _vm.refresh } }, [_vm._v(" refresh ")])])]) },staticRenderFns: []} /***/ }), /* 36 */ /***/ (function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a