UNPKG

whistle.vase

Version:
547 lines (505 loc) 2.3 MB
/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(1); __webpack_require__(13); __webpack_require__(15); var $ = window.jQuery = __webpack_require__(17); //for bootstrap __webpack_require__(18); var React = __webpack_require__(19); var ReactDOM = __webpack_require__(59); var List = __webpack_require__(206); var ListModal = __webpack_require__(285); var EditorSettings = __webpack_require__(286); var util = __webpack_require__(217); var storage = __webpack_require__(284); var dataCenter = __webpack_require__(289); var MAX_FILE_SIZE = 1024 * 1024 * 5; var Index = React.createClass({displayName: "Index", getInitialState: function() { var data = this.props.data; var modal = { list: [], data: {} }; var hasActive; data.list.forEach(function(item) { modal.list.push(item.name); var active = item.name == data.activeName; if (active) { hasActive = true; } modal.data[item.name] = { name: item.name, type: item.type, value: item.value, active: active }; }); if (!hasActive && (item = data.list[0])) { modal.data[item.name].active = true; } return { modal: new ListModal(modal.list, modal.data), engineList: data.engineList, theme: storage.get('theme'), fontSize: storage.get('fontSize'), showLineNumbers: storage.get('showLineNumbers') }; }, add: function(e) { var self = this; if (self._creating || !self.isEnterPressed(e)) { return; } var dialog = $(ReactDOM.findDOMNode(this.refs.createTpl)); var input = dialog.find('.w-tpl-name'); if (!self._checkTplName(input)) { return; } var name = $.trim(input.val()); var modal = self.state.modal; if (modal.exists(name)) { alert('`' + name + '` already exists'); input.select().focus(); return; } var typeBox = dialog.find('.w-template-type'); var type = typeBox.find('input:checked').attr('data-type') || 'default'; self._creating = true; dataCenter.add({ name: name, type: type }, function(data) { self._creating = false; if (!data || data.ec !== 0) { util.showSystemError(); return; } input.val(''); var item = modal.add(name, ''); if (item) { item.type = type; modal.setActive(item.name); } dialog.modal('hide'); self.setState({}); }); }, setValue: function(item) { var self = this; if (!item.changed) { self.showEditDialog(); return; } var modal = self.state.modal; dataCenter.setValue(item, function(data) { if (!data || data.ec !== 0) { util.showSystemError(); return; } modal.setChanged(item.name, false); self.setState({}); }); }, save: function() { this.state.modal .getChangedList() .forEach(this.setValue); }, format: function() { var modal = this.state.modal; var activeItem = modal.getActive(); if (!activeItem) { return; } var data = util.parseRawJson(activeItem.value); if (data) { var value = JSON.stringify(data, null, ' '); if (value === activeItem.value) { return; } activeItem.value = value; activeItem.changed = true; this.setState({}); } }, showEditDialog: function() { var activeItem = this.state.modal.getActive(); if (activeItem) { this._showTplDialog($(ReactDOM.findDOMNode(this.refs.editTpl)), activeItem); } }, edit: function(e) { var self = this; if (self._editing || !self.isEnterPressed(e)) { return; } var modal = self.state.modal; var activeItem = modal.getActive(); if (!activeItem) { return; } var dialog = $(ReactDOM.findDOMNode(this.refs.editTpl)); var input = dialog.find('.w-tpl-name'); if (!self._checkTplName(input)) { return; } var name = $.trim(input.val()); if (modal.exists(name) && activeItem.name != name) { alert('`' + name + '` already exists'); input.select().focus(); return; } var typeBox = dialog.find('.w-template-type'); var type = typeBox.find('input:checked').attr('data-type') || 'default'; self._editing = true; dataCenter.edit({ name: activeItem.name, type: activeItem.type, newName: name, newType: type }, function(data) { self._editing = false; if (!data || data.ec !== 0) { util.showSystemError(); return; } input.val(''); activeItem.type = type; modal.rename(activeItem.name, name); dialog.modal('hide'); self.setState({}); }); }, isEnterPressed: function(e) { return e.type != 'keydown' || e.keyCode == 13; }, convertName: function(name) { if (!name) { return ''; } return name.trim().replace(/[^\w.\-]+/g, '').substring(0, 64); }, _checkTplName: function(input) { var rawName = input.val().trim(); var name = this.convertName(rawName); if (name != rawName) { input.val(name); } if (!name) { alert('Name cannot be empty'); input.select().focus(); return false; } return true; }, _showTplDialog: function(dialog, data) { var typeBox = dialog.find('.w-template-type'); var boxes = typeBox.find('input:checked'); var nameInput = dialog.find('.w-tpl-name'); if (data) { typeBox.find('input[data-type=' + data.type + ']').prop('checked', true); dialog.find('.w-tpl-name').val(data.name); } else if (!boxes.length) { typeBox.find('input:first').prop('checked', true); } dialog.modal('show'); setTimeout(function() { nameInput.select().focus(); }, 300); }, showTplSettingsDialog: function() { $(ReactDOM.findDOMNode(this.refs.tplSettingsDialog)).modal('show'); }, remove: function() { var self = this; var modal = self.state.modal; var data = modal.getActive(); if (!data || !confirm('Confirm delete `' + data.name + '`?')) { return; } dataCenter.remove(data, function(result) { if (!result || result.ec !== 0) { util.showSystemError(); return; } var next = modal.getSibling(data.name); modal.remove(data.name); if (next) { modal.setActive(next.name, true); } self.setState({}); }); }, showCreateTplDialog: function() { this._showTplDialog($(ReactDOM.findDOMNode(this.refs.createTpl))); }, uploadDataForm: function(data) { var file = data.get('importData'); if (!file || !/\.(txt|json)$/i.test(file.name)) { return alert('Only supports .txt, .json file.'); } if (file.size > MAX_FILE_SIZE) { return alert('The file size can not exceed 5m.'); } var self = this; var modal = self.state.modal; for (var i = 0, len = modal.list.length; i < len; ++i) { var item = modal.data[modal.list[i]]; if (item && item.changed) { if (!confirm('Importing data will lose the currently unsaved data.\nDo you want to continue?')) { return; } break; } } var reader = new FileReader(); reader.readAsText(file); reader.onload = function(){ try { var result = JSON.parse(this.result); if (!Array.isArray(result)) { return; } var params; result.forEach(function(item) { if (item && util.isString(item.name, true) && util.isString(item.type, true)) { params = params || []; params.push({ name: item.name, value: util.toString(item.value), type: item.type }); } }); if (!params) { return alert('No data.'); } dataCenter.importData({ list: JSON.stringify(params) }, function(data) { if (!data) { return alert('Server internal error, try again later.'); } var map = {}; var list = data.list.map(function(item) { map[item.name] = item; return item.name; }); self.state.modal.update(list, map); self.setState({}); }); } catch (e) { alert('Incorrect file format.'); } }; }, importData: function() { this.uploadDataForm(new FormData(ReactDOM.findDOMNode(this.refs.importDataForm))); ReactDOM.findDOMNode(this.refs.importData).value = ''; }, clickImport: function() { ReactDOM.findDOMNode(this.refs.importData).click(); }, onDrop: function(e) { var files = e.dataTransfer && e.dataTransfer.files; if (!files || !files.length) { return; } var data = new FormData(); data.append('importData', files[0]); this.uploadDataForm(data); e.preventDefault(); }, onThemeChange: function(e) { var theme = e.target.value; storage.set('theme', theme); this.setState({ theme: theme }); }, onFontSizeChange: function(e) { var fontSize = e.target.value; storage.set('fontSize', fontSize); this.setState({ fontSize: fontSize }); }, onLineNumberChange: function(e) { var showLineNumbers = e.target.checked; storage.set('showLineNumbers', showLineNumbers); this.setState({ showLineNumbers: showLineNumbers }); }, render: function() { var state = this.state; var theme = state.theme || 'cobalt'; var fontSize = state.fontSize || '14px'; var showLineNumbers = state.showLineNumbers || false; var activeItem = this.state.modal.getActive(); var engineName; if (activeItem) { engineName = React.createElement("span", {className: "w-engine-name"}, "Engine(", React.createElement("a", {href: 'https://github.com/whistle-plugins/whistle.vase#' + activeItem.type.toLowerCase(), target: "_blank"}, activeItem.type), ")"); } return (React.createElement("div", {className: "container orient-vertical-box"}, React.createElement("div", {className: "w-menu"}, React.createElement("a", {onClick: this.clickImport, className: "w-import-menu", href: "javascript:;", draggable: "false"}, React.createElement("span", {className: "glyphicon glyphicon-import"}), "Import" ), React.createElement("a", {className: "w-export-menu", href: "cgi-bin/export", target: "_blank", draggable: "false"}, React.createElement("span", {className: "glyphicon glyphicon-export"}), "Export" ), React.createElement("a", {className: "w-create-menu", href: "javascript:;", onClick: this.showCreateTplDialog}, React.createElement("span", {className: "glyphicon glyphicon-plus", draggable: "false"}), "Create"), React.createElement("a", {className: "w-edit-menu", href: "javascript:;", onClick: this.showEditDialog}, React.createElement("span", {className: "glyphicon glyphicon-edit", draggable: "false"}), "Edit"), React.createElement("a", {className: "w-remove-menu", href: "javascript:;", onClick: this.remove}, React.createElement("span", {className: "glyphicon glyphicon-trash", draggable: "false"}), "Delete"), React.createElement("a", {className: "w-save-menu", href: "javascript:;", onClick: this.save}, React.createElement("span", {className: "glyphicon glyphicon-save-file", draggable: "false"}), "Save"), React.createElement("a", {className: "w-save-menu", href: "javascript:;", onClick: this.format}, React.createElement("span", {className: "glyphicon glyphicon-ok-sign", draggable: "false"}), "Format"), React.createElement("a", {className: "w-settings-menu", href: "javascript:;", onClick: this.showTplSettingsDialog}, React.createElement("span", {className: "glyphicon glyphicon-cog", draggable: "false"}), "Settings"), React.createElement("a", {className: "w-help-menu", href: "https://github.com/whistle-plugins/whistle.vase#whistlevase", target: "_blank"}, React.createElement("span", {className: "glyphicon glyphicon-question-sign"}), "Help"), engineName ), React.createElement(List, {onDrop: this.onDrop, theme: theme, fontSize: fontSize, lineNumbers: showLineNumbers, onSelect: this.setValue, modal: this.state.modal, className: "w-data-list"}), React.createElement("div", {ref: "createTpl", className: "modal fade w-create-tpl"}, React.createElement("div", {className: "modal-dialog"}, React.createElement("div", {className: "modal-content"}, React.createElement("ul", {className: "modal-body"}, React.createElement("li", {className: "w-template-name"}, React.createElement("label", {className: "w-tpl-label"}, "Name:"), React.createElement("input", {onKeyDown: this.add, placeholder: "template name", type: "text", className: "form-control w-tpl-name", maxLength: "64"}) ), React.createElement("li", {className: "w-template-type"}, React.createElement("label", {className: "w-tpl-label"}, "Engine:"), state.engineList.map(function(name) { return ( React.createElement("label", {key: name, "data-name": name}, React.createElement("input", {type: "radio", "data-type": name, name: "tplName"}), name) ); }), React.createElement("a", {title: "Help", className: "glyphicon glyphicon-question-sign w-vase-help", href: "https://github.com/whistle-plugins/whistle.vase#whistlevase", target: "_blank"}) ) ), React.createElement("div", {className: "modal-footer"}, React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Cancel"), React.createElement("button", {onClick: this.add, type: "button", className: "btn btn-primary"}, "Confirm") ) ) ) ), React.createElement("div", {ref: "editTpl", className: "modal fade w-create-tpl"}, React.createElement("div", {className: "modal-dialog"}, React.createElement("div", {className: "modal-content"}, React.createElement("ul", {className: "modal-body"}, React.createElement("li", {className: "w-template-name"}, React.createElement("label", {className: "w-tpl-label"}, "Name:"), React.createElement("input", {onKeyDown: this.edit, placeholder: "template name", type: "text", className: "form-control w-tpl-name", maxLength: "64"}) ), React.createElement("li", {className: "w-template-type"}, React.createElement("label", {className: "w-tpl-label"}, "Engine:"), state.engineList.map(function(name) { return ( React.createElement("label", {key: name, "data-name": name}, React.createElement("input", {type: "radio", "data-type": name, name: "tplName"}), name) ); }), React.createElement("a", {title: "Help", className: "glyphicon glyphicon-question-sign w-vase-help", href: "https://github.com/whistle-plugins/whistle.vase#whistlevase", target: "_blank"}) ) ), React.createElement("div", {className: "modal-footer"}, React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Cancel"), React.createElement("button", {onClick: this.edit, type: "button", className: "btn btn-primary"}, "Confirm") ) ) ) ), React.createElement("div", {ref: "tplSettingsDialog", className: "modal fade w-tpl-settings-dialog"}, React.createElement("div", {className: "modal-dialog"}, React.createElement("div", {className: "modal-content"}, React.createElement("div", {className: "modal-body"}, React.createElement(EditorSettings, {theme: theme, fontSize: fontSize, lineNumbers: showLineNumbers, onThemeChange: this.onThemeChange, onFontSizeChange: this.onFontSizeChange, onLineNumberChange: this.onLineNumberChange}) ), React.createElement("div", {className: "modal-footer"}, React.createElement("button", {type: "button", className: "btn btn-default", "data-dismiss": "modal"}, "Close") ) ) ) ), React.createElement("form", {ref: "importDataForm", encType: "multipart/form-data", style: {display: 'none'}}, React.createElement("input", {ref: "importData", onChange: this.importData, type: "file", name: "importData", accept: ".txt,.json"}) ) )); } }); (function init() { dataCenter.init(function(data) { if (!data || !data.list) { return setTimeout(init, 1000); } ReactDOM.render(React.createElement(Index, {data: data}), $('#main')[0]); }); })(); /***/ }), /* 1 */ /***/ (function(module, exports, __webpack_require__) { __webpack_require__(2); __webpack_require__(11); /***/ }), /* 2 */ /***/ (function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a <style> tag // load the styles var content = __webpack_require__(3); if(typeof content === 'string') content = [[module.id, content, '']]; // add the styles to the DOM var update = __webpack_require__(10)(content, {}); if(content.locals) module.exports = content.locals; // Hot Module Replacement if(false) { // When the styles change, update the <style> tags if(!content.locals) { module.hot.accept("!!../../../css-loader/index.js!./bootstrap.css", function() { var newContent = require("!!../../../css-loader/index.js!./bootstrap.css"); if(typeof newContent === 'string') newContent = [[module.id, newContent, '']]; update(newContent); }); } // When the module is disposed, remove the <style> tags module.hot.dispose(function() { update(); }); } /***/ }), /* 3 */ /***/ (function(module, exports, __webpack_require__) { exports = module.exports = __webpack_require__(4)(); // imports // module exports.push([module.id, "/*!\n * Bootstrap v3.4.1 (https://getbootstrap.com/)\n * Copyright 2011-2019 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n/*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\nhtml {\n font-family: sans-serif;\n -ms-text-size-adjust: 100%;\n -webkit-text-size-adjust: 100%;\n}\nbody {\n margin: 0;\n}\narticle,\naside,\ndetails,\nfigcaption,\nfigure,\nfooter,\nheader,\nhgroup,\nmain,\nmenu,\nnav,\nsection,\nsummary {\n display: block;\n}\naudio,\ncanvas,\nprogress,\nvideo {\n display: inline-block;\n vertical-align: baseline;\n}\naudio:not([controls]) {\n display: none;\n height: 0;\n}\n[hidden],\ntemplate {\n display: none;\n}\na {\n background-color: transparent;\n}\na:active,\na:hover {\n outline: 0;\n}\nabbr[title] {\n border-bottom: none;\n text-decoration: underline;\n -webkit-text-decoration: underline dotted;\n -moz-text-decoration: underline dotted;\n text-decoration: underline dotted;\n}\nb,\nstrong {\n font-weight: bold;\n}\ndfn {\n font-style: italic;\n}\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\nmark {\n background: #ff0;\n color: #000;\n}\nsmall {\n font-size: 80%;\n}\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\nsup {\n top: -0.5em;\n}\nsub {\n bottom: -0.25em;\n}\nimg {\n border: 0;\n}\nsvg:not(:root) {\n overflow: hidden;\n}\nfigure {\n margin: 1em 40px;\n}\nhr {\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n height: 0;\n}\npre {\n overflow: auto;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: monospace, monospace;\n font-size: 1em;\n}\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n color: inherit;\n font: inherit;\n margin: 0;\n}\nbutton {\n overflow: visible;\n}\nbutton,\nselect {\n text-transform: none;\n}\nbutton,\nhtml input[type=\"button\"],\ninput[type=\"reset\"],\ninput[type=\"submit\"] {\n -webkit-appearance: button;\n cursor: pointer;\n}\nbutton[disabled],\nhtml input[disabled] {\n cursor: default;\n}\nbutton::-moz-focus-inner,\ninput::-moz-focus-inner {\n border: 0;\n padding: 0;\n}\ninput {\n line-height: normal;\n}\ninput[type=\"checkbox\"],\ninput[type=\"radio\"] {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n padding: 0;\n}\ninput[type=\"number\"]::-webkit-inner-spin-button,\ninput[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\ninput[type=\"search\"] {\n -webkit-appearance: textfield;\n -webkit-box-sizing: content-box;\n -moz-box-sizing: content-box;\n box-sizing: content-box;\n}\ninput[type=\"search\"]::-webkit-search-cancel-button,\ninput[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\nfieldset {\n border: 1px solid #c0c0c0;\n margin: 0 2px;\n padding: 0.35em 0.625em 0.75em;\n}\nlegend {\n border: 0;\n padding: 0;\n}\ntextarea {\n overflow: auto;\n}\noptgroup {\n font-weight: bold;\n}\ntable {\n border-collapse: collapse;\n border-spacing: 0;\n}\ntd,\nth {\n padding: 0;\n}\n/*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n@media print {\n *,\n *:before,\n *:after {\n color: #000 !important;\n text-shadow: none !important;\n background: transparent !important;\n -webkit-box-shadow: none !important;\n box-shadow: none !important;\n }\n a,\n a:visited {\n text-decoration: underline;\n }\n a[href]:after {\n content: \" (\" attr(href) \")\";\n }\n abbr[title]:after {\n content: \" (\" attr(title) \")\";\n }\n a[href^=\"#\"]:after,\n a[href^=\"javascript:\"]:after {\n content: \"\";\n }\n pre,\n blockquote {\n border: 1px solid #999;\n page-break-inside: avoid;\n }\n thead {\n display: table-header-group;\n }\n tr,\n img {\n page-break-inside: avoid;\n }\n img {\n max-width: 100% !important;\n }\n p,\n h2,\n h3 {\n orphans: 3;\n widows: 3;\n }\n h2,\n h3 {\n page-break-after: avoid;\n }\n .navbar {\n display: none;\n }\n .btn > .caret,\n .dropup > .btn > .caret {\n border-top-color: #000 !important;\n }\n .label {\n border: 1px solid #000;\n }\n .table {\n border-collapse: collapse !important;\n }\n .table td,\n .table th {\n background-color: #fff !important;\n }\n .table-bordered th,\n .table-bordered td {\n border: 1px solid #ddd !important;\n }\n}\n@font-face {\n font-family: \"Glyphicons Halflings\";\n src: url(" + __webpack_require__(5) + ");\n src: url(" + __webpack_require__(5) + "?#iefix) format(\"embedded-opentype\"), url(" + __webpack_require__(6) + ") format(\"woff2\"), url(" + __webpack_require__(7) + ") format(\"woff\"), url(" + __webpack_require__(8) + ") format(\"truetype\"), url(" + __webpack_require__(9) + "#glyphicons_halflingsregular) format(\"svg\");\n}\n.glyphicon {\n position: relative;\n top: 1px;\n display: inline-block;\n font-family: \"Glyphicons Halflings\";\n font-style: normal;\n font-weight: 400;\n line-height: 1;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n.glyphicon-asterisk:before {\n content: \"*\";\n}\n.glyphicon-plus:before {\n content: \"+\";\n}\n.glyphicon-euro:before,\n.glyphicon-eur:before {\n content: \"\\20AC\";\n}\n.glyphicon-minus:before {\n content: \"\\2212\";\n}\n.glyphicon-cloud:before {\n content: \"\\2601\";\n}\n.glyphicon-envelope:before {\n content: \"\\2709\";\n}\n.glyphicon-pencil:before {\n content: \"\\270F\";\n}\n.glyphicon-glass:before {\n content: \"\\E001\";\n}\n.glyphicon-music:before {\n content: \"\\E002\";\n}\n.glyphicon-search:before {\n content: \"\\E003\";\n}\n.glyphicon-heart:before {\n content: \"\\E005\";\n}\n.glyphicon-star:before {\n content: \"\\E006\";\n}\n.glyphicon-star-empty:before {\n content: \"\\E007\";\n}\n.glyphicon-user:before {\n content: \"\\E008\";\n}\n.glyphicon-film:before {\n content: \"\\E009\";\n}\n.glyphicon-th-large:before {\n content: \"\\E010\";\n}\n.glyphicon-th:before {\n content: \"\\E011\";\n}\n.glyphicon-th-list:before {\n content: \"\\E012\";\n}\n.glyphicon-ok:before {\n content: \"\\E013\";\n}\n.glyphicon-remove:before {\n content: \"\\E014\";\n}\n.glyphicon-zoom-in:before {\n content: \"\\E015\";\n}\n.glyphicon-zoom-out:before {\n content: \"\\E016\";\n}\n.glyphicon-off:before {\n content: \"\\E017\";\n}\n.glyphicon-signal:before {\n content: \"\\E018\";\n}\n.glyphicon-cog:before {\n content: \"\\E019\";\n}\n.glyphicon-trash:before {\n content: \"\\E020\";\n}\n.glyphicon-home:before {\n content: \"\\E021\";\n}\n.glyphicon-file:before {\n content: \"\\E022\";\n}\n.glyphicon-time:before {\n content: \"\\E023\";\n}\n.glyphicon-road:before {\n content: \"\\E024\";\n}\n.glyphicon-download-alt:before {\n content: \"\\E025\";\n}\n.glyphicon-download:before {\n content: \"\\E026\";\n}\n.glyphicon-upload:before {\n content: \"\\E027\";\n}\n.glyphicon-inbox:before {\n content: \"\\E028\";\n}\n.glyphicon-play-circle:before {\n content: \"\\E029\";\n}\n.glyphicon-repeat:before {\n content: \"\\E030\";\n}\n.glyphicon-refresh:before {\n content: \"\\E031\";\n}\n.glyphicon-list-alt:before {\n content: \"\\E032\";\n}\n.glyphicon-lock:before {\n content: \"\\E033\";\n}\n.glyphicon-flag:before {\n content: \"\\E034\";\n}\n.glyphicon-headphones:before {\n content: \"\\E035\";\n}\n.glyphicon-volume-off:before {\n content: \"\\E036\";\n}\n.glyphicon-volume-down:before {\n content: \"\\E037\";\n}\n.glyphicon-volume-up:before {\n content: \"\\E038\";\n}\n.glyphicon-qrcode:before {\n content: \"\\E039\";\n}\n.glyphicon-barcode:before {\n content: \"\\E040\";\n}\n.glyphicon-tag:before {\n content: \"\\E041\";\n}\n.glyphicon-tags:before {\n content: \"\\E042\";\n}\n.glyphicon-book:before {\n content: \"\\E043\";\n}\n.glyphicon-bookmark:before {\n content: \"\\E044\";\n}\n.glyphicon-print:before {\n content: \"\\E045\";\n}\n.glyphicon-camera:before {\n content: \"\\E046\";\n}\n.glyphicon-font:before {\n content: \"\\E047\";\n}\n.glyphicon-bold:before {\n content: \"\\E048\";\n}\n.glyphicon-italic:before {\n content: \"\\E049\";\n}\n.glyphicon-text-height:before {\n content: \"\\E050\";\n}\n.glyphicon-text-width:before {\n content: \"\\E051\";\n}\n.glyphicon-align-left:before {\n content: \"\\E052\";\n}\n.glyphicon-align-center:before {\n content: \"\\E053\";\n}\n.glyphicon-align-right:before {\n content: \"\\E054\";\n}\n.glyphicon-align-justify:before {\n content: \"\\E055\";\n}\n.glyphicon-list:before {\n content: \"\\E056\";\n}\n.glyphicon-indent-left:before {\n content: \"\\E057\";\n}\n.glyphicon-indent-right:before {\n content: \"\\E058\";\n}\n.glyphicon-facetime-video:before {\n content: \"\\E059\";\n}\n.glyphicon-picture:before {\n content: \"\\E060\";\n}\n.glyphicon-map-marker:before {\n content: \"\\E062\";\n}\n.glyphicon-adjust:before {\n content: \"\\E063\";\n}\n.glyphicon-tint:before {\n content: \"\\E064\";\n}\n.glyphicon-edit:before {\n content: \"\\E065\";\n}\n.glyphicon-share:before {\n content: \"\\E066\";\n}\n.glyphicon-check:before {\n content: \"\\E067\";\n}\n.glyphicon-move:before {\n content: \"\\E068\";\n}\n.glyphicon-step-backward:before {\n content: \"\\E069\";\n}\n.glyphicon-fast-backward:before {\n content: \"\\E070\";\n}\n.glyphicon-backward:before {\n content: \"\\E071\";\n}\n.glyphicon-play:before {\n content: \"\\E072\";\n}\n.glyphicon-pause:before {\n content: \"\\E073\";\n}\n.glyphicon-stop:before {\n content: \"\\E074\";\n}\n.glyphicon-forward:before {\n content: \"\\E075\";\n}\n.glyphicon-fast-forward:before {\n content: \"\\E076\";\n}\n.glyphicon-step-forward:before {\n content: \"\\E077\";\n}\n.glyphicon-eject:before {\n content: \"\\E078\";\n}\n.glyphicon-chevron-left:before {\n content: \"\\E079\";\n}\n.glyphicon-chevron-right:before {\n content: \"\\E080\";\n}\n.glyphicon-plus-sign:before {\n content: \"\\E081\";\n}\n.glyphicon-minus-sign:before {\n content: \"\\E082\";\n}\n.glyphicon-remove-sign:before {\n content: \"\\E083\";\n}\n.glyphicon-ok-sign:before {\n content: \"\\E084\";\n}\n.glyphicon-question-sign:before {\n content: \"\\E085\";\n}\n.glyphicon-info-sign:before {\n content: \"\\E086\";\n}\n.glyphicon-screenshot:before {\n content: \"\\E087\";\n}\n.glyphicon-remove-circle:before {\n content: \"\\E088\";\n}\n.glyphicon-ok-circle:before {\n content: \"\\E089\";\n}\n.glyphicon-ban-circle:before {\n content: \"\\E090\";\n}\n.glyphicon-arrow-left:before {\n content: \"\\E091\";\n}\n.glyphicon-arrow-right:before {\n content: \"\\E092\";\n}\n.glyphicon-arrow-up:before {\n content: \"\\E093\";\n}\n.glyphicon-arrow-down:before {\n content: \"\\E094\";\n}\n.glyphicon-share-alt:before {\n content: \"\\E095\";\n}\n.glyphicon-resize-full:before {\n content: \"\\E096\";\n}\n.glyphicon-resize-small:before {\n content: \"\\E097\";\n}\n.glyphicon-exclamation-sign:before {\n content: \"\\E101\";\n}\n.glyphicon-gift:before {\n content: \"\\E102\";\n}\n.glyphicon-leaf:before {\n content: \"\\E103\";\n}\n.glyphicon-fire:before {\n content: \"\\E104\";\n}\n.glyphicon-eye-open:before {\n content: \"\\E105\";\n}\n.glyphicon-eye-close:before {\n content: \"\\E106\";\n}\n.glyphicon-warning-sign:before {\n content: \"\\E107\";\n}\n.glyphicon-plane:before {\n content: \"\\E108\";\n}\n.glyphicon-calendar:before {\n content: \"\\E109\";\n}\n.glyphicon-random:before {\n content: \"\\E110\";\n}\n.glyphicon-comment:before {\n content: \"\\E111\";\n}\n.glyphicon-magnet:before {\n content: \"\\E112\";\n}\n.glyphicon-chevron-up:before {\n content: \"\\E113\";\n}\n.glyphicon-chevron-down:before {\n content: \"\\E114\";\n}\n.glyphicon-retweet:before {\n content: \"\\E115\";\n}\n.glyphicon-shopping-cart:before {\n content: \"\\E116\";\n}\n.glyphicon-folder-close:before {\n content: \"\\E117\";\n}\n.glyphicon-folder-open:before {\n content: \"\\E118\";\n}\n.glyphicon-resize-vertical:before {\n content: \"\\E119\";\n}\n.glyphicon-resize-horizontal:before {\n content: \"\\E120\";\n}\n.glyphicon-hdd:before {\n content: \"\\E121\";\n}\n.glyphicon-bullhorn:before {\n content: \"\\E122\";\n}\n.glyphicon-bell:before {\n content: \"\\E123\";\n}\n.glyphicon-certificate:before {\n content: \"\\E124\";\n}\n.glyphicon-thumbs-up:before {\n content: \"\\E125\";\n}\n.glyphicon-thumbs-down:before {\n content: \"\\E126\";\n}\n.glyphicon-hand-right:before {\n content: \"\\E127\";\n}\n.glyphicon-hand-left:before {\n content: \"\\E128\";\n}\n.glyphicon-hand-up:before {\n content: \"\\E129\";\n}\n.glyphicon-hand-down:before {\n content: \"\\E130\";\n}\n.glyphicon-circle-arrow-right:before {\n content: \"\\E131\";\n}\n.glyphicon-circle-arrow-left:before {\n content: \"\\E132\";\n}\n.glyphicon-circle-arrow-up:before {\n content: \"\\E133\";\n}\n.glyphicon-circle-arrow-down:before {\n content: \"\\E134\";\n}\n.glyphicon-globe:before {\n content: \"\\E135\";\n}\n.glyphicon-wrench:before {\n content: \"\\E136\";\n}\n.glyphicon-tasks:before {\n content: \"\\E137\";\n}\n.glyphicon-filter:before {\n content: \"\\E138\";\n}\n.glyphicon-briefcase:before {\n content: \"\\E139\";\n}\n.glyphicon-fullscreen:before {\n content: \"\\E140\";\n}\n.glyphicon-dashboard:before {\n content: \"\\E141\";\n}\n.glyphicon-paperclip:before {\n content: \"\\E142\";\n}\n.glyphicon-heart-empty:before {\n content: \"\\E143\";\n}\n.glyphicon-link:before {\n content: \"\\E144\";\n}\n.glyphicon-phone:before {\n content: \"\\E145\";\n}\n.glyphicon-pushpin:before {\n content: \"\\E146\";\n}\n.glyphicon-usd:before {\n content: \"\\E148\";\n}\n.glyphicon-gbp:before {\n content: \"\\E149\";\n}\n.glyphicon-sort:before {\n content: \"\\E150\";\n}\n.glyphicon-sort-by-alphabet:before {\n content: \"\\E151\";\n}\n.glyphicon-sort-by-alphabet-alt:before {\n content: \"\\E152\";\n}\n.glyphicon-sort-by-order:before {\n content: \"\\E153\";\n}\n.glyphicon-sort-by-order-alt:before {\n content: \"\\E154\";\n}\n.glyphicon-sort-by-attributes:before {\n content: \"\\E155\";\n}\n.glyphicon-sort-by-attributes-alt:before {\n content: \"\\E156\";\n}\n.glyphicon-unchecked:before {\n content: \"\\E157\";\n}\n.glyphicon-expand:before {\n content: \"\\E158\";\n}\n.glyphicon-collapse-down:before {\n content: \"\\E159\";\n}\n.glyphicon-collapse-up:before {\n content: \"\\E160\";\n}\n.glyphicon-log-in:before {\n content: \"\\E161\";\n}\n.glyphicon-flash:before {\n content: \"\\E162\";\n}\n.glyphicon-log-out:before {\n content: \"\\E163\";\n}\n.glyphicon-new-window:before {\n content: \"\\E164\";\n}\n.glyphicon-record:before {\n content: \"\\E165\";\n}\n.glyphicon-save:before {\n content: \"\\E166\";\n}\n.glyphicon-open:before {\n content: \"\\E167\";\n}\n.glyphicon-saved:before {\n content: \"\\E168\";\n}\n.glyphicon-import:before {\n content: \"\\E169\";\n}\n.glyphicon-export:before {\n content: \"\\E170\";\n}\n.glyphicon-send:before {\n content: \"\\E171\";\n}\n.glyphicon-floppy-disk:before {\n content: \"\\E172\";\n}\n.glyphicon-floppy-saved:before {\n content: \"\\E173\";\n}\n.glyphicon-floppy-remove:before {\n content: \"\\E174\";\n}\n.glyphicon-floppy-save:before {\n content: \"\\E175\";\n}\n.glyphicon-floppy-open:before {\n content: \"\\E176\";\n}\n.glyphicon-credit-card:before {\n content: \"\\E177\";\n}\n.glyphicon-transfer:before {\n content: \"\\E178\";\n}\n.glyphicon-cutlery:before {\n content: \"\\E179\";\n}\n.glyphicon-header:before {\n content: \"\\E180\";\n}\n.glyphicon-compressed:before {\n content: \"\\E181\";\n}\n.glyphicon-earphone:before {\n content: \"\\E182\";\n}\n.glyphicon-phone-alt:before {\n content: \"\\E183\";\n}\n.glyphicon-tower:before {\n content: \"\\E184\";\n}\n.glyphicon-stats:before {\n content: \"\\E185\";\n}\n.glyphicon-sd-video:before {\n content: \"\\E186\";\n}\n.glyphicon-hd-video:before {\n content: \"\\E187\";\n}\n.glyphicon-subtitles:before {\n content: \"\\E188\";\n}\n.glyphicon-sound-stereo:before {\n content: \"\\E189\";\n}\n.glyphicon-sound-dolby:before {\n content: \"\\E190\";\n}\n.glyphicon-sound-5-1:before {\n content: \"\\E191\";\n}\n.glyphicon-sound-6-1:before {\n content: \"\\E192\";\n}\n.glyphicon-sound-7-1:before {\n content: \"\\E193\";\n}\n.glyphicon-copyright-mark:before {\n content: \"\\E194\";\n}\n.glyphicon-registration-mark:before {\n content: \"\\E195\";\n}\n.glyphicon-cloud-download:before {\n content: \"\\E197\";\n}\n.glyphicon-cloud-upload:before {\n content: \"\\E198\";\n}\n.glyphicon-tree-conifer:before {\n content: \"\\E199\";\n}\n.glyphicon-tree-deciduous:before {\n content: \"\\E200\";\n}\n.glyphicon-cd:before {\n content: \"\\E201\";\n}\n.glyphicon-save-file:before {\n content: \"\\E202\";\n}\n.glyphicon-open-file:before {\n content: \"\\E203\";\n}\n.glyphicon-level-up:before {\n content: \"\\E204\";\n}\n.glyphicon-copy:before {\n content: \"\\E205\";\n}\n.glyphicon-paste:before {\n content: \"\\E206\";\n}\n.glyphicon-alert:before {\n content: \"\\E209\";\n}\n.glyphicon-equalizer:before {\n content: \"\\E210\";\n}\n.glyphicon-king:before {\n content: \"\\E211\";\n}\n.glyphicon-queen:before {\n content: \"\\E212\";\n}\n.glyphicon-pawn:before {\n content: \"\\E213\";\n}\n.glyphicon-bishop:before {\n content: \"\\E214\";\n}\n.glyphicon-knight:before {\n content: \"\\E215\";\n}\n.glyphicon-baby-formula:before {\n content: \"\\E216\";\n}\n.glyphicon-tent:before {\n content: \"\\26FA\";\n}\n.glyphicon-blackboard:before {\n content: \"\\E218\";\n}\n.glyphicon-bed:before {\n content: \"\\E219\";\n}\n.glyphicon-apple:before {\n content: \"\\F8FF\";\n}\n.glyphicon-erase:before {\n content: \"\\E221\";\n}\n.glyphicon-hourglass:before {\n content: \"\\231B\";\n}\n.glyphicon-lamp:before {\n content: \"\\E223\";\n}\n.glyphicon-duplicate:before {\n content: \"\\E224\";\n}\n.glyphicon-piggy-bank:before {\n content: \"\\E225\";\n}\n.glyphicon-scissors:before {\n content: \"\\E226\";\n}\n.glyphicon-bitcoin:before {\n content: \"\\E227\";\n}\n.glyphicon-btc:before {\n content: \"\\E227\";\n}\n.glyphicon-xbt:before {\n content: \"\\E227\";\n}\n.glyphicon-yen:before {\n content: \"\\A5\";\n}\n.glyphicon-jpy:before {\n content: \"\\A5\";\n}\n.glyphicon-ruble:before {\n content: \"\\20BD\";\n}\n.glyphicon-rub:before {\n content: \"\\20BD\";\n}\n.glyphicon-scale:before {\n content: \"\\E230\";\n}\n.glyphicon-ice-lolly:before {\n content: \"\\E231\";\n}\n.glyphicon-ice-lolly-tasted:before {\n content: \"\\E232\";\n}\n.glyphicon-education:before {\n content: \"\\E233\";\n}\n.glyphicon-option-horizontal:before {\n content: \"\\E234\";\n}\n.glyphicon-option-vertical:before {\n content: \"\\E235\";\n}\n.glyphicon-menu-hamburger:before {\n content: \"\\E236\";\n}\n.glyphicon-modal-window:before {\n content: \"\\E237\";\n}\n.glyphicon-oil:before {\n content: \"\\E238\";\n}\n.glyphicon-grain:before {\n content: \"\\E239\";\n}\n.glyphicon-sunglasses:before {\n content: \"\\E240\";\n}\n.glyphicon-text-size:before {\n content: \"\\E241\";\n}\n.glyphicon-text-color:before {\n content: \"\\E242\";\n}\n.glyphicon-text-background:before {\n content: \"\\E243\";\n}\n.glyphicon-object-align-top:before {\n content: \"\\E244\";\n}\n.glyphicon-object-align-bottom:before {\n content: \"\\E245\";\n}\n.glyphicon-object-align-horizontal:before {\n content: \"\\E246\";\n}\n.glyphicon-object-align-left:before {\n content: \"\\E247\";\n}\n.glyphicon-object-align-vertical:before {\n content: \"\\E248\";\n}\n.glyphicon-object-align-right:before {\n content: \"\\E249\";\n}\n.glyphicon-triangle-right:before {\n content: \"\\E250\";\n}\n.glyphicon-triangle-left:before {\n content: \"\\E251\";\n}\n.glyphicon-triangle-bottom:before {\n content: \"\\E252\";\n}\n.glyphicon-triangle-top:before {\n content: \"\\E253\";\n}\n.glyphicon-console:before {\n content: \"\\E254\";\n}\n.glyphicon-superscript:before {\n content: \"\\E255\";\n}\n.glyphicon-subscript:before {\n content: \"\\E256\";\n}\n.glyphicon-menu-left:before {\n content: \"\\E257\";\n}\n.glyphicon-menu-right:before {\n content: \"\\E258\";\n}\n.glyphicon-menu-down:before {\n content: \"\\E259\";\n}\n.glyphicon-menu-up:before {\n content: \"\\E260\";\n}\n* {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\n*:before,\n*:after {\n -webkit-box-sizing: border-box;\n -moz-box-sizing: border-box;\n box-sizing: border-box;\n}\nhtml {\n font-size: 10px;\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\nbody {\n font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n font-size: 14px;\n line-height: 1.42857143;\n color: #333333;\n background-color: #fff;\n}\ninput,\nbutton,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n}\na {\n color: #337ab7;\n text-decoration: none;\n}\na:hover,\na:focus {\n color: #23527c;\n text-decoration: underline;\n}\na:focus {\n outline: 5px auto -webkit-focus-ring-color;\n outline-offset: -2px;\n}\nfigure {\n margin: 0;\n}\nimg {\n vertical-align: middle;\n}\n.img-responsive,\n.thumbnail > img,\n.thumbnail a > img,\n.carousel-inner > .item > img,\n.carousel-inner > .item > a > img {\n display: block;\n max-width: 100%;\n height: auto;\n}\n.img-rounded {\n border-radius: 6px;\n}\n.img-thumbnail {\n padding: 4px;\n line-height: 1.42857143;\n background-color: #fff;\n border: 1px solid #ddd;\n border-radius: 4px;\n -webkit-transition: all 0.2s ease-in-out;\n -o-transition: all 0.2s ease-in-out;\n transition: all 0.2s ease-in-out;\n display: inline-block;\n max-width: 100%;\n height: auto;\n}\n.img-circle {\n border-radius: 50%;\n}\nhr {\n margin-top: 20px;\n margin-bottom: 20px;\n border: 0;\n border-top: 1px solid #eeeeee;\n}\n.sr-only {\n position: absolute;\n width: 1px;\n height: 1px;\n padding: 0;\n margin: -1px;\n overflow: hidden;\n clip: rect(0, 0, 0, 0);\n border: 0;\n}\n.sr-only-focusable:active,\n.sr-only-focusable:focus {\n position: static;\n width: auto;\n height: auto;\n margin: 0;\n overflow: visible;\n clip: auto;\n}\n[role=\"button\"] {\n cursor: pointer;\n}\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\n.h1,\n.h2,\n.h3,\n.h4,\n.h5,\n.h6 {\n font-family: inherit;\n font-weight: 500;\n line-height: 1.1;\n color: inherit;\n}\nh1 small,\nh2 small,\nh3 small,\nh4 small,\nh5 small,\nh6 small,\n.h1 small,\n.h2 small,\n.h3 small,\n.h4 small,\n.h5 small,\n.h6 small,\nh1 .small,\nh2 .small,\nh3 .small,\nh4 .small,\nh5 .small,\nh6 .small,\n.h1 .small,\n.h2 .small,\n.h3 .small,\n.h4 .small,\n.h5 .small,\n.h6 .small {\n font-weight: 400;\n line-height: 1;\n color: #777777;\n}\nh1,\n.h1,\nh2,\n.h2,\nh3,\n.h3 {\n margin-top: 20px;\n margin-bottom: 10px;\n}\nh1 small,\n.h1 small,\nh2 small,\n.h2 small,\nh3 small,\n.h3 small,\nh1 .small,\n.h1 .small,\nh2 .small,\n.h2 .small,\nh3 .small,\n.h3 .small {\n font-size: 65%;\n}\nh4,\n.h4,\nh5,\n.h5,\nh6,\n.h6 {\n margin-top: 10px;\n margin-bottom: 10px;\n}\nh4 small,\n.h4 small,\nh5 small,\n.h5 small,\nh6 small,\n.h6 small,\nh4 .small,\n.h4 .small,\nh5 .small,\n.h5 .small,\nh6 .small,\n.h6 .small {\n font-size: 75%;\n}\nh1,\n.h1 {\n font-size: 36px;\n}\nh2,\n.h2 {\n font-size: 30px;\n}\nh3,\n.h3 {\n font-size: 24px;\n}\nh4,\n.h4 {\n font-size: 18px;\n}\nh5,\n.h5 {\n font-size: 14px;\n}\nh6,\n.h6 {\n font-size: 12px;\n}\np {\n margin: 0 0 10px;\n}\n.lead {\n margin-bottom: 20px;\n font-size: 16px;\n font-weight: 300;\n line-height: 1.4;\n}\n@media (min-width: 768px) {\n .lead {\n font-size: 21px;\n }\n}\nsmall,\n.small {\n font-size: 85%;\n}\nmark,\n.mark {\n padding: 0.2em;\n background-color: #fcf8e3;\n}\n.text-left {\n text-align: left;\n}\n.text-right {\n text-align: right;\n}\n.text-center {\n text-align: center;\n}\n.text-justify {\n text-align: justify;\n}\n.text-nowrap {\n white-space: nowrap;\n}\n.text-lowercase {\n text-transform: lowercase;\n}\n.text-uppercase {\n text-transform: uppercase;\n}\n.text-capitalize {\n text-transform: capitalize;\n}\n.text-muted {\n color: #777777;\n}\n.text-primary {\n color: #337ab7;\n}\na.text-primary:hover,\na.text-primary:focus {\n color: #286090;\n}\n.text-success {\n color: #3c763d;\n}\na.text-success:hover,\na.text-success:focus {\n color: #2b542c;\n}\n.text-info {\n color: #31708f;\n}\na.text-info:hover,\na.text-info:focus {\n color: #245269;\n}\n.text-warning {\n color: #8a6d3b;\n}\na.text-warning:hover,\na.text-warning:focus {\n color: #66512c;\n}\n.text-danger {\n color: #a94442;\n}\na.text-danger:hover,\na.text-danger:focus {\n color: #843534;\n}\n.bg-primary {\n color: #fff;\n background-color: #337ab7;\n}\na.bg-primary:hover,\na.bg-primary:focus {\n background-color: #286090;\n}\n.bg-success {\n background-color: #dff0d8;\n}\na.bg-success:hover,\na.bg-success:focus {\n background-color: #c1e2b3;\n}\n.bg-info {\n background-color: #d9edf7;\n}\na.bg-info:hover,\na.bg-info:focus {\n background-color: #afd9ee;\n}\n.bg-warning {\n background-color: #fcf8e3;\n}\na.bg-warning:hover,\na.bg-warning:focus {\n background-color: #f7ecb5;\n}\n.bg-danger {\n background-color: #f2dede;\n}\na.bg-danger:hover,\na.bg-danger:focus {\n background-color: #e4b9b9;\n}\n.page-header {\n padding-bottom: 9px;\n margin: 40px 0 20px;\n border-bottom: 1px solid #eeeeee;\n}\nul,\nol {\n margin-top: 0;\n margin-bottom: 10px;\n}\nul ul,\nol ul,\nul ol,\nol ol {\n margin-bottom: 0;\n}\n.list-unstyled {\n padding-left: 0;\n list-style: none;\n}\n.list-inline {\n padding-left: 0;\n list-style: none;\n margin-left: -5px;\n}\n.list-inline > li {\n display: inline-block;\n padding-right: 5px;\n padding-left: 5px;\n}\ndl {\n margin-top: 0;\n margin-bottom: 20px;\n}\ndt,\ndd {\n line-height: 1.42857143;\n}\ndt {\n font-weight: 700;\n}\ndd {\n margin-left: 0;\n}\n@media (min-width: 768px) {\n .dl-horizontal dt {\n float: left;\n width: 160px;\n clear: left;\n text-align: right;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n .dl-horizontal dd {\n margin-left: 180px;\n }\n}\nabbr[title],\nabbr[data-original-title] {\n cursor: help;\n}\n.initialism {\n font-size: 90%;\n text-transform: uppercase;\n}\nblockquote {\n padding: 10px 20px;\n margin: 0 0 20px;\n font-size: 17.5px;\n border-left: 5px solid #eeeeee;\n}\nblockquote p:last-child,\nblockquote ul:last-child,\nblockquote ol:last-child {\n margin-bottom: 0;\n}\nblockquote footer,\nblockquote small,\nblockquote .small {\n display: block;\n font-size: 80%;\n line-height: 1.42857143;\n color: #777777;\n}\nblockquote footer:before,\nblockquote small:before,\nblockquote .small:before {\n content: \"\\2014 \\A0\";\n}\n.blockquote-reverse,\nblockquote.pull-right {\n padding-right: 15px;\n padding-left: 0;\n text-align: right;\n border-right: 5px solid #eeeeee;\n border-left: 0;\n}\n.blockquote-reverse footer:before,\nblockquote.pull-right footer:before,\n.blockquote-reverse small:before,\nblockquote.pull-right small:before,\n.blockquote-reverse .small:before,\nblockquote.pull-right .small:before {\n content: \"\";\n}\n.blockquote-reverse footer:after,\nblockquote.pull-right footer:after,\n.blockquote-reverse small:after,\nblockquote.pull-right small:after,\n.blockquote-reverse .small:after,\nblockquote.pull-right .small:after {\n content: \"\\A0 \\2014\";\n}\naddress {\n margin-bottom: 20px;\n font-style: normal;\n line-height: 1.42857143;\n}\ncode,\nkbd,\npre,\nsamp {\n font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\ncode {\n padding: 2px 4px;\n font-size: 90%;\n color: #c7254e;\n background-color: #f9f2f4;\n border-radius: 4px;\n}\nkbd {\n padding: 2px 4px;\n font-size: 90%;\n color: #fff;\n background-color: #333;\n border-radius: 3px;\n -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\nkbd kbd {\n padding: 0;\n font-size: 100%;\n font-weight: 700;\n -webkit-box-shadow: none;\n box-shadow: none;\n}\npre {\n display: block;\n padding: 9.5px;\n margin: 0 0 10px;\n font-size: 13px;\n line-height: 1.42857143;\n color: #333333;\n word-break: break-all;\n word-wrap: break-word;\n background-color: #f5f5f5;\n border: 1px solid #ccc;\n border-radius: 4px;\n}\npre code {\n padding: 0;\n font-size: inherit;\n color: inherit;\n white-space: pre-wrap;\n background-color: transparent;\n border-radius: 0;\n}\n.pre-scrollable {\n max-height: 340px;\n overflow-y: scroll;\n}\n.container {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n@media (min-width: 768px) {\n .container {\n width: 750px;\n }\n}\n@media (min-width: 992px) {\n .container {\n width: 970px;\n }\n}\n@media (min-width: 1200px) {\n .container {\n width: 1170px;\n }\n}\n.container-fluid {\n padding-right: 15px;\n padding-left: 15px;\n margin-right: auto;\n margin-left: auto;\n}\n.row {\n margin-right: -15px;\n margin-left: -15px;\n}\n.row-no-gutters {\n margin-right: 0;\n margin-left: 0;\n}\n.row-no-gutters [class*=\"col-\"] {\n padding-right: 0;\n padding-left: 0;\n}\n.col-xs-1,\n.col-sm-1,\n.col-md-1,\n.col-lg-1,\n.col-xs-2,\n.col-sm-2,\n.col-md-2,\n.col-lg-2,\n.col-xs-3,\n.col-sm-3,\n.col-md-3,\n.col-lg-3,\n.col-xs-4,\n.col-sm-4,\n.col-md-4,\n.col-lg-4,\n.col-xs-5,\n.col-sm-5,\n.col-md-5,\n.col-lg-5,\n.col-xs-6,\n.col-sm-6,\n.col-md-6,\n.col-lg-6,\n.col-xs-7,\n.col-sm-7,\n.col-md-7,\n.col-lg-7,\n.col-xs-8,\n.col-sm-8,\n.col-md-8,\n.col-lg-8,\n.col-xs-9,\n.col-sm-9,\n.col-md-9,\n.col-lg-9,\n.col-xs-10,\n.col-sm-10,\n.col-md-10,\n.col-lg-10,\n.col-xs-11,\n.col-sm-11,\n.col-md-11,\n.col-lg-11,\n.col-xs-12,\n.col-sm-12,\n.col-md-12,\n.col-lg-12 {\n position: relative;\n min-height: 1px;\n padding-right: 15px;\n padding-left: 15px;\n}\n.col-xs-1,\n.col-xs-2,\n.col-xs-3,\n.col-xs-4,\n.col-xs-5,\n.col-xs-6,\n.col-xs-7,\n.col-xs-8,\n.col-xs-9,\n.col-xs-10,\n.col-xs-11,\n.col-xs-12 {\n float: left;\n}\n.col-xs-12 {\n width: 100%;\n}\n.col-xs-11 {\n width: 91.66666667%;\n}\n.col-xs-10 {\n width: 83.33333333%;\n}\n.col-xs-9 {\n width: 75%;\n}\n.col-xs-8 {\n width: 66.66666667%;\n}\n.col-xs-7 {\n width: 58.33333333%;\n}\n.col-xs-6 {\n width: 50%;\n}\n.col-xs-5 {\n width: 41.66666667%;\n}\n.col-xs-4 {\n width: 33.33333333%;\n}\n.col-xs-3 {\n width: 25%;\n}\n.col-xs-2 {\n width: 16.66666667%;\n}\n.col-xs-1 {\n width: 8.33333333%;\n}\n.col-xs-pull-12 {\n right: 100%;\n}\n.col-xs-pull-11 {\n right: 91.66666667%;\n}\n.col-xs-pull-10 {\n right: 83.33333333%;\n}\n.col-xs-pull-9 {\n right: 75%;\n}\n.col-xs-pull-8 {\n right: 66.66666667%;\n}\n.col-xs-pull-7 {\n right: 58.33333333%;\n}\n.col-xs-pull-6 {\n right: 50%;\n}\n.col-xs-pull-5 {\n right: 41.66666667%;\n}\n.col-xs-pull