initial commit

This commit is contained in:
2019-01-11 22:16:01 +03:00
commit 24c5f2fcf6
312 changed files with 186972 additions and 0 deletions

3340
static/vendor/animate/animate.css vendored Normal file

File diff suppressed because it is too large Load Diff

288
static/vendor/autosize/autosize.js vendored Normal file
View File

@@ -0,0 +1,288 @@
/*!
autosize 4.0.2
license: MIT
http://www.jacklmoore.com/autosize
*/
(function (global, factory) {
if (typeof define === "function" && define.amd) {
define(['module', 'exports'], factory);
} else if (typeof exports !== "undefined") {
factory(module, exports);
} else {
var mod = {
exports: {}
};
factory(mod, mod.exports);
global.autosize = mod.exports;
}
})(this, function (module, exports) {
'use strict';
var map = typeof Map === "function" ? new Map() : function () {
var keys = [];
var values = [];
return {
has: function has(key) {
return keys.indexOf(key) > -1;
},
get: function get(key) {
return values[keys.indexOf(key)];
},
set: function set(key, value) {
if (keys.indexOf(key) === -1) {
keys.push(key);
values.push(value);
}
},
delete: function _delete(key) {
var index = keys.indexOf(key);
if (index > -1) {
keys.splice(index, 1);
values.splice(index, 1);
}
}
};
}();
var createEvent = function createEvent(name) {
return new Event(name, { bubbles: true });
};
try {
new Event('test');
} catch (e) {
// IE does not support `new Event()`
createEvent = function createEvent(name) {
var evt = document.createEvent('Event');
evt.initEvent(name, true, false);
return evt;
};
}
function assign(ta) {
if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
var heightOffset = null;
var clientWidth = null;
var cachedHeight = null;
function init() {
var style = window.getComputedStyle(ta, null);
if (style.resize === 'vertical') {
ta.style.resize = 'none';
} else if (style.resize === 'both') {
ta.style.resize = 'horizontal';
}
if (style.boxSizing === 'content-box') {
heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
} else {
heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
}
// Fix when a textarea is not on document body and heightOffset is Not a Number
if (isNaN(heightOffset)) {
heightOffset = 0;
}
update();
}
function changeOverflow(value) {
{
// Chrome/Safari-specific fix:
// When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
// made available by removing the scrollbar. The following forces the necessary text reflow.
var width = ta.style.width;
ta.style.width = '0px';
// Force reflow:
/* jshint ignore:start */
ta.offsetWidth;
/* jshint ignore:end */
ta.style.width = width;
}
ta.style.overflowY = value;
}
function getParentOverflows(el) {
var arr = [];
while (el && el.parentNode && el.parentNode instanceof Element) {
if (el.parentNode.scrollTop) {
arr.push({
node: el.parentNode,
scrollTop: el.parentNode.scrollTop
});
}
el = el.parentNode;
}
return arr;
}
function resize() {
if (ta.scrollHeight === 0) {
// If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
return;
}
var overflows = getParentOverflows(ta);
var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
ta.style.height = '';
ta.style.height = ta.scrollHeight + heightOffset + 'px';
// used to check if an update is actually necessary on window.resize
clientWidth = ta.clientWidth;
// prevents scroll-position jumping
overflows.forEach(function (el) {
el.node.scrollTop = el.scrollTop;
});
if (docTop) {
document.documentElement.scrollTop = docTop;
}
}
function update() {
resize();
var styleHeight = Math.round(parseFloat(ta.style.height));
var computed = window.getComputedStyle(ta, null);
// Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
// The actual height not matching the style height (set via the resize method) indicates that
// the max-height has been exceeded, in which case the overflow should be allowed.
if (actualHeight < styleHeight) {
if (computed.overflowY === 'hidden') {
changeOverflow('scroll');
resize();
actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
}
} else {
// Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
if (computed.overflowY !== 'hidden') {
changeOverflow('hidden');
resize();
actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
}
}
if (cachedHeight !== actualHeight) {
cachedHeight = actualHeight;
var evt = createEvent('autosize:resized');
try {
ta.dispatchEvent(evt);
} catch (err) {
// Firefox will throw an error on dispatchEvent for a detached element
// https://bugzilla.mozilla.org/show_bug.cgi?id=889376
}
}
}
var pageResize = function pageResize() {
if (ta.clientWidth !== clientWidth) {
update();
}
};
var destroy = function (style) {
window.removeEventListener('resize', pageResize, false);
ta.removeEventListener('input', update, false);
ta.removeEventListener('keyup', update, false);
ta.removeEventListener('autosize:destroy', destroy, false);
ta.removeEventListener('autosize:update', update, false);
Object.keys(style).forEach(function (key) {
ta.style[key] = style[key];
});
map.delete(ta);
}.bind(ta, {
height: ta.style.height,
resize: ta.style.resize,
overflowY: ta.style.overflowY,
overflowX: ta.style.overflowX,
wordWrap: ta.style.wordWrap
});
ta.addEventListener('autosize:destroy', destroy, false);
// IE9 does not fire onpropertychange or oninput for deletions,
// so binding to onkeyup to catch most of those events.
// There is no way that I know of to detect something like 'cut' in IE9.
if ('onpropertychange' in ta && 'oninput' in ta) {
ta.addEventListener('keyup', update, false);
}
window.addEventListener('resize', pageResize, false);
ta.addEventListener('input', update, false);
ta.addEventListener('autosize:update', update, false);
ta.style.overflowX = 'hidden';
ta.style.wordWrap = 'break-word';
map.set(ta, {
destroy: destroy,
update: update
});
init();
}
function destroy(ta) {
var methods = map.get(ta);
if (methods) {
methods.destroy();
}
}
function update(ta) {
var methods = map.get(ta);
if (methods) {
methods.update();
}
}
var autosize = null;
// Do nothing in Node.js environment and IE8 (or lower)
if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
autosize = function autosize(el) {
return el;
};
autosize.destroy = function (el) {
return el;
};
autosize.update = function (el) {
return el;
};
} else {
autosize = function autosize(el, options) {
if (el) {
Array.prototype.forEach.call(el.length ? el : [el], function (x) {
return assign(x, options);
});
}
return el;
};
autosize.destroy = function (el) {
if (el) {
Array.prototype.forEach.call(el.length ? el : [el], destroy);
}
return el;
};
autosize.update = function (el) {
if (el) {
Array.prototype.forEach.call(el.length ? el : [el], update);
}
return el;
};
}
exports.default = autosize;
module.exports = exports['default'];
});

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,684 @@
/*!
* Datepicker for Bootstrap v1.7.1 (https://github.com/uxsolutions/bootstrap-datepicker)
*
* Licensed under the Apache License v2.0 (http://www.apache.org/licenses/LICENSE-2.0)
*/
.datepicker {
border-radius: 4px;
direction: ltr;
}
.datepicker-inline {
width: 220px;
}
.datepicker-rtl {
direction: rtl;
}
.datepicker-rtl.dropdown-menu {
left: auto;
}
.datepicker-rtl table tr td span {
float: right;
}
.datepicker-dropdown {
top: 0;
left: 0;
padding: 4px;
}
.datepicker-dropdown:before {
content: '';
display: inline-block;
border-left: 7px solid transparent;
border-right: 7px solid transparent;
border-bottom: 7px solid rgba(0, 0, 0, 0.15);
border-top: 0;
border-bottom-color: rgba(0, 0, 0, 0.2);
position: absolute;
}
.datepicker-dropdown:after {
content: '';
display: inline-block;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #fff;
border-top: 0;
position: absolute;
}
.datepicker-dropdown.datepicker-orient-left:before {
left: 6px;
}
.datepicker-dropdown.datepicker-orient-left:after {
left: 7px;
}
.datepicker-dropdown.datepicker-orient-right:before {
right: 6px;
}
.datepicker-dropdown.datepicker-orient-right:after {
right: 7px;
}
.datepicker-dropdown.datepicker-orient-bottom:before {
top: -7px;
}
.datepicker-dropdown.datepicker-orient-bottom:after {
top: -6px;
}
.datepicker-dropdown.datepicker-orient-top:before {
bottom: -7px;
border-bottom: 0;
border-top: 7px solid rgba(0, 0, 0, 0.15);
}
.datepicker-dropdown.datepicker-orient-top:after {
bottom: -6px;
border-bottom: 0;
border-top: 6px solid #fff;
}
.datepicker table {
margin: 0;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.datepicker table tr td,
.datepicker table tr th {
text-align: center;
width: 30px;
height: 30px;
border-radius: 4px;
border: none;
}
.table-striped .datepicker table tr td,
.table-striped .datepicker table tr th {
background-color: transparent;
}
.datepicker table tr td.old,
.datepicker table tr td.new {
color: #777777;
}
.datepicker table tr td.day:hover,
.datepicker table tr td.focused {
background: #eeeeee;
cursor: pointer;
}
.datepicker table tr td.disabled,
.datepicker table tr td.disabled:hover {
background: none;
color: #777777;
cursor: default;
}
.datepicker table tr td.highlighted {
color: #000;
background-color: #d9edf7;
border-color: #85c5e5;
border-radius: 0;
}
.datepicker table tr td.highlighted:focus,
.datepicker table tr td.highlighted.focus {
color: #000;
background-color: #afd9ee;
border-color: #298fc2;
}
.datepicker table tr td.highlighted:hover {
color: #000;
background-color: #afd9ee;
border-color: #52addb;
}
.datepicker table tr td.highlighted:active,
.datepicker table tr td.highlighted.active {
color: #000;
background-color: #afd9ee;
border-color: #52addb;
}
.datepicker table tr td.highlighted:active:hover,
.datepicker table tr td.highlighted.active:hover,
.datepicker table tr td.highlighted:active:focus,
.datepicker table tr td.highlighted.active:focus,
.datepicker table tr td.highlighted:active.focus,
.datepicker table tr td.highlighted.active.focus {
color: #000;
background-color: #91cbe8;
border-color: #298fc2;
}
.datepicker table tr td.highlighted.disabled:hover,
.datepicker table tr td.highlighted[disabled]:hover,
fieldset[disabled] .datepicker table tr td.highlighted:hover,
.datepicker table tr td.highlighted.disabled:focus,
.datepicker table tr td.highlighted[disabled]:focus,
fieldset[disabled] .datepicker table tr td.highlighted:focus,
.datepicker table tr td.highlighted.disabled.focus,
.datepicker table tr td.highlighted[disabled].focus,
fieldset[disabled] .datepicker table tr td.highlighted.focus {
background-color: #d9edf7;
border-color: #85c5e5;
}
.datepicker table tr td.highlighted.focused {
background: #afd9ee;
}
.datepicker table tr td.highlighted.disabled,
.datepicker table tr td.highlighted.disabled:active {
background: #d9edf7;
color: #777777;
}
.datepicker table tr td.today {
color: #000;
background-color: #ffdb99;
border-color: #ffb733;
}
.datepicker table tr td.today:focus,
.datepicker table tr td.today.focus {
color: #000;
background-color: #ffc966;
border-color: #b37400;
}
.datepicker table tr td.today:hover {
color: #000;
background-color: #ffc966;
border-color: #f59e00;
}
.datepicker table tr td.today:active,
.datepicker table tr td.today.active {
color: #000;
background-color: #ffc966;
border-color: #f59e00;
}
.datepicker table tr td.today:active:hover,
.datepicker table tr td.today.active:hover,
.datepicker table tr td.today:active:focus,
.datepicker table tr td.today.active:focus,
.datepicker table tr td.today:active.focus,
.datepicker table tr td.today.active.focus {
color: #000;
background-color: #ffbc42;
border-color: #b37400;
}
.datepicker table tr td.today.disabled:hover,
.datepicker table tr td.today[disabled]:hover,
fieldset[disabled] .datepicker table tr td.today:hover,
.datepicker table tr td.today.disabled:focus,
.datepicker table tr td.today[disabled]:focus,
fieldset[disabled] .datepicker table tr td.today:focus,
.datepicker table tr td.today.disabled.focus,
.datepicker table tr td.today[disabled].focus,
fieldset[disabled] .datepicker table tr td.today.focus {
background-color: #ffdb99;
border-color: #ffb733;
}
.datepicker table tr td.today.focused {
background: #ffc966;
}
.datepicker table tr td.today.disabled,
.datepicker table tr td.today.disabled:active {
background: #ffdb99;
color: #777777;
}
.datepicker table tr td.range {
color: #000;
background-color: #eeeeee;
border-color: #bbbbbb;
border-radius: 0;
}
.datepicker table tr td.range:focus,
.datepicker table tr td.range.focus {
color: #000;
background-color: #d5d5d5;
border-color: #7c7c7c;
}
.datepicker table tr td.range:hover {
color: #000;
background-color: #d5d5d5;
border-color: #9d9d9d;
}
.datepicker table tr td.range:active,
.datepicker table tr td.range.active {
color: #000;
background-color: #d5d5d5;
border-color: #9d9d9d;
}
.datepicker table tr td.range:active:hover,
.datepicker table tr td.range.active:hover,
.datepicker table tr td.range:active:focus,
.datepicker table tr td.range.active:focus,
.datepicker table tr td.range:active.focus,
.datepicker table tr td.range.active.focus {
color: #000;
background-color: #c3c3c3;
border-color: #7c7c7c;
}
.datepicker table tr td.range.disabled:hover,
.datepicker table tr td.range[disabled]:hover,
fieldset[disabled] .datepicker table tr td.range:hover,
.datepicker table tr td.range.disabled:focus,
.datepicker table tr td.range[disabled]:focus,
fieldset[disabled] .datepicker table tr td.range:focus,
.datepicker table tr td.range.disabled.focus,
.datepicker table tr td.range[disabled].focus,
fieldset[disabled] .datepicker table tr td.range.focus {
background-color: #eeeeee;
border-color: #bbbbbb;
}
.datepicker table tr td.range.focused {
background: #d5d5d5;
}
.datepicker table tr td.range.disabled,
.datepicker table tr td.range.disabled:active {
background: #eeeeee;
color: #777777;
}
.datepicker table tr td.range.highlighted {
color: #000;
background-color: #e4eef3;
border-color: #9dc1d3;
}
.datepicker table tr td.range.highlighted:focus,
.datepicker table tr td.range.highlighted.focus {
color: #000;
background-color: #c1d7e3;
border-color: #4b88a6;
}
.datepicker table tr td.range.highlighted:hover {
color: #000;
background-color: #c1d7e3;
border-color: #73a6c0;
}
.datepicker table tr td.range.highlighted:active,
.datepicker table tr td.range.highlighted.active {
color: #000;
background-color: #c1d7e3;
border-color: #73a6c0;
}
.datepicker table tr td.range.highlighted:active:hover,
.datepicker table tr td.range.highlighted.active:hover,
.datepicker table tr td.range.highlighted:active:focus,
.datepicker table tr td.range.highlighted.active:focus,
.datepicker table tr td.range.highlighted:active.focus,
.datepicker table tr td.range.highlighted.active.focus {
color: #000;
background-color: #a8c8d8;
border-color: #4b88a6;
}
.datepicker table tr td.range.highlighted.disabled:hover,
.datepicker table tr td.range.highlighted[disabled]:hover,
fieldset[disabled] .datepicker table tr td.range.highlighted:hover,
.datepicker table tr td.range.highlighted.disabled:focus,
.datepicker table tr td.range.highlighted[disabled]:focus,
fieldset[disabled] .datepicker table tr td.range.highlighted:focus,
.datepicker table tr td.range.highlighted.disabled.focus,
.datepicker table tr td.range.highlighted[disabled].focus,
fieldset[disabled] .datepicker table tr td.range.highlighted.focus {
background-color: #e4eef3;
border-color: #9dc1d3;
}
.datepicker table tr td.range.highlighted.focused {
background: #c1d7e3;
}
.datepicker table tr td.range.highlighted.disabled,
.datepicker table tr td.range.highlighted.disabled:active {
background: #e4eef3;
color: #777777;
}
.datepicker table tr td.range.today {
color: #000;
background-color: #f7ca77;
border-color: #f1a417;
}
.datepicker table tr td.range.today:focus,
.datepicker table tr td.range.today.focus {
color: #000;
background-color: #f4b747;
border-color: #815608;
}
.datepicker table tr td.range.today:hover {
color: #000;
background-color: #f4b747;
border-color: #bf800c;
}
.datepicker table tr td.range.today:active,
.datepicker table tr td.range.today.active {
color: #000;
background-color: #f4b747;
border-color: #bf800c;
}
.datepicker table tr td.range.today:active:hover,
.datepicker table tr td.range.today.active:hover,
.datepicker table tr td.range.today:active:focus,
.datepicker table tr td.range.today.active:focus,
.datepicker table tr td.range.today:active.focus,
.datepicker table tr td.range.today.active.focus {
color: #000;
background-color: #f2aa25;
border-color: #815608;
}
.datepicker table tr td.range.today.disabled:hover,
.datepicker table tr td.range.today[disabled]:hover,
fieldset[disabled] .datepicker table tr td.range.today:hover,
.datepicker table tr td.range.today.disabled:focus,
.datepicker table tr td.range.today[disabled]:focus,
fieldset[disabled] .datepicker table tr td.range.today:focus,
.datepicker table tr td.range.today.disabled.focus,
.datepicker table tr td.range.today[disabled].focus,
fieldset[disabled] .datepicker table tr td.range.today.focus {
background-color: #f7ca77;
border-color: #f1a417;
}
.datepicker table tr td.range.today.disabled,
.datepicker table tr td.range.today.disabled:active {
background: #f7ca77;
color: #777777;
}
.datepicker table tr td.selected,
.datepicker table tr td.selected.highlighted {
color: #fff;
background-color: #777777;
border-color: #555555;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.selected:focus,
.datepicker table tr td.selected.highlighted:focus,
.datepicker table tr td.selected.focus,
.datepicker table tr td.selected.highlighted.focus {
color: #fff;
background-color: #5e5e5e;
border-color: #161616;
}
.datepicker table tr td.selected:hover,
.datepicker table tr td.selected.highlighted:hover {
color: #fff;
background-color: #5e5e5e;
border-color: #373737;
}
.datepicker table tr td.selected:active,
.datepicker table tr td.selected.highlighted:active,
.datepicker table tr td.selected.active,
.datepicker table tr td.selected.highlighted.active {
color: #fff;
background-color: #5e5e5e;
border-color: #373737;
}
.datepicker table tr td.selected:active:hover,
.datepicker table tr td.selected.highlighted:active:hover,
.datepicker table tr td.selected.active:hover,
.datepicker table tr td.selected.highlighted.active:hover,
.datepicker table tr td.selected:active:focus,
.datepicker table tr td.selected.highlighted:active:focus,
.datepicker table tr td.selected.active:focus,
.datepicker table tr td.selected.highlighted.active:focus,
.datepicker table tr td.selected:active.focus,
.datepicker table tr td.selected.highlighted:active.focus,
.datepicker table tr td.selected.active.focus,
.datepicker table tr td.selected.highlighted.active.focus {
color: #fff;
background-color: #4c4c4c;
border-color: #161616;
}
.datepicker table tr td.selected.disabled:hover,
.datepicker table tr td.selected.highlighted.disabled:hover,
.datepicker table tr td.selected[disabled]:hover,
.datepicker table tr td.selected.highlighted[disabled]:hover,
fieldset[disabled] .datepicker table tr td.selected:hover,
fieldset[disabled] .datepicker table tr td.selected.highlighted:hover,
.datepicker table tr td.selected.disabled:focus,
.datepicker table tr td.selected.highlighted.disabled:focus,
.datepicker table tr td.selected[disabled]:focus,
.datepicker table tr td.selected.highlighted[disabled]:focus,
fieldset[disabled] .datepicker table tr td.selected:focus,
fieldset[disabled] .datepicker table tr td.selected.highlighted:focus,
.datepicker table tr td.selected.disabled.focus,
.datepicker table tr td.selected.highlighted.disabled.focus,
.datepicker table tr td.selected[disabled].focus,
.datepicker table tr td.selected.highlighted[disabled].focus,
fieldset[disabled] .datepicker table tr td.selected.focus,
fieldset[disabled] .datepicker table tr td.selected.highlighted.focus {
background-color: #777777;
border-color: #555555;
}
.datepicker table tr td.active,
.datepicker table tr td.active.highlighted {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td.active:focus,
.datepicker table tr td.active.highlighted:focus,
.datepicker table tr td.active.focus,
.datepicker table tr td.active.highlighted.focus {
color: #fff;
background-color: #286090;
border-color: #122b40;
}
.datepicker table tr td.active:hover,
.datepicker table tr td.active.highlighted:hover {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.datepicker table tr td.active:active,
.datepicker table tr td.active.highlighted:active,
.datepicker table tr td.active.active,
.datepicker table tr td.active.highlighted.active {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.datepicker table tr td.active:active:hover,
.datepicker table tr td.active.highlighted:active:hover,
.datepicker table tr td.active.active:hover,
.datepicker table tr td.active.highlighted.active:hover,
.datepicker table tr td.active:active:focus,
.datepicker table tr td.active.highlighted:active:focus,
.datepicker table tr td.active.active:focus,
.datepicker table tr td.active.highlighted.active:focus,
.datepicker table tr td.active:active.focus,
.datepicker table tr td.active.highlighted:active.focus,
.datepicker table tr td.active.active.focus,
.datepicker table tr td.active.highlighted.active.focus {
color: #fff;
background-color: #204d74;
border-color: #122b40;
}
.datepicker table tr td.active.disabled:hover,
.datepicker table tr td.active.highlighted.disabled:hover,
.datepicker table tr td.active[disabled]:hover,
.datepicker table tr td.active.highlighted[disabled]:hover,
fieldset[disabled] .datepicker table tr td.active:hover,
fieldset[disabled] .datepicker table tr td.active.highlighted:hover,
.datepicker table tr td.active.disabled:focus,
.datepicker table tr td.active.highlighted.disabled:focus,
.datepicker table tr td.active[disabled]:focus,
.datepicker table tr td.active.highlighted[disabled]:focus,
fieldset[disabled] .datepicker table tr td.active:focus,
fieldset[disabled] .datepicker table tr td.active.highlighted:focus,
.datepicker table tr td.active.disabled.focus,
.datepicker table tr td.active.highlighted.disabled.focus,
.datepicker table tr td.active[disabled].focus,
.datepicker table tr td.active.highlighted[disabled].focus,
fieldset[disabled] .datepicker table tr td.active.focus,
fieldset[disabled] .datepicker table tr td.active.highlighted.focus {
background-color: #337ab7;
border-color: #2e6da4;
}
.datepicker table tr td span {
display: block;
width: 23%;
height: 54px;
line-height: 54px;
float: left;
margin: 1%;
cursor: pointer;
border-radius: 4px;
}
.datepicker table tr td span:hover,
.datepicker table tr td span.focused {
background: #eeeeee;
}
.datepicker table tr td span.disabled,
.datepicker table tr td span.disabled:hover {
background: none;
color: #777777;
cursor: default;
}
.datepicker table tr td span.active,
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active.disabled,
.datepicker table tr td span.active.disabled:hover {
color: #fff;
background-color: #337ab7;
border-color: #2e6da4;
text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
}
.datepicker table tr td span.active:focus,
.datepicker table tr td span.active:hover:focus,
.datepicker table tr td span.active.disabled:focus,
.datepicker table tr td span.active.disabled:hover:focus,
.datepicker table tr td span.active.focus,
.datepicker table tr td span.active:hover.focus,
.datepicker table tr td span.active.disabled.focus,
.datepicker table tr td span.active.disabled:hover.focus {
color: #fff;
background-color: #286090;
border-color: #122b40;
}
.datepicker table tr td span.active:hover,
.datepicker table tr td span.active:hover:hover,
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active.disabled:hover:hover {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.datepicker table tr td span.active:active,
.datepicker table tr td span.active:hover:active,
.datepicker table tr td span.active.disabled:active,
.datepicker table tr td span.active.disabled:hover:active,
.datepicker table tr td span.active.active,
.datepicker table tr td span.active:hover.active,
.datepicker table tr td span.active.disabled.active,
.datepicker table tr td span.active.disabled:hover.active {
color: #fff;
background-color: #286090;
border-color: #204d74;
}
.datepicker table tr td span.active:active:hover,
.datepicker table tr td span.active:hover:active:hover,
.datepicker table tr td span.active.disabled:active:hover,
.datepicker table tr td span.active.disabled:hover:active:hover,
.datepicker table tr td span.active.active:hover,
.datepicker table tr td span.active:hover.active:hover,
.datepicker table tr td span.active.disabled.active:hover,
.datepicker table tr td span.active.disabled:hover.active:hover,
.datepicker table tr td span.active:active:focus,
.datepicker table tr td span.active:hover:active:focus,
.datepicker table tr td span.active.disabled:active:focus,
.datepicker table tr td span.active.disabled:hover:active:focus,
.datepicker table tr td span.active.active:focus,
.datepicker table tr td span.active:hover.active:focus,
.datepicker table tr td span.active.disabled.active:focus,
.datepicker table tr td span.active.disabled:hover.active:focus,
.datepicker table tr td span.active:active.focus,
.datepicker table tr td span.active:hover:active.focus,
.datepicker table tr td span.active.disabled:active.focus,
.datepicker table tr td span.active.disabled:hover:active.focus,
.datepicker table tr td span.active.active.focus,
.datepicker table tr td span.active:hover.active.focus,
.datepicker table tr td span.active.disabled.active.focus,
.datepicker table tr td span.active.disabled:hover.active.focus {
color: #fff;
background-color: #204d74;
border-color: #122b40;
}
.datepicker table tr td span.active.disabled:hover,
.datepicker table tr td span.active:hover.disabled:hover,
.datepicker table tr td span.active.disabled.disabled:hover,
.datepicker table tr td span.active.disabled:hover.disabled:hover,
.datepicker table tr td span.active[disabled]:hover,
.datepicker table tr td span.active:hover[disabled]:hover,
.datepicker table tr td span.active.disabled[disabled]:hover,
.datepicker table tr td span.active.disabled:hover[disabled]:hover,
fieldset[disabled] .datepicker table tr td span.active:hover,
fieldset[disabled] .datepicker table tr td span.active:hover:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:hover,
.datepicker table tr td span.active.disabled:focus,
.datepicker table tr td span.active:hover.disabled:focus,
.datepicker table tr td span.active.disabled.disabled:focus,
.datepicker table tr td span.active.disabled:hover.disabled:focus,
.datepicker table tr td span.active[disabled]:focus,
.datepicker table tr td span.active:hover[disabled]:focus,
.datepicker table tr td span.active.disabled[disabled]:focus,
.datepicker table tr td span.active.disabled:hover[disabled]:focus,
fieldset[disabled] .datepicker table tr td span.active:focus,
fieldset[disabled] .datepicker table tr td span.active:hover:focus,
fieldset[disabled] .datepicker table tr td span.active.disabled:focus,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover:focus,
.datepicker table tr td span.active.disabled.focus,
.datepicker table tr td span.active:hover.disabled.focus,
.datepicker table tr td span.active.disabled.disabled.focus,
.datepicker table tr td span.active.disabled:hover.disabled.focus,
.datepicker table tr td span.active[disabled].focus,
.datepicker table tr td span.active:hover[disabled].focus,
.datepicker table tr td span.active.disabled[disabled].focus,
.datepicker table tr td span.active.disabled:hover[disabled].focus,
fieldset[disabled] .datepicker table tr td span.active.focus,
fieldset[disabled] .datepicker table tr td span.active:hover.focus,
fieldset[disabled] .datepicker table tr td span.active.disabled.focus,
fieldset[disabled] .datepicker table tr td span.active.disabled:hover.focus {
background-color: #337ab7;
border-color: #2e6da4;
}
.datepicker table tr td span.old,
.datepicker table tr td span.new {
color: #777777;
}
.datepicker .datepicker-switch {
width: 145px;
}
.datepicker .datepicker-switch,
.datepicker .prev,
.datepicker .next,
.datepicker tfoot tr th {
cursor: pointer;
}
.datepicker .datepicker-switch:hover,
.datepicker .prev:hover,
.datepicker .next:hover,
.datepicker tfoot tr th:hover {
background: #eeeeee;
}
.datepicker .prev.disabled,
.datepicker .next.disabled {
visibility: hidden;
}
.datepicker .cw {
font-size: 10px;
width: 12px;
padding: 0 2px 0 5px;
vertical-align: middle;
}
.input-group.date .input-group-addon {
cursor: pointer;
}
.input-daterange {
width: 100%;
}
.input-daterange input {
text-align: center;
}
.input-daterange input:first-child {
border-radius: 3px 0 0 3px;
}
.input-daterange input:last-child {
border-radius: 0 3px 3px 0;
}
.input-daterange .input-group-addon {
width: auto;
min-width: 16px;
padding: 4px 5px;
line-height: 1.42857143;
text-shadow: 0 1px 0 #fff;
border-width: 1px 0;
margin-left: -5px;
margin-right: -5px;
}
/*# sourceMappingURL=bootstrap-datepicker3.css.map */

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,36 @@
/*!
* Bootstrap v2.3.0-j4
*
* Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0
* http://www.apache.org/licenses/LICENSE-2.0
*
* Designed and built with all the love in the world by @mdo and @fat, extended by @ArnoldDaniels.
*/
.clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;}
.clearfix:after{clear:both;}
.hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;}
.input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;}
.btn-file{overflow:hidden;position:relative;vertical-align:middle;}.btn-file>input{position:absolute;top:0;right:0;margin:0;opacity:0;filter:alpha(opacity=0);transform:translate(-300px, 0) scale(4);font-size:23px;direction:ltr;cursor:pointer;}
.fileupload .uneditable-input{display:inline-block;margin-bottom:0px;vertical-align:middle;cursor:text;background: #fff;}
.fileupload .thumbnail{overflow:hidden;display:inline-block;margin-bottom:5px;vertical-align:middle;text-align:center;}.fileupload .thumbnail>img{display:inline-block;vertical-align:middle;max-height:100%;}
.fileupload .btn{vertical-align:middle; line-height: 21px; margin-left: -5px; }
.fileupload-exists .fileupload-new,.fileupload-new .fileupload-exists{display:none;}
.fileupload-inline .fileupload-controls{display:inline;}
.fileupload-new .input-append .btn-file{-webkit-border-radius:0 2px 2px 0;-moz-border-radius:0 2px 2px 0;border-radius:0 2px 2px 0;}
.thumbnail-borderless .thumbnail{border:none;padding:0;-webkit-border-radius:0;-moz-border-radius:0;border-radius:0;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none;}
.fileupload-new.thumbnail-borderless .thumbnail{border:1px solid #ddd;}
.control-group.warning .fileupload .uneditable-input{color:#a47e3c;border-color:#a47e3c;}
.control-group.warning .fileupload .fileupload-preview{color:#a47e3c;}
.control-group.warning .fileupload .thumbnail{border-color:#a47e3c;}
.control-group.error .fileupload .uneditable-input{color:#b94a48;border-color:#b94a48;}
.control-group.error .fileupload .fileupload-preview{color:#b94a48;}
.control-group.error .fileupload .thumbnail{border-color:#b94a48;}
.control-group.success .fileupload .uneditable-input{color:#468847;border-color:#468847;}
.control-group.success .fileupload .fileupload-preview{color:#468847;}
.control-group.success .fileupload .thumbnail{border-color:#468847;}
.uneditable-input {
border: 1px solid #ccc; height: 35px; padding: 6px 10px; width: 200px; overflow: hidden;
-moz-border-radius: 2px; -webkit-border-radius: 2px; border-radius: 2px; }
.uneditable-input .glyphicon { float: left; margin-right: 5px; vertical-align: middle; margin-top: 2px; opacity: 0.5; }
.fileupload-preview { width: 400px; display: block; color: #666; }

View File

@@ -0,0 +1,7 @@
/**
* Bootstrap.js by @mdo and @fat, extended by @ArnoldDaniels.
* plugins: bootstrap-fileupload.js
* Copyright 2012 Twitter, Inc.
* http://www.apache.org/licenses/LICENSE-2.0.txt
*/
!function(e){var t=function(t,n){this.$element=e(t),this.type=this.$element.data("uploadtype")||(this.$element.find(".thumbnail").length>0?"image":"file"),this.$input=this.$element.find(":file");if(this.$input.length===0)return;this.name=this.$input.attr("name")||n.name,this.$hidden=this.$element.find('input[type=hidden][name="'+this.name+'"]'),this.$hidden.length===0&&(this.$hidden=e('<input type="hidden" />'),this.$element.prepend(this.$hidden)),this.$preview=this.$element.find(".fileupload-preview");var r=this.$preview.css("height");this.$preview.css("display")!="inline"&&r!="0px"&&r!="none"&&this.$preview.css("line-height",r),this.original={exists:this.$element.hasClass("fileupload-exists"),preview:this.$preview.html(),hiddenVal:this.$hidden.val()},this.$remove=this.$element.find('[data-dismiss="fileupload"]'),this.$element.find('[data-trigger="fileupload"]').on("click.fileupload",e.proxy(this.trigger,this)),this.listen()};t.prototype={listen:function(){this.$input.on("change.fileupload",e.proxy(this.change,this)),e(this.$input[0].form).on("reset.fileupload",e.proxy(this.reset,this)),this.$remove&&this.$remove.on("click.fileupload",e.proxy(this.clear,this))},change:function(e,t){if(t==="clear")return;var n=e.target.files!==undefined?e.target.files[0]:e.target.value?{name:e.target.value.replace(/^.+\\/,"")}:null;if(!n){this.clear();return}this.$hidden.val(""),this.$hidden.attr("name",""),this.$input.attr("name",this.name);if(this.type==="image"&&this.$preview.length>0&&(typeof n.type!="undefined"?n.type.match("image.*"):n.name.match("\\.(gif|png|jpe?g)$"))&&typeof FileReader!="undefined"){var r=new FileReader,i=this.$preview,s=this.$element;r.onload=function(e){i.html('<img src="'+e.target.result+'" '+(i.css("max-height")!="none"?'style="max-height: '+i.css("max-height")+';"':"")+" />"),s.addClass("fileupload-exists").removeClass("fileupload-new")},r.readAsDataURL(n)}else this.$preview.text(n.name),this.$element.addClass("fileupload-exists").removeClass("fileupload-new")},clear:function(e){this.$hidden.val(""),this.$hidden.attr("name",this.name),this.$input.attr("name","");if(navigator.userAgent.match(/msie/i)){var t=this.$input.clone(!0);this.$input.after(t),this.$input.remove(),this.$input=t}else this.$input.val("");this.$preview.html(""),this.$element.addClass("fileupload-new").removeClass("fileupload-exists"),e&&(this.$input.trigger("change",["clear"]),e.preventDefault())},reset:function(e){this.clear(),this.$hidden.val(this.original.hiddenVal),this.$preview.html(this.original.preview),this.original.exists?this.$element.addClass("fileupload-exists").removeClass("fileupload-new"):this.$element.addClass("fileupload-new").removeClass("fileupload-exists")},trigger:function(e){this.$input.trigger("click"),e.preventDefault()}},e.fn.fileupload=function(n){return this.each(function(){var r=e(this),i=r.data("fileupload");i||r.data("fileupload",i=new t(this,n)),typeof n=="string"&&i[n]()})},e.fn.fileupload.Constructor=t,e(document).on("click.fileupload.data-api",'[data-provides="fileupload"]',function(t){var n=e(this);if(n.data("fileupload"))return;n.fileupload(n.data());var r=e(t.target).closest('[data-dismiss="fileupload"],[data-trigger="fileupload"]');r.length>0&&(r.trigger("click.fileupload"),t.preventDefault())})}(window.jQuery)

View File

@@ -0,0 +1 @@
.md-editor{display:block;border:1px solid #ddd}.md-editor .md-footer,.md-editor>.md-header{display:block;padding:6px 4px;background:#f5f5f5}.md-editor>.md-header{margin:0}.md-editor>.md-preview{background:#fff;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;min-height:10px;overflow:auto}.md-editor>textarea{font-family:Menlo,Monaco,Consolas,"Courier New",monospace;font-size:14px;outline:0;margin:0;display:block;padding:0;width:100%;border:0;border-top:1px dashed #ddd;border-bottom:1px dashed #ddd;border-radius:0;box-shadow:none;background:#eee}.md-editor>textarea:focus{box-shadow:none;background:#fff}.md-editor.active{border-color:#66afe9;outline:0;-webkit-box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6);box-shadow:inset 0 1px 1px rgba(0,0,0,.075),0 0 8px rgba(102,175,233,.6)}.md-editor .md-controls{float:right;padding:3px}.md-editor .md-controls .md-control{right:5px;color:#bebebe;padding:3px 3px 3px 10px}.md-editor .md-controls .md-control:hover{color:#333}.md-editor.md-fullscreen-mode{width:100%;height:100%;position:fixed;top:0;left:0;z-index:99999;padding:60px 30px 15px;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-footer{display:none}.md-editor.md-fullscreen-mode .md-input,.md-editor.md-fullscreen-mode .md-preview{margin:0 auto!important;height:100%!important;font-size:20px!important;padding:20px!important;color:#999;line-height:1.6em!important;resize:none!important;box-shadow:none!important;background:#fff!important;border:0!important}.md-editor.md-fullscreen-mode .md-preview{color:#333;overflow:auto}.md-editor.md-fullscreen-mode .md-input:focus,.md-editor.md-fullscreen-mode .md-input:hover{color:#333;background:#fff!important}.md-editor.md-fullscreen-mode .md-header{background:0 0;text-align:center;position:fixed;width:100%;top:20px}.md-editor.md-fullscreen-mode .btn-group{float:none}.md-editor.md-fullscreen-mode .btn{border:0;background:0 0;color:#b3b3b3}.md-editor.md-fullscreen-mode .btn.active,.md-editor.md-fullscreen-mode .btn:active,.md-editor.md-fullscreen-mode .btn:focus,.md-editor.md-fullscreen-mode .btn:hover{box-shadow:none;color:#333}.md-editor.md-fullscreen-mode .md-fullscreen-controls{position:absolute;top:20px;right:20px;text-align:right;z-index:1002;display:block}.md-editor.md-fullscreen-mode .md-fullscreen-controls a{color:#b3b3b3;clear:right;margin:10px;width:30px;height:30px;text-align:center}.md-editor.md-fullscreen-mode .md-fullscreen-controls a:hover{color:#333;text-decoration:none}.md-editor.md-fullscreen-mode .md-editor{height:100%!important;position:relative}.md-editor .md-fullscreen-controls{display:none}.md-nooverflow{overflow:hidden;position:fixed;width:100%}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,184 @@
/*
* to-markdown - an HTML to Markdown converter
*
* Copyright 2011, Dom Christie
* Licenced under the MIT licence
*
*/
var toMarkdown = function(string) {
var ELEMENTS = [
{
patterns: 'p',
replacement: function(str, attrs, innerHTML) {
return innerHTML ? '\n\n' + innerHTML + '\n' : '';
}
},
{
patterns: 'br',
type: 'void',
replacement: '\n'
},
{
patterns: 'h([1-6])',
replacement: function(str, hLevel, attrs, innerHTML) {
var hPrefix = '';
for(var i = 0; i < hLevel; i++) {
hPrefix += '#';
}
return '\n\n' + hPrefix + ' ' + innerHTML + '\n';
}
},
{
patterns: 'hr',
type: 'void',
replacement: '\n\n* * *\n'
},
{
patterns: 'a',
replacement: function(str, attrs, innerHTML) {
var href = attrs.match(attrRegExp('href')),
title = attrs.match(attrRegExp('title'));
return href ? '[' + innerHTML + ']' + '(' + href[1] + (title && title[1] ? ' "' + title[1] + '"' : '') + ')' : str;
}
},
{
patterns: ['b', 'strong'],
replacement: function(str, attrs, innerHTML) {
return innerHTML ? '**' + innerHTML + '**' : '';
}
},
{
patterns: ['i', 'em'],
replacement: function(str, attrs, innerHTML) {
return innerHTML ? '_' + innerHTML + '_' : '';
}
},
{
patterns: 'code',
replacement: function(str, attrs, innerHTML) {
return innerHTML ? '`' + innerHTML + '`' : '';
}
},
{
patterns: 'img',
type: 'void',
replacement: function(str, attrs, innerHTML) {
var src = attrs.match(attrRegExp('src')),
alt = attrs.match(attrRegExp('alt')),
title = attrs.match(attrRegExp('title'));
return '![' + (alt && alt[1] ? alt[1] : '') + ']' + '(' + src[1] + (title && title[1] ? ' "' + title[1] + '"' : '') + ')';
}
}
];
for(var i = 0, len = ELEMENTS.length; i < len; i++) {
if(typeof ELEMENTS[i].patterns === 'string') {
string = replaceEls(string, { tag: ELEMENTS[i].patterns, replacement: ELEMENTS[i].replacement, type: ELEMENTS[i].type });
}
else {
for(var j = 0, pLen = ELEMENTS[i].patterns.length; j < pLen; j++) {
string = replaceEls(string, { tag: ELEMENTS[i].patterns[j], replacement: ELEMENTS[i].replacement, type: ELEMENTS[i].type });
}
}
}
function replaceEls(html, elProperties) {
var pattern = elProperties.type === 'void' ? '<' + elProperties.tag + '\\b([^>]*)\\/?>' : '<' + elProperties.tag + '\\b([^>]*)>([\\s\\S]*?)<\\/' + elProperties.tag + '>',
regex = new RegExp(pattern, 'gi'),
markdown = '';
if(typeof elProperties.replacement === 'string') {
markdown = html.replace(regex, elProperties.replacement);
}
else {
markdown = html.replace(regex, function(str, p1, p2, p3) {
return elProperties.replacement.call(this, str, p1, p2, p3);
});
}
return markdown;
}
function attrRegExp(attr) {
return new RegExp(attr + '\\s*=\\s*["\']?([^"\']*)["\']?', 'i');
}
// Pre code blocks
string = string.replace(/<pre\b[^>]*>`([\s\S]*)`<\/pre>/gi, function(str, innerHTML) {
innerHTML = innerHTML.replace(/^\t+/g, ' '); // convert tabs to spaces (you know it makes sense)
innerHTML = innerHTML.replace(/\n/g, '\n ');
return '\n\n ' + innerHTML + '\n';
});
// Lists
// Escape numbers that could trigger an ol
// If there are more than three spaces before the code, it would be in a pre tag
// Make sure we are escaping the period not matching any character
string = string.replace(/^(\s{0,3}\d+)\. /g, '$1\\. ');
// Converts lists that have no child lists (of same type) first, then works it's way up
var noChildrenRegex = /<(ul|ol)\b[^>]*>(?:(?!<ul|<ol)[\s\S])*?<\/\1>/gi;
while(string.match(noChildrenRegex)) {
string = string.replace(noChildrenRegex, function(str) {
return replaceLists(str);
});
}
function replaceLists(html) {
html = html.replace(/<(ul|ol)\b[^>]*>([\s\S]*?)<\/\1>/gi, function(str, listType, innerHTML) {
var lis = innerHTML.split('</li>');
lis.splice(lis.length - 1, 1);
for(i = 0, len = lis.length; i < len; i++) {
if(lis[i]) {
var prefix = (listType === 'ol') ? (i + 1) + ". " : "* ";
lis[i] = lis[i].replace(/\s*<li[^>]*>([\s\S]*)/i, function(str, innerHTML) {
innerHTML = innerHTML.replace(/^\s+/, '');
innerHTML = innerHTML.replace(/\n\n/g, '\n\n ');
// indent nested lists
innerHTML = innerHTML.replace(/\n([ ]*)+(\*|\d+\.) /g, '\n$1 $2 ');
return prefix + innerHTML;
});
}
}
return lis.join('\n');
});
return '\n\n' + html.replace(/[ \t]+\n|\s+$/g, '');
}
// Blockquotes
var deepest = /<blockquote\b[^>]*>((?:(?!<blockquote)[\s\S])*?)<\/blockquote>/gi;
while(string.match(deepest)) {
string = string.replace(deepest, function(str) {
return replaceBlockquotes(str);
});
}
function replaceBlockquotes(html) {
html = html.replace(/<blockquote\b[^>]*>([\s\S]*?)<\/blockquote>/gi, function(str, inner) {
inner = inner.replace(/^\s+|\s+$/g, '');
inner = cleanUp(inner);
inner = inner.replace(/^/gm, '> ');
inner = inner.replace(/^(>([ \t]{2,}>)+)/gm, '> >');
return inner;
});
return html;
}
function cleanUp(string) {
string = string.replace(/^[\t\r\n]+|[\t\r\n]+$/g, ''); // trim leading/trailing whitespace
string = string.replace(/\n\s+\n/g, '\n\n');
string = string.replace(/\n{3,}/g, '\n\n'); // limit consecutive linebreaks to 2
return string;
}
return cleanUp(string);
};
if (typeof exports === 'object') {
exports.toMarkdown = toMarkdown;
}

View File

@@ -0,0 +1,519 @@
(function ($) {
'use strict';
/**
* We need an event when the elements are destroyed
* because if an input is removed, we have to remove the
* maxlength object associated (if any).
* From:
* http://stackoverflow.com/questions/2200494/jquery-trigger-event-when-an-element-is-removed-from-the-dom
*/
if (!$.event.special.destroyed) {
$.event.special.destroyed = {
remove: function (o) {
if (o.handler) {
o.handler();
}
}
};
}
$.fn.extend({
maxlength: function (options, callback) {
var documentBody = $('body'),
defaults = {
showOnReady: false, // true to always show when indicator is ready
alwaysShow: false, // if true the indicator it's always shown.
threshold: 10, // Represents how many chars left are needed to show up the counter
warningClass: 'label label-success',
limitReachedClass: 'label label-important label-danger',
separator: ' / ',
preText: '',
postText: '',
showMaxLength: true,
placement: 'bottom',
message: null, // an alternative way to provide the message text
showCharsTyped: true, // show the number of characters typed and not the number of characters remaining
validate: false, // if the browser doesn't support the maxlength attribute, attempt to type more than
// the indicated chars, will be prevented.
utf8: false, // counts using bytesize rather than length. eg: '£' is counted as 2 characters.
appendToParent: false, // append the indicator to the input field's parent instead of body
twoCharLinebreak: true, // count linebreak as 2 characters to match IE/Chrome textarea validation. As well as DB storage.
customMaxAttribute: null, // null = use maxlength attribute and browser functionality, string = use specified attribute instead.
allowOverMax: false
// Form submit validation is handled on your own. when maxlength has been exceeded 'overmax' class added to element
};
if ($.isFunction(options) && !callback) {
callback = options;
options = {};
}
options = $.extend(defaults, options);
/**
* Return the length of the specified input.
*
* @param input
* @return {number}
*/
function inputLength(input) {
var text = input.val();
if (options.twoCharLinebreak) {
// Count all line breaks as 2 characters
text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n');
} else {
// Remove all double-character (\r\n) linebreaks, so they're counted only once.
text = text.replace(new RegExp('\r?\n', 'g'), '\n');
}
var currentLength = 0;
if (options.utf8) {
currentLength = utf8Length(text);
} else {
currentLength = text.length;
}
return currentLength;
}
/**
* Truncate the text of the specified input.
*
* @param input
* @param limit
*/
function truncateChars(input, maxlength) {
var text = input.val();
var newlines = 0;
if (options.twoCharLinebreak) {
text = text.replace(/\r(?!\n)|\n(?!\r)/g, '\r\n');
if (text.substr(text.length - 1) === '\n' && text.length % 2 === 1) {
newlines = 1;
}
}
input.val(text.substr(0, maxlength - newlines));
}
/**
* Return the length of the specified input in UTF8 encoding.
*
* @param input
* @return {number}
*/
function utf8Length(string) {
var utf8length = 0;
for (var n = 0; n < string.length; n++) {
var c = string.charCodeAt(n);
if (c < 128) {
utf8length++;
}
else if ((c > 127) && (c < 2048)) {
utf8length = utf8length + 2;
}
else {
utf8length = utf8length + 3;
}
}
return utf8length;
}
/**
* Return true if the indicator should be showing up.
*
* @param input
* @param thereshold
* @param maxlength
* @return {number}
*/
function charsLeftThreshold(input, thereshold, maxlength) {
var output = true;
if (!options.alwaysShow && (maxlength - inputLength(input) > thereshold)) {
output = false;
}
return output;
}
/**
* Returns how many chars are left to complete the fill up of the form.
*
* @param input
* @param maxlength
* @return {number}
*/
function remainingChars(input, maxlength) {
var length = maxlength - inputLength(input);
return length;
}
/**
* When called displays the indicator.
*
* @param indicator
*/
function showRemaining(currentInput, indicator) {
indicator.css({
display: 'block'
});
currentInput.trigger('maxlength.shown');
}
/**
* When called shows the indicator.
*
* @param indicator
*/
function hideRemaining(currentInput, indicator) {
if (options.alwaysShow) {
return;
}
indicator.css({
display: 'none'
});
currentInput.trigger('maxlength.hidden');
}
/**
* This function updates the value in the indicator
*
* @param maxLengthThisInput
* @param typedChars
* @return String
*/
function updateMaxLengthHTML(currentInputText, maxLengthThisInput, typedChars) {
var output = '';
if (options.message) {
if (typeof options.message === 'function') {
output = options.message(currentInputText, maxLengthThisInput);
} else {
output = options.message.replace('%charsTyped%', typedChars)
.replace('%charsRemaining%', maxLengthThisInput - typedChars)
.replace('%charsTotal%', maxLengthThisInput);
}
} else {
if (options.preText) {
output += options.preText;
}
if (!options.showCharsTyped) {
output += maxLengthThisInput - typedChars;
}
else {
output += typedChars;
}
if (options.showMaxLength) {
output += options.separator + maxLengthThisInput;
}
if (options.postText) {
output += options.postText;
}
}
return output;
}
/**
* This function updates the value of the counter in the indicator.
* Wants as parameters: the number of remaining chars, the element currently managed,
* the maxLength for the current input and the indicator generated for it.
*
* @param remaining
* @param currentInput
* @param maxLengthCurrentInput
* @param maxLengthIndicator
*/
function manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator) {
if (maxLengthIndicator) {
maxLengthIndicator.html(updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, (maxLengthCurrentInput - remaining)));
if (remaining > 0) {
if (charsLeftThreshold(currentInput, options.threshold, maxLengthCurrentInput)) {
showRemaining(currentInput, maxLengthIndicator.removeClass(options.limitReachedClass).addClass(options.warningClass));
} else {
hideRemaining(currentInput, maxLengthIndicator);
}
} else {
showRemaining(currentInput, maxLengthIndicator.removeClass(options.warningClass).addClass(options.limitReachedClass));
}
}
if (options.customMaxAttribute) {
// class to use for form validation on custom maxlength attribute
if (remaining < 0) {
currentInput.addClass('overmax');
} else {
currentInput.removeClass('overmax');
}
}
}
/**
* This function returns an object containing all the
* informations about the position of the current input
*
* @param currentInput
* @return object {bottom height left right top width}
*
*/
function getPosition(currentInput) {
var el = currentInput[0];
return $.extend({}, (typeof el.getBoundingClientRect === 'function') ? el.getBoundingClientRect() : {
width: el.offsetWidth,
height: el.offsetHeight
}, currentInput.offset());
}
/**
* This function places the maxLengthIndicator at the
* top / bottom / left / right of the currentInput
*
* @param currentInput
* @param maxLengthIndicator
* @return null
*
*/
function place(currentInput, maxLengthIndicator) {
var pos = getPosition(currentInput);
// Supports custom placement handler
if ($.type(options.placement) === 'function'){
options.placement(currentInput, maxLengthIndicator, pos);
return;
}
// Supports custom placement via css positional properties
if ($.isPlainObject(options.placement)){
placeWithCSS(options.placement, maxLengthIndicator);
return;
}
var inputOuter = currentInput.outerWidth(),
outerWidth = maxLengthIndicator.outerWidth(),
actualWidth = maxLengthIndicator.width(),
actualHeight = maxLengthIndicator.height();
// get the right position if the indicator is appended to the input's parent
if (options.appendToParent) {
pos.top -= currentInput.parent().offset().top;
pos.left -= currentInput.parent().offset().left;
}
switch (options.placement) {
case 'bottom':
maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2 });
break;
case 'top':
maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + pos.width / 2 - actualWidth / 2 });
break;
case 'left':
maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left - actualWidth });
break;
case 'right':
maxLengthIndicator.css({ top: pos.top + pos.height / 2 - actualHeight / 2, left: pos.left + pos.width });
break;
case 'bottom-right':
maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width });
break;
case 'top-right':
maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter });
break;
case 'top-left':
maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left - outerWidth });
break;
case 'bottom-left':
maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left - outerWidth });
break;
case 'centered-right':
maxLengthIndicator.css({ top: pos.top + (actualHeight / 2), left: pos.left + inputOuter - outerWidth - 3 });
break;
// Some more options for placements
case 'bottom-right-inside':
maxLengthIndicator.css({ top: pos.top + pos.height, left: pos.left + pos.width - outerWidth });
break;
case 'top-right-inside':
maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left + inputOuter - outerWidth });
break;
case 'top-left-inside':
maxLengthIndicator.css({ top: pos.top - actualHeight, left: pos.left });
break;
case 'bottom-left-inside':
maxLengthIndicator.css({ top: pos.top + currentInput.outerHeight(), left: pos.left });
break;
}
}
/**
* This function places the maxLengthIndicator based on placement config object.
*
* @param {object} placement
* @param {$} maxLengthIndicator
* @return null
*
*/
function placeWithCSS(placement, maxLengthIndicator) {
if (!placement || !maxLengthIndicator){
return;
}
var POSITION_KEYS = [
'top',
'bottom',
'left',
'right',
'position'
];
var cssPos = {};
// filter css properties to position
$.each(POSITION_KEYS, function (i, key) {
var val = options.placement[key];
if (typeof val !== 'undefined'){
cssPos[key] = val;
}
});
maxLengthIndicator.css(cssPos);
return;
}
/**
* This function returns true if the indicator position needs to
* be recalculated when the currentInput changes
*
* @return {boolean}
*
*/
function isPlacementMutable() {
return options.placement === 'bottom-right-inside' || options.placement === 'top-right-inside' || typeof options.placement === 'function' || (options.message && typeof options.message === 'function');
}
/**
* This function retrieves the maximum length of currentInput
*
* @param currentInput
* @return {number}
*
*/
function getMaxLength(currentInput) {
var max = currentInput.attr('maxlength') || options.customMaxAttribute;
if (options.customMaxAttribute && !options.allowOverMax) {
var custom = currentInput.attr(options.customMaxAttribute);
if (!max || custom < max) {
max = custom;
}
}
if (!max) {
max = currentInput.attr('size');
}
return max;
}
return this.each(function () {
var currentInput = $(this),
maxLengthCurrentInput,
maxLengthIndicator;
$(window).resize(function () {
if (maxLengthIndicator) {
place(currentInput, maxLengthIndicator);
}
});
function firstInit() {
var maxlengthContent = updateMaxLengthHTML(currentInput.val(), maxLengthCurrentInput, '0');
maxLengthCurrentInput = getMaxLength(currentInput);
if (!maxLengthIndicator) {
maxLengthIndicator = $('<span class="bootstrap-maxlength"></span>').css({
display: 'none',
position: 'absolute',
whiteSpace: 'nowrap',
zIndex: 1099
}).html(maxlengthContent);
}
// We need to detect resizes if we are dealing with a textarea:
if (currentInput.is('textarea')) {
currentInput.data('maxlenghtsizex', currentInput.outerWidth());
currentInput.data('maxlenghtsizey', currentInput.outerHeight());
currentInput.mouseup(function () {
if (currentInput.outerWidth() !== currentInput.data('maxlenghtsizex') || currentInput.outerHeight() !== currentInput.data('maxlenghtsizey')) {
place(currentInput, maxLengthIndicator);
}
currentInput.data('maxlenghtsizex', currentInput.outerWidth());
currentInput.data('maxlenghtsizey', currentInput.outerHeight());
});
}
if (options.appendToParent) {
currentInput.parent().append(maxLengthIndicator);
currentInput.parent().css('position', 'relative');
} else {
documentBody.append(maxLengthIndicator);
}
var remaining = remainingChars(currentInput, getMaxLength(currentInput));
manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator);
place(currentInput, maxLengthIndicator);
}
if (options.showOnReady) {
currentInput.ready(function () {
firstInit();
});
} else {
currentInput.focus(function () {
firstInit();
});
}
currentInput.on('maxlength.reposition', function () {
place(currentInput, maxLengthIndicator);
});
currentInput.on('destroyed', function () {
if (maxLengthIndicator) {
maxLengthIndicator.remove();
}
});
currentInput.on('blur', function () {
if (maxLengthIndicator && !options.showOnReady && !options.alwaysShow) {
maxLengthIndicator.remove();
}
});
currentInput.on('input', function () {
var maxlength = getMaxLength(currentInput),
remaining = remainingChars(currentInput, maxlength),
output = true;
if (options.validate && remaining < 0) {
truncateChars(currentInput, maxlength);
output = false;
} else {
manageRemainingVisibility(remaining, currentInput, maxLengthCurrentInput, maxLengthIndicator);
}
if (isPlacementMutable()) {
place(currentInput, maxLengthIndicator);
}
return output;
});
});
}
});
}(jQuery));

View File

@@ -0,0 +1 @@
span.multiselect-native-select{position:relative}span.multiselect-native-select select{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px -1px -1px -3px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;left:50%;top:30px}.multiselect-container{position:absolute;list-style-type:none;margin:0;padding:0}.multiselect-container .input-group{margin:5px}.multiselect-container .multiselect-reset .input-group{width:93%}.multiselect-container>li{padding:0}.multiselect-container>li>a.multiselect-all label{font-weight:700}.multiselect-container>li.multiselect-group label{margin:0;padding:3px 20px;height:100%;font-weight:700}.multiselect-container>li.multiselect-group-clickable label{cursor:pointer}.multiselect-container>li>a{padding:0}.multiselect-container>li>a>label{margin:0;height:100%;cursor:pointer;font-weight:400;padding:3px 20px 3px 40px}.multiselect-container>li>a>label.checkbox,.multiselect-container>li>a>label.radio{margin:0}.multiselect-container>li>a>label>input[type=checkbox]{margin-bottom:5px}.btn-group>.btn-group:nth-child(2)>.multiselect.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.form-inline .multiselect-container label.checkbox,.form-inline .multiselect-container label.radio{padding:3px 20px 3px 40px}.form-inline .multiselect-container li a label.checkbox input[type=checkbox],.form-inline .multiselect-container li a label.radio input[type=radio]{margin-left:-20px;margin-right:0}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,66 @@
/*
* bootstrap-tagsinput v0.8.0
*
*/
.bootstrap-tagsinput {
background-color: #fff;
border: 1px solid #ccc;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
display: inline-block;
padding: 4px 6px;
color: #555;
vertical-align: middle;
border-radius: 4px;
width: 100%;
line-height: 22px;
cursor: text;
}
.bootstrap-tagsinput input {
border: none;
box-shadow: none;
outline: none;
background-color: transparent;
padding: 0 6px;
margin: 0;
width: auto;
max-width: inherit;
}
.bootstrap-tagsinput.form-control input::-moz-placeholder {
color: #777;
opacity: 1;
}
.bootstrap-tagsinput.form-control input:-ms-input-placeholder {
color: #777;
}
.bootstrap-tagsinput.form-control input::-webkit-input-placeholder {
color: #777;
}
.bootstrap-tagsinput input:focus {
border: none;
box-shadow: none;
}
.bootstrap-tagsinput .badge {
margin-right: 2px;
color: white;
background-color:#0275d8;
padding:5px 8px;border-radius:3px;
border:1px solid #01649e
}
.bootstrap-tagsinput .badge [data-role="remove"] {
margin-left: 8px;
cursor: pointer;
}
.bootstrap-tagsinput .badge [data-role="remove"]:after {
content: "×";
padding: 0px 4px;
background-color:rgba(0, 0, 0, 0.1);
border-radius:50%;
font-size:13px
}
.bootstrap-tagsinput .badge [data-role="remove"]:hover:after {
background-color:rgba(0, 0, 0, 0.62);}
.bootstrap-tagsinput .badge [data-role="remove"]:hover:active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
}

View File

@@ -0,0 +1,688 @@
/*
* bootstrap-tagsinput v0.8.0
*
*/
(function ($) {
"use strict";
var defaultOptions = {
tagClass: function(item) {
return 'badge badge-info';
},
focusClass: 'focus',
itemValue: function(item) {
return item ? item.toString() : item;
},
itemText: function(item) {
return this.itemValue(item);
},
itemTitle: function(item) {
return null;
},
freeInput: true,
addOnBlur: true,
maxTags: undefined,
maxChars: undefined,
confirmKeys: [13, 44],
delimiter: ',',
delimiterRegex: null,
cancelConfirmKeysOnEmpty: false,
onTagExists: function(item, $tag) {
$tag.hide().fadeIn();
},
trimValue: false,
allowDuplicates: false,
triggerChange: true
};
/**
* Constructor function
*/
function TagsInput(element, options) {
this.isInit = true;
this.itemsArray = [];
this.$element = $(element);
this.$element.hide();
this.isSelect = (element.tagName === 'SELECT');
this.multiple = (this.isSelect && element.hasAttribute('multiple'));
this.objectItems = options && options.itemValue;
this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : '';
this.inputSize = Math.max(1, this.placeholderText.length);
this.$container = $('<div class="bootstrap-tagsinput"></div>');
this.$input = $('<input type="text" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container);
this.$element.before(this.$container);
this.build(options);
this.isInit = false;
}
TagsInput.prototype = {
constructor: TagsInput,
/**
* Adds the given item as a new tag. Pass true to dontPushVal to prevent
* updating the elements val()
*/
add: function(item, dontPushVal, options) {
var self = this;
if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags)
return;
// Ignore falsey values, except false
if (item !== false && !item)
return;
// Trim value
if (typeof item === "string" && self.options.trimValue) {
item = $.trim(item);
}
// Throw an error when trying to add an object while the itemValue option was not set
if (typeof item === "object" && !self.objectItems)
throw("Can't add objects when itemValue option is not set");
// Ignore strings only containg whitespace
if (item.toString().match(/^\s*$/))
return;
// If SELECT but not multiple, remove current tag
if (self.isSelect && !self.multiple && self.itemsArray.length > 0)
self.remove(self.itemsArray[0]);
if (typeof item === "string" && this.$element[0].tagName === 'INPUT') {
var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter;
var items = item.split(delimiter);
if (items.length > 1) {
for (var i = 0; i < items.length; i++) {
this.add(items[i], true);
}
if (!dontPushVal)
self.pushVal(self.options.triggerChange);
return;
}
}
var itemValue = self.options.itemValue(item),
itemText = self.options.itemText(item),
tagClass = self.options.tagClass(item),
itemTitle = self.options.itemTitle(item);
// Ignore items allready added
var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0];
if (existing && !self.options.allowDuplicates) {
// Invoke onTagExists
if (self.options.onTagExists) {
var $existingTag = $(".badge", self.$container).filter(function() { return $(this).data("item") === existing; });
self.options.onTagExists(item, $existingTag);
}
return;
}
// if length greater than limit
if (self.items().toString().length + item.length + 1 > self.options.maxInputLength)
return;
// raise beforeItemAdd arg
var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options});
self.$element.trigger(beforeItemAddEvent);
if (beforeItemAddEvent.cancel)
return;
// register item in internal array and map
self.itemsArray.push(item);
// add a tag element
var $tag = $('<span class="badge ' + htmlEncode(tagClass) + (itemTitle !== null ? ('" title="' + itemTitle) : '') + '">' + htmlEncode(itemText) + '<span data-role="remove"></span></span>');
$tag.data('item', item);
self.findInputWrapper().before($tag);
$tag.after(' ');
// Check to see if the tag exists in its raw or uri-encoded form
var optionExists = (
$('option[value="' + encodeURIComponent(itemValue) + '"]', self.$element).length ||
$('option[value="' + htmlEncode(itemValue) + '"]', self.$element).length
);
// add <option /> if item represents a value not present in one of the <select />'s options
if (self.isSelect && !optionExists) {
var $option = $('<option selected>' + htmlEncode(itemText) + '</option>');
$option.data('item', item);
$option.attr('value', itemValue);
self.$element.append($option);
}
if (!dontPushVal)
self.pushVal(self.options.triggerChange);
// Add class when reached maxTags
if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength)
self.$container.addClass('bootstrap-tagsinput-max');
// If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input.
if ($('.typeahead, .twitter-typeahead', self.$container).length) {
self.$input.typeahead('val', '');
}
if (this.isInit) {
self.$element.trigger($.Event('itemAddedOnInit', { item: item, options: options }));
} else {
self.$element.trigger($.Event('itemAdded', { item: item, options: options }));
}
},
/**
* Removes the given item. Pass true to dontPushVal to prevent updating the
* elements val()
*/
remove: function(item, dontPushVal, options) {
var self = this;
if (self.objectItems) {
if (typeof item === "object")
item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == self.options.itemValue(item); } );
else
item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == item; } );
item = item[item.length-1];
}
if (item) {
var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false, options: options });
self.$element.trigger(beforeItemRemoveEvent);
if (beforeItemRemoveEvent.cancel)
return;
$('.badge', self.$container).filter(function() { return $(this).data('item') === item; }).remove();
$('option', self.$element).filter(function() { return $(this).data('item') === item; }).remove();
if($.inArray(item, self.itemsArray) !== -1)
self.itemsArray.splice($.inArray(item, self.itemsArray), 1);
}
if (!dontPushVal)
self.pushVal(self.options.triggerChange);
// Remove class when reached maxTags
if (self.options.maxTags > self.itemsArray.length)
self.$container.removeClass('bootstrap-tagsinput-max');
self.$element.trigger($.Event('itemRemoved', { item: item, options: options }));
},
/**
* Removes all items
*/
removeAll: function() {
var self = this;
$('.badge', self.$container).remove();
$('option', self.$element).remove();
while(self.itemsArray.length > 0)
self.itemsArray.pop();
self.pushVal(self.options.triggerChange);
},
/**
* Refreshes the tags so they match the text/value of their corresponding
* item.
*/
refresh: function() {
var self = this;
$('.badge', self.$container).each(function() {
var $tag = $(this),
item = $tag.data('item'),
itemValue = self.options.itemValue(item),
itemText = self.options.itemText(item),
tagClass = self.options.tagClass(item);
// Update tag's class and inner text
$tag.attr('class', null);
$tag.addClass('badge ' + htmlEncode(tagClass));
$tag.contents().filter(function() {
return this.nodeType == 3;
})[0].nodeValue = htmlEncode(itemText);
if (self.isSelect) {
var option = $('option', self.$element).filter(function() { return $(this).data('item') === item; });
option.attr('value', itemValue);
}
});
},
/**
* Returns the items added as tags
*/
items: function() {
return this.itemsArray;
},
/**
* Assembly value by retrieving the value of each item, and set it on the
* element.
*/
pushVal: function() {
var self = this,
val = $.map(self.items(), function(item) {
return self.options.itemValue(item).toString();
});
self.$element.val(val, true);
if (self.options.triggerChange)
self.$element.trigger('change');
},
/**
* Initializes the tags input behaviour on the element
*/
build: function(options) {
var self = this;
self.options = $.extend({}, defaultOptions, options);
// When itemValue is set, freeInput should always be false
if (self.objectItems)
self.options.freeInput = false;
makeOptionItemFunction(self.options, 'itemValue');
makeOptionItemFunction(self.options, 'itemText');
makeOptionFunction(self.options, 'tagClass');
// Typeahead Bootstrap version 2.3.2
if (self.options.typeahead) {
var typeahead = self.options.typeahead || {};
makeOptionFunction(typeahead, 'source');
self.$input.typeahead($.extend({}, typeahead, {
source: function (query, process) {
function processItems(items) {
var texts = [];
for (var i = 0; i < items.length; i++) {
var text = self.options.itemText(items[i]);
map[text] = items[i];
texts.push(text);
}
process(texts);
}
this.map = {};
var map = this.map,
data = typeahead.source(query);
if ($.isFunction(data.success)) {
// support for Angular callbacks
data.success(processItems);
} else if ($.isFunction(data.then)) {
// support for Angular promises
data.then(processItems);
} else {
// support for functions and jquery promises
$.when(data)
.then(processItems);
}
},
updater: function (text) {
self.add(this.map[text]);
return this.map[text];
},
matcher: function (text) {
return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1);
},
sorter: function (texts) {
return texts.sort();
},
highlighter: function (text) {
var regex = new RegExp( '(' + this.query + ')', 'gi' );
return text.replace( regex, "<strong>$1</strong>" );
}
}));
}
// typeahead.js
if (self.options.typeaheadjs) {
// Determine if main configurations were passed or simply a dataset
var typeaheadjs = self.options.typeaheadjs;
if (!$.isArray(typeaheadjs)) {
typeaheadjs = [null, typeaheadjs];
}
$.fn.typeahead.apply(self.$input, typeaheadjs).on('typeahead:selected', $.proxy(function (obj, datum, name) {
var index = 0;
typeaheadjs.some(function(dataset, _index) {
if (dataset.name === name) {
index = _index;
return true;
}
return false;
});
// @TODO Dep: https://github.com/corejavascript/typeahead.js/issues/89
if (typeaheadjs[index].valueKey) {
self.add(datum[typeaheadjs[index].valueKey]);
} else {
self.add(datum);
}
self.$input.typeahead('val', '');
}, self));
}
self.$container.on('click', $.proxy(function(event) {
if (! self.$element.attr('disabled')) {
self.$input.removeAttr('disabled');
}
self.$input.focus();
}, self));
if (self.options.addOnBlur && self.options.freeInput) {
self.$input.on('focusout', $.proxy(function(event) {
// HACK: only process on focusout when no typeahead opened, to
// avoid adding the typeahead text as tag
if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) {
self.add(self.$input.val());
self.$input.val('');
}
}, self));
}
// Toggle the 'focus' css class on the container when it has focus
self.$container.on({
focusin: function() {
self.$container.addClass(self.options.focusClass);
},
focusout: function() {
self.$container.removeClass(self.options.focusClass);
},
});
self.$container.on('keydown', 'input', $.proxy(function(event) {
var $input = $(event.target),
$inputWrapper = self.findInputWrapper();
if (self.$element.attr('disabled')) {
self.$input.attr('disabled', 'disabled');
return;
}
switch (event.which) {
// BACKSPACE
case 8:
if (doGetCaretPosition($input[0]) === 0) {
var prev = $inputWrapper.prev();
if (prev.length) {
self.remove(prev.data('item'));
}
}
break;
// DELETE
case 46:
if (doGetCaretPosition($input[0]) === 0) {
var next = $inputWrapper.next();
if (next.length) {
self.remove(next.data('item'));
}
}
break;
// LEFT ARROW
case 37:
// Try to move the input before the previous tag
var $prevTag = $inputWrapper.prev();
if ($input.val().length === 0 && $prevTag[0]) {
$prevTag.before($inputWrapper);
$input.focus();
}
break;
// RIGHT ARROW
case 39:
// Try to move the input after the next tag
var $nextTag = $inputWrapper.next();
if ($input.val().length === 0 && $nextTag[0]) {
$nextTag.after($inputWrapper);
$input.focus();
}
break;
default:
// ignore
}
// Reset internal input's size
var textLength = $input.val().length,
wordSpace = Math.ceil(textLength / 5),
size = textLength + wordSpace + 1;
$input.attr('size', Math.max(this.inputSize, size));
}, self));
self.$container.on('keypress', 'input', $.proxy(function(event) {
var $input = $(event.target);
if (self.$element.attr('disabled')) {
self.$input.attr('disabled', 'disabled');
return;
}
var text = $input.val(),
maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars;
if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) {
// Only attempt to add a tag if there is data in the field
if (text.length !== 0) {
self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text);
$input.val('');
}
// If the field is empty, let the event triggered fire as usual
if (self.options.cancelConfirmKeysOnEmpty === false) {
event.preventDefault();
}
}
// Reset internal input's size
var textLength = $input.val().length,
wordSpace = Math.ceil(textLength / 5),
size = textLength + wordSpace + 1;
$input.attr('size', Math.max(this.inputSize, size));
}, self));
// Remove icon clicked
self.$container.on('click', '[data-role=remove]', $.proxy(function(event) {
if (self.$element.attr('disabled')) {
return;
}
self.remove($(event.target).closest('.badge').data('item'));
}, self));
// Only add existing value as tags when using strings as tags
if (self.options.itemValue === defaultOptions.itemValue) {
if (self.$element[0].tagName === 'INPUT') {
self.add(self.$element.val());
} else {
$('option', self.$element).each(function() {
self.add($(this).attr('value'), true);
});
}
}
},
/**
* Removes all tagsinput behaviour and unregsiter all event handlers
*/
destroy: function() {
var self = this;
// Unbind events
self.$container.off('keypress', 'input');
self.$container.off('click', '[role=remove]');
self.$container.remove();
self.$element.removeData('tagsinput');
self.$element.show();
},
/**
* Sets focus on the tagsinput
*/
focus: function() {
this.$input.focus();
},
/**
* Returns the internal input element
*/
input: function() {
return this.$input;
},
/**
* Returns the element which is wrapped around the internal input. This
* is normally the $container, but typeahead.js moves the $input element.
*/
findInputWrapper: function() {
var elt = this.$input[0],
container = this.$container[0];
while(elt && elt.parentNode !== container)
elt = elt.parentNode;
return $(elt);
}
};
/**
* Register JQuery plugin
*/
$.fn.tagsinput = function(arg1, arg2, arg3) {
var results = [];
this.each(function() {
var tagsinput = $(this).data('tagsinput');
// Initialize a new tags input
if (!tagsinput) {
tagsinput = new TagsInput(this, arg1);
$(this).data('tagsinput', tagsinput);
results.push(tagsinput);
if (this.tagName === 'SELECT') {
$('option', $(this)).attr('selected', 'selected');
}
// Init tags from $(this).val()
$(this).val($(this).val());
} else if (!arg1 && !arg2) {
// tagsinput already exists
// no function, trying to init
results.push(tagsinput);
} else if(tagsinput[arg1] !== undefined) {
// Invoke function on existing tags input
if(tagsinput[arg1].length === 3 && arg3 !== undefined){
var retVal = tagsinput[arg1](arg2, null, arg3);
}else{
var retVal = tagsinput[arg1](arg2);
}
if (retVal !== undefined)
results.push(retVal);
}
});
if ( typeof arg1 == 'string') {
// Return the results from the invoked function calls
return results.length > 1 ? results : results[0];
} else {
return results;
}
};
$.fn.tagsinput.Constructor = TagsInput;
/**
* Most options support both a string or number as well as a function as
* option value. This function makes sure that the option with the given
* key in the given options is wrapped in a function
*/
function makeOptionItemFunction(options, key) {
if (typeof options[key] !== 'function') {
var propertyName = options[key];
options[key] = function(item) { return item[propertyName]; };
}
}
function makeOptionFunction(options, key) {
if (typeof options[key] !== 'function') {
var value = options[key];
options[key] = function() { return value; };
}
}
/**
* HtmlEncodes the given value
*/
var htmlEncodeContainer = $('<div />');
function htmlEncode(value) {
if (value) {
return htmlEncodeContainer.text(value).html();
} else {
return '';
}
}
/**
* Returns the position of the caret in the given input field
* http://flightschool.acylt.com/devnotes/caret-position-woes/
*/
function doGetCaretPosition(oField) {
var iCaretPos = 0;
if (document.selection) {
oField.focus ();
var oSel = document.selection.createRange();
oSel.moveStart ('character', -oField.value.length);
iCaretPos = oSel.text.length;
} else if (oField.selectionStart || oField.selectionStart == '0') {
iCaretPos = oField.selectionStart;
}
return (iCaretPos);
}
/**
* Returns boolean indicates whether user has pressed an expected key combination.
* @param object keyPressEvent: JavaScript event object, refer
* http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
* @param object lookupList: expected key combinations, as in:
* [13, {which: 188, shiftKey: true}]
*/
function keyCombinationInList(keyPressEvent, lookupList) {
var found = false;
$.each(lookupList, function (index, keyCombination) {
if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) {
found = true;
return false;
}
if (keyPressEvent.which === keyCombination.which) {
var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey,
shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey,
ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey;
if (alt && shift && ctrl) {
found = true;
return false;
}
}
});
return found;
}
/**
* Initialize tagsinput behaviour on inputs and selects which have
* data-role=tagsinput
*/
$(function() {
$("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput();
});
})(window.jQuery);

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,146 @@
/*!
* Timepicker Component for Twitter Bootstrap
*
* Copyright 2013 Joris de Wit
*
* Contributors https://github.com/jdewit/bootstrap-timepicker/graphs/contributors
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
.bootstrap-timepicker {
position: relative;
}
.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu {
left: auto;
right: 0;
}
.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:before {
left: auto;
right: 12px;
}
.bootstrap-timepicker.pull-right .bootstrap-timepicker-widget.dropdown-menu:after {
left: auto;
right: 13px;
}
.bootstrap-timepicker .input-group-addon {
cursor: pointer;
}
.bootstrap-timepicker .input-group-addon i {
display: inline-block;
width: 16px;
height: 16px;
}
.bootstrap-timepicker-widget.dropdown-menu {
padding: 4px;
}
.bootstrap-timepicker-widget.dropdown-menu.open {
display: inline-block;
}
.bootstrap-timepicker-widget.dropdown-menu:before {
border-bottom: 7px solid rgba(0, 0, 0, 0.2);
border-left: 7px solid transparent;
border-right: 7px solid transparent;
content: "";
display: inline-block;
position: absolute;
}
.bootstrap-timepicker-widget.dropdown-menu:after {
border-bottom: 6px solid #FFFFFF;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
content: "";
display: inline-block;
position: absolute;
}
.bootstrap-timepicker-widget.timepicker-orient-left:before {
left: 6px;
}
.bootstrap-timepicker-widget.timepicker-orient-left:after {
left: 7px;
}
.bootstrap-timepicker-widget.timepicker-orient-right:before {
right: 6px;
}
.bootstrap-timepicker-widget.timepicker-orient-right:after {
right: 7px;
}
.bootstrap-timepicker-widget.timepicker-orient-top:before {
top: -7px;
}
.bootstrap-timepicker-widget.timepicker-orient-top:after {
top: -6px;
}
.bootstrap-timepicker-widget.timepicker-orient-bottom:before {
bottom: -7px;
border-bottom: 0;
border-top: 7px solid #999;
}
.bootstrap-timepicker-widget.timepicker-orient-bottom:after {
bottom: -6px;
border-bottom: 0;
border-top: 6px solid #ffffff;
}
.bootstrap-timepicker-widget a.btn,
.bootstrap-timepicker-widget input {
border-radius: 4px;
}
.bootstrap-timepicker-widget table {
width: 100%;
margin: 0;
}
.bootstrap-timepicker-widget table td {
text-align: center;
height: 30px;
margin: 0;
padding: 2px;
}
.bootstrap-timepicker-widget table td:not(.separator) {
min-width: 30px;
}
.bootstrap-timepicker-widget table td span {
width: 100%;
}
.bootstrap-timepicker-widget table td a {
border: 1px transparent solid;
width: 100%;
display: inline-block;
margin: 0;
padding: 8px 0;
outline: 0;
color: #333;
}
.bootstrap-timepicker-widget table td a:hover {
text-decoration: none;
background-color: #eee;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
border-radius: 4px;
border-color: #ddd;
}
.bootstrap-timepicker-widget table td a i {
margin-top: 2px;
font-size: 18px;
}
.bootstrap-timepicker-widget table td input {
width: 25px;
margin: 0;
text-align: center;
}
.bootstrap-timepicker-widget .modal-content {
padding: 4px;
}
@media (min-width: 767px) {
.bootstrap-timepicker-widget.modal {
width: 200px;
margin-left: -100px;
}
}
@media (max-width: 767px) {
.bootstrap-timepicker {
width: 100%;
}
.bootstrap-timepicker .dropdown-menu {
width: 100%;
}
}

View File

@@ -0,0 +1,332 @@
/*!
* jQuery twitter bootstrap wizard plugin
* Examples and documentation at: http://github.com/VinceG/twitter-bootstrap-wizard
* version 1.3.1
* Requires jQuery v1.3.2 or later
* Supports Bootstrap 2.2.x, 2.3.x, 3.0
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
* Authors: Vadim Vincent Gabriel (http://vadimg.com), Jason Gill (www.gilluminate.com)
*/
;(function($) {
var bootstrapWizardCreate = function(element, options) {
var element = $(element);
var obj = this;
// selector skips any 'li' elements that do not contain a child with a tab data-toggle
var baseItemSelector = 'li:has([data-toggle="tab"])';
var historyStack = [];
// Merge options with defaults
var $settings = $.extend({}, $.fn.bootstrapWizard.defaults, options);
var $activeTab = null;
var $navigation = null;
this.rebindClick = function(selector, fn)
{
selector.unbind('click', fn).bind('click', fn);
}
this.fixNavigationButtons = function() {
// Get the current active tab
if(!$activeTab.length) {
// Select first one
$navigation.find('a:first').tab('show');
$activeTab = $navigation.find(baseItemSelector + ':first');
}
// See if we're currently in the first/last then disable the previous and last buttons
$($settings.previousSelector, element).toggleClass('disabled', (obj.firstIndex() >= obj.currentIndex()));
$($settings.nextSelector, element).toggleClass('disabled', (obj.currentIndex() >= obj.navigationLength()));
$($settings.nextSelector, element).toggleClass('hidden', (obj.currentIndex() >= obj.navigationLength() && $($settings.finishSelector, element).length > 0));
$($settings.lastSelector, element).toggleClass('hidden', (obj.currentIndex() >= obj.navigationLength() && $($settings.finishSelector, element).length > 0));
$($settings.finishSelector, element).toggleClass('hidden', (obj.currentIndex() < obj.navigationLength()));
$($settings.backSelector, element).toggleClass('disabled', (historyStack.length == 0));
$($settings.backSelector, element).toggleClass('hidden', (obj.currentIndex() >= obj.navigationLength() && $($settings.finishSelector, element).length > 0));
// We are unbinding and rebinding to ensure single firing and no double-click errors
obj.rebindClick($($settings.nextSelector, element), obj.next);
obj.rebindClick($($settings.previousSelector, element), obj.previous);
obj.rebindClick($($settings.lastSelector, element), obj.last);
obj.rebindClick($($settings.firstSelector, element), obj.first);
obj.rebindClick($($settings.finishSelector, element), obj.finish);
obj.rebindClick($($settings.backSelector, element), obj.back);
if($settings.onTabShow && typeof $settings.onTabShow === 'function' && $settings.onTabShow($activeTab, $navigation, obj.currentIndex())===false){
return false;
}
};
this.next = function(e) {
// If we clicked the last then dont activate this
if(element.hasClass('last')) {
return false;
}
if($settings.onNext && typeof $settings.onNext === 'function' && $settings.onNext($activeTab, $navigation, obj.nextIndex())===false){
return false;
}
var formerIndex = obj.currentIndex();
var $index = obj.nextIndex();
// Did we click the last button
if($index > obj.navigationLength()) {
} else {
historyStack.push(formerIndex);
$navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '') + ':eq(' + $index + ') a').tab('show');
}
};
this.previous = function(e) {
// If we clicked the first then dont activate this
if(element.hasClass('first')) {
return false;
}
if($settings.onPrevious && typeof $settings.onPrevious === 'function' && $settings.onPrevious($activeTab, $navigation, obj.previousIndex())===false){
return false;
}
var formerIndex = obj.currentIndex();
var $index = obj.previousIndex();
if($index < 0) {
} else {
historyStack.push(formerIndex);
$navigation.find(baseItemSelector + ($settings.withVisible ? ':visible' : '') + ':eq(' + $index + ') a').tab('show');
}
};
this.first = function (e) {
if($settings.onFirst && typeof $settings.onFirst === 'function' && $settings.onFirst($activeTab, $navigation, obj.firstIndex())===false){
return false;
}
// If the element is disabled then we won't do anything
if(element.hasClass('disabled')) {
return false;
}
historyStack.push(obj.currentIndex());
$navigation.find(baseItemSelector + ':eq(0) a').tab('show');
};
this.last = function(e) {
if($settings.onLast && typeof $settings.onLast === 'function' && $settings.onLast($activeTab, $navigation, obj.lastIndex())===false){
return false;
}
// If the element is disabled then we won't do anything
if(element.hasClass('disabled')) {
return false;
}
historyStack.push(obj.currentIndex());
$navigation.find(baseItemSelector + ':eq(' + obj.navigationLength() + ') a').tab('show');
};
this.finish = function (e) {
if ($settings.onFinish && typeof $settings.onFinish === 'function') {
$settings.onFinish($activeTab, $navigation, obj.lastIndex());
}
};
this.back = function () {
if (historyStack.length == 0) {
return null;
}
var formerIndex = historyStack.pop();
if ($settings.onBack && typeof $settings.onBack === 'function' && $settings.onBack($activeTab, $navigation, formerIndex) === false) {
historyStack.push(formerIndex);
return false;
}
element.find(baseItemSelector + ':eq(' + formerIndex + ') a').tab('show');
};
this.currentIndex = function() {
return $navigation.find(baseItemSelector).index($activeTab);
};
this.firstIndex = function() {
return 0;
};
this.lastIndex = function() {
return obj.navigationLength();
};
this.getIndex = function(e) {
return $navigation.find(baseItemSelector).index(e);
};
this.nextIndex = function() {
return $navigation.find(baseItemSelector).index($activeTab) + 1;
};
this.previousIndex = function() {
return $navigation.find(baseItemSelector).index($activeTab) - 1;
};
this.navigationLength = function() {
return $navigation.find(baseItemSelector).length - 1;
};
this.activeTab = function() {
return $activeTab;
};
this.nextTab = function() {
return $navigation.find(baseItemSelector + ':eq('+(obj.currentIndex()+1)+')').length ? $navigation.find(baseItemSelector + ':eq('+(obj.currentIndex()+1)+')') : null;
};
this.previousTab = function() {
if(obj.currentIndex() <= 0) {
return null;
}
return $navigation.find(baseItemSelector + ':eq('+parseInt(obj.currentIndex()-1)+')');
};
this.show = function(index) {
var tabToShow = isNaN(index) ?
element.find(baseItemSelector + ' a[href=#' + index + ']') :
element.find(baseItemSelector + ':eq(' + index + ') a');
if (tabToShow.length > 0) {
historyStack.push(obj.currentIndex());
tabToShow.tab('show');
}
};
this.disable = function (index) {
$navigation.find(baseItemSelector + ':eq('+index+')').addClass('disabled');
};
this.enable = function(index) {
$navigation.find(baseItemSelector + ':eq('+index+')').removeClass('disabled');
};
this.hide = function(index) {
$navigation.find(baseItemSelector + ':eq('+index+')').hide();
};
this.display = function(index) {
$navigation.find(baseItemSelector + ':eq('+index+')').show();
};
this.remove = function(args) {
var $index = args[0];
var $removeTabPane = typeof args[1] != 'undefined' ? args[1] : false;
var $item = $navigation.find(baseItemSelector + ':eq('+$index+')');
// Remove the tab pane first if needed
if($removeTabPane) {
var $href = $item.find('a').attr('href');
$($href).remove();
}
// Remove menu item
$item.remove();
};
var innerTabClick = function (e) {
// Get the index of the clicked tab
var $ul = $navigation.find(baseItemSelector);
var clickedIndex = $ul.index($(e.currentTarget).parent(baseItemSelector));
var $clickedTab = $( $ul[clickedIndex] );
if($settings.onTabClick && typeof $settings.onTabClick === 'function' && $settings.onTabClick($activeTab, $navigation, obj.currentIndex(), clickedIndex, $clickedTab)===false){
return false;
}
};
var innerTabShown = function (e) { // use shown instead of show to help prevent double firing
var $element = $(e.target).parent();
var nextTab = $navigation.find(baseItemSelector).index($element);
// If it's disabled then do not change
if($element.hasClass('disabled')) {
return false;
}
if($settings.onTabChange && typeof $settings.onTabChange === 'function' && $settings.onTabChange($activeTab, $navigation, obj.currentIndex(), nextTab)===false){
return false;
}
$activeTab = $element; // activated tab
obj.fixNavigationButtons();
};
this.resetWizard = function() {
// remove the existing handlers
$('a[data-toggle="tab"]', $navigation).off('click', innerTabClick);
$('a[data-toggle="tab"]', $navigation).off('shown shown.bs.tab', innerTabShown);
// reset elements based on current state of the DOM
$navigation = element.find('ul:first', element);
$activeTab = $navigation.find(baseItemSelector + '.active', element);
// re-add handlers
$('a[data-toggle="tab"]', $navigation).on('click', innerTabClick);
$('a[data-toggle="tab"]', $navigation).on('shown shown.bs.tab', innerTabShown);
obj.fixNavigationButtons();
};
$navigation = element.find('ul:first', element);
$activeTab = $navigation.find(baseItemSelector + '.active', element);
if(!$navigation.hasClass($settings.tabClass)) {
$navigation.addClass($settings.tabClass);
}
// Load onInit
if($settings.onInit && typeof $settings.onInit === 'function'){
$settings.onInit($activeTab, $navigation, 0);
}
// Load onShow
if($settings.onShow && typeof $settings.onShow === 'function'){
$settings.onShow($activeTab, $navigation, obj.nextIndex());
}
$('a[data-toggle="tab"]', $navigation).on('click', innerTabClick);
// attach to both shown and shown.bs.tab to support Bootstrap versions 2.3.2 and 3.0.0
$('a[data-toggle="tab"]', $navigation).on('shown shown.bs.tab', innerTabShown);
};
$.fn.bootstrapWizard = function(options) {
//expose methods
if (typeof options == 'string') {
var args = Array.prototype.slice.call(arguments, 1)
if(args.length === 1) {
args.toString();
}
return this.data('bootstrapWizard')[options](args);
}
return this.each(function(index){
var element = $(this);
// Return early if this element already has a plugin instance
if (element.data('bootstrapWizard')) return;
// pass options to plugin constructor
var wizard = new bootstrapWizardCreate(element, options);
// Store plugin object in this element's data
element.data('bootstrapWizard', wizard);
// and then trigger initial change
wizard.fixNavigationButtons();
});
};
// expose options
$.fn.bootstrapWizard.defaults = {
withVisible: true,
tabClass: 'nav nav-pills',
nextSelector: '.wizard li.next',
previousSelector: '.wizard li.previous',
firstSelector: '.wizard li.first',
lastSelector: '.wizard li.last',
finishSelector: '.wizard li.finish',
backSelector: '.wizard li.back',
onShow: null,
onInit: null,
onNext: null,
onPrevious: null,
onLast: null,
onFirst: null,
onFinish: null,
onBack: null,
onTabChange: null,
onTabClick: null,
onTabShow: null
};
})(jQuery);

8950
static/vendor/bootstrap/css/bootstrap.css vendored Normal file

File diff suppressed because it is too large Load Diff

3925
static/vendor/bootstrap/js/bootstrap.js vendored Normal file

File diff suppressed because it is too large Load Diff

4488
static/vendor/chartist/chartist.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,122 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
var ie_lt8 = /MSIE \d/.test(navigator.userAgent) &&
(document.documentMode == null || document.documentMode < 8);
var Pos = CodeMirror.Pos;
var matching = {"(": ")>", ")": "(<", "[": "]>", "]": "[<", "{": "}>", "}": "{<"};
function findMatchingBracket(cm, where, strict, config) {
var line = cm.getLineHandle(where.line), pos = where.ch - 1;
var match = (pos >= 0 && matching[line.text.charAt(pos)]) || matching[line.text.charAt(++pos)];
if (!match) return null;
var dir = match.charAt(1) == ">" ? 1 : -1;
if (strict && (dir > 0) != (pos == where.ch)) return null;
var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));
var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style || null, config);
if (found == null) return null;
return {from: Pos(where.line, pos), to: found && found.pos,
match: found && found.ch == match.charAt(0), forward: dir > 0};
}
// bracketRegex is used to specify which type of bracket to scan
// should be a regexp, e.g. /[[\]]/
//
// Note: If "where" is on an open bracket, then this bracket is ignored.
//
// Returns false when no bracket was found, null when it reached
// maxScanLines and gave up
function scanForBracket(cm, where, dir, style, config) {
var maxScanLen = (config && config.maxScanLineLength) || 10000;
var maxScanLines = (config && config.maxScanLines) || 1000;
var stack = [];
var re = config && config.bracketRegex ? config.bracketRegex : /[(){}[\]]/;
var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)
: Math.max(cm.firstLine() - 1, where.line - maxScanLines);
for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {
var line = cm.getLine(lineNo);
if (!line) continue;
var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;
if (line.length > maxScanLen) continue;
if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);
for (; pos != end; pos += dir) {
var ch = line.charAt(pos);
if (re.test(ch) && (style === undefined || cm.getTokenTypeAt(Pos(lineNo, pos + 1)) == style)) {
var match = matching[ch];
if ((match.charAt(1) == ">") == (dir > 0)) stack.push(ch);
else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};
else stack.pop();
}
}
}
return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;
}
function matchBrackets(cm, autoclear, config) {
// Disable brace matching in long lines, since it'll cause hugely slow updates
var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000;
var marks = [], ranges = cm.listSelections();
for (var i = 0; i < ranges.length; i++) {
var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, false, config);
if (match && cm.getLine(match.from.line).length <= maxHighlightLen) {
var style = match.match ? "CodeMirror-matchingbracket" : "CodeMirror-nonmatchingbracket";
marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));
if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)
marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));
}
}
if (marks.length) {
// Kludge to work around the IE bug from issue #1193, where text
// input stops going to the textare whever this fires.
if (ie_lt8 && cm.state.focused) cm.focus();
var clear = function() {
cm.operation(function() {
for (var i = 0; i < marks.length; i++) marks[i].clear();
});
};
if (autoclear) setTimeout(clear, 800);
else return clear;
}
}
var currentlyHighlighted = null;
function doMatchBrackets(cm) {
cm.operation(function() {
if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}
currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);
});
}
CodeMirror.defineOption("matchBrackets", false, function(cm, val, old) {
if (old && old != CodeMirror.Init) {
cm.off("cursorActivity", doMatchBrackets);
if (currentlyHighlighted) {currentlyHighlighted(); currentlyHighlighted = null;}
}
if (val) {
cm.state.matchBrackets = typeof val == "object" ? val : {};
cm.on("cursorActivity", doMatchBrackets);
}
});
CodeMirror.defineExtension("matchBrackets", function() {matchBrackets(this, true);});
CodeMirror.defineExtension("findMatchingBracket", function(pos, strict, config){
return findMatchingBracket(this, pos, strict, config);
});
CodeMirror.defineExtension("scanForBracket", function(pos, dir, style, config){
return scanForBracket(this, pos, dir, style, config);
});
});

View File

@@ -0,0 +1,72 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var WRAP_CLASS = "CodeMirror-activeline";
var BACK_CLASS = "CodeMirror-activeline-background";
var GUTT_CLASS = "CodeMirror-activeline-gutter";
CodeMirror.defineOption("styleActiveLine", false, function(cm, val, old) {
var prev = old == CodeMirror.Init ? false : old;
if (val == prev) return
if (prev) {
cm.off("beforeSelectionChange", selectionChange);
clearActiveLines(cm);
delete cm.state.activeLines;
}
if (val) {
cm.state.activeLines = [];
updateActiveLines(cm, cm.listSelections());
cm.on("beforeSelectionChange", selectionChange);
}
});
function clearActiveLines(cm) {
for (var i = 0; i < cm.state.activeLines.length; i++) {
cm.removeLineClass(cm.state.activeLines[i], "wrap", WRAP_CLASS);
cm.removeLineClass(cm.state.activeLines[i], "background", BACK_CLASS);
cm.removeLineClass(cm.state.activeLines[i], "gutter", GUTT_CLASS);
}
}
function sameArray(a, b) {
if (a.length != b.length) return false;
for (var i = 0; i < a.length; i++)
if (a[i] != b[i]) return false;
return true;
}
function updateActiveLines(cm, ranges) {
var active = [];
for (var i = 0; i < ranges.length; i++) {
var range = ranges[i];
var option = cm.getOption("styleActiveLine");
if (typeof option == "object" && option.nonEmpty ? range.anchor.line != range.head.line : !range.empty())
continue
var line = cm.getLineHandleVisualStart(range.head.line);
if (active[active.length - 1] != line) active.push(line);
}
if (sameArray(cm.state.activeLines, active)) return;
cm.operation(function() {
clearActiveLines(cm);
for (var i = 0; i < active.length; i++) {
cm.addLineClass(active[i], "wrap", WRAP_CLASS);
cm.addLineClass(active[i], "background", BACK_CLASS);
cm.addLineClass(active[i], "gutter", GUTT_CLASS);
}
cm.state.activeLines = active;
});
}
function selectionChange(cm, sel) {
updateActiveLines(cm, sel.ranges);
}
});

831
static/vendor/codemirror/mode/css/css.js vendored Normal file
View File

@@ -0,0 +1,831 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
CodeMirror.defineMode("css", function(config, parserConfig) {
var inline = parserConfig.inline
if (!parserConfig.propertyKeywords) parserConfig = CodeMirror.resolveMode("text/css");
var indentUnit = config.indentUnit,
tokenHooks = parserConfig.tokenHooks,
documentTypes = parserConfig.documentTypes || {},
mediaTypes = parserConfig.mediaTypes || {},
mediaFeatures = parserConfig.mediaFeatures || {},
mediaValueKeywords = parserConfig.mediaValueKeywords || {},
propertyKeywords = parserConfig.propertyKeywords || {},
nonStandardPropertyKeywords = parserConfig.nonStandardPropertyKeywords || {},
fontProperties = parserConfig.fontProperties || {},
counterDescriptors = parserConfig.counterDescriptors || {},
colorKeywords = parserConfig.colorKeywords || {},
valueKeywords = parserConfig.valueKeywords || {},
allowNested = parserConfig.allowNested,
lineComment = parserConfig.lineComment,
supportsAtComponent = parserConfig.supportsAtComponent === true;
var type, override;
function ret(style, tp) { type = tp; return style; }
// Tokenizers
function tokenBase(stream, state) {
var ch = stream.next();
if (tokenHooks[ch]) {
var result = tokenHooks[ch](stream, state);
if (result !== false) return result;
}
if (ch == "@") {
stream.eatWhile(/[\w\\\-]/);
return ret("def", stream.current());
} else if (ch == "=" || (ch == "~" || ch == "|") && stream.eat("=")) {
return ret(null, "compare");
} else if (ch == "\"" || ch == "'") {
state.tokenize = tokenString(ch);
return state.tokenize(stream, state);
} else if (ch == "#") {
stream.eatWhile(/[\w\\\-]/);
return ret("atom", "hash");
} else if (ch == "!") {
stream.match(/^\s*\w*/);
return ret("keyword", "important");
} else if (/\d/.test(ch) || ch == "." && stream.eat(/\d/)) {
stream.eatWhile(/[\w.%]/);
return ret("number", "unit");
} else if (ch === "-") {
if (/[\d.]/.test(stream.peek())) {
stream.eatWhile(/[\w.%]/);
return ret("number", "unit");
} else if (stream.match(/^-[\w\\\-]+/)) {
stream.eatWhile(/[\w\\\-]/);
if (stream.match(/^\s*:/, false))
return ret("variable-2", "variable-definition");
return ret("variable-2", "variable");
} else if (stream.match(/^\w+-/)) {
return ret("meta", "meta");
}
} else if (/[,+>*\/]/.test(ch)) {
return ret(null, "select-op");
} else if (ch == "." && stream.match(/^-?[_a-z][_a-z0-9-]*/i)) {
return ret("qualifier", "qualifier");
} else if (/[:;{}\[\]\(\)]/.test(ch)) {
return ret(null, ch);
} else if ((ch == "u" && stream.match(/rl(-prefix)?\(/)) ||
(ch == "d" && stream.match("omain(")) ||
(ch == "r" && stream.match("egexp("))) {
stream.backUp(1);
state.tokenize = tokenParenthesized;
return ret("property", "word");
} else if (/[\w\\\-]/.test(ch)) {
stream.eatWhile(/[\w\\\-]/);
return ret("property", "word");
} else {
return ret(null, null);
}
}
function tokenString(quote) {
return function(stream, state) {
var escaped = false, ch;
while ((ch = stream.next()) != null) {
if (ch == quote && !escaped) {
if (quote == ")") stream.backUp(1);
break;
}
escaped = !escaped && ch == "\\";
}
if (ch == quote || !escaped && quote != ")") state.tokenize = null;
return ret("string", "string");
};
}
function tokenParenthesized(stream, state) {
stream.next(); // Must be '('
if (!stream.match(/\s*[\"\')]/, false))
state.tokenize = tokenString(")");
else
state.tokenize = null;
return ret(null, "(");
}
// Context management
function Context(type, indent, prev) {
this.type = type;
this.indent = indent;
this.prev = prev;
}
function pushContext(state, stream, type, indent) {
state.context = new Context(type, stream.indentation() + (indent === false ? 0 : indentUnit), state.context);
return type;
}
function popContext(state) {
if (state.context.prev)
state.context = state.context.prev;
return state.context.type;
}
function pass(type, stream, state) {
return states[state.context.type](type, stream, state);
}
function popAndPass(type, stream, state, n) {
for (var i = n || 1; i > 0; i--)
state.context = state.context.prev;
return pass(type, stream, state);
}
// Parser
function wordAsValue(stream) {
var word = stream.current().toLowerCase();
if (valueKeywords.hasOwnProperty(word))
override = "atom";
else if (colorKeywords.hasOwnProperty(word))
override = "keyword";
else
override = "variable";
}
var states = {};
states.top = function(type, stream, state) {
if (type == "{") {
return pushContext(state, stream, "block");
} else if (type == "}" && state.context.prev) {
return popContext(state);
} else if (supportsAtComponent && /@component/.test(type)) {
return pushContext(state, stream, "atComponentBlock");
} else if (/^@(-moz-)?document$/.test(type)) {
return pushContext(state, stream, "documentTypes");
} else if (/^@(media|supports|(-moz-)?document|import)$/.test(type)) {
return pushContext(state, stream, "atBlock");
} else if (/^@(font-face|counter-style)/.test(type)) {
state.stateArg = type;
return "restricted_atBlock_before";
} else if (/^@(-(moz|ms|o|webkit)-)?keyframes$/.test(type)) {
return "keyframes";
} else if (type && type.charAt(0) == "@") {
return pushContext(state, stream, "at");
} else if (type == "hash") {
override = "builtin";
} else if (type == "word") {
override = "tag";
} else if (type == "variable-definition") {
return "maybeprop";
} else if (type == "interpolation") {
return pushContext(state, stream, "interpolation");
} else if (type == ":") {
return "pseudo";
} else if (allowNested && type == "(") {
return pushContext(state, stream, "parens");
}
return state.context.type;
};
states.block = function(type, stream, state) {
if (type == "word") {
var word = stream.current().toLowerCase();
if (propertyKeywords.hasOwnProperty(word)) {
override = "property";
return "maybeprop";
} else if (nonStandardPropertyKeywords.hasOwnProperty(word)) {
override = "string-2";
return "maybeprop";
} else if (allowNested) {
override = stream.match(/^\s*:(?:\s|$)/, false) ? "property" : "tag";
return "block";
} else {
override += " error";
return "maybeprop";
}
} else if (type == "meta") {
return "block";
} else if (!allowNested && (type == "hash" || type == "qualifier")) {
override = "error";
return "block";
} else {
return states.top(type, stream, state);
}
};
states.maybeprop = function(type, stream, state) {
if (type == ":") return pushContext(state, stream, "prop");
return pass(type, stream, state);
};
states.prop = function(type, stream, state) {
if (type == ";") return popContext(state);
if (type == "{" && allowNested) return pushContext(state, stream, "propBlock");
if (type == "}" || type == "{") return popAndPass(type, stream, state);
if (type == "(") return pushContext(state, stream, "parens");
if (type == "hash" && !/^#([0-9a-fA-f]{3,4}|[0-9a-fA-f]{6}|[0-9a-fA-f]{8})$/.test(stream.current())) {
override += " error";
} else if (type == "word") {
wordAsValue(stream);
} else if (type == "interpolation") {
return pushContext(state, stream, "interpolation");
}
return "prop";
};
states.propBlock = function(type, _stream, state) {
if (type == "}") return popContext(state);
if (type == "word") { override = "property"; return "maybeprop"; }
return state.context.type;
};
states.parens = function(type, stream, state) {
if (type == "{" || type == "}") return popAndPass(type, stream, state);
if (type == ")") return popContext(state);
if (type == "(") return pushContext(state, stream, "parens");
if (type == "interpolation") return pushContext(state, stream, "interpolation");
if (type == "word") wordAsValue(stream);
return "parens";
};
states.pseudo = function(type, stream, state) {
if (type == "meta") return "pseudo";
if (type == "word") {
override = "variable-3";
return state.context.type;
}
return pass(type, stream, state);
};
states.documentTypes = function(type, stream, state) {
if (type == "word" && documentTypes.hasOwnProperty(stream.current())) {
override = "tag";
return state.context.type;
} else {
return states.atBlock(type, stream, state);
}
};
states.atBlock = function(type, stream, state) {
if (type == "(") return pushContext(state, stream, "atBlock_parens");
if (type == "}" || type == ";") return popAndPass(type, stream, state);
if (type == "{") return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top");
if (type == "interpolation") return pushContext(state, stream, "interpolation");
if (type == "word") {
var word = stream.current().toLowerCase();
if (word == "only" || word == "not" || word == "and" || word == "or")
override = "keyword";
else if (mediaTypes.hasOwnProperty(word))
override = "attribute";
else if (mediaFeatures.hasOwnProperty(word))
override = "property";
else if (mediaValueKeywords.hasOwnProperty(word))
override = "keyword";
else if (propertyKeywords.hasOwnProperty(word))
override = "property";
else if (nonStandardPropertyKeywords.hasOwnProperty(word))
override = "string-2";
else if (valueKeywords.hasOwnProperty(word))
override = "atom";
else if (colorKeywords.hasOwnProperty(word))
override = "keyword";
else
override = "error";
}
return state.context.type;
};
states.atComponentBlock = function(type, stream, state) {
if (type == "}")
return popAndPass(type, stream, state);
if (type == "{")
return popContext(state) && pushContext(state, stream, allowNested ? "block" : "top", false);
if (type == "word")
override = "error";
return state.context.type;
};
states.atBlock_parens = function(type, stream, state) {
if (type == ")") return popContext(state);
if (type == "{" || type == "}") return popAndPass(type, stream, state, 2);
return states.atBlock(type, stream, state);
};
states.restricted_atBlock_before = function(type, stream, state) {
if (type == "{")
return pushContext(state, stream, "restricted_atBlock");
if (type == "word" && state.stateArg == "@counter-style") {
override = "variable";
return "restricted_atBlock_before";
}
return pass(type, stream, state);
};
states.restricted_atBlock = function(type, stream, state) {
if (type == "}") {
state.stateArg = null;
return popContext(state);
}
if (type == "word") {
if ((state.stateArg == "@font-face" && !fontProperties.hasOwnProperty(stream.current().toLowerCase())) ||
(state.stateArg == "@counter-style" && !counterDescriptors.hasOwnProperty(stream.current().toLowerCase())))
override = "error";
else
override = "property";
return "maybeprop";
}
return "restricted_atBlock";
};
states.keyframes = function(type, stream, state) {
if (type == "word") { override = "variable"; return "keyframes"; }
if (type == "{") return pushContext(state, stream, "top");
return pass(type, stream, state);
};
states.at = function(type, stream, state) {
if (type == ";") return popContext(state);
if (type == "{" || type == "}") return popAndPass(type, stream, state);
if (type == "word") override = "tag";
else if (type == "hash") override = "builtin";
return "at";
};
states.interpolation = function(type, stream, state) {
if (type == "}") return popContext(state);
if (type == "{" || type == ";") return popAndPass(type, stream, state);
if (type == "word") override = "variable";
else if (type != "variable" && type != "(" && type != ")") override = "error";
return "interpolation";
};
return {
startState: function(base) {
return {tokenize: null,
state: inline ? "block" : "top",
stateArg: null,
context: new Context(inline ? "block" : "top", base || 0, null)};
},
token: function(stream, state) {
if (!state.tokenize && stream.eatSpace()) return null;
var style = (state.tokenize || tokenBase)(stream, state);
if (style && typeof style == "object") {
type = style[1];
style = style[0];
}
override = style;
state.state = states[state.state](type, stream, state);
return override;
},
indent: function(state, textAfter) {
var cx = state.context, ch = textAfter && textAfter.charAt(0);
var indent = cx.indent;
if (cx.type == "prop" && (ch == "}" || ch == ")")) cx = cx.prev;
if (cx.prev) {
if (ch == "}" && (cx.type == "block" || cx.type == "top" ||
cx.type == "interpolation" || cx.type == "restricted_atBlock")) {
// Resume indentation from parent context.
cx = cx.prev;
indent = cx.indent;
} else if (ch == ")" && (cx.type == "parens" || cx.type == "atBlock_parens") ||
ch == "{" && (cx.type == "at" || cx.type == "atBlock")) {
// Dedent relative to current context.
indent = Math.max(0, cx.indent - indentUnit);
cx = cx.prev;
}
}
return indent;
},
electricChars: "}",
blockCommentStart: "/*",
blockCommentEnd: "*/",
lineComment: lineComment,
fold: "brace"
};
});
function keySet(array) {
var keys = {};
for (var i = 0; i < array.length; ++i) {
keys[array[i].toLowerCase()] = true;
}
return keys;
}
var documentTypes_ = [
"domain", "regexp", "url", "url-prefix"
], documentTypes = keySet(documentTypes_);
var mediaTypes_ = [
"all", "aural", "braille", "handheld", "print", "projection", "screen",
"tty", "tv", "embossed"
], mediaTypes = keySet(mediaTypes_);
var mediaFeatures_ = [
"width", "min-width", "max-width", "height", "min-height", "max-height",
"device-width", "min-device-width", "max-device-width", "device-height",
"min-device-height", "max-device-height", "aspect-ratio",
"min-aspect-ratio", "max-aspect-ratio", "device-aspect-ratio",
"min-device-aspect-ratio", "max-device-aspect-ratio", "color", "min-color",
"max-color", "color-index", "min-color-index", "max-color-index",
"monochrome", "min-monochrome", "max-monochrome", "resolution",
"min-resolution", "max-resolution", "scan", "grid", "orientation",
"device-pixel-ratio", "min-device-pixel-ratio", "max-device-pixel-ratio",
"pointer", "any-pointer", "hover", "any-hover"
], mediaFeatures = keySet(mediaFeatures_);
var mediaValueKeywords_ = [
"landscape", "portrait", "none", "coarse", "fine", "on-demand", "hover",
"interlace", "progressive"
], mediaValueKeywords = keySet(mediaValueKeywords_);
var propertyKeywords_ = [
"align-content", "align-items", "align-self", "alignment-adjust",
"alignment-baseline", "anchor-point", "animation", "animation-delay",
"animation-direction", "animation-duration", "animation-fill-mode",
"animation-iteration-count", "animation-name", "animation-play-state",
"animation-timing-function", "appearance", "azimuth", "backface-visibility",
"background", "background-attachment", "background-blend-mode", "background-clip",
"background-color", "background-image", "background-origin", "background-position",
"background-repeat", "background-size", "baseline-shift", "binding",
"bleed", "bookmark-label", "bookmark-level", "bookmark-state",
"bookmark-target", "border", "border-bottom", "border-bottom-color",
"border-bottom-left-radius", "border-bottom-right-radius",
"border-bottom-style", "border-bottom-width", "border-collapse",
"border-color", "border-image", "border-image-outset",
"border-image-repeat", "border-image-slice", "border-image-source",
"border-image-width", "border-left", "border-left-color",
"border-left-style", "border-left-width", "border-radius", "border-right",
"border-right-color", "border-right-style", "border-right-width",
"border-spacing", "border-style", "border-top", "border-top-color",
"border-top-left-radius", "border-top-right-radius", "border-top-style",
"border-top-width", "border-width", "bottom", "box-decoration-break",
"box-shadow", "box-sizing", "break-after", "break-before", "break-inside",
"caption-side", "clear", "clip", "color", "color-profile", "column-count",
"column-fill", "column-gap", "column-rule", "column-rule-color",
"column-rule-style", "column-rule-width", "column-span", "column-width",
"columns", "content", "counter-increment", "counter-reset", "crop", "cue",
"cue-after", "cue-before", "cursor", "direction", "display",
"dominant-baseline", "drop-initial-after-adjust",
"drop-initial-after-align", "drop-initial-before-adjust",
"drop-initial-before-align", "drop-initial-size", "drop-initial-value",
"elevation", "empty-cells", "fit", "fit-position", "flex", "flex-basis",
"flex-direction", "flex-flow", "flex-grow", "flex-shrink", "flex-wrap",
"float", "float-offset", "flow-from", "flow-into", "font", "font-feature-settings",
"font-family", "font-kerning", "font-language-override", "font-size", "font-size-adjust",
"font-stretch", "font-style", "font-synthesis", "font-variant",
"font-variant-alternates", "font-variant-caps", "font-variant-east-asian",
"font-variant-ligatures", "font-variant-numeric", "font-variant-position",
"font-weight", "grid", "grid-area", "grid-auto-columns", "grid-auto-flow",
"grid-auto-rows", "grid-column", "grid-column-end", "grid-column-gap",
"grid-column-start", "grid-gap", "grid-row", "grid-row-end", "grid-row-gap",
"grid-row-start", "grid-template", "grid-template-areas", "grid-template-columns",
"grid-template-rows", "hanging-punctuation", "height", "hyphens",
"icon", "image-orientation", "image-rendering", "image-resolution",
"inline-box-align", "justify-content", "left", "letter-spacing",
"line-break", "line-height", "line-stacking", "line-stacking-ruby",
"line-stacking-shift", "line-stacking-strategy", "list-style",
"list-style-image", "list-style-position", "list-style-type", "margin",
"margin-bottom", "margin-left", "margin-right", "margin-top",
"marks", "marquee-direction", "marquee-loop",
"marquee-play-count", "marquee-speed", "marquee-style", "max-height",
"max-width", "min-height", "min-width", "move-to", "nav-down", "nav-index",
"nav-left", "nav-right", "nav-up", "object-fit", "object-position",
"opacity", "order", "orphans", "outline",
"outline-color", "outline-offset", "outline-style", "outline-width",
"overflow", "overflow-style", "overflow-wrap", "overflow-x", "overflow-y",
"padding", "padding-bottom", "padding-left", "padding-right", "padding-top",
"page", "page-break-after", "page-break-before", "page-break-inside",
"page-policy", "pause", "pause-after", "pause-before", "perspective",
"perspective-origin", "pitch", "pitch-range", "play-during", "position",
"presentation-level", "punctuation-trim", "quotes", "region-break-after",
"region-break-before", "region-break-inside", "region-fragment",
"rendering-intent", "resize", "rest", "rest-after", "rest-before", "richness",
"right", "rotation", "rotation-point", "ruby-align", "ruby-overhang",
"ruby-position", "ruby-span", "shape-image-threshold", "shape-inside", "shape-margin",
"shape-outside", "size", "speak", "speak-as", "speak-header",
"speak-numeral", "speak-punctuation", "speech-rate", "stress", "string-set",
"tab-size", "table-layout", "target", "target-name", "target-new",
"target-position", "text-align", "text-align-last", "text-decoration",
"text-decoration-color", "text-decoration-line", "text-decoration-skip",
"text-decoration-style", "text-emphasis", "text-emphasis-color",
"text-emphasis-position", "text-emphasis-style", "text-height",
"text-indent", "text-justify", "text-outline", "text-overflow", "text-shadow",
"text-size-adjust", "text-space-collapse", "text-transform", "text-underline-position",
"text-wrap", "top", "transform", "transform-origin", "transform-style",
"transition", "transition-delay", "transition-duration",
"transition-property", "transition-timing-function", "unicode-bidi",
"user-select", "vertical-align", "visibility", "voice-balance", "voice-duration",
"voice-family", "voice-pitch", "voice-range", "voice-rate", "voice-stress",
"voice-volume", "volume", "white-space", "widows", "width", "will-change", "word-break",
"word-spacing", "word-wrap", "z-index",
// SVG-specific
"clip-path", "clip-rule", "mask", "enable-background", "filter", "flood-color",
"flood-opacity", "lighting-color", "stop-color", "stop-opacity", "pointer-events",
"color-interpolation", "color-interpolation-filters",
"color-rendering", "fill", "fill-opacity", "fill-rule", "image-rendering",
"marker", "marker-end", "marker-mid", "marker-start", "shape-rendering", "stroke",
"stroke-dasharray", "stroke-dashoffset", "stroke-linecap", "stroke-linejoin",
"stroke-miterlimit", "stroke-opacity", "stroke-width", "text-rendering",
"baseline-shift", "dominant-baseline", "glyph-orientation-horizontal",
"glyph-orientation-vertical", "text-anchor", "writing-mode"
], propertyKeywords = keySet(propertyKeywords_);
var nonStandardPropertyKeywords_ = [
"scrollbar-arrow-color", "scrollbar-base-color", "scrollbar-dark-shadow-color",
"scrollbar-face-color", "scrollbar-highlight-color", "scrollbar-shadow-color",
"scrollbar-3d-light-color", "scrollbar-track-color", "shape-inside",
"searchfield-cancel-button", "searchfield-decoration", "searchfield-results-button",
"searchfield-results-decoration", "zoom"
], nonStandardPropertyKeywords = keySet(nonStandardPropertyKeywords_);
var fontProperties_ = [
"font-family", "src", "unicode-range", "font-variant", "font-feature-settings",
"font-stretch", "font-weight", "font-style"
], fontProperties = keySet(fontProperties_);
var counterDescriptors_ = [
"additive-symbols", "fallback", "negative", "pad", "prefix", "range",
"speak-as", "suffix", "symbols", "system"
], counterDescriptors = keySet(counterDescriptors_);
var colorKeywords_ = [
"aliceblue", "antiquewhite", "aqua", "aquamarine", "azure", "beige",
"bisque", "black", "blanchedalmond", "blue", "blueviolet", "brown",
"burlywood", "cadetblue", "chartreuse", "chocolate", "coral", "cornflowerblue",
"cornsilk", "crimson", "cyan", "darkblue", "darkcyan", "darkgoldenrod",
"darkgray", "darkgreen", "darkkhaki", "darkmagenta", "darkolivegreen",
"darkorange", "darkorchid", "darkred", "darksalmon", "darkseagreen",
"darkslateblue", "darkslategray", "darkturquoise", "darkviolet",
"deeppink", "deepskyblue", "dimgray", "dodgerblue", "firebrick",
"floralwhite", "forestgreen", "fuchsia", "gainsboro", "ghostwhite",
"gold", "goldenrod", "gray", "grey", "green", "greenyellow", "honeydew",
"hotpink", "indianred", "indigo", "ivory", "khaki", "lavender",
"lavenderblush", "lawngreen", "lemonchiffon", "lightblue", "lightcoral",
"lightcyan", "lightgoldenrodyellow", "lightgray", "lightgreen", "lightpink",
"lightsalmon", "lightseagreen", "lightskyblue", "lightslategray",
"lightsteelblue", "lightyellow", "lime", "limegreen", "linen", "magenta",
"maroon", "mediumaquamarine", "mediumblue", "mediumorchid", "mediumpurple",
"mediumseagreen", "mediumslateblue", "mediumspringgreen", "mediumturquoise",
"mediumvioletred", "midnightblue", "mintcream", "mistyrose", "moccasin",
"navajowhite", "navy", "oldlace", "olive", "olivedrab", "orange", "orangered",
"orchid", "palegoldenrod", "palegreen", "paleturquoise", "palevioletred",
"papayawhip", "peachpuff", "peru", "pink", "plum", "powderblue",
"purple", "rebeccapurple", "red", "rosybrown", "royalblue", "saddlebrown",
"salmon", "sandybrown", "seagreen", "seashell", "sienna", "silver", "skyblue",
"slateblue", "slategray", "snow", "springgreen", "steelblue", "tan",
"teal", "thistle", "tomato", "turquoise", "violet", "wheat", "white",
"whitesmoke", "yellow", "yellowgreen"
], colorKeywords = keySet(colorKeywords_);
var valueKeywords_ = [
"above", "absolute", "activeborder", "additive", "activecaption", "afar",
"after-white-space", "ahead", "alias", "all", "all-scroll", "alphabetic", "alternate",
"always", "amharic", "amharic-abegede", "antialiased", "appworkspace",
"arabic-indic", "armenian", "asterisks", "attr", "auto", "auto-flow", "avoid", "avoid-column", "avoid-page",
"avoid-region", "background", "backwards", "baseline", "below", "bidi-override", "binary",
"bengali", "blink", "block", "block-axis", "bold", "bolder", "border", "border-box",
"both", "bottom", "break", "break-all", "break-word", "bullets", "button", "button-bevel",
"buttonface", "buttonhighlight", "buttonshadow", "buttontext", "calc", "cambodian",
"capitalize", "caps-lock-indicator", "caption", "captiontext", "caret",
"cell", "center", "checkbox", "circle", "cjk-decimal", "cjk-earthly-branch",
"cjk-heavenly-stem", "cjk-ideographic", "clear", "clip", "close-quote",
"col-resize", "collapse", "color", "color-burn", "color-dodge", "column", "column-reverse",
"compact", "condensed", "contain", "content", "contents",
"content-box", "context-menu", "continuous", "copy", "counter", "counters", "cover", "crop",
"cross", "crosshair", "currentcolor", "cursive", "cyclic", "darken", "dashed", "decimal",
"decimal-leading-zero", "default", "default-button", "dense", "destination-atop",
"destination-in", "destination-out", "destination-over", "devanagari", "difference",
"disc", "discard", "disclosure-closed", "disclosure-open", "document",
"dot-dash", "dot-dot-dash",
"dotted", "double", "down", "e-resize", "ease", "ease-in", "ease-in-out", "ease-out",
"element", "ellipse", "ellipsis", "embed", "end", "ethiopic", "ethiopic-abegede",
"ethiopic-abegede-am-et", "ethiopic-abegede-gez", "ethiopic-abegede-ti-er",
"ethiopic-abegede-ti-et", "ethiopic-halehame-aa-er",
"ethiopic-halehame-aa-et", "ethiopic-halehame-am-et",
"ethiopic-halehame-gez", "ethiopic-halehame-om-et",
"ethiopic-halehame-sid-et", "ethiopic-halehame-so-et",
"ethiopic-halehame-ti-er", "ethiopic-halehame-ti-et", "ethiopic-halehame-tig",
"ethiopic-numeric", "ew-resize", "exclusion", "expanded", "extends", "extra-condensed",
"extra-expanded", "fantasy", "fast", "fill", "fixed", "flat", "flex", "flex-end", "flex-start", "footnotes",
"forwards", "from", "geometricPrecision", "georgian", "graytext", "grid", "groove",
"gujarati", "gurmukhi", "hand", "hangul", "hangul-consonant", "hard-light", "hebrew",
"help", "hidden", "hide", "higher", "highlight", "highlighttext",
"hiragana", "hiragana-iroha", "horizontal", "hsl", "hsla", "hue", "icon", "ignore",
"inactiveborder", "inactivecaption", "inactivecaptiontext", "infinite",
"infobackground", "infotext", "inherit", "initial", "inline", "inline-axis",
"inline-block", "inline-flex", "inline-grid", "inline-table", "inset", "inside", "intrinsic", "invert",
"italic", "japanese-formal", "japanese-informal", "justify", "kannada",
"katakana", "katakana-iroha", "keep-all", "khmer",
"korean-hangul-formal", "korean-hanja-formal", "korean-hanja-informal",
"landscape", "lao", "large", "larger", "left", "level", "lighter", "lighten",
"line-through", "linear", "linear-gradient", "lines", "list-item", "listbox", "listitem",
"local", "logical", "loud", "lower", "lower-alpha", "lower-armenian",
"lower-greek", "lower-hexadecimal", "lower-latin", "lower-norwegian",
"lower-roman", "lowercase", "ltr", "luminosity", "malayalam", "match", "matrix", "matrix3d",
"media-controls-background", "media-current-time-display",
"media-fullscreen-button", "media-mute-button", "media-play-button",
"media-return-to-realtime-button", "media-rewind-button",
"media-seek-back-button", "media-seek-forward-button", "media-slider",
"media-sliderthumb", "media-time-remaining-display", "media-volume-slider",
"media-volume-slider-container", "media-volume-sliderthumb", "medium",
"menu", "menulist", "menulist-button", "menulist-text",
"menulist-textfield", "menutext", "message-box", "middle", "min-intrinsic",
"mix", "mongolian", "monospace", "move", "multiple", "multiply", "myanmar", "n-resize",
"narrower", "ne-resize", "nesw-resize", "no-close-quote", "no-drop",
"no-open-quote", "no-repeat", "none", "normal", "not-allowed", "nowrap",
"ns-resize", "numbers", "numeric", "nw-resize", "nwse-resize", "oblique", "octal", "opacity", "open-quote",
"optimizeLegibility", "optimizeSpeed", "oriya", "oromo", "outset",
"outside", "outside-shape", "overlay", "overline", "padding", "padding-box",
"painted", "page", "paused", "persian", "perspective", "plus-darker", "plus-lighter",
"pointer", "polygon", "portrait", "pre", "pre-line", "pre-wrap", "preserve-3d",
"progress", "push-button", "radial-gradient", "radio", "read-only",
"read-write", "read-write-plaintext-only", "rectangle", "region",
"relative", "repeat", "repeating-linear-gradient",
"repeating-radial-gradient", "repeat-x", "repeat-y", "reset", "reverse",
"rgb", "rgba", "ridge", "right", "rotate", "rotate3d", "rotateX", "rotateY",
"rotateZ", "round", "row", "row-resize", "row-reverse", "rtl", "run-in", "running",
"s-resize", "sans-serif", "saturation", "scale", "scale3d", "scaleX", "scaleY", "scaleZ", "screen",
"scroll", "scrollbar", "scroll-position", "se-resize", "searchfield",
"searchfield-cancel-button", "searchfield-decoration",
"searchfield-results-button", "searchfield-results-decoration",
"semi-condensed", "semi-expanded", "separate", "serif", "show", "sidama",
"simp-chinese-formal", "simp-chinese-informal", "single",
"skew", "skewX", "skewY", "skip-white-space", "slide", "slider-horizontal",
"slider-vertical", "sliderthumb-horizontal", "sliderthumb-vertical", "slow",
"small", "small-caps", "small-caption", "smaller", "soft-light", "solid", "somali",
"source-atop", "source-in", "source-out", "source-over", "space", "space-around", "space-between", "spell-out", "square",
"square-button", "start", "static", "status-bar", "stretch", "stroke", "sub",
"subpixel-antialiased", "super", "sw-resize", "symbolic", "symbols", "table",
"table-caption", "table-cell", "table-column", "table-column-group",
"table-footer-group", "table-header-group", "table-row", "table-row-group",
"tamil",
"telugu", "text", "text-bottom", "text-top", "textarea", "textfield", "thai",
"thick", "thin", "threeddarkshadow", "threedface", "threedhighlight",
"threedlightshadow", "threedshadow", "tibetan", "tigre", "tigrinya-er",
"tigrinya-er-abegede", "tigrinya-et", "tigrinya-et-abegede", "to", "top",
"trad-chinese-formal", "trad-chinese-informal", "transform",
"translate", "translate3d", "translateX", "translateY", "translateZ",
"transparent", "ultra-condensed", "ultra-expanded", "underline", "unset", "up",
"upper-alpha", "upper-armenian", "upper-greek", "upper-hexadecimal",
"upper-latin", "upper-norwegian", "upper-roman", "uppercase", "urdu", "url",
"var", "vertical", "vertical-text", "visible", "visibleFill", "visiblePainted",
"visibleStroke", "visual", "w-resize", "wait", "wave", "wider",
"window", "windowframe", "windowtext", "words", "wrap", "wrap-reverse", "x-large", "x-small", "xor",
"xx-large", "xx-small"
], valueKeywords = keySet(valueKeywords_);
var allWords = documentTypes_.concat(mediaTypes_).concat(mediaFeatures_).concat(mediaValueKeywords_)
.concat(propertyKeywords_).concat(nonStandardPropertyKeywords_).concat(colorKeywords_)
.concat(valueKeywords_);
CodeMirror.registerHelper("hintWords", "css", allWords);
function tokenCComment(stream, state) {
var maybeEnd = false, ch;
while ((ch = stream.next()) != null) {
if (maybeEnd && ch == "/") {
state.tokenize = null;
break;
}
maybeEnd = (ch == "*");
}
return ["comment", "comment"];
}
CodeMirror.defineMIME("text/css", {
documentTypes: documentTypes,
mediaTypes: mediaTypes,
mediaFeatures: mediaFeatures,
mediaValueKeywords: mediaValueKeywords,
propertyKeywords: propertyKeywords,
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
fontProperties: fontProperties,
counterDescriptors: counterDescriptors,
colorKeywords: colorKeywords,
valueKeywords: valueKeywords,
tokenHooks: {
"/": function(stream, state) {
if (!stream.eat("*")) return false;
state.tokenize = tokenCComment;
return tokenCComment(stream, state);
}
},
name: "css"
});
CodeMirror.defineMIME("text/x-scss", {
mediaTypes: mediaTypes,
mediaFeatures: mediaFeatures,
mediaValueKeywords: mediaValueKeywords,
propertyKeywords: propertyKeywords,
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
colorKeywords: colorKeywords,
valueKeywords: valueKeywords,
fontProperties: fontProperties,
allowNested: true,
lineComment: "//",
tokenHooks: {
"/": function(stream, state) {
if (stream.eat("/")) {
stream.skipToEnd();
return ["comment", "comment"];
} else if (stream.eat("*")) {
state.tokenize = tokenCComment;
return tokenCComment(stream, state);
} else {
return ["operator", "operator"];
}
},
":": function(stream) {
if (stream.match(/\s*\{/))
return [null, "{"];
return false;
},
"$": function(stream) {
stream.match(/^[\w-]+/);
if (stream.match(/^\s*:/, false))
return ["variable-2", "variable-definition"];
return ["variable-2", "variable"];
},
"#": function(stream) {
if (!stream.eat("{")) return false;
return [null, "interpolation"];
}
},
name: "css",
helperType: "scss"
});
CodeMirror.defineMIME("text/x-less", {
mediaTypes: mediaTypes,
mediaFeatures: mediaFeatures,
mediaValueKeywords: mediaValueKeywords,
propertyKeywords: propertyKeywords,
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
colorKeywords: colorKeywords,
valueKeywords: valueKeywords,
fontProperties: fontProperties,
allowNested: true,
lineComment: "//",
tokenHooks: {
"/": function(stream, state) {
if (stream.eat("/")) {
stream.skipToEnd();
return ["comment", "comment"];
} else if (stream.eat("*")) {
state.tokenize = tokenCComment;
return tokenCComment(stream, state);
} else {
return ["operator", "operator"];
}
},
"@": function(stream) {
if (stream.eat("{")) return [null, "interpolation"];
if (stream.match(/^(charset|document|font-face|import|(-(moz|ms|o|webkit)-)?keyframes|media|namespace|page|supports)\b/, false)) return false;
stream.eatWhile(/[\w\\\-]/);
if (stream.match(/^\s*:/, false))
return ["variable-2", "variable-definition"];
return ["variable-2", "variable"];
},
"&": function() {
return ["atom", "atom"];
}
},
name: "css",
helperType: "less"
});
CodeMirror.defineMIME("text/x-gss", {
documentTypes: documentTypes,
mediaTypes: mediaTypes,
mediaFeatures: mediaFeatures,
propertyKeywords: propertyKeywords,
nonStandardPropertyKeywords: nonStandardPropertyKeywords,
fontProperties: fontProperties,
counterDescriptors: counterDescriptors,
colorKeywords: colorKeywords,
valueKeywords: valueKeywords,
supportsAtComponent: true,
tokenHooks: {
"/": function(stream, state) {
if (!stream.eat("*")) return false;
state.tokenize = tokenCComment;
return tokenCComment(stream, state);
}
},
name: "css",
helperType: "gss"
});
});

View File

@@ -0,0 +1,152 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"), require("../xml/xml"), require("../javascript/javascript"), require("../css/css"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror", "../xml/xml", "../javascript/javascript", "../css/css"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var defaultTags = {
script: [
["lang", /(javascript|babel)/i, "javascript"],
["type", /^(?:text|application)\/(?:x-)?(?:java|ecma)script$|^module$|^$/i, "javascript"],
["type", /./, "text/plain"],
[null, null, "javascript"]
],
style: [
["lang", /^css$/i, "css"],
["type", /^(text\/)?(x-)?(stylesheet|css)$/i, "css"],
["type", /./, "text/plain"],
[null, null, "css"]
]
};
function maybeBackup(stream, pat, style) {
var cur = stream.current(), close = cur.search(pat);
if (close > -1) {
stream.backUp(cur.length - close);
} else if (cur.match(/<\/?$/)) {
stream.backUp(cur.length);
if (!stream.match(pat, false)) stream.match(cur);
}
return style;
}
var attrRegexpCache = {};
function getAttrRegexp(attr) {
var regexp = attrRegexpCache[attr];
if (regexp) return regexp;
return attrRegexpCache[attr] = new RegExp("\\s+" + attr + "\\s*=\\s*('|\")?([^'\"]+)('|\")?\\s*");
}
function getAttrValue(text, attr) {
var match = text.match(getAttrRegexp(attr))
return match ? /^\s*(.*?)\s*$/.exec(match[2])[1] : ""
}
function getTagRegexp(tagName, anchored) {
return new RegExp((anchored ? "^" : "") + "<\/\s*" + tagName + "\s*>", "i");
}
function addTags(from, to) {
for (var tag in from) {
var dest = to[tag] || (to[tag] = []);
var source = from[tag];
for (var i = source.length - 1; i >= 0; i--)
dest.unshift(source[i])
}
}
function findMatchingMode(tagInfo, tagText) {
for (var i = 0; i < tagInfo.length; i++) {
var spec = tagInfo[i];
if (!spec[0] || spec[1].test(getAttrValue(tagText, spec[0]))) return spec[2];
}
}
CodeMirror.defineMode("htmlmixed", function (config, parserConfig) {
var htmlMode = CodeMirror.getMode(config, {
name: "xml",
htmlMode: true,
multilineTagIndentFactor: parserConfig.multilineTagIndentFactor,
multilineTagIndentPastTag: parserConfig.multilineTagIndentPastTag
});
var tags = {};
var configTags = parserConfig && parserConfig.tags, configScript = parserConfig && parserConfig.scriptTypes;
addTags(defaultTags, tags);
if (configTags) addTags(configTags, tags);
if (configScript) for (var i = configScript.length - 1; i >= 0; i--)
tags.script.unshift(["type", configScript[i].matches, configScript[i].mode])
function html(stream, state) {
var style = htmlMode.token(stream, state.htmlState), tag = /\btag\b/.test(style), tagName
if (tag && !/[<>\s\/]/.test(stream.current()) &&
(tagName = state.htmlState.tagName && state.htmlState.tagName.toLowerCase()) &&
tags.hasOwnProperty(tagName)) {
state.inTag = tagName + " "
} else if (state.inTag && tag && />$/.test(stream.current())) {
var inTag = /^([\S]+) (.*)/.exec(state.inTag)
state.inTag = null
var modeSpec = stream.current() == ">" && findMatchingMode(tags[inTag[1]], inTag[2])
var mode = CodeMirror.getMode(config, modeSpec)
var endTagA = getTagRegexp(inTag[1], true), endTag = getTagRegexp(inTag[1], false);
state.token = function (stream, state) {
if (stream.match(endTagA, false)) {
state.token = html;
state.localState = state.localMode = null;
return null;
}
return maybeBackup(stream, endTag, state.localMode.token(stream, state.localState));
};
state.localMode = mode;
state.localState = CodeMirror.startState(mode, htmlMode.indent(state.htmlState, ""));
} else if (state.inTag) {
state.inTag += stream.current()
if (stream.eol()) state.inTag += " "
}
return style;
};
return {
startState: function () {
var state = CodeMirror.startState(htmlMode);
return {token: html, inTag: null, localMode: null, localState: null, htmlState: state};
},
copyState: function (state) {
var local;
if (state.localState) {
local = CodeMirror.copyState(state.localMode, state.localState);
}
return {token: state.token, inTag: state.inTag,
localMode: state.localMode, localState: local,
htmlState: CodeMirror.copyState(htmlMode, state.htmlState)};
},
token: function (stream, state) {
return state.token(stream, state);
},
indent: function (state, textAfter) {
if (!state.localMode || /^\s*<\//.test(textAfter))
return htmlMode.indent(state.htmlState, textAfter);
else if (state.localMode.indent)
return state.localMode.indent(state.localState, textAfter);
else
return CodeMirror.Pass;
},
innerMode: function (state) {
return {state: state.localState || state.htmlState, mode: state.localMode || htmlMode};
}
};
}, "xml", "javascript", "css");
CodeMirror.defineMIME("text/html", "htmlmixed");
});

View File

@@ -0,0 +1,800 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
function expressionAllowed(stream, state, backUp) {
return /^(?:operator|sof|keyword c|case|new|export|default|[\[{}\(,;:]|=>)$/.test(state.lastType) ||
(state.lastType == "quasi" && /\{\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))
}
CodeMirror.defineMode("javascript", function(config, parserConfig) {
var indentUnit = config.indentUnit;
var statementIndent = parserConfig.statementIndent;
var jsonldMode = parserConfig.jsonld;
var jsonMode = parserConfig.json || jsonldMode;
var isTS = parserConfig.typescript;
var wordRE = parserConfig.wordCharacters || /[\w$\xa1-\uffff]/;
// Tokenizer
var keywords = function(){
function kw(type) {return {type: type, style: "keyword"};}
var A = kw("keyword a"), B = kw("keyword b"), C = kw("keyword c");
var operator = kw("operator"), atom = {type: "atom", style: "atom"};
var jsKeywords = {
"if": kw("if"), "while": A, "with": A, "else": B, "do": B, "try": B, "finally": B,
"return": C, "break": C, "continue": C, "new": kw("new"), "delete": C, "throw": C, "debugger": C,
"var": kw("var"), "const": kw("var"), "let": kw("var"),
"function": kw("function"), "catch": kw("catch"),
"for": kw("for"), "switch": kw("switch"), "case": kw("case"), "default": kw("default"),
"in": operator, "typeof": operator, "instanceof": operator,
"true": atom, "false": atom, "null": atom, "undefined": atom, "NaN": atom, "Infinity": atom,
"this": kw("this"), "class": kw("class"), "super": kw("atom"),
"yield": C, "export": kw("export"), "import": kw("import"), "extends": C,
"await": C, "async": kw("async")
};
// Extend the 'normal' keywords with the TypeScript language extensions
if (isTS) {
var type = {type: "variable", style: "variable-3"};
var tsKeywords = {
// object-like things
"interface": kw("class"),
"implements": C,
"namespace": C,
"module": kw("module"),
"enum": kw("module"),
"type": kw("type"),
// scope modifiers
"public": kw("modifier"),
"private": kw("modifier"),
"protected": kw("modifier"),
"abstract": kw("modifier"),
// operators
"as": operator,
// types
"string": type, "number": type, "boolean": type, "any": type
};
for (var attr in tsKeywords) {
jsKeywords[attr] = tsKeywords[attr];
}
}
return jsKeywords;
}();
var isOperatorChar = /[+\-*&%=<>!?|~^]/;
var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;
function readRegexp(stream) {
var escaped = false, next, inSet = false;
while ((next = stream.next()) != null) {
if (!escaped) {
if (next == "/" && !inSet) return;
if (next == "[") inSet = true;
else if (inSet && next == "]") inSet = false;
}
escaped = !escaped && next == "\\";
}
}
// Used as scratch variables to communicate multiple values without
// consing up tons of objects.
var type, content;
function ret(tp, style, cont) {
type = tp; content = cont;
return style;
}
function tokenBase(stream, state) {
var ch = stream.next();
if (ch == '"' || ch == "'") {
state.tokenize = tokenString(ch);
return state.tokenize(stream, state);
} else if (ch == "." && stream.match(/^\d+(?:[eE][+\-]?\d+)?/)) {
return ret("number", "number");
} else if (ch == "." && stream.match("..")) {
return ret("spread", "meta");
} else if (/[\[\]{}\(\),;\:\.]/.test(ch)) {
return ret(ch);
} else if (ch == "=" && stream.eat(">")) {
return ret("=>", "operator");
} else if (ch == "0" && stream.eat(/x/i)) {
stream.eatWhile(/[\da-f]/i);
return ret("number", "number");
} else if (ch == "0" && stream.eat(/o/i)) {
stream.eatWhile(/[0-7]/i);
return ret("number", "number");
} else if (ch == "0" && stream.eat(/b/i)) {
stream.eatWhile(/[01]/i);
return ret("number", "number");
} else if (/\d/.test(ch)) {
stream.match(/^\d*(?:\.\d*)?(?:[eE][+\-]?\d+)?/);
return ret("number", "number");
} else if (ch == "/") {
if (stream.eat("*")) {
state.tokenize = tokenComment;
return tokenComment(stream, state);
} else if (stream.eat("/")) {
stream.skipToEnd();
return ret("comment", "comment");
} else if (expressionAllowed(stream, state, 1)) {
readRegexp(stream);
stream.match(/^\b(([gimyu])(?![gimyu]*\2))+\b/);
return ret("regexp", "string-2");
} else {
stream.eatWhile(isOperatorChar);
return ret("operator", "operator", stream.current());
}
} else if (ch == "`") {
state.tokenize = tokenQuasi;
return tokenQuasi(stream, state);
} else if (ch == "#") {
stream.skipToEnd();
return ret("error", "error");
} else if (isOperatorChar.test(ch)) {
if (ch != ">" || !state.lexical || state.lexical.type != ">")
stream.eatWhile(isOperatorChar);
return ret("operator", "operator", stream.current());
} else if (wordRE.test(ch)) {
stream.eatWhile(wordRE);
var word = stream.current(), known = keywords.propertyIsEnumerable(word) && keywords[word];
return (known && state.lastType != ".") ? ret(known.type, known.style, word) :
ret("variable", "variable", word);
}
}
function tokenString(quote) {
return function(stream, state) {
var escaped = false, next;
if (jsonldMode && stream.peek() == "@" && stream.match(isJsonldKeyword)){
state.tokenize = tokenBase;
return ret("jsonld-keyword", "meta");
}
while ((next = stream.next()) != null) {
if (next == quote && !escaped) break;
escaped = !escaped && next == "\\";
}
if (!escaped) state.tokenize = tokenBase;
return ret("string", "string");
};
}
function tokenComment(stream, state) {
var maybeEnd = false, ch;
while (ch = stream.next()) {
if (ch == "/" && maybeEnd) {
state.tokenize = tokenBase;
break;
}
maybeEnd = (ch == "*");
}
return ret("comment", "comment");
}
function tokenQuasi(stream, state) {
var escaped = false, next;
while ((next = stream.next()) != null) {
if (!escaped && (next == "`" || next == "$" && stream.eat("{"))) {
state.tokenize = tokenBase;
break;
}
escaped = !escaped && next == "\\";
}
return ret("quasi", "string-2", stream.current());
}
var brackets = "([{}])";
// This is a crude lookahead trick to try and notice that we're
// parsing the argument patterns for a fat-arrow function before we
// actually hit the arrow token. It only works if the arrow is on
// the same line as the arguments and there's no strange noise
// (comments) in between. Fallback is to only notice when we hit the
// arrow, and not declare the arguments as locals for the arrow
// body.
function findFatArrow(stream, state) {
if (state.fatArrowAt) state.fatArrowAt = null;
var arrow = stream.string.indexOf("=>", stream.start);
if (arrow < 0) return;
if (isTS) { // Try to skip TypeScript return type declarations after the arguments
var m = /:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(stream.string.slice(stream.start, arrow))
if (m) arrow = m.index
}
var depth = 0, sawSomething = false;
for (var pos = arrow - 1; pos >= 0; --pos) {
var ch = stream.string.charAt(pos);
var bracket = brackets.indexOf(ch);
if (bracket >= 0 && bracket < 3) {
if (!depth) { ++pos; break; }
if (--depth == 0) { if (ch == "(") sawSomething = true; break; }
} else if (bracket >= 3 && bracket < 6) {
++depth;
} else if (wordRE.test(ch)) {
sawSomething = true;
} else if (/["'\/]/.test(ch)) {
return;
} else if (sawSomething && !depth) {
++pos;
break;
}
}
if (sawSomething && !depth) state.fatArrowAt = pos;
}
// Parser
var atomicTypes = {"atom": true, "number": true, "variable": true, "string": true, "regexp": true, "this": true, "jsonld-keyword": true};
function JSLexical(indented, column, type, align, prev, info) {
this.indented = indented;
this.column = column;
this.type = type;
this.prev = prev;
this.info = info;
if (align != null) this.align = align;
}
function inScope(state, varname) {
for (var v = state.localVars; v; v = v.next)
if (v.name == varname) return true;
for (var cx = state.context; cx; cx = cx.prev) {
for (var v = cx.vars; v; v = v.next)
if (v.name == varname) return true;
}
}
function parseJS(state, style, type, content, stream) {
var cc = state.cc;
// Communicate our context to the combinators.
// (Less wasteful than consing up a hundred closures on every call.)
cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;
if (!state.lexical.hasOwnProperty("align"))
state.lexical.align = true;
while(true) {
var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;
if (combinator(type, content)) {
while(cc.length && cc[cc.length - 1].lex)
cc.pop()();
if (cx.marked) return cx.marked;
if (type == "variable" && inScope(state, content)) return "variable-2";
return style;
}
}
}
// Combinator utils
var cx = {state: null, column: null, marked: null, cc: null};
function pass() {
for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);
}
function cont() {
pass.apply(null, arguments);
return true;
}
function register(varname) {
function inList(list) {
for (var v = list; v; v = v.next)
if (v.name == varname) return true;
return false;
}
var state = cx.state;
cx.marked = "def";
if (state.context) {
if (inList(state.localVars)) return;
state.localVars = {name: varname, next: state.localVars};
} else {
if (inList(state.globalVars)) return;
if (parserConfig.globalVars)
state.globalVars = {name: varname, next: state.globalVars};
}
}
// Combinators
var defaultVars = {name: "this", next: {name: "arguments"}};
function pushcontext() {
cx.state.context = {prev: cx.state.context, vars: cx.state.localVars};
cx.state.localVars = defaultVars;
}
function popcontext() {
cx.state.localVars = cx.state.context.vars;
cx.state.context = cx.state.context.prev;
}
function pushlex(type, info) {
var result = function() {
var state = cx.state, indent = state.indented;
if (state.lexical.type == "stat") indent = state.lexical.indented;
else for (var outer = state.lexical; outer && outer.type == ")" && outer.align; outer = outer.prev)
indent = outer.indented;
state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);
};
result.lex = true;
return result;
}
function poplex() {
var state = cx.state;
if (state.lexical.prev) {
if (state.lexical.type == ")")
state.indented = state.lexical.indented;
state.lexical = state.lexical.prev;
}
}
poplex.lex = true;
function expect(wanted) {
function exp(type) {
if (type == wanted) return cont();
else if (wanted == ";") return pass();
else return cont(exp);
};
return exp;
}
function statement(type, value) {
if (type == "var") return cont(pushlex("vardef", value.length), vardef, expect(";"), poplex);
if (type == "keyword a") return cont(pushlex("form"), parenExpr, statement, poplex);
if (type == "keyword b") return cont(pushlex("form"), statement, poplex);
if (type == "{") return cont(pushlex("}"), block, poplex);
if (type == ";") return cont();
if (type == "if") {
if (cx.state.lexical.info == "else" && cx.state.cc[cx.state.cc.length - 1] == poplex)
cx.state.cc.pop()();
return cont(pushlex("form"), parenExpr, statement, poplex, maybeelse);
}
if (type == "function") return cont(functiondef);
if (type == "for") return cont(pushlex("form"), forspec, statement, poplex);
if (type == "variable") return cont(pushlex("stat"), maybelabel);
if (type == "switch") return cont(pushlex("form"), parenExpr, pushlex("}", "switch"), expect("{"),
block, poplex, poplex);
if (type == "case") return cont(expression, expect(":"));
if (type == "default") return cont(expect(":"));
if (type == "catch") return cont(pushlex("form"), pushcontext, expect("("), funarg, expect(")"),
statement, poplex, popcontext);
if (type == "class") return cont(pushlex("form"), className, poplex);
if (type == "export") return cont(pushlex("stat"), afterExport, poplex);
if (type == "import") return cont(pushlex("stat"), afterImport, poplex);
if (type == "module") return cont(pushlex("form"), pattern, pushlex("}"), expect("{"), block, poplex, poplex)
if (type == "type") return cont(typeexpr, expect("operator"), typeexpr, expect(";"));
if (type == "async") return cont(statement)
return pass(pushlex("stat"), expression, expect(";"), poplex);
}
function expression(type) {
return expressionInner(type, false);
}
function expressionNoComma(type) {
return expressionInner(type, true);
}
function parenExpr(type) {
if (type != "(") return pass()
return cont(pushlex(")"), expression, expect(")"), poplex)
}
function expressionInner(type, noComma) {
if (cx.state.fatArrowAt == cx.stream.start) {
var body = noComma ? arrowBodyNoComma : arrowBody;
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(pattern, ")"), poplex, expect("=>"), body, popcontext);
else if (type == "variable") return pass(pushcontext, pattern, expect("=>"), body, popcontext);
}
var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;
if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);
if (type == "function") return cont(functiondef, maybeop);
if (type == "class") return cont(pushlex("form"), classExpression, poplex);
if (type == "keyword c" || type == "async") return cont(noComma ? maybeexpressionNoComma : maybeexpression);
if (type == "(") return cont(pushlex(")"), maybeexpression, expect(")"), poplex, maybeop);
if (type == "operator" || type == "spread") return cont(noComma ? expressionNoComma : expression);
if (type == "[") return cont(pushlex("]"), arrayLiteral, poplex, maybeop);
if (type == "{") return contCommasep(objprop, "}", null, maybeop);
if (type == "quasi") return pass(quasi, maybeop);
if (type == "new") return cont(maybeTarget(noComma));
return cont();
}
function maybeexpression(type) {
if (type.match(/[;\}\)\],]/)) return pass();
return pass(expression);
}
function maybeexpressionNoComma(type) {
if (type.match(/[;\}\)\],]/)) return pass();
return pass(expressionNoComma);
}
function maybeoperatorComma(type, value) {
if (type == ",") return cont(expression);
return maybeoperatorNoComma(type, value, false);
}
function maybeoperatorNoComma(type, value, noComma) {
var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;
var expr = noComma == false ? expression : expressionNoComma;
if (type == "=>") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);
if (type == "operator") {
if (/\+\+|--/.test(value)) return cont(me);
if (value == "?") return cont(expression, expect(":"), expr);
return cont(expr);
}
if (type == "quasi") { return pass(quasi, me); }
if (type == ";") return;
if (type == "(") return contCommasep(expressionNoComma, ")", "call", me);
if (type == ".") return cont(property, me);
if (type == "[") return cont(pushlex("]"), maybeexpression, expect("]"), poplex, me);
}
function quasi(type, value) {
if (type != "quasi") return pass();
if (value.slice(value.length - 2) != "${") return cont(quasi);
return cont(expression, continueQuasi);
}
function continueQuasi(type) {
if (type == "}") {
cx.marked = "string-2";
cx.state.tokenize = tokenQuasi;
return cont(quasi);
}
}
function arrowBody(type) {
findFatArrow(cx.stream, cx.state);
return pass(type == "{" ? statement : expression);
}
function arrowBodyNoComma(type) {
findFatArrow(cx.stream, cx.state);
return pass(type == "{" ? statement : expressionNoComma);
}
function maybeTarget(noComma) {
return function(type) {
if (type == ".") return cont(noComma ? targetNoComma : target);
else return pass(noComma ? expressionNoComma : expression);
};
}
function target(_, value) {
if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorComma); }
}
function targetNoComma(_, value) {
if (value == "target") { cx.marked = "keyword"; return cont(maybeoperatorNoComma); }
}
function maybelabel(type) {
if (type == ":") return cont(poplex, statement);
return pass(maybeoperatorComma, expect(";"), poplex);
}
function property(type) {
if (type == "variable") {cx.marked = "property"; return cont();}
}
function objprop(type, value) {
if (type == "async") {
cx.marked = "property";
return cont(objprop);
} else if (type == "variable" || cx.style == "keyword") {
cx.marked = "property";
if (value == "get" || value == "set") return cont(getterSetter);
return cont(afterprop);
} else if (type == "number" || type == "string") {
cx.marked = jsonldMode ? "property" : (cx.style + " property");
return cont(afterprop);
} else if (type == "jsonld-keyword") {
return cont(afterprop);
} else if (type == "modifier") {
return cont(objprop)
} else if (type == "[") {
return cont(expression, expect("]"), afterprop);
} else if (type == "spread") {
return cont(expression);
} else if (type == ":") {
return pass(afterprop)
}
}
function getterSetter(type) {
if (type != "variable") return pass(afterprop);
cx.marked = "property";
return cont(functiondef);
}
function afterprop(type) {
if (type == ":") return cont(expressionNoComma);
if (type == "(") return pass(functiondef);
}
function commasep(what, end, sep) {
function proceed(type, value) {
if (sep ? sep.indexOf(type) > -1 : type == ",") {
var lex = cx.state.lexical;
if (lex.info == "call") lex.pos = (lex.pos || 0) + 1;
return cont(function(type, value) {
if (type == end || value == end) return pass()
return pass(what)
}, proceed);
}
if (type == end || value == end) return cont();
return cont(expect(end));
}
return function(type, value) {
if (type == end || value == end) return cont();
return pass(what, proceed);
};
}
function contCommasep(what, end, info) {
for (var i = 3; i < arguments.length; i++)
cx.cc.push(arguments[i]);
return cont(pushlex(end, info), commasep(what, end), poplex);
}
function block(type) {
if (type == "}") return cont();
return pass(statement, block);
}
function maybetype(type, value) {
if (isTS) {
if (type == ":") return cont(typeexpr);
if (value == "?") return cont(maybetype);
}
}
function typeexpr(type) {
if (type == "variable") {cx.marked = "variable-3"; return cont(afterType);}
if (type == "string" || type == "number" || type == "atom") return cont(afterType);
if (type == "{") return cont(pushlex("}"), commasep(typeprop, "}", ",;"), poplex)
if (type == "(") return cont(commasep(typearg, ")"), maybeReturnType)
}
function maybeReturnType(type) {
if (type == "=>") return cont(typeexpr)
}
function typeprop(type, value) {
if (type == "variable" || cx.style == "keyword") {
cx.marked = "property"
return cont(typeprop)
} else if (value == "?") {
return cont(typeprop)
} else if (type == ":") {
return cont(typeexpr)
}
}
function typearg(type) {
if (type == "variable") return cont(typearg)
else if (type == ":") return cont(typeexpr)
}
function afterType(type, value) {
if (value == "<") return cont(pushlex(">"), commasep(typeexpr, ">"), poplex, afterType)
if (value == "|" || type == ".") return cont(typeexpr)
if (type == "[") return cont(expect("]"), afterType)
}
function vardef() {
return pass(pattern, maybetype, maybeAssign, vardefCont);
}
function pattern(type, value) {
if (type == "modifier") return cont(pattern)
if (type == "variable") { register(value); return cont(); }
if (type == "spread") return cont(pattern);
if (type == "[") return contCommasep(pattern, "]");
if (type == "{") return contCommasep(proppattern, "}");
}
function proppattern(type, value) {
if (type == "variable" && !cx.stream.match(/^\s*:/, false)) {
register(value);
return cont(maybeAssign);
}
if (type == "variable") cx.marked = "property";
if (type == "spread") return cont(pattern);
if (type == "}") return pass();
return cont(expect(":"), pattern, maybeAssign);
}
function maybeAssign(_type, value) {
if (value == "=") return cont(expressionNoComma);
}
function vardefCont(type) {
if (type == ",") return cont(vardef);
}
function maybeelse(type, value) {
if (type == "keyword b" && value == "else") return cont(pushlex("form", "else"), statement, poplex);
}
function forspec(type) {
if (type == "(") return cont(pushlex(")"), forspec1, expect(")"), poplex);
}
function forspec1(type) {
if (type == "var") return cont(vardef, expect(";"), forspec2);
if (type == ";") return cont(forspec2);
if (type == "variable") return cont(formaybeinof);
return pass(expression, expect(";"), forspec2);
}
function formaybeinof(_type, value) {
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
return cont(maybeoperatorComma, forspec2);
}
function forspec2(type, value) {
if (type == ";") return cont(forspec3);
if (value == "in" || value == "of") { cx.marked = "keyword"; return cont(expression); }
return pass(expression, expect(";"), forspec3);
}
function forspec3(type) {
if (type != ")") cont(expression);
}
function functiondef(type, value) {
if (value == "*") {cx.marked = "keyword"; return cont(functiondef);}
if (type == "variable") {register(value); return cont(functiondef);}
if (type == "(") return cont(pushcontext, pushlex(")"), commasep(funarg, ")"), poplex, maybetype, statement, popcontext);
}
function funarg(type) {
if (type == "spread") return cont(funarg);
return pass(pattern, maybetype, maybeAssign);
}
function classExpression(type, value) {
// Class expressions may have an optional name.
if (type == "variable") return className(type, value);
return classNameAfter(type, value);
}
function className(type, value) {
if (type == "variable") {register(value); return cont(classNameAfter);}
}
function classNameAfter(type, value) {
if (value == "extends" || value == "implements" || (isTS && type == ","))
return cont(isTS ? typeexpr : expression, classNameAfter);
if (type == "{") return cont(pushlex("}"), classBody, poplex);
}
function classBody(type, value) {
if (type == "variable" || cx.style == "keyword") {
if ((value == "async" || value == "static" || value == "get" || value == "set" ||
(isTS && (value == "public" || value == "private" || value == "protected" || value == "readonly" || value == "abstract"))) &&
cx.stream.match(/^\s+[\w$\xa1-\uffff]/, false)) {
cx.marked = "keyword";
return cont(classBody);
}
cx.marked = "property";
return cont(isTS ? classfield : functiondef, classBody);
}
if (type == "[")
return cont(expression, expect("]"), isTS ? classfield : functiondef, classBody)
if (value == "*") {
cx.marked = "keyword";
return cont(classBody);
}
if (type == ";") return cont(classBody);
if (type == "}") return cont();
}
function classfield(type, value) {
if (value == "?") return cont(classfield)
if (type == ":") return cont(typeexpr, maybeAssign)
return pass(functiondef)
}
function afterExport(type, value) {
if (value == "*") { cx.marked = "keyword"; return cont(maybeFrom, expect(";")); }
if (value == "default") { cx.marked = "keyword"; return cont(expression, expect(";")); }
if (type == "{") return cont(commasep(exportField, "}"), maybeFrom, expect(";"));
return pass(statement);
}
function exportField(type, value) {
if (value == "as") { cx.marked = "keyword"; return cont(expect("variable")); }
if (type == "variable") return pass(expressionNoComma, exportField);
}
function afterImport(type) {
if (type == "string") return cont();
return pass(importSpec, maybeMoreImports, maybeFrom);
}
function importSpec(type, value) {
if (type == "{") return contCommasep(importSpec, "}");
if (type == "variable") register(value);
if (value == "*") cx.marked = "keyword";
return cont(maybeAs);
}
function maybeMoreImports(type) {
if (type == ",") return cont(importSpec, maybeMoreImports)
}
function maybeAs(_type, value) {
if (value == "as") { cx.marked = "keyword"; return cont(importSpec); }
}
function maybeFrom(_type, value) {
if (value == "from") { cx.marked = "keyword"; return cont(expression); }
}
function arrayLiteral(type) {
if (type == "]") return cont();
return pass(commasep(expressionNoComma, "]"));
}
function isContinuedStatement(state, textAfter) {
return state.lastType == "operator" || state.lastType == "," ||
isOperatorChar.test(textAfter.charAt(0)) ||
/[,.]/.test(textAfter.charAt(0));
}
// Interface
return {
startState: function(basecolumn) {
var state = {
tokenize: tokenBase,
lastType: "sof",
cc: [],
lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, "block", false),
localVars: parserConfig.localVars,
context: parserConfig.localVars && {vars: parserConfig.localVars},
indented: basecolumn || 0
};
if (parserConfig.globalVars && typeof parserConfig.globalVars == "object")
state.globalVars = parserConfig.globalVars;
return state;
},
token: function(stream, state) {
if (stream.sol()) {
if (!state.lexical.hasOwnProperty("align"))
state.lexical.align = false;
state.indented = stream.indentation();
findFatArrow(stream, state);
}
if (state.tokenize != tokenComment && stream.eatSpace()) return null;
var style = state.tokenize(stream, state);
if (type == "comment") return style;
state.lastType = type == "operator" && (content == "++" || content == "--") ? "incdec" : type;
return parseJS(state, style, type, content, stream);
},
indent: function(state, textAfter) {
if (state.tokenize == tokenComment) return CodeMirror.Pass;
if (state.tokenize != tokenBase) return 0;
var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top
// Kludge to prevent 'maybelse' from blocking lexical scope pops
if (!/^\s*else\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {
var c = state.cc[i];
if (c == poplex) lexical = lexical.prev;
else if (c != maybeelse) break;
}
while ((lexical.type == "stat" || lexical.type == "form") &&
(firstChar == "}" || ((top = state.cc[state.cc.length - 1]) &&
(top == maybeoperatorComma || top == maybeoperatorNoComma) &&
!/^[,\.=+\-*:?[\(]/.test(textAfter))))
lexical = lexical.prev;
if (statementIndent && lexical.type == ")" && lexical.prev.type == "stat")
lexical = lexical.prev;
var type = lexical.type, closing = firstChar == type;
if (type == "vardef") return lexical.indented + (state.lastType == "operator" || state.lastType == "," ? lexical.info + 1 : 0);
else if (type == "form" && firstChar == "{") return lexical.indented;
else if (type == "form") return lexical.indented + indentUnit;
else if (type == "stat")
return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);
else if (lexical.info == "switch" && !closing && parserConfig.doubleIndentSwitch != false)
return lexical.indented + (/^(?:case|default)\b/.test(textAfter) ? indentUnit : 2 * indentUnit);
else if (lexical.align) return lexical.column + (closing ? 0 : 1);
else return lexical.indented + (closing ? 0 : indentUnit);
},
electricInput: /^\s*(?:case .*?:|default:|\{|\})$/,
blockCommentStart: jsonMode ? null : "/*",
blockCommentEnd: jsonMode ? null : "*/",
lineComment: jsonMode ? null : "//",
fold: "brace",
closeBrackets: "()[]{}''\"\"``",
helperType: jsonMode ? "json" : "javascript",
jsonldMode: jsonldMode,
jsonMode: jsonMode,
expressionAllowed: expressionAllowed,
skipExpression: function(state) {
var top = state.cc[state.cc.length - 1]
if (top == expression || top == expressionNoComma) state.cc.pop()
}
};
});
CodeMirror.registerHelper("wordChars", "javascript", /[\w$]/);
CodeMirror.defineMIME("text/javascript", "javascript");
CodeMirror.defineMIME("text/ecmascript", "javascript");
CodeMirror.defineMIME("application/javascript", "javascript");
CodeMirror.defineMIME("application/x-javascript", "javascript");
CodeMirror.defineMIME("application/ecmascript", "javascript");
CodeMirror.defineMIME("application/json", {name: "javascript", json: true});
CodeMirror.defineMIME("application/x-json", {name: "javascript", json: true});
CodeMirror.defineMIME("application/ld+json", {name: "javascript", jsonld: true});
CodeMirror.defineMIME("text/typescript", { name: "javascript", typescript: true });
CodeMirror.defineMIME("application/typescript", { name: "javascript", typescript: true });
});

394
static/vendor/codemirror/mode/xml/xml.js vendored Normal file
View File

@@ -0,0 +1,394 @@
// CodeMirror, copyright (c) by Marijn Haverbeke and others
// Distributed under an MIT license: http://codemirror.net/LICENSE
(function(mod) {
if (typeof exports == "object" && typeof module == "object") // CommonJS
mod(require("../../lib/codemirror"));
else if (typeof define == "function" && define.amd) // AMD
define(["../../lib/codemirror"], mod);
else // Plain browser env
mod(CodeMirror);
})(function(CodeMirror) {
"use strict";
var htmlConfig = {
autoSelfClosers: {'area': true, 'base': true, 'br': true, 'col': true, 'command': true,
'embed': true, 'frame': true, 'hr': true, 'img': true, 'input': true,
'keygen': true, 'link': true, 'meta': true, 'param': true, 'source': true,
'track': true, 'wbr': true, 'menuitem': true},
implicitlyClosed: {'dd': true, 'li': true, 'optgroup': true, 'option': true, 'p': true,
'rp': true, 'rt': true, 'tbody': true, 'td': true, 'tfoot': true,
'th': true, 'tr': true},
contextGrabbers: {
'dd': {'dd': true, 'dt': true},
'dt': {'dd': true, 'dt': true},
'li': {'li': true},
'option': {'option': true, 'optgroup': true},
'optgroup': {'optgroup': true},
'p': {'address': true, 'article': true, 'aside': true, 'blockquote': true, 'dir': true,
'div': true, 'dl': true, 'fieldset': true, 'footer': true, 'form': true,
'h1': true, 'h2': true, 'h3': true, 'h4': true, 'h5': true, 'h6': true,
'header': true, 'hgroup': true, 'hr': true, 'menu': true, 'nav': true, 'ol': true,
'p': true, 'pre': true, 'section': true, 'table': true, 'ul': true},
'rp': {'rp': true, 'rt': true},
'rt': {'rp': true, 'rt': true},
'tbody': {'tbody': true, 'tfoot': true},
'td': {'td': true, 'th': true},
'tfoot': {'tbody': true},
'th': {'td': true, 'th': true},
'thead': {'tbody': true, 'tfoot': true},
'tr': {'tr': true}
},
doNotIndent: {"pre": true},
allowUnquoted: true,
allowMissing: true,
caseFold: true
}
var xmlConfig = {
autoSelfClosers: {},
implicitlyClosed: {},
contextGrabbers: {},
doNotIndent: {},
allowUnquoted: false,
allowMissing: false,
caseFold: false
}
CodeMirror.defineMode("xml", function(editorConf, config_) {
var indentUnit = editorConf.indentUnit
var config = {}
var defaults = config_.htmlMode ? htmlConfig : xmlConfig
for (var prop in defaults) config[prop] = defaults[prop]
for (var prop in config_) config[prop] = config_[prop]
// Return variables for tokenizers
var type, setStyle;
function inText(stream, state) {
function chain(parser) {
state.tokenize = parser;
return parser(stream, state);
}
var ch = stream.next();
if (ch == "<") {
if (stream.eat("!")) {
if (stream.eat("[")) {
if (stream.match("CDATA[")) return chain(inBlock("atom", "]]>"));
else return null;
} else if (stream.match("--")) {
return chain(inBlock("comment", "-->"));
} else if (stream.match("DOCTYPE", true, true)) {
stream.eatWhile(/[\w\._\-]/);
return chain(doctype(1));
} else {
return null;
}
} else if (stream.eat("?")) {
stream.eatWhile(/[\w\._\-]/);
state.tokenize = inBlock("meta", "?>");
return "meta";
} else {
type = stream.eat("/") ? "closeTag" : "openTag";
state.tokenize = inTag;
return "tag bracket";
}
} else if (ch == "&") {
var ok;
if (stream.eat("#")) {
if (stream.eat("x")) {
ok = stream.eatWhile(/[a-fA-F\d]/) && stream.eat(";");
} else {
ok = stream.eatWhile(/[\d]/) && stream.eat(";");
}
} else {
ok = stream.eatWhile(/[\w\.\-:]/) && stream.eat(";");
}
return ok ? "atom" : "error";
} else {
stream.eatWhile(/[^&<]/);
return null;
}
}
inText.isInText = true;
function inTag(stream, state) {
var ch = stream.next();
if (ch == ">" || (ch == "/" && stream.eat(">"))) {
state.tokenize = inText;
type = ch == ">" ? "endTag" : "selfcloseTag";
return "tag bracket";
} else if (ch == "=") {
type = "equals";
return null;
} else if (ch == "<") {
state.tokenize = inText;
state.state = baseState;
state.tagName = state.tagStart = null;
var next = state.tokenize(stream, state);
return next ? next + " tag error" : "tag error";
} else if (/[\'\"]/.test(ch)) {
state.tokenize = inAttribute(ch);
state.stringStartCol = stream.column();
return state.tokenize(stream, state);
} else {
stream.match(/^[^\s\u00a0=<>\"\']*[^\s\u00a0=<>\"\'\/]/);
return "word";
}
}
function inAttribute(quote) {
var closure = function(stream, state) {
while (!stream.eol()) {
if (stream.next() == quote) {
state.tokenize = inTag;
break;
}
}
return "string";
};
closure.isInAttribute = true;
return closure;
}
function inBlock(style, terminator) {
return function(stream, state) {
while (!stream.eol()) {
if (stream.match(terminator)) {
state.tokenize = inText;
break;
}
stream.next();
}
return style;
};
}
function doctype(depth) {
return function(stream, state) {
var ch;
while ((ch = stream.next()) != null) {
if (ch == "<") {
state.tokenize = doctype(depth + 1);
return state.tokenize(stream, state);
} else if (ch == ">") {
if (depth == 1) {
state.tokenize = inText;
break;
} else {
state.tokenize = doctype(depth - 1);
return state.tokenize(stream, state);
}
}
}
return "meta";
};
}
function Context(state, tagName, startOfLine) {
this.prev = state.context;
this.tagName = tagName;
this.indent = state.indented;
this.startOfLine = startOfLine;
if (config.doNotIndent.hasOwnProperty(tagName) || (state.context && state.context.noIndent))
this.noIndent = true;
}
function popContext(state) {
if (state.context) state.context = state.context.prev;
}
function maybePopContext(state, nextTagName) {
var parentTagName;
while (true) {
if (!state.context) {
return;
}
parentTagName = state.context.tagName;
if (!config.contextGrabbers.hasOwnProperty(parentTagName) ||
!config.contextGrabbers[parentTagName].hasOwnProperty(nextTagName)) {
return;
}
popContext(state);
}
}
function baseState(type, stream, state) {
if (type == "openTag") {
state.tagStart = stream.column();
return tagNameState;
} else if (type == "closeTag") {
return closeTagNameState;
} else {
return baseState;
}
}
function tagNameState(type, stream, state) {
if (type == "word") {
state.tagName = stream.current();
setStyle = "tag";
return attrState;
} else {
setStyle = "error";
return tagNameState;
}
}
function closeTagNameState(type, stream, state) {
if (type == "word") {
var tagName = stream.current();
if (state.context && state.context.tagName != tagName &&
config.implicitlyClosed.hasOwnProperty(state.context.tagName))
popContext(state);
if ((state.context && state.context.tagName == tagName) || config.matchClosing === false) {
setStyle = "tag";
return closeState;
} else {
setStyle = "tag error";
return closeStateErr;
}
} else {
setStyle = "error";
return closeStateErr;
}
}
function closeState(type, _stream, state) {
if (type != "endTag") {
setStyle = "error";
return closeState;
}
popContext(state);
return baseState;
}
function closeStateErr(type, stream, state) {
setStyle = "error";
return closeState(type, stream, state);
}
function attrState(type, _stream, state) {
if (type == "word") {
setStyle = "attribute";
return attrEqState;
} else if (type == "endTag" || type == "selfcloseTag") {
var tagName = state.tagName, tagStart = state.tagStart;
state.tagName = state.tagStart = null;
if (type == "selfcloseTag" ||
config.autoSelfClosers.hasOwnProperty(tagName)) {
maybePopContext(state, tagName);
} else {
maybePopContext(state, tagName);
state.context = new Context(state, tagName, tagStart == state.indented);
}
return baseState;
}
setStyle = "error";
return attrState;
}
function attrEqState(type, stream, state) {
if (type == "equals") return attrValueState;
if (!config.allowMissing) setStyle = "error";
return attrState(type, stream, state);
}
function attrValueState(type, stream, state) {
if (type == "string") return attrContinuedState;
if (type == "word" && config.allowUnquoted) {setStyle = "string"; return attrState;}
setStyle = "error";
return attrState(type, stream, state);
}
function attrContinuedState(type, stream, state) {
if (type == "string") return attrContinuedState;
return attrState(type, stream, state);
}
return {
startState: function(baseIndent) {
var state = {tokenize: inText,
state: baseState,
indented: baseIndent || 0,
tagName: null, tagStart: null,
context: null}
if (baseIndent != null) state.baseIndent = baseIndent
return state
},
token: function(stream, state) {
if (!state.tagName && stream.sol())
state.indented = stream.indentation();
if (stream.eatSpace()) return null;
type = null;
var style = state.tokenize(stream, state);
if ((style || type) && style != "comment") {
setStyle = null;
state.state = state.state(type || style, stream, state);
if (setStyle)
style = setStyle == "error" ? style + " error" : setStyle;
}
return style;
},
indent: function(state, textAfter, fullLine) {
var context = state.context;
// Indent multi-line strings (e.g. css).
if (state.tokenize.isInAttribute) {
if (state.tagStart == state.indented)
return state.stringStartCol + 1;
else
return state.indented + indentUnit;
}
if (context && context.noIndent) return CodeMirror.Pass;
if (state.tokenize != inTag && state.tokenize != inText)
return fullLine ? fullLine.match(/^(\s*)/)[0].length : 0;
// Indent the starts of attribute names.
if (state.tagName) {
if (config.multilineTagIndentPastTag !== false)
return state.tagStart + state.tagName.length + 2;
else
return state.tagStart + indentUnit * (config.multilineTagIndentFactor || 1);
}
if (config.alignCDATA && /<!\[CDATA\[/.test(textAfter)) return 0;
var tagAfter = textAfter && /^<(\/)?([\w_:\.-]*)/.exec(textAfter);
if (tagAfter && tagAfter[1]) { // Closing tag spotted
while (context) {
if (context.tagName == tagAfter[2]) {
context = context.prev;
break;
} else if (config.implicitlyClosed.hasOwnProperty(context.tagName)) {
context = context.prev;
} else {
break;
}
}
} else if (tagAfter) { // Opening tag spotted
while (context) {
var grabbers = config.contextGrabbers[context.tagName];
if (grabbers && grabbers.hasOwnProperty(tagAfter[2]))
context = context.prev;
else
break;
}
}
while (context && context.prev && !context.startOfLine)
context = context.prev;
if (context) return context.indent + indentUnit;
else return state.baseIndent || 0;
},
electricInput: /<\/[\s\w:]+>$/,
blockCommentStart: "<!--",
blockCommentEnd: "-->",
configuration: config.htmlMode ? "html" : "xml",
helperType: config.htmlMode ? "html" : "xml",
skipAttribute: function(state) {
if (state.state == attrValueState)
state.state = attrState
}
};
});
CodeMirror.defineMIME("text/xml", "xml");
CodeMirror.defineMIME("application/xml", "xml");
if (!CodeMirror.mimeModes.hasOwnProperty("text/html"))
CodeMirror.defineMIME("text/html", {name: "xml", htmlMode: true});
});

View File

@@ -0,0 +1,36 @@
/* Based on Sublime Text's Monokai theme */
.cm-s-monokai.CodeMirror { background: #272822; color: #f8f8f2; }
.cm-s-monokai div.CodeMirror-selected { background: #49483E; }
.cm-s-monokai .CodeMirror-line::selection, .cm-s-monokai .CodeMirror-line > span::selection, .cm-s-monokai .CodeMirror-line > span > span::selection { background: rgba(73, 72, 62, .99); }
.cm-s-monokai .CodeMirror-line::-moz-selection, .cm-s-monokai .CodeMirror-line > span::-moz-selection, .cm-s-monokai .CodeMirror-line > span > span::-moz-selection { background: rgba(73, 72, 62, .99); }
.cm-s-monokai .CodeMirror-gutters { background: #272822; border-right: 0px; }
.cm-s-monokai .CodeMirror-guttermarker { color: white; }
.cm-s-monokai .CodeMirror-guttermarker-subtle { color: #d0d0d0; }
.cm-s-monokai .CodeMirror-linenumber { color: #d0d0d0; }
.cm-s-monokai .CodeMirror-cursor { border-left: 1px solid #f8f8f0; }
.cm-s-monokai span.cm-comment { color: #75715e; }
.cm-s-monokai span.cm-atom { color: #ae81ff; }
.cm-s-monokai span.cm-number { color: #ae81ff; }
.cm-s-monokai span.cm-property, .cm-s-monokai span.cm-attribute { color: #a6e22e; }
.cm-s-monokai span.cm-keyword { color: #f92672; }
.cm-s-monokai span.cm-builtin { color: #66d9ef; }
.cm-s-monokai span.cm-string { color: #e6db74; }
.cm-s-monokai span.cm-variable { color: #f8f8f2; }
.cm-s-monokai span.cm-variable-2 { color: #9effff; }
.cm-s-monokai span.cm-variable-3 { color: #66d9ef; }
.cm-s-monokai span.cm-def { color: #fd971f; }
.cm-s-monokai span.cm-bracket { color: #f8f8f2; }
.cm-s-monokai span.cm-tag { color: #f92672; }
.cm-s-monokai span.cm-header { color: #ae81ff; }
.cm-s-monokai span.cm-link { color: #ae81ff; }
.cm-s-monokai span.cm-error { background: #f92672; color: #f8f8f0; }
.cm-s-monokai .CodeMirror-activeline-background { background: #373831; }
.cm-s-monokai .CodeMirror-matchingbracket {
text-decoration: underline;
color: white !important;
}

17
static/vendor/common/common.js vendored Normal file
View File

@@ -0,0 +1,17 @@
// Tooltip and Popover
(function($) {
$('[data-toggle="tooltip"]').tooltip();
$('[data-toggle="popover"]').popover();
})(jQuery);
// Tabs
$('a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
$(this).parents('.nav-tabs').find('.active').removeClass('active');
$(this).parents('.nav-pills').find('.active').removeClass('active');
$(this).addClass('active').parent().addClass('active');
});
// Bootstrap Datepicker
if (typeof($.fn.datepicker) != 'undefined') {
$.fn.bootstrapDP = $.fn.datepicker.noConflict();
}

View File

@@ -0,0 +1,6 @@
/*!
Bootstrap integration for DataTables' Buttons
©2016 SpryMedia Ltd - datatables.net/license
*/
(function(c){"function"===typeof define&&define.amd?define(["jquery","datatables.net-bs4","datatables.net-buttons"],function(a){return c(a,window,document)}):"object"===typeof exports?module.exports=function(a,b){a||(a=window);if(!b||!b.fn.dataTable)b=require("datatables.net-bs4")(a,b).$;b.fn.dataTable.Buttons||require("datatables.net-buttons")(a,b);return c(b,a,a.document)}:c(jQuery,window,document)})(function(c){var a=c.fn.dataTable;c.extend(!0,a.Buttons.defaults,{dom:{container:{className:"dt-buttons btn-group"},
button:{className:"btn btn-secondary"},collection:{tag:"div",className:"dt-button-collection dropdown-menu",button:{tag:"a",className:"dt-button dropdown-item",active:"active",disabled:"disabled"}}}});a.ext.buttons.collection.className+=" dropdown-toggle";return a.Buttons});

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,4 @@
(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net","datatables.net-buttons"],function(e){return d(e,window,document)}):"object"===typeof exports?module.exports=function(e,c){e||(e=window);if(!c||!c.fn.dataTable)c=require("datatables.net")(e,c).$;c.fn.dataTable.Buttons||require("datatables.net-buttons")(e,c);return d(c,e,e.document)}:d(jQuery,window,document)})(function(d,e,c){var i=d.fn.dataTable,f=c.createElement("a"),l=function(a){f.href=a;a=f.host;-1===a.indexOf("/")&&
0!==f.pathname.indexOf("/")&&(a+="/");return f.protocol+"//"+a+f.pathname+f.search};i.ext.buttons.print={className:"buttons-print",text:function(a){return a.i18n("buttons.print","Print")},action:function(a,b,c,h){var a=b.buttons.exportData(d.extend({decodeEntities:!1},h.exportOptions)),c=b.buttons.exportInfo(h),f=function(b,c){for(var a="<tr>",d=0,e=b.length;d<e;d++)a+="<"+c+">"+b[d]+"</"+c+">";return a+"</tr>"},b='<table class="'+b.table().node().className+'">';h.header&&(b+="<thead>"+f(a.header,
"th")+"</thead>");for(var b=b+"<tbody>",k=0,i=a.body.length;k<i;k++)b+=f(a.body[k],"td");b+="</tbody>";h.footer&&a.footer&&(b+="<tfoot>"+f(a.footer,"th")+"</tfoot>");var b=b+"</table>",g=e.open("","");g.document.close();var j="<title>"+c.title+"</title>";d("style, link").each(function(){var b=j,a=d(this).clone()[0];"link"===a.nodeName.toLowerCase()&&(a.href=l(a.href));j=b+a.outerHTML});try{g.document.head.innerHTML=j}catch(m){d(g.document.head).html(j)}g.document.body.innerHTML="<h1>"+c.title+"</h1><div>"+
(c.messageTop||"")+"</div>"+b+"<div>"+(c.messageBottom||"")+"</div>";d(g.document.body).addClass("dt-print-view");d("img",g.document.body).each(function(a,b){b.setAttribute("src",l(b.getAttribute("src")))});h.customize&&h.customize(g);setTimeout(function(){h.autoPrint&&(g.print(),g.close())},1E3)},title:"*",messageTop:"*",messageBottom:"*",exportOptions:{},header:!0,footer:!1,autoPrint:!0,customize:null};return i.Buttons});

View File

@@ -0,0 +1,38 @@
/*!
Buttons for DataTables 1.4.2
©2016-2017 SpryMedia Ltd - datatables.net/license
*/
(function(d){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(n){return d(n,window,document)}):"object"===typeof exports?module.exports=function(n,o){n||(n=window);if(!o||!o.fn.dataTable)o=require("datatables.net")(n,o).$;return d(o,n,n.document)}:d(jQuery,window,document)})(function(d,n,o,l){var i=d.fn.dataTable,w=0,x=0,j=i.ext.buttons,m=function(a,b){"undefined"===typeof b&&(b={});!0===b&&(b={});d.isArray(b)&&(b={buttons:b});this.c=d.extend(!0,{},m.defaults,b);
b.buttons&&(this.c.buttons=b.buttons);this.s={dt:new i.Api(a),buttons:[],listenKeys:"",namespace:"dtb"+w++};this.dom={container:d("<"+this.c.dom.container.tag+"/>").addClass(this.c.dom.container.className)};this._constructor()};d.extend(m.prototype,{action:function(a,b){var c=this._nodeToButton(a);if(b===l)return c.conf.action;c.conf.action=b;return this},active:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.button.active,c=d(c.node);if(b===l)return c.hasClass(e);c.toggleClass(e,b===l?!0:
b);return this},add:function(a,b){var c=this.s.buttons;if("string"===typeof b){for(var e=b.split("-"),c=this.s,d=0,h=e.length-1;d<h;d++)c=c.buttons[1*e[d]];c=c.buttons;b=1*e[e.length-1]}this._expandButton(c,a,!1,b);this._draw();return this},container:function(){return this.dom.container},disable:function(a){a=this._nodeToButton(a);d(a.node).addClass(this.c.dom.button.disabled);return this},destroy:function(){d("body").off("keyup."+this.s.namespace);var a=this.s.buttons.slice(),b,c;b=0;for(c=a.length;b<
c;b++)this.remove(a[b].node);this.dom.container.remove();a=this.s.dt.settings()[0];b=0;for(c=a.length;b<c;b++)if(a.inst===this){a.splice(b,1);break}return this},enable:function(a,b){if(!1===b)return this.disable(a);var c=this._nodeToButton(a);d(c.node).removeClass(this.c.dom.button.disabled);return this},name:function(){return this.c.name},node:function(a){a=this._nodeToButton(a);return d(a.node)},processing:function(a,b){var c=this._nodeToButton(a);if(b===l)return d(c.node).hasClass("processing");
d(c.node).toggleClass("processing",b);return this},remove:function(a){var b=this._nodeToButton(a),c=this._nodeToHost(a),e=this.s.dt;if(b.buttons.length)for(var g=b.buttons.length-1;0<=g;g--)this.remove(b.buttons[g].node);b.conf.destroy&&b.conf.destroy.call(e.button(a),e,d(a),b.conf);this._removeKey(b.conf);d(b.node).remove();a=d.inArray(b,c);c.splice(a,1);return this},text:function(a,b){var c=this._nodeToButton(a),e=this.c.dom.collection.buttonLiner,e=c.inCollection&&e&&e.tag?e.tag:this.c.dom.buttonLiner.tag,
g=this.s.dt,h=d(c.node),f=function(a){return"function"===typeof a?a(g,h,c.conf):a};if(b===l)return f(c.conf.text);c.conf.text=b;e?h.children(e).html(f(b)):h.html(f(b));return this},_constructor:function(){var a=this,b=this.s.dt,c=b.settings()[0],e=this.c.buttons;c._buttons||(c._buttons=[]);c._buttons.push({inst:this,name:this.c.name});for(var c=0,g=e.length;c<g;c++)this.add(e[c]);b.on("destroy",function(){a.destroy()});d("body").on("keyup."+this.s.namespace,function(b){if(!o.activeElement||o.activeElement===
o.body){var c=String.fromCharCode(b.keyCode).toLowerCase();a.s.listenKeys.toLowerCase().indexOf(c)!==-1&&a._keypress(c,b)}})},_addKey:function(a){a.key&&(this.s.listenKeys+=d.isPlainObject(a.key)?a.key.key:a.key)},_draw:function(a,b){a||(a=this.dom.container,b=this.s.buttons);a.children().detach();for(var c=0,e=b.length;c<e;c++)a.append(b[c].inserter),a.append(" "),b[c].buttons&&b[c].buttons.length&&this._draw(b[c].collection,b[c].buttons)},_expandButton:function(a,b,c,e){for(var g=this.s.dt,h=0,
b=!d.isArray(b)?[b]:b,f=0,r=b.length;f<r;f++){var k=this._resolveExtends(b[f]);if(k)if(d.isArray(k))this._expandButton(a,k,c,e);else{var p=this._buildButton(k,c);if(p){e!==l?(a.splice(e,0,p),e++):a.push(p);if(p.conf.buttons){var t=this.c.dom.collection;p.collection=d("<"+t.tag+"/>").addClass(t.className).attr("role","menu");p.conf._collection=p.collection;this._expandButton(p.buttons,p.conf.buttons,!0,e)}k.init&&k.init.call(g.button(p.node),g,d(p.node),k);h++}}}},_buildButton:function(a,b){var c=
this.c.dom.button,e=this.c.dom.buttonLiner,g=this.c.dom.collection,h=this.s.dt,f=function(b){return"function"===typeof b?b(h,k,a):b};b&&g.button&&(c=g.button);b&&g.buttonLiner&&(e=g.buttonLiner);if(a.available&&!a.available(h,a))return!1;var r=function(a,b,c,e){e.action.call(b.button(c),a,b,c,e);d(b.table().node()).triggerHandler("buttons-action.dt",[b.button(c),b,c,e])},k=d("<"+c.tag+"/>").addClass(c.className).attr("tabindex",this.s.dt.settings()[0].iTabIndex).attr("aria-controls",this.s.dt.table().node().id).on("click.dtb",
function(b){b.preventDefault();!k.hasClass(c.disabled)&&a.action&&r(b,h,k,a);k.blur()}).on("keyup.dtb",function(b){b.keyCode===13&&!k.hasClass(c.disabled)&&a.action&&r(b,h,k,a)});"a"===c.tag.toLowerCase()&&k.attr("href","#");e.tag?(g=d("<"+e.tag+"/>").html(f(a.text)).addClass(e.className),"a"===e.tag.toLowerCase()&&g.attr("href","#"),k.append(g)):k.html(f(a.text));!1===a.enabled&&k.addClass(c.disabled);a.className&&k.addClass(a.className);a.titleAttr&&k.attr("title",f(a.titleAttr));a.namespace||(a.namespace=
".dt-button-"+x++);e=(e=this.c.dom.buttonContainer)&&e.tag?d("<"+e.tag+"/>").addClass(e.className).append(k):k;this._addKey(a);return{conf:a,node:k.get(0),inserter:e,buttons:[],inCollection:b,collection:null}},_nodeToButton:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b[c];if(b[c].buttons.length){var d=this._nodeToButton(a,b[c].buttons);if(d)return d}}},_nodeToHost:function(a,b){b||(b=this.s.buttons);for(var c=0,e=b.length;c<e;c++){if(b[c].node===a)return b;
if(b[c].buttons.length){var d=this._nodeToHost(a,b[c].buttons);if(d)return d}}},_keypress:function(a,b){var c=function(e){for(var g=0,h=e.length;g<h;g++){var f=e[g].conf,r=e[g].node;if(f.key)if(f.key===a)d(r).click();else if(d.isPlainObject(f.key)&&f.key.key===a&&(!f.key.shiftKey||b.shiftKey))if(!f.key.altKey||b.altKey)if(!f.key.ctrlKey||b.ctrlKey)(!f.key.metaKey||b.metaKey)&&d(r).click();e[g].buttons.length&&c(e[g].buttons)}};c(this.s.buttons)},_removeKey:function(a){if(a.key){var b=d.isPlainObject(a.key)?
a.key.key:a.key,a=this.s.listenKeys.split(""),b=d.inArray(b,a);a.splice(b,1);this.s.listenKeys=a.join("")}},_resolveExtends:function(a){for(var b=this.s.dt,c,e,g=function(c){for(var e=0;!d.isPlainObject(c)&&!d.isArray(c);){if(c===l)return;if("function"===typeof c){if(c=c(b,a),!c)return!1}else if("string"===typeof c){if(!j[c])throw"Unknown button type: "+c;c=j[c]}e++;if(30<e)throw"Buttons: Too many iterations";}return d.isArray(c)?c:d.extend({},c)},a=g(a);a&&a.extend;){if(!j[a.extend])throw"Cannot extend unknown button type: "+
a.extend;var h=g(j[a.extend]);if(d.isArray(h))return h;if(!h)return!1;c=h.className;a=d.extend({},h,a);c&&a.className!==c&&(a.className=c+" "+a.className);var f=a.postfixButtons;if(f){a.buttons||(a.buttons=[]);c=0;for(e=f.length;c<e;c++)a.buttons.push(f[c]);a.postfixButtons=null}if(f=a.prefixButtons){a.buttons||(a.buttons=[]);c=0;for(e=f.length;c<e;c++)a.buttons.splice(c,0,f[c]);a.prefixButtons=null}a.extend=h.extend}return a}});m.background=function(a,b,c){c===l&&(c=400);a?d("<div/>").addClass(b).css("display",
"none").appendTo("body").fadeIn(c):d("body > div."+b).fadeOut(c,function(){d(this).removeClass(b).remove()})};m.instanceSelector=function(a,b){if(!a)return d.map(b,function(a){return a.inst});var c=[],e=d.map(b,function(a){return a.name}),g=function(a){if(d.isArray(a))for(var f=0,r=a.length;f<r;f++)g(a[f]);else"string"===typeof a?-1!==a.indexOf(",")?g(a.split(",")):(a=d.inArray(d.trim(a),e),-1!==a&&c.push(b[a].inst)):"number"===typeof a&&c.push(b[a].inst)};g(a);return c};m.buttonSelector=function(a,
b){for(var c=[],e=function(a,b,c){for(var d,g,f=0,h=b.length;f<h;f++)if(d=b[f])g=c!==l?c+f:f+"",a.push({node:d.node,name:d.conf.name,idx:g}),d.buttons&&e(a,d.buttons,g+"-")},g=function(a,b){var f,h,i=[];e(i,b.s.buttons);f=d.map(i,function(a){return a.node});if(d.isArray(a)||a instanceof d){f=0;for(h=a.length;f<h;f++)g(a[f],b)}else if(null===a||a===l||"*"===a){f=0;for(h=i.length;f<h;f++)c.push({inst:b,node:i[f].node})}else if("number"===typeof a)c.push({inst:b,node:b.s.buttons[a].node});else if("string"===
typeof a)if(-1!==a.indexOf(",")){i=a.split(",");f=0;for(h=i.length;f<h;f++)g(d.trim(i[f]),b)}else if(a.match(/^\d+(\-\d+)*$/))f=d.map(i,function(a){return a.idx}),c.push({inst:b,node:i[d.inArray(a,f)].node});else if(-1!==a.indexOf(":name")){var j=a.replace(":name","");f=0;for(h=i.length;f<h;f++)i[f].name===j&&c.push({inst:b,node:i[f].node})}else d(f).filter(a).each(function(){c.push({inst:b,node:this})});else"object"===typeof a&&a.nodeName&&(i=d.inArray(a,f),-1!==i&&c.push({inst:b,node:f[i]}))},h=
0,f=a.length;h<f;h++)g(b,a[h]);return c};m.defaults={buttons:["copy","excel","csv","pdf","print"],name:"main",tabIndex:0,dom:{container:{tag:"div",className:"dt-buttons"},collection:{tag:"div",className:"dt-button-collection"},button:{tag:"a",className:"dt-button",active:"active",disabled:"disabled"},buttonLiner:{tag:"span",className:""}}};m.version="1.4.2";d.extend(j,{collection:{text:function(a){return a.i18n("buttons.collection","Collection")},className:"buttons-collection",action:function(a,b,
c,e){var a=c.offset(),g=d(b.table().container()),h=!1;d("div.dt-button-background").length&&(h=d(".dt-button-collection").offset(),d("body").trigger("click.dtb-collection"));e._collection.addClass(e.collectionLayout).css("display","none").appendTo("body").fadeIn(e.fade);var f=e._collection.css("position");h&&"absolute"===f?e._collection.css({top:h.top,left:h.left}):"absolute"===f?(e._collection.css({top:a.top+c.outerHeight(),left:a.left}),h=g.offset().top+g.height(),c=a.top+c.outerHeight()+e._collection.outerHeight()-
h,h=a.top-e._collection.outerHeight(),h=g.offset().top-h,c>h&&e._collection.css("top",a.top-e._collection.outerHeight()-5),c=a.left+e._collection.outerWidth(),g=g.offset().left+g.width(),c>g&&e._collection.css("left",a.left-(c-g))):(a=e._collection.height()/2,a>d(n).height()/2&&(a=d(n).height()/2),e._collection.css("marginTop",-1*a));e.background&&m.background(!0,e.backgroundClassName,e.fade);setTimeout(function(){d("div.dt-button-background").on("click.dtb-collection",function(){});d("body").on("click.dtb-collection",
function(a){var c=d.fn.addBack?"addBack":"andSelf";if(!d(a.target).parents()[c]().filter(e._collection).length){e._collection.fadeOut(e.fade,function(){e._collection.detach()});d("div.dt-button-background").off("click.dtb-collection");m.background(false,e.backgroundClassName,e.fade);d("body").off("click.dtb-collection");b.off("buttons-action.b-internal")}})},10);if(e.autoClose)b.on("buttons-action.b-internal",function(){d("div.dt-button-background").click()})},background:!0,collectionLayout:"",backgroundClassName:"dt-button-background",
autoClose:!1,fade:400},copy:function(a,b){if(j.copyHtml5)return"copyHtml5";if(j.copyFlash&&j.copyFlash.available(a,b))return"copyFlash"},csv:function(a,b){if(j.csvHtml5&&j.csvHtml5.available(a,b))return"csvHtml5";if(j.csvFlash&&j.csvFlash.available(a,b))return"csvFlash"},excel:function(a,b){if(j.excelHtml5&&j.excelHtml5.available(a,b))return"excelHtml5";if(j.excelFlash&&j.excelFlash.available(a,b))return"excelFlash"},pdf:function(a,b){if(j.pdfHtml5&&j.pdfHtml5.available(a,b))return"pdfHtml5";if(j.pdfFlash&&
j.pdfFlash.available(a,b))return"pdfFlash"},pageLength:function(a){var a=a.settings()[0].aLengthMenu,b=d.isArray(a[0])?a[0]:a,c=d.isArray(a[0])?a[1]:a,e=function(a){return a.i18n("buttons.pageLength",{"-1":"Show all rows",_:"Show %d rows"},a.page.len())};return{extend:"collection",text:e,className:"buttons-page-length",autoClose:!0,buttons:d.map(b,function(a,b){return{text:c[b],className:"button-page-length",action:function(b,c){c.page.len(a).draw()},init:function(b,c,d){var e=this,c=function(){e.active(b.page.len()===
a)};b.on("length.dt"+d.namespace,c);c()},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}),init:function(a,b,c){var d=this;a.on("length.dt"+c.namespace,function(){d.text(e(a))})},destroy:function(a,b,c){a.off("length.dt"+c.namespace)}}}});i.Api.register("buttons()",function(a,b){b===l&&(b=a,a=l);this.selector.buttonGroup=a;var c=this.iterator(!0,"table",function(c){if(c._buttons)return m.buttonSelector(m.instanceSelector(a,c._buttons),b)},!0);c._groupSelector=a;return c});i.Api.register("button()",
function(a,b){var c=this.buttons(a,b);1<c.length&&c.splice(1,c.length);return c});i.Api.registerPlural("buttons().active()","button().active()",function(a){return a===l?this.map(function(a){return a.inst.active(a.node)}):this.each(function(b){b.inst.active(b.node,a)})});i.Api.registerPlural("buttons().action()","button().action()",function(a){return a===l?this.map(function(a){return a.inst.action(a.node)}):this.each(function(b){b.inst.action(b.node,a)})});i.Api.register(["buttons().enable()","button().enable()"],
function(a){return this.each(function(b){b.inst.enable(b.node,a)})});i.Api.register(["buttons().disable()","button().disable()"],function(){return this.each(function(a){a.inst.disable(a.node)})});i.Api.registerPlural("buttons().nodes()","button().node()",function(){var a=d();d(this.each(function(b){a=a.add(b.inst.node(b.node))}));return a});i.Api.registerPlural("buttons().processing()","button().processing()",function(a){return a===l?this.map(function(a){return a.inst.processing(a.node)}):this.each(function(b){b.inst.processing(b.node,
a)})});i.Api.registerPlural("buttons().text()","button().text()",function(a){return a===l?this.map(function(a){return a.inst.text(a.node)}):this.each(function(b){b.inst.text(b.node,a)})});i.Api.registerPlural("buttons().trigger()","button().trigger()",function(){return this.each(function(a){a.inst.node(a.node).trigger("click")})});i.Api.registerPlural("buttons().containers()","buttons().container()",function(){var a=d(),b=this._groupSelector;this.iterator(!0,"table",function(c){if(c._buttons)for(var c=
m.instanceSelector(b,c._buttons),d=0,g=c.length;d<g;d++)a=a.add(c[d].container())});return a});i.Api.register("button().add()",function(a,b){var c=this.context;c.length&&(c=m.instanceSelector(this._groupSelector,c[0]._buttons),c.length&&c[0].add(b,a));return this.button(this._groupSelector,a)});i.Api.register("buttons().destroy()",function(){this.pluck("inst").unique().each(function(a){a.destroy()});return this});i.Api.registerPlural("buttons().remove()","buttons().remove()",function(){this.each(function(a){a.inst.remove(a.node)});
return this});var q;i.Api.register("buttons.info()",function(a,b,c){var e=this;if(!1===a)return d("#datatables_buttons_info").fadeOut(function(){d(this).remove()}),clearTimeout(q),q=null,this;q&&clearTimeout(q);d("#datatables_buttons_info").length&&d("#datatables_buttons_info").remove();d('<div id="datatables_buttons_info" class="dt-button-info"/>').html(a?"<h2>"+a+"</h2>":"").append(d("<div/>")["string"===typeof b?"html":"append"](b)).css("display","none").appendTo("body").fadeIn();c!==l&&0!==c&&
(q=setTimeout(function(){e.buttons.info(!1)},c));return this});i.Api.register("buttons.exportData()",function(a){if(this.context.length){for(var b=new i.Api(this.context[0]),c=d.extend(!0,{},{rows:null,columns:"",modifier:{search:"applied",order:"applied"},orthogonal:"display",stripHtml:!0,stripNewlines:!0,decodeEntities:!0,trim:!0,format:{header:function(a){return e(a)},footer:function(a){return e(a)},body:function(a){return e(a)}}},a),e=function(a){if("string"!==typeof a)return a;a=a.replace(/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
"");c.stripHtml&&(a=a.replace(/<[^>]*>/g,""));c.trim&&(a=a.replace(/^\s+|\s+$/g,""));c.stripNewlines&&(a=a.replace(/\n/g," "));c.decodeEntities&&(u.innerHTML=a,a=u.value);return a},a=b.columns(c.columns).indexes().map(function(a){var d=b.column(a).header();return c.format.header(d.innerHTML,a,d)}).toArray(),g=b.table().footer()?b.columns(c.columns).indexes().map(function(a){var d=b.column(a).footer();return c.format.footer(d?d.innerHTML:"",a,d)}).toArray():null,h=b.rows(c.rows,c.modifier).indexes().toArray(),
f=b.cells(h,c.columns),h=f.render(c.orthogonal).toArray(),f=f.nodes().toArray(),j=a.length,k=0<j?h.length/j:0,l=Array(k),m=0,n=0;n<k;n++){for(var o=Array(j),q=0;q<j;q++)o[q]=c.format.body(h[m],n,q,f[m]),m++;l[n]=o}return{header:a,footer:g,body:l}}});i.Api.register("buttons.exportInfo()",function(a){a||(a={});var b;var c=a;b="*"===c.filename&&"*"!==c.title&&c.title!==l?c.title:c.filename;"function"===typeof b&&(b=b());b===l||null===b?b=null:(-1!==b.indexOf("*")&&(b=d.trim(b.replace("*",d("title").text()))),
b=b.replace(/[^a-zA-Z0-9_\u00A1-\uFFFF\.,\-_ !\(\)]/g,""),(c=s(c.extension))||(c=""),b+=c);c=s(a.title);c=null===c?null:-1!==c.indexOf("*")?c.replace("*",d("title").text()||"Exported data"):c;return{filename:b,title:c,messageTop:v(this,a.messageTop||a.message,"top"),messageBottom:v(this,a.messageBottom,"bottom")}});var s=function(a){return null===a||a===l?null:"function"===typeof a?a():a},v=function(a,b,c){b=s(b);if(null===b)return null;a=d("caption",a.table().container()).eq(0);return"*"===b?a.css("caption-side")!==
c?null:a.length?a.text():"":b},u=d("<textarea/>")[0];d.fn.dataTable.Buttons=m;d.fn.DataTable.Buttons=m;d(o).on("init.dt plugin-init.dt",function(a,b){if("dt"===a.namespace){var c=b.oInit.buttons||i.defaults.buttons;c&&!b._buttons&&(new m(b,c)).container()}});i.ext.feature.push({fnInit:function(a){var a=new i.Api(a),b=a.init().buttons||i.defaults.buttons;return(new m(a,b)).container()},cFeature:"B"});return m});

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,202 @@
table.dataTable {
clear: both;
margin-top: 6px !important;
margin-bottom: 6px !important;
max-width: none !important;
border-collapse: separate !important;
}
table.dataTable td,
table.dataTable th {
-webkit-box-sizing: content-box;
box-sizing: content-box;
}
table.dataTable td.dataTables_empty,
table.dataTable th.dataTables_empty {
text-align: center;
}
table.dataTable.nowrap th,
table.dataTable.nowrap td {
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_length label {
font-weight: normal;
text-align: left;
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_length select {
width: 75px;
display: inline-block;
}
div.dataTables_wrapper div.dataTables_filter {
text-align: right;
}
div.dataTables_wrapper div.dataTables_filter label {
font-weight: normal;
white-space: nowrap;
text-align: left;
}
div.dataTables_wrapper div.dataTables_filter input {
margin-left: 0.5em;
display: inline-block;
width: auto;
}
div.dataTables_wrapper div.dataTables_info {
padding-top: 0.85em;
white-space: nowrap;
}
div.dataTables_wrapper div.dataTables_paginate {
margin: 0;
white-space: nowrap;
text-align: right;
}
div.dataTables_wrapper div.dataTables_paginate ul.pagination {
margin: 2px 0;
white-space: nowrap;
justify-content: flex-end;
}
div.dataTables_wrapper div.dataTables_processing {
position: absolute;
top: 50%;
left: 50%;
width: 200px;
margin-left: -100px;
margin-top: -26px;
text-align: center;
padding: 1em 0;
}
table.dataTable thead > tr > th.sorting_asc, table.dataTable thead > tr > th.sorting_desc, table.dataTable thead > tr > th.sorting,
table.dataTable thead > tr > td.sorting_asc,
table.dataTable thead > tr > td.sorting_desc,
table.dataTable thead > tr > td.sorting {
padding-right: 30px;
}
table.dataTable thead > tr > th:active,
table.dataTable thead > tr > td:active {
outline: none;
}
table.dataTable thead .sorting,
table.dataTable thead .sorting_asc,
table.dataTable thead .sorting_desc,
table.dataTable thead .sorting_asc_disabled,
table.dataTable thead .sorting_desc_disabled {
cursor: pointer;
position: relative;
}
table.dataTable thead .sorting:before, table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
position: absolute;
bottom: 0.9em;
display: block;
opacity: 0.3;
}
table.dataTable thead .sorting:before,
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:before,
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:before {
right: 1em;
content: "\2191";
}
table.dataTable thead .sorting:after,
table.dataTable thead .sorting_asc:after,
table.dataTable thead .sorting_desc:after,
table.dataTable thead .sorting_asc_disabled:after,
table.dataTable thead .sorting_desc_disabled:after {
right: 0.5em;
content: "\2193";
}
table.dataTable thead .sorting_asc:before,
table.dataTable thead .sorting_desc:after {
opacity: 1;
}
table.dataTable thead .sorting_asc_disabled:before,
table.dataTable thead .sorting_desc_disabled:after {
opacity: 0;
}
div.dataTables_scrollHead table.dataTable {
margin-bottom: 0 !important;
}
div.dataTables_scrollBody table {
border-top: none;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
div.dataTables_scrollBody table thead .sorting:after,
div.dataTables_scrollBody table thead .sorting_asc:after,
div.dataTables_scrollBody table thead .sorting_desc:after {
display: none;
}
div.dataTables_scrollBody table tbody tr:first-child th,
div.dataTables_scrollBody table tbody tr:first-child td {
border-top: none;
}
div.dataTables_scrollFoot > .dataTables_scrollFootInner {
box-sizing: content-box;
}
div.dataTables_scrollFoot > .dataTables_scrollFootInner > table {
margin-top: 0 !important;
border-top: none;
}
@media screen and (max-width: 767px) {
div.dataTables_wrapper div.dataTables_length,
div.dataTables_wrapper div.dataTables_filter,
div.dataTables_wrapper div.dataTables_info,
div.dataTables_wrapper div.dataTables_paginate {
text-align: center;
}
}
table.dataTable.table-sm > thead > tr > th {
padding-right: 20px;
}
table.dataTable.table-sm .sorting:before,
table.dataTable.table-sm .sorting_asc:before,
table.dataTable.table-sm .sorting_desc:before {
top: 5px;
right: 0.85em;
}
table.dataTable.table-sm .sorting:after,
table.dataTable.table-sm .sorting_asc:after,
table.dataTable.table-sm .sorting_desc:after {
top: 5px;
}
table.table-bordered.dataTable th,
table.table-bordered.dataTable td {
border-left-width: 0;
}
table.table-bordered.dataTable th:last-child, table.table-bordered.dataTable th:last-child,
table.table-bordered.dataTable td:last-child,
table.table-bordered.dataTable td:last-child {
border-right-width: 0;
}
table.table-bordered.dataTable tbody th,
table.table-bordered.dataTable tbody td {
border-bottom-width: 0;
}
div.dataTables_scrollHead table.table-bordered {
border-bottom-width: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row {
margin: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:first-child {
padding-left: 0;
}
div.table-responsive > div.dataTables_wrapper > div.row > div[class^="col-"]:last-child {
padding-right: 0;
}

View File

@@ -0,0 +1,8 @@
/*!
DataTables Bootstrap 3 integration
©2011-2015 SpryMedia Ltd - datatables.net/license
*/
(function(b){"function"===typeof define&&define.amd?define(["jquery","datatables.net"],function(a){return b(a,window,document)}):"object"===typeof exports?module.exports=function(a,d){a||(a=window);if(!d||!d.fn.dataTable)d=require("datatables.net")(a,d).$;return b(d,a,a.document)}:b(jQuery,window,document)})(function(b,a,d,m){var f=b.fn.dataTable;b.extend(!0,f.defaults,{dom:"<'row'<'col-sm-12 col-md-6'l><'col-sm-12 col-md-6'f>><'row'<'col-sm-12'tr>><'row'<'col-sm-12 col-md-5'i><'col-sm-12 col-md-7'p>>",
renderer:"bootstrap"});b.extend(f.ext.classes,{sWrapper:"dataTables_wrapper container-fluid dt-bootstrap4",sFilterInput:"form-control form-control-sm",sLengthSelect:"form-control form-control-sm",sProcessing:"dataTables_processing card",sPageButton:"paginate_button page-item"});f.ext.renderer.pageButton.bootstrap=function(a,h,r,s,j,n){var o=new f.Api(a),t=a.oClasses,k=a.oLanguage.oPaginate,u=a.oLanguage.oAria.paginate||{},e,g,p=0,q=function(d,f){var l,h,i,c,m=function(a){a.preventDefault();!b(a.currentTarget).hasClass("disabled")&&
o.page()!=a.data.action&&o.page(a.data.action).draw("page")};l=0;for(h=f.length;l<h;l++)if(c=f[l],b.isArray(c))q(d,c);else{g=e="";switch(c){case "ellipsis":e="&#x2026;";g="disabled";break;case "first":e=k.sFirst;g=c+(0<j?"":" disabled");break;case "previous":e=k.sPrevious;g=c+(0<j?"":" disabled");break;case "next":e=k.sNext;g=c+(j<n-1?"":" disabled");break;case "last":e=k.sLast;g=c+(j<n-1?"":" disabled");break;default:e=c+1,g=j===c?"active":""}e&&(i=b("<li>",{"class":t.sPageButton+" "+g,id:0===r&&
"string"===typeof c?a.sTableId+"_"+c:null}).append(b("<a>",{href:"#","aria-controls":a.sTableId,"aria-label":u[c],"data-dt-idx":p,tabindex:a.iTabIndex,"class":"page-link"}).html(e)).appendTo(d),a.oApi._fnBindAction(i,{action:c},m),p++)}},i;try{i=b(h).find(d.activeElement).data("dt-idx")}catch(v){}q(b(h).empty().html('<ul class="pagination"/>').children("ul"),s);i!==m&&b(h).find("[data-dt-idx="+i+"]").focus()};return f});

View File

@@ -0,0 +1,164 @@
/*!
DataTables 1.10.16
©2008-2017 SpryMedia Ltd - datatables.net/license
*/
(function(h){"function"===typeof define&&define.amd?define(["jquery"],function(E){return h(E,window,document)}):"object"===typeof exports?module.exports=function(E,G){E||(E=window);G||(G="undefined"!==typeof window?require("jquery"):require("jquery")(E));return h(G,E,E.document)}:h(jQuery,window,document)})(function(h,E,G,k){function X(a){var b,c,d={};h.each(a,function(e){if((b=e.match(/^([^A-Z]+?)([A-Z])/))&&-1!=="a aa ai ao as b fn i m o s ".indexOf(b[1]+" "))c=e.replace(b[0],b[2].toLowerCase()),
d[c]=e,"o"===b[1]&&X(a[e])});a._hungarianMap=d}function I(a,b,c){a._hungarianMap||X(a);var d;h.each(b,function(e){d=a._hungarianMap[e];if(d!==k&&(c||b[d]===k))"o"===d.charAt(0)?(b[d]||(b[d]={}),h.extend(!0,b[d],b[e]),I(a[d],b[d],c)):b[d]=b[e]})}function Ca(a){var b=m.defaults.oLanguage,c=a.sZeroRecords;!a.sEmptyTable&&(c&&"No data available in table"===b.sEmptyTable)&&F(a,a,"sZeroRecords","sEmptyTable");!a.sLoadingRecords&&(c&&"Loading..."===b.sLoadingRecords)&&F(a,a,"sZeroRecords","sLoadingRecords");
a.sInfoThousands&&(a.sThousands=a.sInfoThousands);(a=a.sDecimal)&&cb(a)}function db(a){A(a,"ordering","bSort");A(a,"orderMulti","bSortMulti");A(a,"orderClasses","bSortClasses");A(a,"orderCellsTop","bSortCellsTop");A(a,"order","aaSorting");A(a,"orderFixed","aaSortingFixed");A(a,"paging","bPaginate");A(a,"pagingType","sPaginationType");A(a,"pageLength","iDisplayLength");A(a,"searching","bFilter");"boolean"===typeof a.sScrollX&&(a.sScrollX=a.sScrollX?"100%":"");"boolean"===typeof a.scrollX&&(a.scrollX=
a.scrollX?"100%":"");if(a=a.aoSearchCols)for(var b=0,c=a.length;b<c;b++)a[b]&&I(m.models.oSearch,a[b])}function eb(a){A(a,"orderable","bSortable");A(a,"orderData","aDataSort");A(a,"orderSequence","asSorting");A(a,"orderDataType","sortDataType");var b=a.aDataSort;"number"===typeof b&&!h.isArray(b)&&(a.aDataSort=[b])}function fb(a){if(!m.__browser){var b={};m.__browser=b;var c=h("<div/>").css({position:"fixed",top:0,left:-1*h(E).scrollLeft(),height:1,width:1,overflow:"hidden"}).append(h("<div/>").css({position:"absolute",
top:1,left:1,width:100,overflow:"scroll"}).append(h("<div/>").css({width:"100%",height:10}))).appendTo("body"),d=c.children(),e=d.children();b.barWidth=d[0].offsetWidth-d[0].clientWidth;b.bScrollOversize=100===e[0].offsetWidth&&100!==d[0].clientWidth;b.bScrollbarLeft=1!==Math.round(e.offset().left);b.bBounding=c[0].getBoundingClientRect().width?!0:!1;c.remove()}h.extend(a.oBrowser,m.__browser);a.oScroll.iBarWidth=m.__browser.barWidth}function gb(a,b,c,d,e,f){var g,j=!1;c!==k&&(g=c,j=!0);for(;d!==
e;)a.hasOwnProperty(d)&&(g=j?b(g,a[d],d,a):a[d],j=!0,d+=f);return g}function Da(a,b){var c=m.defaults.column,d=a.aoColumns.length,c=h.extend({},m.models.oColumn,c,{nTh:b?b:G.createElement("th"),sTitle:c.sTitle?c.sTitle:b?b.innerHTML:"",aDataSort:c.aDataSort?c.aDataSort:[d],mData:c.mData?c.mData:d,idx:d});a.aoColumns.push(c);c=a.aoPreSearchCols;c[d]=h.extend({},m.models.oSearch,c[d]);ja(a,d,h(b).data())}function ja(a,b,c){var b=a.aoColumns[b],d=a.oClasses,e=h(b.nTh);if(!b.sWidthOrig){b.sWidthOrig=
e.attr("width")||null;var f=(e.attr("style")||"").match(/width:\s*(\d+[pxem%]+)/);f&&(b.sWidthOrig=f[1])}c!==k&&null!==c&&(eb(c),I(m.defaults.column,c),c.mDataProp!==k&&!c.mData&&(c.mData=c.mDataProp),c.sType&&(b._sManualType=c.sType),c.className&&!c.sClass&&(c.sClass=c.className),c.sClass&&e.addClass(c.sClass),h.extend(b,c),F(b,c,"sWidth","sWidthOrig"),c.iDataSort!==k&&(b.aDataSort=[c.iDataSort]),F(b,c,"aDataSort"));var g=b.mData,j=Q(g),i=b.mRender?Q(b.mRender):null,c=function(a){return"string"===
typeof a&&-1!==a.indexOf("@")};b._bAttrSrc=h.isPlainObject(g)&&(c(g.sort)||c(g.type)||c(g.filter));b._setter=null;b.fnGetData=function(a,b,c){var d=j(a,b,k,c);return i&&b?i(d,b,a,c):d};b.fnSetData=function(a,b,c){return R(g)(a,b,c)};"number"!==typeof g&&(a._rowReadObject=!0);a.oFeatures.bSort||(b.bSortable=!1,e.addClass(d.sSortableNone));a=-1!==h.inArray("asc",b.asSorting);c=-1!==h.inArray("desc",b.asSorting);!b.bSortable||!a&&!c?(b.sSortingClass=d.sSortableNone,b.sSortingClassJUI=""):a&&!c?(b.sSortingClass=
d.sSortableAsc,b.sSortingClassJUI=d.sSortJUIAscAllowed):!a&&c?(b.sSortingClass=d.sSortableDesc,b.sSortingClassJUI=d.sSortJUIDescAllowed):(b.sSortingClass=d.sSortable,b.sSortingClassJUI=d.sSortJUI)}function Y(a){if(!1!==a.oFeatures.bAutoWidth){var b=a.aoColumns;Ea(a);for(var c=0,d=b.length;c<d;c++)b[c].nTh.style.width=b[c].sWidth}b=a.oScroll;(""!==b.sY||""!==b.sX)&&ka(a);r(a,null,"column-sizing",[a])}function Z(a,b){var c=la(a,"bVisible");return"number"===typeof c[b]?c[b]:null}function $(a,b){var c=
la(a,"bVisible"),c=h.inArray(b,c);return-1!==c?c:null}function aa(a){var b=0;h.each(a.aoColumns,function(a,d){d.bVisible&&"none"!==h(d.nTh).css("display")&&b++});return b}function la(a,b){var c=[];h.map(a.aoColumns,function(a,e){a[b]&&c.push(e)});return c}function Fa(a){var b=a.aoColumns,c=a.aoData,d=m.ext.type.detect,e,f,g,j,i,h,l,q,t;e=0;for(f=b.length;e<f;e++)if(l=b[e],t=[],!l.sType&&l._sManualType)l.sType=l._sManualType;else if(!l.sType){g=0;for(j=d.length;g<j;g++){i=0;for(h=c.length;i<h;i++){t[i]===
k&&(t[i]=B(a,i,e,"type"));q=d[g](t[i],a);if(!q&&g!==d.length-1)break;if("html"===q)break}if(q){l.sType=q;break}}l.sType||(l.sType="string")}}function hb(a,b,c,d){var e,f,g,j,i,n,l=a.aoColumns;if(b)for(e=b.length-1;0<=e;e--){n=b[e];var q=n.targets!==k?n.targets:n.aTargets;h.isArray(q)||(q=[q]);f=0;for(g=q.length;f<g;f++)if("number"===typeof q[f]&&0<=q[f]){for(;l.length<=q[f];)Da(a);d(q[f],n)}else if("number"===typeof q[f]&&0>q[f])d(l.length+q[f],n);else if("string"===typeof q[f]){j=0;for(i=l.length;j<
i;j++)("_all"==q[f]||h(l[j].nTh).hasClass(q[f]))&&d(j,n)}}if(c){e=0;for(a=c.length;e<a;e++)d(e,c[e])}}function M(a,b,c,d){var e=a.aoData.length,f=h.extend(!0,{},m.models.oRow,{src:c?"dom":"data",idx:e});f._aData=b;a.aoData.push(f);for(var g=a.aoColumns,j=0,i=g.length;j<i;j++)g[j].sType=null;a.aiDisplayMaster.push(e);b=a.rowIdFn(b);b!==k&&(a.aIds[b]=f);(c||!a.oFeatures.bDeferRender)&&Ga(a,e,c,d);return e}function ma(a,b){var c;b instanceof h||(b=h(b));return b.map(function(b,e){c=Ha(a,e);return M(a,
c.data,e,c.cells)})}function B(a,b,c,d){var e=a.iDraw,f=a.aoColumns[c],g=a.aoData[b]._aData,j=f.sDefaultContent,i=f.fnGetData(g,d,{settings:a,row:b,col:c});if(i===k)return a.iDrawError!=e&&null===j&&(J(a,0,"Requested unknown parameter "+("function"==typeof f.mData?"{function}":"'"+f.mData+"'")+" for row "+b+", column "+c,4),a.iDrawError=e),j;if((i===g||null===i)&&null!==j&&d!==k)i=j;else if("function"===typeof i)return i.call(g);return null===i&&"display"==d?"":i}function ib(a,b,c,d){a.aoColumns[c].fnSetData(a.aoData[b]._aData,
d,{settings:a,row:b,col:c})}function Ia(a){return h.map(a.match(/(\\.|[^\.])+/g)||[""],function(a){return a.replace(/\\\./g,".")})}function Q(a){if(h.isPlainObject(a)){var b={};h.each(a,function(a,c){c&&(b[a]=Q(c))});return function(a,c,f,g){var j=b[c]||b._;return j!==k?j(a,c,f,g):a}}if(null===a)return function(a){return a};if("function"===typeof a)return function(b,c,f,g){return a(b,c,f,g)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var c=function(a,
b,f){var g,j;if(""!==f){j=Ia(f);for(var i=0,n=j.length;i<n;i++){f=j[i].match(ba);g=j[i].match(U);if(f){j[i]=j[i].replace(ba,"");""!==j[i]&&(a=a[j[i]]);g=[];j.splice(0,i+1);j=j.join(".");if(h.isArray(a)){i=0;for(n=a.length;i<n;i++)g.push(c(a[i],b,j))}a=f[0].substring(1,f[0].length-1);a=""===a?g:g.join(a);break}else if(g){j[i]=j[i].replace(U,"");a=a[j[i]]();continue}if(null===a||a[j[i]]===k)return k;a=a[j[i]]}}return a};return function(b,e){return c(b,e,a)}}return function(b){return b[a]}}function R(a){if(h.isPlainObject(a))return R(a._);
if(null===a)return function(){};if("function"===typeof a)return function(b,d,e){a(b,"set",d,e)};if("string"===typeof a&&(-1!==a.indexOf(".")||-1!==a.indexOf("[")||-1!==a.indexOf("("))){var b=function(a,d,e){var e=Ia(e),f;f=e[e.length-1];for(var g,j,i=0,n=e.length-1;i<n;i++){g=e[i].match(ba);j=e[i].match(U);if(g){e[i]=e[i].replace(ba,"");a[e[i]]=[];f=e.slice();f.splice(0,i+1);g=f.join(".");if(h.isArray(d)){j=0;for(n=d.length;j<n;j++)f={},b(f,d[j],g),a[e[i]].push(f)}else a[e[i]]=d;return}j&&(e[i]=e[i].replace(U,
""),a=a[e[i]](d));if(null===a[e[i]]||a[e[i]]===k)a[e[i]]={};a=a[e[i]]}if(f.match(U))a[f.replace(U,"")](d);else a[f.replace(ba,"")]=d};return function(c,d){return b(c,d,a)}}return function(b,d){b[a]=d}}function Ja(a){return D(a.aoData,"_aData")}function na(a){a.aoData.length=0;a.aiDisplayMaster.length=0;a.aiDisplay.length=0;a.aIds={}}function oa(a,b,c){for(var d=-1,e=0,f=a.length;e<f;e++)a[e]==b?d=e:a[e]>b&&a[e]--; -1!=d&&c===k&&a.splice(d,1)}function ca(a,b,c,d){var e=a.aoData[b],f,g=function(c,d){for(;c.childNodes.length;)c.removeChild(c.firstChild);
c.innerHTML=B(a,b,d,"display")};if("dom"===c||(!c||"auto"===c)&&"dom"===e.src)e._aData=Ha(a,e,d,d===k?k:e._aData).data;else{var j=e.anCells;if(j)if(d!==k)g(j[d],d);else{c=0;for(f=j.length;c<f;c++)g(j[c],c)}}e._aSortData=null;e._aFilterData=null;g=a.aoColumns;if(d!==k)g[d].sType=null;else{c=0;for(f=g.length;c<f;c++)g[c].sType=null;Ka(a,e)}}function Ha(a,b,c,d){var e=[],f=b.firstChild,g,j,i=0,n,l=a.aoColumns,q=a._rowReadObject,d=d!==k?d:q?{}:[],t=function(a,b){if("string"===typeof a){var c=a.indexOf("@");
-1!==c&&(c=a.substring(c+1),R(a)(d,b.getAttribute(c)))}},m=function(a){if(c===k||c===i)j=l[i],n=h.trim(a.innerHTML),j&&j._bAttrSrc?(R(j.mData._)(d,n),t(j.mData.sort,a),t(j.mData.type,a),t(j.mData.filter,a)):q?(j._setter||(j._setter=R(j.mData)),j._setter(d,n)):d[i]=n;i++};if(f)for(;f;){g=f.nodeName.toUpperCase();if("TD"==g||"TH"==g)m(f),e.push(f);f=f.nextSibling}else{e=b.anCells;f=0;for(g=e.length;f<g;f++)m(e[f])}if(b=b.firstChild?b:b.nTr)(b=b.getAttribute("id"))&&R(a.rowId)(d,b);return{data:d,cells:e}}
function Ga(a,b,c,d){var e=a.aoData[b],f=e._aData,g=[],j,i,n,l,q;if(null===e.nTr){j=c||G.createElement("tr");e.nTr=j;e.anCells=g;j._DT_RowIndex=b;Ka(a,e);l=0;for(q=a.aoColumns.length;l<q;l++){n=a.aoColumns[l];i=c?d[l]:G.createElement(n.sCellType);i._DT_CellIndex={row:b,column:l};g.push(i);if((!c||n.mRender||n.mData!==l)&&(!h.isPlainObject(n.mData)||n.mData._!==l+".display"))i.innerHTML=B(a,b,l,"display");n.sClass&&(i.className+=" "+n.sClass);n.bVisible&&!c?j.appendChild(i):!n.bVisible&&c&&i.parentNode.removeChild(i);
n.fnCreatedCell&&n.fnCreatedCell.call(a.oInstance,i,B(a,b,l),f,b,l)}r(a,"aoRowCreatedCallback",null,[j,f,b])}e.nTr.setAttribute("role","row")}function Ka(a,b){var c=b.nTr,d=b._aData;if(c){var e=a.rowIdFn(d);e&&(c.id=e);d.DT_RowClass&&(e=d.DT_RowClass.split(" "),b.__rowc=b.__rowc?qa(b.__rowc.concat(e)):e,h(c).removeClass(b.__rowc.join(" ")).addClass(d.DT_RowClass));d.DT_RowAttr&&h(c).attr(d.DT_RowAttr);d.DT_RowData&&h(c).data(d.DT_RowData)}}function jb(a){var b,c,d,e,f,g=a.nTHead,j=a.nTFoot,i=0===
h("th, td",g).length,n=a.oClasses,l=a.aoColumns;i&&(e=h("<tr/>").appendTo(g));b=0;for(c=l.length;b<c;b++)f=l[b],d=h(f.nTh).addClass(f.sClass),i&&d.appendTo(e),a.oFeatures.bSort&&(d.addClass(f.sSortingClass),!1!==f.bSortable&&(d.attr("tabindex",a.iTabIndex).attr("aria-controls",a.sTableId),La(a,f.nTh,b))),f.sTitle!=d[0].innerHTML&&d.html(f.sTitle),Ma(a,"header")(a,d,f,n);i&&da(a.aoHeader,g);h(g).find(">tr").attr("role","row");h(g).find(">tr>th, >tr>td").addClass(n.sHeaderTH);h(j).find(">tr>th, >tr>td").addClass(n.sFooterTH);
if(null!==j){a=a.aoFooter[0];b=0;for(c=a.length;b<c;b++)f=l[b],f.nTf=a[b].cell,f.sClass&&h(f.nTf).addClass(f.sClass)}}function ea(a,b,c){var d,e,f,g=[],j=[],i=a.aoColumns.length,n;if(b){c===k&&(c=!1);d=0;for(e=b.length;d<e;d++){g[d]=b[d].slice();g[d].nTr=b[d].nTr;for(f=i-1;0<=f;f--)!a.aoColumns[f].bVisible&&!c&&g[d].splice(f,1);j.push([])}d=0;for(e=g.length;d<e;d++){if(a=g[d].nTr)for(;f=a.firstChild;)a.removeChild(f);f=0;for(b=g[d].length;f<b;f++)if(n=i=1,j[d][f]===k){a.appendChild(g[d][f].cell);
for(j[d][f]=1;g[d+i]!==k&&g[d][f].cell==g[d+i][f].cell;)j[d+i][f]=1,i++;for(;g[d][f+n]!==k&&g[d][f].cell==g[d][f+n].cell;){for(c=0;c<i;c++)j[d+c][f+n]=1;n++}h(g[d][f].cell).attr("rowspan",i).attr("colspan",n)}}}}function N(a){var b=r(a,"aoPreDrawCallback","preDraw",[a]);if(-1!==h.inArray(!1,b))C(a,!1);else{var b=[],c=0,d=a.asStripeClasses,e=d.length,f=a.oLanguage,g=a.iInitDisplayStart,j="ssp"==y(a),i=a.aiDisplay;a.bDrawing=!0;g!==k&&-1!==g&&(a._iDisplayStart=j?g:g>=a.fnRecordsDisplay()?0:g,a.iInitDisplayStart=
-1);var g=a._iDisplayStart,n=a.fnDisplayEnd();if(a.bDeferLoading)a.bDeferLoading=!1,a.iDraw++,C(a,!1);else if(j){if(!a.bDestroying&&!kb(a))return}else a.iDraw++;if(0!==i.length){f=j?a.aoData.length:n;for(j=j?0:g;j<f;j++){var l=i[j],q=a.aoData[l];null===q.nTr&&Ga(a,l);l=q.nTr;if(0!==e){var t=d[c%e];q._sRowStripe!=t&&(h(l).removeClass(q._sRowStripe).addClass(t),q._sRowStripe=t)}r(a,"aoRowCallback",null,[l,q._aData,c,j]);b.push(l);c++}}else c=f.sZeroRecords,1==a.iDraw&&"ajax"==y(a)?c=f.sLoadingRecords:
f.sEmptyTable&&0===a.fnRecordsTotal()&&(c=f.sEmptyTable),b[0]=h("<tr/>",{"class":e?d[0]:""}).append(h("<td />",{valign:"top",colSpan:aa(a),"class":a.oClasses.sRowEmpty}).html(c))[0];r(a,"aoHeaderCallback","header",[h(a.nTHead).children("tr")[0],Ja(a),g,n,i]);r(a,"aoFooterCallback","footer",[h(a.nTFoot).children("tr")[0],Ja(a),g,n,i]);d=h(a.nTBody);d.children().detach();d.append(h(b));r(a,"aoDrawCallback","draw",[a]);a.bSorted=!1;a.bFiltered=!1;a.bDrawing=!1}}function S(a,b){var c=a.oFeatures,d=c.bFilter;
c.bSort&&lb(a);d?fa(a,a.oPreviousSearch):a.aiDisplay=a.aiDisplayMaster.slice();!0!==b&&(a._iDisplayStart=0);a._drawHold=b;N(a);a._drawHold=!1}function mb(a){var b=a.oClasses,c=h(a.nTable),c=h("<div/>").insertBefore(c),d=a.oFeatures,e=h("<div/>",{id:a.sTableId+"_wrapper","class":b.sWrapper+(a.nTFoot?"":" "+b.sNoFooter)});a.nHolding=c[0];a.nTableWrapper=e[0];a.nTableReinsertBefore=a.nTable.nextSibling;for(var f=a.sDom.split(""),g,j,i,n,l,q,k=0;k<f.length;k++){g=null;j=f[k];if("<"==j){i=h("<div/>")[0];
n=f[k+1];if("'"==n||'"'==n){l="";for(q=2;f[k+q]!=n;)l+=f[k+q],q++;"H"==l?l=b.sJUIHeader:"F"==l&&(l=b.sJUIFooter);-1!=l.indexOf(".")?(n=l.split("."),i.id=n[0].substr(1,n[0].length-1),i.className=n[1]):"#"==l.charAt(0)?i.id=l.substr(1,l.length-1):i.className=l;k+=q}e.append(i);e=h(i)}else if(">"==j)e=e.parent();else if("l"==j&&d.bPaginate&&d.bLengthChange)g=nb(a);else if("f"==j&&d.bFilter)g=ob(a);else if("r"==j&&d.bProcessing)g=pb(a);else if("t"==j)g=qb(a);else if("i"==j&&d.bInfo)g=rb(a);else if("p"==
j&&d.bPaginate)g=sb(a);else if(0!==m.ext.feature.length){i=m.ext.feature;q=0;for(n=i.length;q<n;q++)if(j==i[q].cFeature){g=i[q].fnInit(a);break}}g&&(i=a.aanFeatures,i[j]||(i[j]=[]),i[j].push(g),e.append(g))}c.replaceWith(e);a.nHolding=null}function da(a,b){var c=h(b).children("tr"),d,e,f,g,j,i,n,l,q,k;a.splice(0,a.length);f=0;for(i=c.length;f<i;f++)a.push([]);f=0;for(i=c.length;f<i;f++){d=c[f];for(e=d.firstChild;e;){if("TD"==e.nodeName.toUpperCase()||"TH"==e.nodeName.toUpperCase()){l=1*e.getAttribute("colspan");
q=1*e.getAttribute("rowspan");l=!l||0===l||1===l?1:l;q=!q||0===q||1===q?1:q;g=0;for(j=a[f];j[g];)g++;n=g;k=1===l?!0:!1;for(j=0;j<l;j++)for(g=0;g<q;g++)a[f+g][n+j]={cell:e,unique:k},a[f+g].nTr=d}e=e.nextSibling}}}function ra(a,b,c){var d=[];c||(c=a.aoHeader,b&&(c=[],da(c,b)));for(var b=0,e=c.length;b<e;b++)for(var f=0,g=c[b].length;f<g;f++)if(c[b][f].unique&&(!d[f]||!a.bSortCellsTop))d[f]=c[b][f].cell;return d}function sa(a,b,c){r(a,"aoServerParams","serverParams",[b]);if(b&&h.isArray(b)){var d={},
e=/(.*?)\[\]$/;h.each(b,function(a,b){var c=b.name.match(e);c?(c=c[0],d[c]||(d[c]=[]),d[c].push(b.value)):d[b.name]=b.value});b=d}var f,g=a.ajax,j=a.oInstance,i=function(b){r(a,null,"xhr",[a,b,a.jqXHR]);c(b)};if(h.isPlainObject(g)&&g.data){f=g.data;var n=h.isFunction(f)?f(b,a):f,b=h.isFunction(f)&&n?n:h.extend(!0,b,n);delete g.data}n={data:b,success:function(b){var c=b.error||b.sError;c&&J(a,0,c);a.json=b;i(b)},dataType:"json",cache:!1,type:a.sServerMethod,error:function(b,c){var d=r(a,null,"xhr",
[a,null,a.jqXHR]);-1===h.inArray(!0,d)&&("parsererror"==c?J(a,0,"Invalid JSON response",1):4===b.readyState&&J(a,0,"Ajax error",7));C(a,!1)}};a.oAjaxData=b;r(a,null,"preXhr",[a,b]);a.fnServerData?a.fnServerData.call(j,a.sAjaxSource,h.map(b,function(a,b){return{name:b,value:a}}),i,a):a.sAjaxSource||"string"===typeof g?a.jqXHR=h.ajax(h.extend(n,{url:g||a.sAjaxSource})):h.isFunction(g)?a.jqXHR=g.call(j,b,i,a):(a.jqXHR=h.ajax(h.extend(n,g)),g.data=f)}function kb(a){return a.bAjaxDataGet?(a.iDraw++,C(a,
!0),sa(a,tb(a),function(b){ub(a,b)}),!1):!0}function tb(a){var b=a.aoColumns,c=b.length,d=a.oFeatures,e=a.oPreviousSearch,f=a.aoPreSearchCols,g,j=[],i,n,l,k=V(a);g=a._iDisplayStart;i=!1!==d.bPaginate?a._iDisplayLength:-1;var t=function(a,b){j.push({name:a,value:b})};t("sEcho",a.iDraw);t("iColumns",c);t("sColumns",D(b,"sName").join(","));t("iDisplayStart",g);t("iDisplayLength",i);var pa={draw:a.iDraw,columns:[],order:[],start:g,length:i,search:{value:e.sSearch,regex:e.bRegex}};for(g=0;g<c;g++)n=b[g],
l=f[g],i="function"==typeof n.mData?"function":n.mData,pa.columns.push({data:i,name:n.sName,searchable:n.bSearchable,orderable:n.bSortable,search:{value:l.sSearch,regex:l.bRegex}}),t("mDataProp_"+g,i),d.bFilter&&(t("sSearch_"+g,l.sSearch),t("bRegex_"+g,l.bRegex),t("bSearchable_"+g,n.bSearchable)),d.bSort&&t("bSortable_"+g,n.bSortable);d.bFilter&&(t("sSearch",e.sSearch),t("bRegex",e.bRegex));d.bSort&&(h.each(k,function(a,b){pa.order.push({column:b.col,dir:b.dir});t("iSortCol_"+a,b.col);t("sSortDir_"+
a,b.dir)}),t("iSortingCols",k.length));b=m.ext.legacy.ajax;return null===b?a.sAjaxSource?j:pa:b?j:pa}function ub(a,b){var c=ta(a,b),d=b.sEcho!==k?b.sEcho:b.draw,e=b.iTotalRecords!==k?b.iTotalRecords:b.recordsTotal,f=b.iTotalDisplayRecords!==k?b.iTotalDisplayRecords:b.recordsFiltered;if(d){if(1*d<a.iDraw)return;a.iDraw=1*d}na(a);a._iRecordsTotal=parseInt(e,10);a._iRecordsDisplay=parseInt(f,10);d=0;for(e=c.length;d<e;d++)M(a,c[d]);a.aiDisplay=a.aiDisplayMaster.slice();a.bAjaxDataGet=!1;N(a);a._bInitComplete||
ua(a,b);a.bAjaxDataGet=!0;C(a,!1)}function ta(a,b){var c=h.isPlainObject(a.ajax)&&a.ajax.dataSrc!==k?a.ajax.dataSrc:a.sAjaxDataProp;return"data"===c?b.aaData||b[c]:""!==c?Q(c)(b):b}function ob(a){var b=a.oClasses,c=a.sTableId,d=a.oLanguage,e=a.oPreviousSearch,f=a.aanFeatures,g='<input type="search" class="'+b.sFilterInput+'"/>',j=d.sSearch,j=j.match(/_INPUT_/)?j.replace("_INPUT_",g):j+g,b=h("<div/>",{id:!f.f?c+"_filter":null,"class":b.sFilter}).append(h("<label/>").append(j)),f=function(){var b=!this.value?
"":this.value;b!=e.sSearch&&(fa(a,{sSearch:b,bRegex:e.bRegex,bSmart:e.bSmart,bCaseInsensitive:e.bCaseInsensitive}),a._iDisplayStart=0,N(a))},g=null!==a.searchDelay?a.searchDelay:"ssp"===y(a)?400:0,i=h("input",b).val(e.sSearch).attr("placeholder",d.sSearchPlaceholder).on("keyup.DT search.DT input.DT paste.DT cut.DT",g?Na(f,g):f).on("keypress.DT",function(a){if(13==a.keyCode)return!1}).attr("aria-controls",c);h(a.nTable).on("search.dt.DT",function(b,c){if(a===c)try{i[0]!==G.activeElement&&i.val(e.sSearch)}catch(d){}});
return b[0]}function fa(a,b,c){var d=a.oPreviousSearch,e=a.aoPreSearchCols,f=function(a){d.sSearch=a.sSearch;d.bRegex=a.bRegex;d.bSmart=a.bSmart;d.bCaseInsensitive=a.bCaseInsensitive};Fa(a);if("ssp"!=y(a)){vb(a,b.sSearch,c,b.bEscapeRegex!==k?!b.bEscapeRegex:b.bRegex,b.bSmart,b.bCaseInsensitive);f(b);for(b=0;b<e.length;b++)wb(a,e[b].sSearch,b,e[b].bEscapeRegex!==k?!e[b].bEscapeRegex:e[b].bRegex,e[b].bSmart,e[b].bCaseInsensitive);xb(a)}else f(b);a.bFiltered=!0;r(a,null,"search",[a])}function xb(a){for(var b=
m.ext.search,c=a.aiDisplay,d,e,f=0,g=b.length;f<g;f++){for(var j=[],i=0,n=c.length;i<n;i++)e=c[i],d=a.aoData[e],b[f](a,d._aFilterData,e,d._aData,i)&&j.push(e);c.length=0;h.merge(c,j)}}function wb(a,b,c,d,e,f){if(""!==b){for(var g=[],j=a.aiDisplay,d=Oa(b,d,e,f),e=0;e<j.length;e++)b=a.aoData[j[e]]._aFilterData[c],d.test(b)&&g.push(j[e]);a.aiDisplay=g}}function vb(a,b,c,d,e,f){var d=Oa(b,d,e,f),f=a.oPreviousSearch.sSearch,g=a.aiDisplayMaster,j,e=[];0!==m.ext.search.length&&(c=!0);j=yb(a);if(0>=b.length)a.aiDisplay=
g.slice();else{if(j||c||f.length>b.length||0!==b.indexOf(f)||a.bSorted)a.aiDisplay=g.slice();b=a.aiDisplay;for(c=0;c<b.length;c++)d.test(a.aoData[b[c]]._sFilterRow)&&e.push(b[c]);a.aiDisplay=e}}function Oa(a,b,c,d){a=b?a:Pa(a);c&&(a="^(?=.*?"+h.map(a.match(/"[^"]+"|[^ ]+/g)||[""],function(a){if('"'===a.charAt(0))var b=a.match(/^"(.*)"$/),a=b?b[1]:a;return a.replace('"',"")}).join(")(?=.*?")+").*$");return RegExp(a,d?"i":"")}function yb(a){var b=a.aoColumns,c,d,e,f,g,j,i,h,l=m.ext.type.search;c=!1;
d=0;for(f=a.aoData.length;d<f;d++)if(h=a.aoData[d],!h._aFilterData){j=[];e=0;for(g=b.length;e<g;e++)c=b[e],c.bSearchable?(i=B(a,d,e,"filter"),l[c.sType]&&(i=l[c.sType](i)),null===i&&(i=""),"string"!==typeof i&&i.toString&&(i=i.toString())):i="",i.indexOf&&-1!==i.indexOf("&")&&(va.innerHTML=i,i=Wb?va.textContent:va.innerText),i.replace&&(i=i.replace(/[\r\n]/g,"")),j.push(i);h._aFilterData=j;h._sFilterRow=j.join(" ");c=!0}return c}function zb(a){return{search:a.sSearch,smart:a.bSmart,regex:a.bRegex,
caseInsensitive:a.bCaseInsensitive}}function Ab(a){return{sSearch:a.search,bSmart:a.smart,bRegex:a.regex,bCaseInsensitive:a.caseInsensitive}}function rb(a){var b=a.sTableId,c=a.aanFeatures.i,d=h("<div/>",{"class":a.oClasses.sInfo,id:!c?b+"_info":null});c||(a.aoDrawCallback.push({fn:Bb,sName:"information"}),d.attr("role","status").attr("aria-live","polite"),h(a.nTable).attr("aria-describedby",b+"_info"));return d[0]}function Bb(a){var b=a.aanFeatures.i;if(0!==b.length){var c=a.oLanguage,d=a._iDisplayStart+
1,e=a.fnDisplayEnd(),f=a.fnRecordsTotal(),g=a.fnRecordsDisplay(),j=g?c.sInfo:c.sInfoEmpty;g!==f&&(j+=" "+c.sInfoFiltered);j+=c.sInfoPostFix;j=Cb(a,j);c=c.fnInfoCallback;null!==c&&(j=c.call(a.oInstance,a,d,e,f,g,j));h(b).html(j)}}function Cb(a,b){var c=a.fnFormatNumber,d=a._iDisplayStart+1,e=a._iDisplayLength,f=a.fnRecordsDisplay(),g=-1===e;return b.replace(/_START_/g,c.call(a,d)).replace(/_END_/g,c.call(a,a.fnDisplayEnd())).replace(/_MAX_/g,c.call(a,a.fnRecordsTotal())).replace(/_TOTAL_/g,c.call(a,
f)).replace(/_PAGE_/g,c.call(a,g?1:Math.ceil(d/e))).replace(/_PAGES_/g,c.call(a,g?1:Math.ceil(f/e)))}function ga(a){var b,c,d=a.iInitDisplayStart,e=a.aoColumns,f;c=a.oFeatures;var g=a.bDeferLoading;if(a.bInitialised){mb(a);jb(a);ea(a,a.aoHeader);ea(a,a.aoFooter);C(a,!0);c.bAutoWidth&&Ea(a);b=0;for(c=e.length;b<c;b++)f=e[b],f.sWidth&&(f.nTh.style.width=v(f.sWidth));r(a,null,"preInit",[a]);S(a);e=y(a);if("ssp"!=e||g)"ajax"==e?sa(a,[],function(c){var f=ta(a,c);for(b=0;b<f.length;b++)M(a,f[b]);a.iInitDisplayStart=
d;S(a);C(a,!1);ua(a,c)},a):(C(a,!1),ua(a))}else setTimeout(function(){ga(a)},200)}function ua(a,b){a._bInitComplete=!0;(b||a.oInit.aaData)&&Y(a);r(a,null,"plugin-init",[a,b]);r(a,"aoInitComplete","init",[a,b])}function Qa(a,b){var c=parseInt(b,10);a._iDisplayLength=c;Ra(a);r(a,null,"length",[a,c])}function nb(a){for(var b=a.oClasses,c=a.sTableId,d=a.aLengthMenu,e=h.isArray(d[0]),f=e?d[0]:d,d=e?d[1]:d,e=h("<select/>",{name:c+"_length","aria-controls":c,"class":b.sLengthSelect}),g=0,j=f.length;g<j;g++)e[0][g]=
new Option("number"===typeof d[g]?a.fnFormatNumber(d[g]):d[g],f[g]);var i=h("<div><label/></div>").addClass(b.sLength);a.aanFeatures.l||(i[0].id=c+"_length");i.children().append(a.oLanguage.sLengthMenu.replace("_MENU_",e[0].outerHTML));h("select",i).val(a._iDisplayLength).on("change.DT",function(){Qa(a,h(this).val());N(a)});h(a.nTable).on("length.dt.DT",function(b,c,d){a===c&&h("select",i).val(d)});return i[0]}function sb(a){var b=a.sPaginationType,c=m.ext.pager[b],d="function"===typeof c,e=function(a){N(a)},
b=h("<div/>").addClass(a.oClasses.sPaging+b)[0],f=a.aanFeatures;d||c.fnInit(a,b,e);f.p||(b.id=a.sTableId+"_paginate",a.aoDrawCallback.push({fn:function(a){if(d){var b=a._iDisplayStart,i=a._iDisplayLength,h=a.fnRecordsDisplay(),l=-1===i,b=l?0:Math.ceil(b/i),i=l?1:Math.ceil(h/i),h=c(b,i),k,l=0;for(k=f.p.length;l<k;l++)Ma(a,"pageButton")(a,f.p[l],l,h,b,i)}else c.fnUpdate(a,e)},sName:"pagination"}));return b}function Sa(a,b,c){var d=a._iDisplayStart,e=a._iDisplayLength,f=a.fnRecordsDisplay();0===f||-1===
e?d=0:"number"===typeof b?(d=b*e,d>f&&(d=0)):"first"==b?d=0:"previous"==b?(d=0<=e?d-e:0,0>d&&(d=0)):"next"==b?d+e<f&&(d+=e):"last"==b?d=Math.floor((f-1)/e)*e:J(a,0,"Unknown paging action: "+b,5);b=a._iDisplayStart!==d;a._iDisplayStart=d;b&&(r(a,null,"page",[a]),c&&N(a));return b}function pb(a){return h("<div/>",{id:!a.aanFeatures.r?a.sTableId+"_processing":null,"class":a.oClasses.sProcessing}).html(a.oLanguage.sProcessing).insertBefore(a.nTable)[0]}function C(a,b){a.oFeatures.bProcessing&&h(a.aanFeatures.r).css("display",
b?"block":"none");r(a,null,"processing",[a,b])}function qb(a){var b=h(a.nTable);b.attr("role","grid");var c=a.oScroll;if(""===c.sX&&""===c.sY)return a.nTable;var d=c.sX,e=c.sY,f=a.oClasses,g=b.children("caption"),j=g.length?g[0]._captionSide:null,i=h(b[0].cloneNode(!1)),n=h(b[0].cloneNode(!1)),l=b.children("tfoot");l.length||(l=null);i=h("<div/>",{"class":f.sScrollWrapper}).append(h("<div/>",{"class":f.sScrollHead}).css({overflow:"hidden",position:"relative",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",
{"class":f.sScrollHeadInner}).css({"box-sizing":"content-box",width:c.sXInner||"100%"}).append(i.removeAttr("id").css("margin-left",0).append("top"===j?g:null).append(b.children("thead"))))).append(h("<div/>",{"class":f.sScrollBody}).css({position:"relative",overflow:"auto",width:!d?null:v(d)}).append(b));l&&i.append(h("<div/>",{"class":f.sScrollFoot}).css({overflow:"hidden",border:0,width:d?!d?null:v(d):"100%"}).append(h("<div/>",{"class":f.sScrollFootInner}).append(n.removeAttr("id").css("margin-left",
0).append("bottom"===j?g:null).append(b.children("tfoot")))));var b=i.children(),k=b[0],f=b[1],t=l?b[2]:null;if(d)h(f).on("scroll.DT",function(){var a=this.scrollLeft;k.scrollLeft=a;l&&(t.scrollLeft=a)});h(f).css(e&&c.bCollapse?"max-height":"height",e);a.nScrollHead=k;a.nScrollBody=f;a.nScrollFoot=t;a.aoDrawCallback.push({fn:ka,sName:"scrolling"});return i[0]}function ka(a){var b=a.oScroll,c=b.sX,d=b.sXInner,e=b.sY,b=b.iBarWidth,f=h(a.nScrollHead),g=f[0].style,j=f.children("div"),i=j[0].style,n=j.children("table"),
j=a.nScrollBody,l=h(j),q=j.style,t=h(a.nScrollFoot).children("div"),m=t.children("table"),o=h(a.nTHead),p=h(a.nTable),s=p[0],r=s.style,u=a.nTFoot?h(a.nTFoot):null,x=a.oBrowser,T=x.bScrollOversize,Xb=D(a.aoColumns,"nTh"),O,K,P,w,Ta=[],y=[],z=[],A=[],B,C=function(a){a=a.style;a.paddingTop="0";a.paddingBottom="0";a.borderTopWidth="0";a.borderBottomWidth="0";a.height=0};K=j.scrollHeight>j.clientHeight;if(a.scrollBarVis!==K&&a.scrollBarVis!==k)a.scrollBarVis=K,Y(a);else{a.scrollBarVis=K;p.children("thead, tfoot").remove();
u&&(P=u.clone().prependTo(p),O=u.find("tr"),P=P.find("tr"));w=o.clone().prependTo(p);o=o.find("tr");K=w.find("tr");w.find("th, td").removeAttr("tabindex");c||(q.width="100%",f[0].style.width="100%");h.each(ra(a,w),function(b,c){B=Z(a,b);c.style.width=a.aoColumns[B].sWidth});u&&H(function(a){a.style.width=""},P);f=p.outerWidth();if(""===c){r.width="100%";if(T&&(p.find("tbody").height()>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(p.outerWidth()-b);f=p.outerWidth()}else""!==d&&(r.width=
v(d),f=p.outerWidth());H(C,K);H(function(a){z.push(a.innerHTML);Ta.push(v(h(a).css("width")))},K);H(function(a,b){if(h.inArray(a,Xb)!==-1)a.style.width=Ta[b]},o);h(K).height(0);u&&(H(C,P),H(function(a){A.push(a.innerHTML);y.push(v(h(a).css("width")))},P),H(function(a,b){a.style.width=y[b]},O),h(P).height(0));H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+z[b]+"</div>";a.style.width=Ta[b]},K);u&&H(function(a,b){a.innerHTML='<div class="dataTables_sizing" style="height:0;overflow:hidden;">'+
A[b]+"</div>";a.style.width=y[b]},P);if(p.outerWidth()<f){O=j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")?f+b:f;if(T&&(j.scrollHeight>j.offsetHeight||"scroll"==l.css("overflow-y")))r.width=v(O-b);(""===c||""!==d)&&J(a,1,"Possible column misalignment",6)}else O="100%";q.width=v(O);g.width=v(O);u&&(a.nScrollFoot.style.width=v(O));!e&&T&&(q.height=v(s.offsetHeight+b));c=p.outerWidth();n[0].style.width=v(c);i.width=v(c);d=p.height()>j.clientHeight||"scroll"==l.css("overflow-y");e="padding"+
(x.bScrollbarLeft?"Left":"Right");i[e]=d?b+"px":"0px";u&&(m[0].style.width=v(c),t[0].style.width=v(c),t[0].style[e]=d?b+"px":"0px");p.children("colgroup").insertBefore(p.children("thead"));l.scroll();if((a.bSorted||a.bFiltered)&&!a._drawHold)j.scrollTop=0}}function H(a,b,c){for(var d=0,e=0,f=b.length,g,j;e<f;){g=b[e].firstChild;for(j=c?c[e].firstChild:null;g;)1===g.nodeType&&(c?a(g,j,d):a(g,d),d++),g=g.nextSibling,j=c?j.nextSibling:null;e++}}function Ea(a){var b=a.nTable,c=a.aoColumns,d=a.oScroll,
e=d.sY,f=d.sX,g=d.sXInner,j=c.length,i=la(a,"bVisible"),n=h("th",a.nTHead),l=b.getAttribute("width"),k=b.parentNode,t=!1,m,o,p=a.oBrowser,d=p.bScrollOversize;(m=b.style.width)&&-1!==m.indexOf("%")&&(l=m);for(m=0;m<i.length;m++)o=c[i[m]],null!==o.sWidth&&(o.sWidth=Db(o.sWidthOrig,k),t=!0);if(d||!t&&!f&&!e&&j==aa(a)&&j==n.length)for(m=0;m<j;m++)i=Z(a,m),null!==i&&(c[i].sWidth=v(n.eq(m).width()));else{j=h(b).clone().css("visibility","hidden").removeAttr("id");j.find("tbody tr").remove();var s=h("<tr/>").appendTo(j.find("tbody"));
j.find("thead, tfoot").remove();j.append(h(a.nTHead).clone()).append(h(a.nTFoot).clone());j.find("tfoot th, tfoot td").css("width","");n=ra(a,j.find("thead")[0]);for(m=0;m<i.length;m++)o=c[i[m]],n[m].style.width=null!==o.sWidthOrig&&""!==o.sWidthOrig?v(o.sWidthOrig):"",o.sWidthOrig&&f&&h(n[m]).append(h("<div/>").css({width:o.sWidthOrig,margin:0,padding:0,border:0,height:1}));if(a.aoData.length)for(m=0;m<i.length;m++)t=i[m],o=c[t],h(Eb(a,t)).clone(!1).append(o.sContentPadding).appendTo(s);h("[name]",
j).removeAttr("name");o=h("<div/>").css(f||e?{position:"absolute",top:0,left:0,height:1,right:0,overflow:"hidden"}:{}).append(j).appendTo(k);f&&g?j.width(g):f?(j.css("width","auto"),j.removeAttr("width"),j.width()<k.clientWidth&&l&&j.width(k.clientWidth)):e?j.width(k.clientWidth):l&&j.width(l);for(m=e=0;m<i.length;m++)k=h(n[m]),g=k.outerWidth()-k.width(),k=p.bBounding?Math.ceil(n[m].getBoundingClientRect().width):k.outerWidth(),e+=k,c[i[m]].sWidth=v(k-g);b.style.width=v(e);o.remove()}l&&(b.style.width=
v(l));if((l||f)&&!a._reszEvt)b=function(){h(E).on("resize.DT-"+a.sInstance,Na(function(){Y(a)}))},d?setTimeout(b,1E3):b(),a._reszEvt=!0}function Db(a,b){if(!a)return 0;var c=h("<div/>").css("width",v(a)).appendTo(b||G.body),d=c[0].offsetWidth;c.remove();return d}function Eb(a,b){var c=Fb(a,b);if(0>c)return null;var d=a.aoData[c];return!d.nTr?h("<td/>").html(B(a,c,b,"display"))[0]:d.anCells[b]}function Fb(a,b){for(var c,d=-1,e=-1,f=0,g=a.aoData.length;f<g;f++)c=B(a,f,b,"display")+"",c=c.replace(Yb,
""),c=c.replace(/&nbsp;/g," "),c.length>d&&(d=c.length,e=f);return e}function v(a){return null===a?"0px":"number"==typeof a?0>a?"0px":a+"px":a.match(/\d$/)?a+"px":a}function V(a){var b,c,d=[],e=a.aoColumns,f,g,j,i;b=a.aaSortingFixed;c=h.isPlainObject(b);var n=[];f=function(a){a.length&&!h.isArray(a[0])?n.push(a):h.merge(n,a)};h.isArray(b)&&f(b);c&&b.pre&&f(b.pre);f(a.aaSorting);c&&b.post&&f(b.post);for(a=0;a<n.length;a++){i=n[a][0];f=e[i].aDataSort;b=0;for(c=f.length;b<c;b++)g=f[b],j=e[g].sType||
"string",n[a]._idx===k&&(n[a]._idx=h.inArray(n[a][1],e[g].asSorting)),d.push({src:i,col:g,dir:n[a][1],index:n[a]._idx,type:j,formatter:m.ext.type.order[j+"-pre"]})}return d}function lb(a){var b,c,d=[],e=m.ext.type.order,f=a.aoData,g=0,j,i=a.aiDisplayMaster,h;Fa(a);h=V(a);b=0;for(c=h.length;b<c;b++)j=h[b],j.formatter&&g++,Gb(a,j.col);if("ssp"!=y(a)&&0!==h.length){b=0;for(c=i.length;b<c;b++)d[i[b]]=b;g===h.length?i.sort(function(a,b){var c,e,g,j,i=h.length,k=f[a]._aSortData,m=f[b]._aSortData;for(g=
0;g<i;g++)if(j=h[g],c=k[j.col],e=m[j.col],c=c<e?-1:c>e?1:0,0!==c)return"asc"===j.dir?c:-c;c=d[a];e=d[b];return c<e?-1:c>e?1:0}):i.sort(function(a,b){var c,g,j,i,k=h.length,m=f[a]._aSortData,o=f[b]._aSortData;for(j=0;j<k;j++)if(i=h[j],c=m[i.col],g=o[i.col],i=e[i.type+"-"+i.dir]||e["string-"+i.dir],c=i(c,g),0!==c)return c;c=d[a];g=d[b];return c<g?-1:c>g?1:0})}a.bSorted=!0}function Hb(a){for(var b,c,d=a.aoColumns,e=V(a),a=a.oLanguage.oAria,f=0,g=d.length;f<g;f++){c=d[f];var j=c.asSorting;b=c.sTitle.replace(/<.*?>/g,
"");var i=c.nTh;i.removeAttribute("aria-sort");c.bSortable&&(0<e.length&&e[0].col==f?(i.setAttribute("aria-sort","asc"==e[0].dir?"ascending":"descending"),c=j[e[0].index+1]||j[0]):c=j[0],b+="asc"===c?a.sSortAscending:a.sSortDescending);i.setAttribute("aria-label",b)}}function Ua(a,b,c,d){var e=a.aaSorting,f=a.aoColumns[b].asSorting,g=function(a,b){var c=a._idx;c===k&&(c=h.inArray(a[1],f));return c+1<f.length?c+1:b?null:0};"number"===typeof e[0]&&(e=a.aaSorting=[e]);c&&a.oFeatures.bSortMulti?(c=h.inArray(b,
D(e,"0")),-1!==c?(b=g(e[c],!0),null===b&&1===e.length&&(b=0),null===b?e.splice(c,1):(e[c][1]=f[b],e[c]._idx=b)):(e.push([b,f[0],0]),e[e.length-1]._idx=0)):e.length&&e[0][0]==b?(b=g(e[0]),e.length=1,e[0][1]=f[b],e[0]._idx=b):(e.length=0,e.push([b,f[0]]),e[0]._idx=0);S(a);"function"==typeof d&&d(a)}function La(a,b,c,d){var e=a.aoColumns[c];Va(b,{},function(b){!1!==e.bSortable&&(a.oFeatures.bProcessing?(C(a,!0),setTimeout(function(){Ua(a,c,b.shiftKey,d);"ssp"!==y(a)&&C(a,!1)},0)):Ua(a,c,b.shiftKey,d))})}
function wa(a){var b=a.aLastSort,c=a.oClasses.sSortColumn,d=V(a),e=a.oFeatures,f,g;if(e.bSort&&e.bSortClasses){e=0;for(f=b.length;e<f;e++)g=b[e].src,h(D(a.aoData,"anCells",g)).removeClass(c+(2>e?e+1:3));e=0;for(f=d.length;e<f;e++)g=d[e].src,h(D(a.aoData,"anCells",g)).addClass(c+(2>e?e+1:3))}a.aLastSort=d}function Gb(a,b){var c=a.aoColumns[b],d=m.ext.order[c.sSortDataType],e;d&&(e=d.call(a.oInstance,a,b,$(a,b)));for(var f,g=m.ext.type.order[c.sType+"-pre"],j=0,i=a.aoData.length;j<i;j++)if(c=a.aoData[j],
c._aSortData||(c._aSortData=[]),!c._aSortData[b]||d)f=d?e[j]:B(a,j,b,"sort"),c._aSortData[b]=g?g(f):f}function xa(a){if(a.oFeatures.bStateSave&&!a.bDestroying){var b={time:+new Date,start:a._iDisplayStart,length:a._iDisplayLength,order:h.extend(!0,[],a.aaSorting),search:zb(a.oPreviousSearch),columns:h.map(a.aoColumns,function(b,d){return{visible:b.bVisible,search:zb(a.aoPreSearchCols[d])}})};r(a,"aoStateSaveParams","stateSaveParams",[a,b]);a.oSavedState=b;a.fnStateSaveCallback.call(a.oInstance,a,
b)}}function Ib(a,b,c){var d,e,f=a.aoColumns,b=function(b){if(b&&b.time){var g=r(a,"aoStateLoadParams","stateLoadParams",[a,b]);if(-1===h.inArray(!1,g)&&(g=a.iStateDuration,!(0<g&&b.time<+new Date-1E3*g)&&!(b.columns&&f.length!==b.columns.length))){a.oLoadedState=h.extend(!0,{},b);b.start!==k&&(a._iDisplayStart=b.start,a.iInitDisplayStart=b.start);b.length!==k&&(a._iDisplayLength=b.length);b.order!==k&&(a.aaSorting=[],h.each(b.order,function(b,c){a.aaSorting.push(c[0]>=f.length?[0,c[1]]:c)}));b.search!==
k&&h.extend(a.oPreviousSearch,Ab(b.search));if(b.columns){d=0;for(e=b.columns.length;d<e;d++)g=b.columns[d],g.visible!==k&&(f[d].bVisible=g.visible),g.search!==k&&h.extend(a.aoPreSearchCols[d],Ab(g.search))}r(a,"aoStateLoaded","stateLoaded",[a,b])}}c()};if(a.oFeatures.bStateSave){var g=a.fnStateLoadCallback.call(a.oInstance,a,b);g!==k&&b(g)}else c()}function ya(a){var b=m.settings,a=h.inArray(a,D(b,"nTable"));return-1!==a?b[a]:null}function J(a,b,c,d){c="DataTables warning: "+(a?"table id="+a.sTableId+
" - ":"")+c;d&&(c+=". For more information about this error, please see http://datatables.net/tn/"+d);if(b)E.console&&console.log&&console.log(c);else if(b=m.ext,b=b.sErrMode||b.errMode,a&&r(a,null,"error",[a,d,c]),"alert"==b)alert(c);else{if("throw"==b)throw Error(c);"function"==typeof b&&b(a,d,c)}}function F(a,b,c,d){h.isArray(c)?h.each(c,function(c,d){h.isArray(d)?F(a,b,d[0],d[1]):F(a,b,d)}):(d===k&&(d=c),b[c]!==k&&(a[d]=b[c]))}function Jb(a,b,c){var d,e;for(e in b)b.hasOwnProperty(e)&&(d=b[e],
h.isPlainObject(d)?(h.isPlainObject(a[e])||(a[e]={}),h.extend(!0,a[e],d)):a[e]=c&&"data"!==e&&"aaData"!==e&&h.isArray(d)?d.slice():d);return a}function Va(a,b,c){h(a).on("click.DT",b,function(b){a.blur();c(b)}).on("keypress.DT",b,function(a){13===a.which&&(a.preventDefault(),c(a))}).on("selectstart.DT",function(){return!1})}function z(a,b,c,d){c&&a[b].push({fn:c,sName:d})}function r(a,b,c,d){var e=[];b&&(e=h.map(a[b].slice().reverse(),function(b){return b.fn.apply(a.oInstance,d)}));null!==c&&(b=h.Event(c+
".dt"),h(a.nTable).trigger(b,d),e.push(b.result));return e}function Ra(a){var b=a._iDisplayStart,c=a.fnDisplayEnd(),d=a._iDisplayLength;b>=c&&(b=c-d);b-=b%d;if(-1===d||0>b)b=0;a._iDisplayStart=b}function Ma(a,b){var c=a.renderer,d=m.ext.renderer[b];return h.isPlainObject(c)&&c[b]?d[c[b]]||d._:"string"===typeof c?d[c]||d._:d._}function y(a){return a.oFeatures.bServerSide?"ssp":a.ajax||a.sAjaxSource?"ajax":"dom"}function ha(a,b){var c=[],c=Kb.numbers_length,d=Math.floor(c/2);b<=c?c=W(0,b):a<=d?(c=W(0,
c-2),c.push("ellipsis"),c.push(b-1)):(a>=b-1-d?c=W(b-(c-2),b):(c=W(a-d+2,a+d-1),c.push("ellipsis"),c.push(b-1)),c.splice(0,0,"ellipsis"),c.splice(0,0,0));c.DT_el="span";return c}function cb(a){h.each({num:function(b){return za(b,a)},"num-fmt":function(b){return za(b,a,Wa)},"html-num":function(b){return za(b,a,Aa)},"html-num-fmt":function(b){return za(b,a,Aa,Wa)}},function(b,c){x.type.order[b+a+"-pre"]=c;b.match(/^html\-/)&&(x.type.search[b+a]=x.type.search.html)})}function Lb(a){return function(){var b=
[ya(this[m.ext.iApiIndex])].concat(Array.prototype.slice.call(arguments));return m.ext.internal[a].apply(this,b)}}var m=function(a){this.$=function(a,b){return this.api(!0).$(a,b)};this._=function(a,b){return this.api(!0).rows(a,b).data()};this.api=function(a){return a?new s(ya(this[x.iApiIndex])):new s(this)};this.fnAddData=function(a,b){var c=this.api(!0),d=h.isArray(a)&&(h.isArray(a[0])||h.isPlainObject(a[0]))?c.rows.add(a):c.row.add(a);(b===k||b)&&c.draw();return d.flatten().toArray()};this.fnAdjustColumnSizing=
function(a){var b=this.api(!0).columns.adjust(),c=b.settings()[0],d=c.oScroll;a===k||a?b.draw(!1):(""!==d.sX||""!==d.sY)&&ka(c)};this.fnClearTable=function(a){var b=this.api(!0).clear();(a===k||a)&&b.draw()};this.fnClose=function(a){this.api(!0).row(a).child.hide()};this.fnDeleteRow=function(a,b,c){var d=this.api(!0),a=d.rows(a),e=a.settings()[0],h=e.aoData[a[0][0]];a.remove();b&&b.call(this,e,h);(c===k||c)&&d.draw();return h};this.fnDestroy=function(a){this.api(!0).destroy(a)};this.fnDraw=function(a){this.api(!0).draw(a)};
this.fnFilter=function(a,b,c,d,e,h){e=this.api(!0);null===b||b===k?e.search(a,c,d,h):e.column(b).search(a,c,d,h);e.draw()};this.fnGetData=function(a,b){var c=this.api(!0);if(a!==k){var d=a.nodeName?a.nodeName.toLowerCase():"";return b!==k||"td"==d||"th"==d?c.cell(a,b).data():c.row(a).data()||null}return c.data().toArray()};this.fnGetNodes=function(a){var b=this.api(!0);return a!==k?b.row(a).node():b.rows().nodes().flatten().toArray()};this.fnGetPosition=function(a){var b=this.api(!0),c=a.nodeName.toUpperCase();
return"TR"==c?b.row(a).index():"TD"==c||"TH"==c?(a=b.cell(a).index(),[a.row,a.columnVisible,a.column]):null};this.fnIsOpen=function(a){return this.api(!0).row(a).child.isShown()};this.fnOpen=function(a,b,c){return this.api(!0).row(a).child(b,c).show().child()[0]};this.fnPageChange=function(a,b){var c=this.api(!0).page(a);(b===k||b)&&c.draw(!1)};this.fnSetColumnVis=function(a,b,c){a=this.api(!0).column(a).visible(b);(c===k||c)&&a.columns.adjust().draw()};this.fnSettings=function(){return ya(this[x.iApiIndex])};
this.fnSort=function(a){this.api(!0).order(a).draw()};this.fnSortListener=function(a,b,c){this.api(!0).order.listener(a,b,c)};this.fnUpdate=function(a,b,c,d,e){var h=this.api(!0);c===k||null===c?h.row(b).data(a):h.cell(b,c).data(a);(e===k||e)&&h.columns.adjust();(d===k||d)&&h.draw();return 0};this.fnVersionCheck=x.fnVersionCheck;var b=this,c=a===k,d=this.length;c&&(a={});this.oApi=this.internal=x.internal;for(var e in m.ext.internal)e&&(this[e]=Lb(e));this.each(function(){var e={},g=1<d?Jb(e,a,!0):
a,j=0,i,e=this.getAttribute("id"),n=!1,l=m.defaults,q=h(this);if("table"!=this.nodeName.toLowerCase())J(null,0,"Non-table node initialisation ("+this.nodeName+")",2);else{db(l);eb(l.column);I(l,l,!0);I(l.column,l.column,!0);I(l,h.extend(g,q.data()));var t=m.settings,j=0;for(i=t.length;j<i;j++){var o=t[j];if(o.nTable==this||o.nTHead.parentNode==this||o.nTFoot&&o.nTFoot.parentNode==this){var s=g.bRetrieve!==k?g.bRetrieve:l.bRetrieve;if(c||s)return o.oInstance;if(g.bDestroy!==k?g.bDestroy:l.bDestroy){o.oInstance.fnDestroy();
break}else{J(o,0,"Cannot reinitialise DataTable",3);return}}if(o.sTableId==this.id){t.splice(j,1);break}}if(null===e||""===e)this.id=e="DataTables_Table_"+m.ext._unique++;var p=h.extend(!0,{},m.models.oSettings,{sDestroyWidth:q[0].style.width,sInstance:e,sTableId:e});p.nTable=this;p.oApi=b.internal;p.oInit=g;t.push(p);p.oInstance=1===b.length?b:q.dataTable();db(g);g.oLanguage&&Ca(g.oLanguage);g.aLengthMenu&&!g.iDisplayLength&&(g.iDisplayLength=h.isArray(g.aLengthMenu[0])?g.aLengthMenu[0][0]:g.aLengthMenu[0]);
g=Jb(h.extend(!0,{},l),g);F(p.oFeatures,g,"bPaginate bLengthChange bFilter bSort bSortMulti bInfo bProcessing bAutoWidth bSortClasses bServerSide bDeferRender".split(" "));F(p,g,["asStripeClasses","ajax","fnServerData","fnFormatNumber","sServerMethod","aaSorting","aaSortingFixed","aLengthMenu","sPaginationType","sAjaxSource","sAjaxDataProp","iStateDuration","sDom","bSortCellsTop","iTabIndex","fnStateLoadCallback","fnStateSaveCallback","renderer","searchDelay","rowId",["iCookieDuration","iStateDuration"],
["oSearch","oPreviousSearch"],["aoSearchCols","aoPreSearchCols"],["iDisplayLength","_iDisplayLength"]]);F(p.oScroll,g,[["sScrollX","sX"],["sScrollXInner","sXInner"],["sScrollY","sY"],["bScrollCollapse","bCollapse"]]);F(p.oLanguage,g,"fnInfoCallback");z(p,"aoDrawCallback",g.fnDrawCallback,"user");z(p,"aoServerParams",g.fnServerParams,"user");z(p,"aoStateSaveParams",g.fnStateSaveParams,"user");z(p,"aoStateLoadParams",g.fnStateLoadParams,"user");z(p,"aoStateLoaded",g.fnStateLoaded,"user");z(p,"aoRowCallback",
g.fnRowCallback,"user");z(p,"aoRowCreatedCallback",g.fnCreatedRow,"user");z(p,"aoHeaderCallback",g.fnHeaderCallback,"user");z(p,"aoFooterCallback",g.fnFooterCallback,"user");z(p,"aoInitComplete",g.fnInitComplete,"user");z(p,"aoPreDrawCallback",g.fnPreDrawCallback,"user");p.rowIdFn=Q(g.rowId);fb(p);var u=p.oClasses;h.extend(u,m.ext.classes,g.oClasses);q.addClass(u.sTable);p.iInitDisplayStart===k&&(p.iInitDisplayStart=g.iDisplayStart,p._iDisplayStart=g.iDisplayStart);null!==g.iDeferLoading&&(p.bDeferLoading=
!0,e=h.isArray(g.iDeferLoading),p._iRecordsDisplay=e?g.iDeferLoading[0]:g.iDeferLoading,p._iRecordsTotal=e?g.iDeferLoading[1]:g.iDeferLoading);var v=p.oLanguage;h.extend(!0,v,g.oLanguage);v.sUrl&&(h.ajax({dataType:"json",url:v.sUrl,success:function(a){Ca(a);I(l.oLanguage,a);h.extend(true,v,a);ga(p)},error:function(){ga(p)}}),n=!0);null===g.asStripeClasses&&(p.asStripeClasses=[u.sStripeOdd,u.sStripeEven]);var e=p.asStripeClasses,x=q.children("tbody").find("tr").eq(0);-1!==h.inArray(!0,h.map(e,function(a){return x.hasClass(a)}))&&
(h("tbody tr",this).removeClass(e.join(" ")),p.asDestroyStripes=e.slice());e=[];t=this.getElementsByTagName("thead");0!==t.length&&(da(p.aoHeader,t[0]),e=ra(p));if(null===g.aoColumns){t=[];j=0;for(i=e.length;j<i;j++)t.push(null)}else t=g.aoColumns;j=0;for(i=t.length;j<i;j++)Da(p,e?e[j]:null);hb(p,g.aoColumnDefs,t,function(a,b){ja(p,a,b)});if(x.length){var w=function(a,b){return a.getAttribute("data-"+b)!==null?b:null};h(x[0]).children("th, td").each(function(a,b){var c=p.aoColumns[a];if(c.mData===
a){var d=w(b,"sort")||w(b,"order"),e=w(b,"filter")||w(b,"search");if(d!==null||e!==null){c.mData={_:a+".display",sort:d!==null?a+".@data-"+d:k,type:d!==null?a+".@data-"+d:k,filter:e!==null?a+".@data-"+e:k};ja(p,a)}}})}var T=p.oFeatures,e=function(){if(g.aaSorting===k){var a=p.aaSorting;j=0;for(i=a.length;j<i;j++)a[j][1]=p.aoColumns[j].asSorting[0]}wa(p);T.bSort&&z(p,"aoDrawCallback",function(){if(p.bSorted){var a=V(p),b={};h.each(a,function(a,c){b[c.src]=c.dir});r(p,null,"order",[p,a,b]);Hb(p)}});
z(p,"aoDrawCallback",function(){(p.bSorted||y(p)==="ssp"||T.bDeferRender)&&wa(p)},"sc");var a=q.children("caption").each(function(){this._captionSide=h(this).css("caption-side")}),b=q.children("thead");b.length===0&&(b=h("<thead/>").appendTo(q));p.nTHead=b[0];b=q.children("tbody");b.length===0&&(b=h("<tbody/>").appendTo(q));p.nTBody=b[0];b=q.children("tfoot");if(b.length===0&&a.length>0&&(p.oScroll.sX!==""||p.oScroll.sY!==""))b=h("<tfoot/>").appendTo(q);if(b.length===0||b.children().length===0)q.addClass(u.sNoFooter);
else if(b.length>0){p.nTFoot=b[0];da(p.aoFooter,p.nTFoot)}if(g.aaData)for(j=0;j<g.aaData.length;j++)M(p,g.aaData[j]);else(p.bDeferLoading||y(p)=="dom")&&ma(p,h(p.nTBody).children("tr"));p.aiDisplay=p.aiDisplayMaster.slice();p.bInitialised=true;n===false&&ga(p)};g.bStateSave?(T.bStateSave=!0,z(p,"aoDrawCallback",xa,"state_save"),Ib(p,g,e)):e()}});b=null;return this},x,s,o,u,Xa={},Mb=/[\r\n]/g,Aa=/<.*?>/g,Zb=/^\d{2,4}[\.\/\-]\d{1,2}[\.\/\-]\d{1,2}([T ]{1}\d{1,2}[:\.]\d{2}([\.:]\d{2})?)?$/,$b=RegExp("(\\/|\\.|\\*|\\+|\\?|\\||\\(|\\)|\\[|\\]|\\{|\\}|\\\\|\\$|\\^|\\-)",
"g"),Wa=/[',$£€¥%\u2009\u202F\u20BD\u20a9\u20BArfk]/gi,L=function(a){return!a||!0===a||"-"===a?!0:!1},Nb=function(a){var b=parseInt(a,10);return!isNaN(b)&&isFinite(a)?b:null},Ob=function(a,b){Xa[b]||(Xa[b]=RegExp(Pa(b),"g"));return"string"===typeof a&&"."!==b?a.replace(/\./g,"").replace(Xa[b],"."):a},Ya=function(a,b,c){var d="string"===typeof a;if(L(a))return!0;b&&d&&(a=Ob(a,b));c&&d&&(a=a.replace(Wa,""));return!isNaN(parseFloat(a))&&isFinite(a)},Pb=function(a,b,c){return L(a)?!0:!(L(a)||"string"===
typeof a)?null:Ya(a.replace(Aa,""),b,c)?!0:null},D=function(a,b,c){var d=[],e=0,f=a.length;if(c!==k)for(;e<f;e++)a[e]&&a[e][b]&&d.push(a[e][b][c]);else for(;e<f;e++)a[e]&&d.push(a[e][b]);return d},ia=function(a,b,c,d){var e=[],f=0,g=b.length;if(d!==k)for(;f<g;f++)a[b[f]][c]&&e.push(a[b[f]][c][d]);else for(;f<g;f++)e.push(a[b[f]][c]);return e},W=function(a,b){var c=[],d;b===k?(b=0,d=a):(d=b,b=a);for(var e=b;e<d;e++)c.push(e);return c},Qb=function(a){for(var b=[],c=0,d=a.length;c<d;c++)a[c]&&b.push(a[c]);
return b},qa=function(a){var b;a:{if(!(2>a.length)){b=a.slice().sort();for(var c=b[0],d=1,e=b.length;d<e;d++){if(b[d]===c){b=!1;break a}c=b[d]}}b=!0}if(b)return a.slice();b=[];var e=a.length,f,g=0,d=0;a:for(;d<e;d++){c=a[d];for(f=0;f<g;f++)if(b[f]===c)continue a;b.push(c);g++}return b};m.util={throttle:function(a,b){var c=b!==k?b:200,d,e;return function(){var b=this,g=+new Date,j=arguments;d&&g<d+c?(clearTimeout(e),e=setTimeout(function(){d=k;a.apply(b,j)},c)):(d=g,a.apply(b,j))}},escapeRegex:function(a){return a.replace($b,
"\\$1")}};var A=function(a,b,c){a[b]!==k&&(a[c]=a[b])},ba=/\[.*?\]$/,U=/\(\)$/,Pa=m.util.escapeRegex,va=h("<div>")[0],Wb=va.textContent!==k,Yb=/<.*?>/g,Na=m.util.throttle,Rb=[],w=Array.prototype,ac=function(a){var b,c,d=m.settings,e=h.map(d,function(a){return a.nTable});if(a){if(a.nTable&&a.oApi)return[a];if(a.nodeName&&"table"===a.nodeName.toLowerCase())return b=h.inArray(a,e),-1!==b?[d[b]]:null;if(a&&"function"===typeof a.settings)return a.settings().toArray();"string"===typeof a?c=h(a):a instanceof
h&&(c=a)}else return[];if(c)return c.map(function(){b=h.inArray(this,e);return-1!==b?d[b]:null}).toArray()};s=function(a,b){if(!(this instanceof s))return new s(a,b);var c=[],d=function(a){(a=ac(a))&&(c=c.concat(a))};if(h.isArray(a))for(var e=0,f=a.length;e<f;e++)d(a[e]);else d(a);this.context=qa(c);b&&h.merge(this,b);this.selector={rows:null,cols:null,opts:null};s.extend(this,this,Rb)};m.Api=s;h.extend(s.prototype,{any:function(){return 0!==this.count()},concat:w.concat,context:[],count:function(){return this.flatten().length},
each:function(a){for(var b=0,c=this.length;b<c;b++)a.call(this,this[b],b,this);return this},eq:function(a){var b=this.context;return b.length>a?new s(b[a],this[a]):null},filter:function(a){var b=[];if(w.filter)b=w.filter.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)a.call(this,this[c],c,this)&&b.push(this[c]);return new s(this.context,b)},flatten:function(){var a=[];return new s(this.context,a.concat.apply(a,this.toArray()))},join:w.join,indexOf:w.indexOf||function(a,b){for(var c=b||0,
d=this.length;c<d;c++)if(this[c]===a)return c;return-1},iterator:function(a,b,c,d){var e=[],f,g,j,h,n,l=this.context,m,o,u=this.selector;"string"===typeof a&&(d=c,c=b,b=a,a=!1);g=0;for(j=l.length;g<j;g++){var r=new s(l[g]);if("table"===b)f=c.call(r,l[g],g),f!==k&&e.push(f);else if("columns"===b||"rows"===b)f=c.call(r,l[g],this[g],g),f!==k&&e.push(f);else if("column"===b||"column-rows"===b||"row"===b||"cell"===b){o=this[g];"column-rows"===b&&(m=Ba(l[g],u.opts));h=0;for(n=o.length;h<n;h++)f=o[h],f=
"cell"===b?c.call(r,l[g],f.row,f.column,g,h):c.call(r,l[g],f,g,h,m),f!==k&&e.push(f)}}return e.length||d?(a=new s(l,a?e.concat.apply([],e):e),b=a.selector,b.rows=u.rows,b.cols=u.cols,b.opts=u.opts,a):this},lastIndexOf:w.lastIndexOf||function(a,b){return this.indexOf.apply(this.toArray.reverse(),arguments)},length:0,map:function(a){var b=[];if(w.map)b=w.map.call(this,a,this);else for(var c=0,d=this.length;c<d;c++)b.push(a.call(this,this[c],c));return new s(this.context,b)},pluck:function(a){return this.map(function(b){return b[a]})},
pop:w.pop,push:w.push,reduce:w.reduce||function(a,b){return gb(this,a,b,0,this.length,1)},reduceRight:w.reduceRight||function(a,b){return gb(this,a,b,this.length-1,-1,-1)},reverse:w.reverse,selector:null,shift:w.shift,slice:function(){return new s(this.context,this)},sort:w.sort,splice:w.splice,toArray:function(){return w.slice.call(this)},to$:function(){return h(this)},toJQuery:function(){return h(this)},unique:function(){return new s(this.context,qa(this))},unshift:w.unshift});s.extend=function(a,
b,c){if(c.length&&b&&(b instanceof s||b.__dt_wrapper)){var d,e,f,g=function(a,b,c){return function(){var d=b.apply(a,arguments);s.extend(d,d,c.methodExt);return d}};d=0;for(e=c.length;d<e;d++)f=c[d],b[f.name]="function"===typeof f.val?g(a,f.val,f):h.isPlainObject(f.val)?{}:f.val,b[f.name].__dt_wrapper=!0,s.extend(a,b[f.name],f.propExt)}};s.register=o=function(a,b){if(h.isArray(a))for(var c=0,d=a.length;c<d;c++)s.register(a[c],b);else for(var e=a.split("."),f=Rb,g,j,c=0,d=e.length;c<d;c++){g=(j=-1!==
e[c].indexOf("()"))?e[c].replace("()",""):e[c];var i;a:{i=0;for(var n=f.length;i<n;i++)if(f[i].name===g){i=f[i];break a}i=null}i||(i={name:g,val:{},methodExt:[],propExt:[]},f.push(i));c===d-1?i.val=b:f=j?i.methodExt:i.propExt}};s.registerPlural=u=function(a,b,c){s.register(a,c);s.register(b,function(){var a=c.apply(this,arguments);return a===this?this:a instanceof s?a.length?h.isArray(a[0])?new s(a.context,a[0]):a[0]:k:a})};o("tables()",function(a){var b;if(a){b=s;var c=this.context;if("number"===
typeof a)a=[c[a]];else var d=h.map(c,function(a){return a.nTable}),a=h(d).filter(a).map(function(){var a=h.inArray(this,d);return c[a]}).toArray();b=new b(a)}else b=this;return b});o("table()",function(a){var a=this.tables(a),b=a.context;return b.length?new s(b[0]):a});u("tables().nodes()","table().node()",function(){return this.iterator("table",function(a){return a.nTable},1)});u("tables().body()","table().body()",function(){return this.iterator("table",function(a){return a.nTBody},1)});u("tables().header()",
"table().header()",function(){return this.iterator("table",function(a){return a.nTHead},1)});u("tables().footer()","table().footer()",function(){return this.iterator("table",function(a){return a.nTFoot},1)});u("tables().containers()","table().container()",function(){return this.iterator("table",function(a){return a.nTableWrapper},1)});o("draw()",function(a){return this.iterator("table",function(b){"page"===a?N(b):("string"===typeof a&&(a="full-hold"===a?!1:!0),S(b,!1===a))})});o("page()",function(a){return a===
k?this.page.info().page:this.iterator("table",function(b){Sa(b,a)})});o("page.info()",function(){if(0===this.context.length)return k;var a=this.context[0],b=a._iDisplayStart,c=a.oFeatures.bPaginate?a._iDisplayLength:-1,d=a.fnRecordsDisplay(),e=-1===c;return{page:e?0:Math.floor(b/c),pages:e?1:Math.ceil(d/c),start:b,end:a.fnDisplayEnd(),length:c,recordsTotal:a.fnRecordsTotal(),recordsDisplay:d,serverSide:"ssp"===y(a)}});o("page.len()",function(a){return a===k?0!==this.context.length?this.context[0]._iDisplayLength:
k:this.iterator("table",function(b){Qa(b,a)})});var Sb=function(a,b,c){if(c){var d=new s(a);d.one("draw",function(){c(d.ajax.json())})}if("ssp"==y(a))S(a,b);else{C(a,!0);var e=a.jqXHR;e&&4!==e.readyState&&e.abort();sa(a,[],function(c){na(a);for(var c=ta(a,c),d=0,e=c.length;d<e;d++)M(a,c[d]);S(a,b);C(a,!1)})}};o("ajax.json()",function(){var a=this.context;if(0<a.length)return a[0].json});o("ajax.params()",function(){var a=this.context;if(0<a.length)return a[0].oAjaxData});o("ajax.reload()",function(a,
b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});o("ajax.url()",function(a){var b=this.context;if(a===k){if(0===b.length)return k;b=b[0];return b.ajax?h.isPlainObject(b.ajax)?b.ajax.url:b.ajax:b.sAjaxSource}return this.iterator("table",function(b){h.isPlainObject(b.ajax)?b.ajax.url=a:b.ajax=a})});o("ajax.url().load()",function(a,b){return this.iterator("table",function(c){Sb(c,!1===b,a)})});var Za=function(a,b,c,d,e){var f=[],g,j,i,n,l,m;i=typeof b;if(!b||"string"===i||"function"===
i||b.length===k)b=[b];i=0;for(n=b.length;i<n;i++){j=b[i]&&b[i].split&&!b[i].match(/[\[\(:]/)?b[i].split(","):[b[i]];l=0;for(m=j.length;l<m;l++)(g=c("string"===typeof j[l]?h.trim(j[l]):j[l]))&&g.length&&(f=f.concat(g))}a=x.selector[a];if(a.length){i=0;for(n=a.length;i<n;i++)f=a[i](d,e,f)}return qa(f)},$a=function(a){a||(a={});a.filter&&a.search===k&&(a.search=a.filter);return h.extend({search:"none",order:"current",page:"all"},a)},ab=function(a){for(var b=0,c=a.length;b<c;b++)if(0<a[b].length)return a[0]=
a[b],a[0].length=1,a.length=1,a.context=[a.context[b]],a;a.length=0;return a},Ba=function(a,b){var c,d,e,f=[],g=a.aiDisplay;c=a.aiDisplayMaster;var j=b.search;d=b.order;e=b.page;if("ssp"==y(a))return"removed"===j?[]:W(0,c.length);if("current"==e){c=a._iDisplayStart;for(d=a.fnDisplayEnd();c<d;c++)f.push(g[c])}else if("current"==d||"applied"==d)f="none"==j?c.slice():"applied"==j?g.slice():h.map(c,function(a){return-1===h.inArray(a,g)?a:null});else if("index"==d||"original"==d){c=0;for(d=a.aoData.length;c<
d;c++)"none"==j?f.push(c):(e=h.inArray(c,g),(-1===e&&"removed"==j||0<=e&&"applied"==j)&&f.push(c))}return f};o("rows()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=b,f;return Za("row",a,function(a){var b=Nb(a);if(b!==null&&!e)return[b];f||(f=Ba(c,e));if(b!==null&&h.inArray(b,f)!==-1)return[b];if(a===null||a===k||a==="")return f;if(typeof a==="function")return h.map(f,function(b){var e=c.aoData[b];return a(b,e._aData,e.nTr)?b:null});
b=Qb(ia(c.aoData,f,"nTr"));if(a.nodeName){if(a._DT_RowIndex!==k)return[a._DT_RowIndex];if(a._DT_CellIndex)return[a._DT_CellIndex.row];b=h(a).closest("*[data-dt-row]");return b.length?[b.data("dt-row")]:[]}if(typeof a==="string"&&a.charAt(0)==="#"){var i=c.aIds[a.replace(/^#/,"")];if(i!==k)return[i.idx]}return h(b).filter(a).map(function(){return this._DT_RowIndex}).toArray()},c,e)},1);c.selector.rows=a;c.selector.opts=b;return c});o("rows().nodes()",function(){return this.iterator("row",function(a,
b){return a.aoData[b].nTr||k},1)});o("rows().data()",function(){return this.iterator(!0,"rows",function(a,b){return ia(a.aoData,b,"_aData")},1)});u("rows().cache()","row().cache()",function(a){return this.iterator("row",function(b,c){var d=b.aoData[c];return"search"===a?d._aFilterData:d._aSortData},1)});u("rows().invalidate()","row().invalidate()",function(a){return this.iterator("row",function(b,c){ca(b,c,a)})});u("rows().indexes()","row().index()",function(){return this.iterator("row",function(a,
b){return b},1)});u("rows().ids()","row().id()",function(a){for(var b=[],c=this.context,d=0,e=c.length;d<e;d++)for(var f=0,g=this[d].length;f<g;f++){var h=c[d].rowIdFn(c[d].aoData[this[d][f]]._aData);b.push((!0===a?"#":"")+h)}return new s(c,b)});u("rows().remove()","row().remove()",function(){var a=this;this.iterator("row",function(b,c,d){var e=b.aoData,f=e[c],g,h,i,n,l;e.splice(c,1);g=0;for(h=e.length;g<h;g++)if(i=e[g],l=i.anCells,null!==i.nTr&&(i.nTr._DT_RowIndex=g),null!==l){i=0;for(n=l.length;i<
n;i++)l[i]._DT_CellIndex.row=g}oa(b.aiDisplayMaster,c);oa(b.aiDisplay,c);oa(a[d],c,!1);0<b._iRecordsDisplay&&b._iRecordsDisplay--;Ra(b);c=b.rowIdFn(f._aData);c!==k&&delete b.aIds[c]});this.iterator("table",function(a){for(var c=0,d=a.aoData.length;c<d;c++)a.aoData[c].idx=c});return this});o("rows.add()",function(a){var b=this.iterator("table",function(b){var c,f,g,h=[];f=0;for(g=a.length;f<g;f++)c=a[f],c.nodeName&&"TR"===c.nodeName.toUpperCase()?h.push(ma(b,c)[0]):h.push(M(b,c));return h},1),c=this.rows(-1);
c.pop();h.merge(c,b);return c});o("row()",function(a,b){return ab(this.rows(a,b))});o("row().data()",function(a){var b=this.context;if(a===k)return b.length&&this.length?b[0].aoData[this[0]]._aData:k;b[0].aoData[this[0]]._aData=a;ca(b[0],this[0],"data");return this});o("row().node()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]].nTr||null:null});o("row.add()",function(a){a instanceof h&&a.length&&(a=a[0]);var b=this.iterator("table",function(b){return a.nodeName&&
"TR"===a.nodeName.toUpperCase()?ma(b,a)[0]:M(b,a)});return this.row(b[0])});var bb=function(a,b){var c=a.context;if(c.length&&(c=c[0].aoData[b!==k?b:a[0]])&&c._details)c._details.remove(),c._detailsShow=k,c._details=k},Tb=function(a,b){var c=a.context;if(c.length&&a.length){var d=c[0].aoData[a[0]];if(d._details){(d._detailsShow=b)?d._details.insertAfter(d.nTr):d._details.detach();var e=c[0],f=new s(e),g=e.aoData;f.off("draw.dt.DT_details column-visibility.dt.DT_details destroy.dt.DT_details");0<D(g,
"_details").length&&(f.on("draw.dt.DT_details",function(a,b){e===b&&f.rows({page:"current"}).eq(0).each(function(a){a=g[a];a._detailsShow&&a._details.insertAfter(a.nTr)})}),f.on("column-visibility.dt.DT_details",function(a,b){if(e===b)for(var c,d=aa(b),f=0,h=g.length;f<h;f++)c=g[f],c._details&&c._details.children("td[colspan]").attr("colspan",d)}),f.on("destroy.dt.DT_details",function(a,b){if(e===b)for(var c=0,d=g.length;c<d;c++)g[c]._details&&bb(f,c)}))}}};o("row().child()",function(a,b){var c=this.context;
if(a===k)return c.length&&this.length?c[0].aoData[this[0]]._details:k;if(!0===a)this.child.show();else if(!1===a)bb(this);else if(c.length&&this.length){var d=c[0],c=c[0].aoData[this[0]],e=[],f=function(a,b){if(h.isArray(a)||a instanceof h)for(var c=0,k=a.length;c<k;c++)f(a[c],b);else a.nodeName&&"tr"===a.nodeName.toLowerCase()?e.push(a):(c=h("<tr><td/></tr>").addClass(b),h("td",c).addClass(b).html(a)[0].colSpan=aa(d),e.push(c[0]))};f(a,b);c._details&&c._details.detach();c._details=h(e);c._detailsShow&&
c._details.insertAfter(c.nTr)}return this});o(["row().child.show()","row().child().show()"],function(){Tb(this,!0);return this});o(["row().child.hide()","row().child().hide()"],function(){Tb(this,!1);return this});o(["row().child.remove()","row().child().remove()"],function(){bb(this);return this});o("row().child.isShown()",function(){var a=this.context;return a.length&&this.length?a[0].aoData[this[0]]._detailsShow||!1:!1});var bc=/^([^:]+):(name|visIdx|visible)$/,Ub=function(a,b,c,d,e){for(var c=
[],d=0,f=e.length;d<f;d++)c.push(B(a,e[d],b));return c};o("columns()",function(a,b){a===k?a="":h.isPlainObject(a)&&(b=a,a="");var b=$a(b),c=this.iterator("table",function(c){var e=a,f=b,g=c.aoColumns,j=D(g,"sName"),i=D(g,"nTh");return Za("column",e,function(a){var b=Nb(a);if(a==="")return W(g.length);if(b!==null)return[b>=0?b:g.length+b];if(typeof a==="function"){var e=Ba(c,f);return h.map(g,function(b,f){return a(f,Ub(c,f,0,0,e),i[f])?f:null})}var k=typeof a==="string"?a.match(bc):"";if(k)switch(k[2]){case "visIdx":case "visible":b=
parseInt(k[1],10);if(b<0){var m=h.map(g,function(a,b){return a.bVisible?b:null});return[m[m.length+b]]}return[Z(c,b)];case "name":return h.map(j,function(a,b){return a===k[1]?b:null});default:return[]}if(a.nodeName&&a._DT_CellIndex)return[a._DT_CellIndex.column];b=h(i).filter(a).map(function(){return h.inArray(this,i)}).toArray();if(b.length||!a.nodeName)return b;b=h(a).closest("*[data-dt-column]");return b.length?[b.data("dt-column")]:[]},c,f)},1);c.selector.cols=a;c.selector.opts=b;return c});u("columns().header()",
"column().header()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTh},1)});u("columns().footer()","column().footer()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].nTf},1)});u("columns().data()","column().data()",function(){return this.iterator("column-rows",Ub,1)});u("columns().dataSrc()","column().dataSrc()",function(){return this.iterator("column",function(a,b){return a.aoColumns[b].mData},1)});u("columns().cache()","column().cache()",
function(a){return this.iterator("column-rows",function(b,c,d,e,f){return ia(b.aoData,f,"search"===a?"_aFilterData":"_aSortData",c)},1)});u("columns().nodes()","column().nodes()",function(){return this.iterator("column-rows",function(a,b,c,d,e){return ia(a.aoData,e,"anCells",b)},1)});u("columns().visible()","column().visible()",function(a,b){var c=this.iterator("column",function(b,c){if(a===k)return b.aoColumns[c].bVisible;var f=b.aoColumns,g=f[c],j=b.aoData,i,n,l;if(a!==k&&g.bVisible!==a){if(a){var m=
h.inArray(!0,D(f,"bVisible"),c+1);i=0;for(n=j.length;i<n;i++)l=j[i].nTr,f=j[i].anCells,l&&l.insertBefore(f[c],f[m]||null)}else h(D(b.aoData,"anCells",c)).detach();g.bVisible=a;ea(b,b.aoHeader);ea(b,b.aoFooter);xa(b)}});a!==k&&(this.iterator("column",function(c,e){r(c,null,"column-visibility",[c,e,a,b])}),(b===k||b)&&this.columns.adjust());return c});u("columns().indexes()","column().index()",function(a){return this.iterator("column",function(b,c){return"visible"===a?$(b,c):c},1)});o("columns.adjust()",
function(){return this.iterator("table",function(a){Y(a)},1)});o("column.index()",function(a,b){if(0!==this.context.length){var c=this.context[0];if("fromVisible"===a||"toData"===a)return Z(c,b);if("fromData"===a||"toVisible"===a)return $(c,b)}});o("column()",function(a,b){return ab(this.columns(a,b))});o("cells()",function(a,b,c){h.isPlainObject(a)&&(a.row===k?(c=a,a=null):(c=b,b=null));h.isPlainObject(b)&&(c=b,b=null);if(null===b||b===k)return this.iterator("table",function(b){var d=a,e=$a(c),f=
b.aoData,g=Ba(b,e),j=Qb(ia(f,g,"anCells")),i=h([].concat.apply([],j)),l,n=b.aoColumns.length,m,o,u,s,r,v;return Za("cell",d,function(a){var c=typeof a==="function";if(a===null||a===k||c){m=[];o=0;for(u=g.length;o<u;o++){l=g[o];for(s=0;s<n;s++){r={row:l,column:s};if(c){v=f[l];a(r,B(b,l,s),v.anCells?v.anCells[s]:null)&&m.push(r)}else m.push(r)}}return m}if(h.isPlainObject(a))return[a];c=i.filter(a).map(function(a,b){return{row:b._DT_CellIndex.row,column:b._DT_CellIndex.column}}).toArray();if(c.length||
!a.nodeName)return c;v=h(a).closest("*[data-dt-row]");return v.length?[{row:v.data("dt-row"),column:v.data("dt-column")}]:[]},b,e)});var d=this.columns(b,c),e=this.rows(a,c),f,g,j,i,n,l=this.iterator("table",function(a,b){f=[];g=0;for(j=e[b].length;g<j;g++){i=0;for(n=d[b].length;i<n;i++)f.push({row:e[b][g],column:d[b][i]})}return f},1);h.extend(l.selector,{cols:b,rows:a,opts:c});return l});u("cells().nodes()","cell().node()",function(){return this.iterator("cell",function(a,b,c){return(a=a.aoData[b])&&
a.anCells?a.anCells[c]:k},1)});o("cells().data()",function(){return this.iterator("cell",function(a,b,c){return B(a,b,c)},1)});u("cells().cache()","cell().cache()",function(a){a="search"===a?"_aFilterData":"_aSortData";return this.iterator("cell",function(b,c,d){return b.aoData[c][a][d]},1)});u("cells().render()","cell().render()",function(a){return this.iterator("cell",function(b,c,d){return B(b,c,d,a)},1)});u("cells().indexes()","cell().index()",function(){return this.iterator("cell",function(a,
b,c){return{row:b,column:c,columnVisible:$(a,c)}},1)});u("cells().invalidate()","cell().invalidate()",function(a){return this.iterator("cell",function(b,c,d){ca(b,c,a,d)})});o("cell()",function(a,b,c){return ab(this.cells(a,b,c))});o("cell().data()",function(a){var b=this.context,c=this[0];if(a===k)return b.length&&c.length?B(b[0],c[0].row,c[0].column):k;ib(b[0],c[0].row,c[0].column,a);ca(b[0],c[0].row,"data",c[0].column);return this});o("order()",function(a,b){var c=this.context;if(a===k)return 0!==
c.length?c[0].aaSorting:k;"number"===typeof a?a=[[a,b]]:a.length&&!h.isArray(a[0])&&(a=Array.prototype.slice.call(arguments));return this.iterator("table",function(b){b.aaSorting=a.slice()})});o("order.listener()",function(a,b,c){return this.iterator("table",function(d){La(d,a,b,c)})});o("order.fixed()",function(a){if(!a){var b=this.context,b=b.length?b[0].aaSortingFixed:k;return h.isArray(b)?{pre:b}:b}return this.iterator("table",function(b){b.aaSortingFixed=h.extend(!0,{},a)})});o(["columns().order()",
"column().order()"],function(a){var b=this;return this.iterator("table",function(c,d){var e=[];h.each(b[d],function(b,c){e.push([c,a])});c.aaSorting=e})});o("search()",function(a,b,c,d){var e=this.context;return a===k?0!==e.length?e[0].oPreviousSearch.sSearch:k:this.iterator("table",function(e){e.oFeatures.bFilter&&fa(e,h.extend({},e.oPreviousSearch,{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),1)})});u("columns().search()","column().search()",function(a,
b,c,d){return this.iterator("column",function(e,f){var g=e.aoPreSearchCols;if(a===k)return g[f].sSearch;e.oFeatures.bFilter&&(h.extend(g[f],{sSearch:a+"",bRegex:null===b?!1:b,bSmart:null===c?!0:c,bCaseInsensitive:null===d?!0:d}),fa(e,e.oPreviousSearch,1))})});o("state()",function(){return this.context.length?this.context[0].oSavedState:null});o("state.clear()",function(){return this.iterator("table",function(a){a.fnStateSaveCallback.call(a.oInstance,a,{})})});o("state.loaded()",function(){return this.context.length?
this.context[0].oLoadedState:null});o("state.save()",function(){return this.iterator("table",function(a){xa(a)})});m.versionCheck=m.fnVersionCheck=function(a){for(var b=m.version.split("."),a=a.split("."),c,d,e=0,f=a.length;e<f;e++)if(c=parseInt(b[e],10)||0,d=parseInt(a[e],10)||0,c!==d)return c>d;return!0};m.isDataTable=m.fnIsDataTable=function(a){var b=h(a).get(0),c=!1;if(a instanceof m.Api)return!0;h.each(m.settings,function(a,e){var f=e.nScrollHead?h("table",e.nScrollHead)[0]:null,g=e.nScrollFoot?
h("table",e.nScrollFoot)[0]:null;if(e.nTable===b||f===b||g===b)c=!0});return c};m.tables=m.fnTables=function(a){var b=!1;h.isPlainObject(a)&&(b=a.api,a=a.visible);var c=h.map(m.settings,function(b){if(!a||a&&h(b.nTable).is(":visible"))return b.nTable});return b?new s(c):c};m.camelToHungarian=I;o("$()",function(a,b){var c=this.rows(b).nodes(),c=h(c);return h([].concat(c.filter(a).toArray(),c.find(a).toArray()))});h.each(["on","one","off"],function(a,b){o(b+"()",function(){var a=Array.prototype.slice.call(arguments);
a[0]=h.map(a[0].split(/\s/),function(a){return!a.match(/\.dt\b/)?a+".dt":a}).join(" ");var d=h(this.tables().nodes());d[b].apply(d,a);return this})});o("clear()",function(){return this.iterator("table",function(a){na(a)})});o("settings()",function(){return new s(this.context,this.context)});o("init()",function(){var a=this.context;return a.length?a[0].oInit:null});o("data()",function(){return this.iterator("table",function(a){return D(a.aoData,"_aData")}).flatten()});o("destroy()",function(a){a=a||
!1;return this.iterator("table",function(b){var c=b.nTableWrapper.parentNode,d=b.oClasses,e=b.nTable,f=b.nTBody,g=b.nTHead,j=b.nTFoot,i=h(e),f=h(f),k=h(b.nTableWrapper),l=h.map(b.aoData,function(a){return a.nTr}),o;b.bDestroying=!0;r(b,"aoDestroyCallback","destroy",[b]);a||(new s(b)).columns().visible(!0);k.off(".DT").find(":not(tbody *)").off(".DT");h(E).off(".DT-"+b.sInstance);e!=g.parentNode&&(i.children("thead").detach(),i.append(g));j&&e!=j.parentNode&&(i.children("tfoot").detach(),i.append(j));
b.aaSorting=[];b.aaSortingFixed=[];wa(b);h(l).removeClass(b.asStripeClasses.join(" "));h("th, td",g).removeClass(d.sSortable+" "+d.sSortableAsc+" "+d.sSortableDesc+" "+d.sSortableNone);f.children().detach();f.append(l);g=a?"remove":"detach";i[g]();k[g]();!a&&c&&(c.insertBefore(e,b.nTableReinsertBefore),i.css("width",b.sDestroyWidth).removeClass(d.sTable),(o=b.asDestroyStripes.length)&&f.children().each(function(a){h(this).addClass(b.asDestroyStripes[a%o])}));c=h.inArray(b,m.settings);-1!==c&&m.settings.splice(c,
1)})});h.each(["column","row","cell"],function(a,b){o(b+"s().every()",function(a){var d=this.selector.opts,e=this;return this.iterator(b,function(f,g,h,i,n){a.call(e[b](g,"cell"===b?h:d,"cell"===b?d:k),g,h,i,n)})})});o("i18n()",function(a,b,c){var d=this.context[0],a=Q(a)(d.oLanguage);a===k&&(a=b);c!==k&&h.isPlainObject(a)&&(a=a[c]!==k?a[c]:a._);return a.replace("%d",c)});m.version="1.10.16";m.settings=[];m.models={};m.models.oSearch={bCaseInsensitive:!0,sSearch:"",bRegex:!1,bSmart:!0};m.models.oRow=
{nTr:null,anCells:null,_aData:[],_aSortData:null,_aFilterData:null,_sFilterRow:null,_sRowStripe:"",src:null,idx:-1};m.models.oColumn={idx:null,aDataSort:null,asSorting:null,bSearchable:null,bSortable:null,bVisible:null,_sManualType:null,_bAttrSrc:!1,fnCreatedCell:null,fnGetData:null,fnSetData:null,mData:null,mRender:null,nTh:null,nTf:null,sClass:null,sContentPadding:null,sDefaultContent:null,sName:null,sSortDataType:"std",sSortingClass:null,sSortingClassJUI:null,sTitle:null,sType:null,sWidth:null,
sWidthOrig:null};m.defaults={aaData:null,aaSorting:[[0,"asc"]],aaSortingFixed:[],ajax:null,aLengthMenu:[10,25,50,100],aoColumns:null,aoColumnDefs:null,aoSearchCols:[],asStripeClasses:null,bAutoWidth:!0,bDeferRender:!1,bDestroy:!1,bFilter:!0,bInfo:!0,bLengthChange:!0,bPaginate:!0,bProcessing:!1,bRetrieve:!1,bScrollCollapse:!1,bServerSide:!1,bSort:!0,bSortMulti:!0,bSortCellsTop:!1,bSortClasses:!0,bStateSave:!1,fnCreatedRow:null,fnDrawCallback:null,fnFooterCallback:null,fnFormatNumber:function(a){return a.toString().replace(/\B(?=(\d{3})+(?!\d))/g,
this.oLanguage.sThousands)},fnHeaderCallback:null,fnInfoCallback:null,fnInitComplete:null,fnPreDrawCallback:null,fnRowCallback:null,fnServerData:null,fnServerParams:null,fnStateLoadCallback:function(a){try{return JSON.parse((-1===a.iStateDuration?sessionStorage:localStorage).getItem("DataTables_"+a.sInstance+"_"+location.pathname))}catch(b){}},fnStateLoadParams:null,fnStateLoaded:null,fnStateSaveCallback:function(a,b){try{(-1===a.iStateDuration?sessionStorage:localStorage).setItem("DataTables_"+a.sInstance+
"_"+location.pathname,JSON.stringify(b))}catch(c){}},fnStateSaveParams:null,iStateDuration:7200,iDeferLoading:null,iDisplayLength:10,iDisplayStart:0,iTabIndex:0,oClasses:{},oLanguage:{oAria:{sSortAscending:": activate to sort column ascending",sSortDescending:": activate to sort column descending"},oPaginate:{sFirst:"First",sLast:"Last",sNext:"Next",sPrevious:"Previous"},sEmptyTable:"No data available in table",sInfo:"Showing _START_ to _END_ of _TOTAL_ entries",sInfoEmpty:"Showing 0 to 0 of 0 entries",
sInfoFiltered:"(filtered from _MAX_ total entries)",sInfoPostFix:"",sDecimal:"",sThousands:",",sLengthMenu:"Show _MENU_ entries",sLoadingRecords:"Loading...",sProcessing:"Processing...",sSearch:"Search:",sSearchPlaceholder:"",sUrl:"",sZeroRecords:"No matching records found"},oSearch:h.extend({},m.models.oSearch),sAjaxDataProp:"data",sAjaxSource:null,sDom:"lfrtip",searchDelay:null,sPaginationType:"simple_numbers",sScrollX:"",sScrollXInner:"",sScrollY:"",sServerMethod:"GET",renderer:null,rowId:"DT_RowId"};
X(m.defaults);m.defaults.column={aDataSort:null,iDataSort:-1,asSorting:["asc","desc"],bSearchable:!0,bSortable:!0,bVisible:!0,fnCreatedCell:null,mData:null,mRender:null,sCellType:"td",sClass:"",sContentPadding:"",sDefaultContent:null,sName:"",sSortDataType:"std",sTitle:null,sType:null,sWidth:null};X(m.defaults.column);m.models.oSettings={oFeatures:{bAutoWidth:null,bDeferRender:null,bFilter:null,bInfo:null,bLengthChange:null,bPaginate:null,bProcessing:null,bServerSide:null,bSort:null,bSortMulti:null,
bSortClasses:null,bStateSave:null},oScroll:{bCollapse:null,iBarWidth:0,sX:null,sXInner:null,sY:null},oLanguage:{fnInfoCallback:null},oBrowser:{bScrollOversize:!1,bScrollbarLeft:!1,bBounding:!1,barWidth:0},ajax:null,aanFeatures:[],aoData:[],aiDisplay:[],aiDisplayMaster:[],aIds:{},aoColumns:[],aoHeader:[],aoFooter:[],oPreviousSearch:{},aoPreSearchCols:[],aaSorting:null,aaSortingFixed:[],asStripeClasses:null,asDestroyStripes:[],sDestroyWidth:0,aoRowCallback:[],aoHeaderCallback:[],aoFooterCallback:[],
aoDrawCallback:[],aoRowCreatedCallback:[],aoPreDrawCallback:[],aoInitComplete:[],aoStateSaveParams:[],aoStateLoadParams:[],aoStateLoaded:[],sTableId:"",nTable:null,nTHead:null,nTFoot:null,nTBody:null,nTableWrapper:null,bDeferLoading:!1,bInitialised:!1,aoOpenRows:[],sDom:null,searchDelay:null,sPaginationType:"two_button",iStateDuration:0,aoStateSave:[],aoStateLoad:[],oSavedState:null,oLoadedState:null,sAjaxSource:null,sAjaxDataProp:null,bAjaxDataGet:!0,jqXHR:null,json:k,oAjaxData:k,fnServerData:null,
aoServerParams:[],sServerMethod:null,fnFormatNumber:null,aLengthMenu:null,iDraw:0,bDrawing:!1,iDrawError:-1,_iDisplayLength:10,_iDisplayStart:0,_iRecordsTotal:0,_iRecordsDisplay:0,oClasses:{},bFiltered:!1,bSorted:!1,bSortCellsTop:null,oInit:null,aoDestroyCallback:[],fnRecordsTotal:function(){return"ssp"==y(this)?1*this._iRecordsTotal:this.aiDisplayMaster.length},fnRecordsDisplay:function(){return"ssp"==y(this)?1*this._iRecordsDisplay:this.aiDisplay.length},fnDisplayEnd:function(){var a=this._iDisplayLength,
b=this._iDisplayStart,c=b+a,d=this.aiDisplay.length,e=this.oFeatures,f=e.bPaginate;return e.bServerSide?!1===f||-1===a?b+d:Math.min(b+a,this._iRecordsDisplay):!f||c>d||-1===a?d:c},oInstance:null,sInstance:null,iTabIndex:0,nScrollHead:null,nScrollFoot:null,aLastSort:[],oPlugins:{},rowIdFn:null,rowId:null};m.ext=x={buttons:{},classes:{},builder:"-source-",errMode:"alert",feature:[],search:[],selector:{cell:[],column:[],row:[]},internal:{},legacy:{ajax:null},pager:{},renderer:{pageButton:{},header:{}},
order:{},type:{detect:[],search:{},order:{}},_unique:0,fnVersionCheck:m.fnVersionCheck,iApiIndex:0,oJUIClasses:{},sVersion:m.version};h.extend(x,{afnFiltering:x.search,aTypes:x.type.detect,ofnSearch:x.type.search,oSort:x.type.order,afnSortData:x.order,aoFeatures:x.feature,oApi:x.internal,oStdClasses:x.classes,oPagination:x.pager});h.extend(m.ext.classes,{sTable:"dataTable",sNoFooter:"no-footer",sPageButton:"paginate_button",sPageButtonActive:"current",sPageButtonDisabled:"disabled",sStripeOdd:"odd",
sStripeEven:"even",sRowEmpty:"dataTables_empty",sWrapper:"dataTables_wrapper",sFilter:"dataTables_filter",sInfo:"dataTables_info",sPaging:"dataTables_paginate paging_",sLength:"dataTables_length",sProcessing:"dataTables_processing",sSortAsc:"sorting_asc",sSortDesc:"sorting_desc",sSortable:"sorting",sSortableAsc:"sorting_asc_disabled",sSortableDesc:"sorting_desc_disabled",sSortableNone:"sorting_disabled",sSortColumn:"sorting_",sFilterInput:"",sLengthSelect:"",sScrollWrapper:"dataTables_scroll",sScrollHead:"dataTables_scrollHead",
sScrollHeadInner:"dataTables_scrollHeadInner",sScrollBody:"dataTables_scrollBody",sScrollFoot:"dataTables_scrollFoot",sScrollFootInner:"dataTables_scrollFootInner",sHeaderTH:"",sFooterTH:"",sSortJUIAsc:"",sSortJUIDesc:"",sSortJUI:"",sSortJUIAscAllowed:"",sSortJUIDescAllowed:"",sSortJUIWrapper:"",sSortIcon:"",sJUIHeader:"",sJUIFooter:""});var Kb=m.ext.pager;h.extend(Kb,{simple:function(){return["previous","next"]},full:function(){return["first","previous","next","last"]},numbers:function(a,b){return[ha(a,
b)]},simple_numbers:function(a,b){return["previous",ha(a,b),"next"]},full_numbers:function(a,b){return["first","previous",ha(a,b),"next","last"]},first_last_numbers:function(a,b){return["first",ha(a,b),"last"]},_numbers:ha,numbers_length:7});h.extend(!0,m.ext.renderer,{pageButton:{_:function(a,b,c,d,e,f){var g=a.oClasses,j=a.oLanguage.oPaginate,i=a.oLanguage.oAria.paginate||{},n,l,m=0,o=function(b,d){var k,s,u,r,v=function(b){Sa(a,b.data.action,true)};k=0;for(s=d.length;k<s;k++){r=d[k];if(h.isArray(r)){u=
h("<"+(r.DT_el||"div")+"/>").appendTo(b);o(u,r)}else{n=null;l="";switch(r){case "ellipsis":b.append('<span class="ellipsis">&#x2026;</span>');break;case "first":n=j.sFirst;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "previous":n=j.sPrevious;l=r+(e>0?"":" "+g.sPageButtonDisabled);break;case "next":n=j.sNext;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;case "last":n=j.sLast;l=r+(e<f-1?"":" "+g.sPageButtonDisabled);break;default:n=r+1;l=e===r?g.sPageButtonActive:""}if(n!==null){u=h("<a>",{"class":g.sPageButton+
" "+l,"aria-controls":a.sTableId,"aria-label":i[r],"data-dt-idx":m,tabindex:a.iTabIndex,id:c===0&&typeof r==="string"?a.sTableId+"_"+r:null}).html(n).appendTo(b);Va(u,{action:r},v);m++}}}},s;try{s=h(b).find(G.activeElement).data("dt-idx")}catch(u){}o(h(b).empty(),d);s!==k&&h(b).find("[data-dt-idx="+s+"]").focus()}}});h.extend(m.ext.type.detect,[function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c)?"num"+c:null},function(a){if(a&&!(a instanceof Date)&&!Zb.test(a))return null;var b=Date.parse(a);
return null!==b&&!isNaN(b)||L(a)?"date":null},function(a,b){var c=b.oLanguage.sDecimal;return Ya(a,c,!0)?"num-fmt"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c)?"html-num"+c:null},function(a,b){var c=b.oLanguage.sDecimal;return Pb(a,c,!0)?"html-num-fmt"+c:null},function(a){return L(a)||"string"===typeof a&&-1!==a.indexOf("<")?"html":null}]);h.extend(m.ext.type.search,{html:function(a){return L(a)?a:"string"===typeof a?a.replace(Mb," ").replace(Aa,""):""},string:function(a){return L(a)?
a:"string"===typeof a?a.replace(Mb," "):a}});var za=function(a,b,c,d){if(0!==a&&(!a||"-"===a))return-Infinity;b&&(a=Ob(a,b));a.replace&&(c&&(a=a.replace(c,"")),d&&(a=a.replace(d,"")));return 1*a};h.extend(x.type.order,{"date-pre":function(a){return Date.parse(a)||-Infinity},"html-pre":function(a){return L(a)?"":a.replace?a.replace(/<.*?>/g,"").toLowerCase():a+""},"string-pre":function(a){return L(a)?"":"string"===typeof a?a.toLowerCase():!a.toString?"":a.toString()},"string-asc":function(a,b){return a<
b?-1:a>b?1:0},"string-desc":function(a,b){return a<b?1:a>b?-1:0}});cb("");h.extend(!0,m.ext.renderer,{header:{_:function(a,b,c,d){h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(c.sSortingClass+" "+d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass)}})},jqueryui:function(a,b,c,d){h("<div/>").addClass(d.sSortJUIWrapper).append(b.contents()).append(h("<span/>").addClass(d.sSortIcon+" "+c.sSortingClassJUI)).appendTo(b);
h(a.nTable).on("order.dt.DT",function(e,f,g,h){if(a===f){e=c.idx;b.removeClass(d.sSortAsc+" "+d.sSortDesc).addClass(h[e]=="asc"?d.sSortAsc:h[e]=="desc"?d.sSortDesc:c.sSortingClass);b.find("span."+d.sSortIcon).removeClass(d.sSortJUIAsc+" "+d.sSortJUIDesc+" "+d.sSortJUI+" "+d.sSortJUIAscAllowed+" "+d.sSortJUIDescAllowed).addClass(h[e]=="asc"?d.sSortJUIAsc:h[e]=="desc"?d.sSortJUIDesc:c.sSortingClassJUI)}})}}});var Vb=function(a){return"string"===typeof a?a.replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,
"&quot;"):a};m.render={number:function(a,b,c,d,e){return{display:function(f){if("number"!==typeof f&&"string"!==typeof f)return f;var g=0>f?"-":"",h=parseFloat(f);if(isNaN(h))return Vb(f);h=h.toFixed(c);f=Math.abs(h);h=parseInt(f,10);f=c?b+(f-h).toFixed(c).substring(2):"";return g+(d||"")+h.toString().replace(/\B(?=(\d{3})+(?!\d))/g,a)+f+(e||"")}}},text:function(){return{display:Vb}}};h.extend(m.ext.internal,{_fnExternApiFunc:Lb,_fnBuildAjax:sa,_fnAjaxUpdate:kb,_fnAjaxParameters:tb,_fnAjaxUpdateDraw:ub,
_fnAjaxDataSrc:ta,_fnAddColumn:Da,_fnColumnOptions:ja,_fnAdjustColumnSizing:Y,_fnVisibleToColumnIndex:Z,_fnColumnIndexToVisible:$,_fnVisbleColumns:aa,_fnGetColumns:la,_fnColumnTypes:Fa,_fnApplyColumnDefs:hb,_fnHungarianMap:X,_fnCamelToHungarian:I,_fnLanguageCompat:Ca,_fnBrowserDetect:fb,_fnAddData:M,_fnAddTr:ma,_fnNodeToDataIndex:function(a,b){return b._DT_RowIndex!==k?b._DT_RowIndex:null},_fnNodeToColumnIndex:function(a,b,c){return h.inArray(c,a.aoData[b].anCells)},_fnGetCellData:B,_fnSetCellData:ib,
_fnSplitObjNotation:Ia,_fnGetObjectDataFn:Q,_fnSetObjectDataFn:R,_fnGetDataMaster:Ja,_fnClearTable:na,_fnDeleteIndex:oa,_fnInvalidate:ca,_fnGetRowElements:Ha,_fnCreateTr:Ga,_fnBuildHead:jb,_fnDrawHead:ea,_fnDraw:N,_fnReDraw:S,_fnAddOptionsHtml:mb,_fnDetectHeader:da,_fnGetUniqueThs:ra,_fnFeatureHtmlFilter:ob,_fnFilterComplete:fa,_fnFilterCustom:xb,_fnFilterColumn:wb,_fnFilter:vb,_fnFilterCreateSearch:Oa,_fnEscapeRegex:Pa,_fnFilterData:yb,_fnFeatureHtmlInfo:rb,_fnUpdateInfo:Bb,_fnInfoMacros:Cb,_fnInitialise:ga,
_fnInitComplete:ua,_fnLengthChange:Qa,_fnFeatureHtmlLength:nb,_fnFeatureHtmlPaginate:sb,_fnPageChange:Sa,_fnFeatureHtmlProcessing:pb,_fnProcessingDisplay:C,_fnFeatureHtmlTable:qb,_fnScrollDraw:ka,_fnApplyToChildren:H,_fnCalculateColumnWidths:Ea,_fnThrottle:Na,_fnConvertToWidth:Db,_fnGetWidestNode:Eb,_fnGetMaxLenString:Fb,_fnStringToCss:v,_fnSortFlatten:V,_fnSort:lb,_fnSortAria:Hb,_fnSortListener:Ua,_fnSortAttachListener:La,_fnSortingClasses:wa,_fnSortData:Gb,_fnSaveState:xa,_fnLoadState:Ib,_fnSettingsFromNode:ya,
_fnLog:J,_fnMap:F,_fnBindAction:Va,_fnCallbackReg:z,_fnCallbackFire:r,_fnLengthOverflow:Ra,_fnRenderer:Ma,_fnDataSource:y,_fnRowAttributes:Ka,_fnCalculateEnd:function(){}});h.fn.dataTable=m;m.$=h;h.fn.dataTableSettings=m.settings;h.fn.dataTableExt=m.ext;h.fn.DataTable=function(a){return h(this).dataTable(a).api()};h.each(m,function(a,b){h.fn.DataTable[a]=b});return h.fn.dataTable});

39
static/vendor/dropzone/basic.css vendored Normal file
View File

@@ -0,0 +1,39 @@
/*
* The MIT License
* Copyright (c) 2012 Matias Meno <m@tias.me>
*/
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
position: relative; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
width: 120px;
margin: 0.5em; }
.dropzone .dz-preview .dz-progress {
display: block;
height: 15px;
border: 1px solid #aaa; }
.dropzone .dz-preview .dz-progress .dz-upload {
display: block;
height: 100%;
width: 0;
background: green; }
.dropzone .dz-preview .dz-error-message {
color: red;
display: none; }
.dropzone .dz-preview.dz-error .dz-error-message, .dropzone .dz-preview.dz-error .dz-error-mark {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
display: block; }
.dropzone .dz-preview .dz-error-mark, .dropzone .dz-preview .dz-success-mark {
position: absolute;
display: none;
left: 30px;
top: 30px;
width: 54px;
height: 58px;
left: 50%;
margin-left: -27px; }

388
static/vendor/dropzone/dropzone.css vendored Normal file
View File

@@ -0,0 +1,388 @@
/*
* The MIT License
* Copyright (c) 2012 Matias Meno <m@tias.me>
*/
@-webkit-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-moz-keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@keyframes passing-through {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30%, 70% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); }
100% {
opacity: 0;
-webkit-transform: translateY(-40px);
-moz-transform: translateY(-40px);
-ms-transform: translateY(-40px);
-o-transform: translateY(-40px);
transform: translateY(-40px); } }
@-webkit-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-moz-keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@keyframes slide-in {
0% {
opacity: 0;
-webkit-transform: translateY(40px);
-moz-transform: translateY(40px);
-ms-transform: translateY(40px);
-o-transform: translateY(40px);
transform: translateY(40px); }
30% {
opacity: 1;
-webkit-transform: translateY(0px);
-moz-transform: translateY(0px);
-ms-transform: translateY(0px);
-o-transform: translateY(0px);
transform: translateY(0px); } }
@-webkit-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@-moz-keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
@keyframes pulse {
0% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); }
10% {
-webkit-transform: scale(1.1);
-moz-transform: scale(1.1);
-ms-transform: scale(1.1);
-o-transform: scale(1.1);
transform: scale(1.1); }
20% {
-webkit-transform: scale(1);
-moz-transform: scale(1);
-ms-transform: scale(1);
-o-transform: scale(1);
transform: scale(1); } }
.dropzone, .dropzone * {
box-sizing: border-box; }
.dropzone {
min-height: 150px;
border: 2px solid rgba(0, 0, 0, 0.3);
background: white;
padding: 20px 20px; }
.dropzone.dz-clickable {
cursor: pointer; }
.dropzone.dz-clickable * {
cursor: default; }
.dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {
cursor: pointer; }
.dropzone.dz-started .dz-message {
display: none; }
.dropzone.dz-drag-hover {
border-style: solid; }
.dropzone.dz-drag-hover .dz-message {
opacity: 0.5; }
.dropzone .dz-message {
text-align: center;
margin: 2em 0; }
.dropzone .dz-preview {
position: relative;
display: inline-block;
vertical-align: top;
margin: 16px;
min-height: 100px; }
.dropzone .dz-preview:hover {
z-index: 1000; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-file-preview .dz-image {
border-radius: 20px;
background: #999;
background: linear-gradient(to bottom, #eee, #ddd); }
.dropzone .dz-preview.dz-file-preview .dz-details {
opacity: 1; }
.dropzone .dz-preview.dz-image-preview {
background: white; }
.dropzone .dz-preview.dz-image-preview .dz-details {
-webkit-transition: opacity 0.2s linear;
-moz-transition: opacity 0.2s linear;
-ms-transition: opacity 0.2s linear;
-o-transition: opacity 0.2s linear;
transition: opacity 0.2s linear; }
.dropzone .dz-preview .dz-remove {
font-size: 14px;
text-align: center;
display: block;
cursor: pointer;
border: none; }
.dropzone .dz-preview .dz-remove:hover {
text-decoration: underline; }
.dropzone .dz-preview:hover .dz-details {
opacity: 1; }
.dropzone .dz-preview .dz-details {
z-index: 20;
position: absolute;
top: 0;
left: 0;
opacity: 0;
font-size: 13px;
min-width: 100%;
max-width: 100%;
padding: 2em 1em;
text-align: center;
color: rgba(0, 0, 0, 0.9);
line-height: 150%; }
.dropzone .dz-preview .dz-details .dz-size {
margin-bottom: 1em;
font-size: 16px; }
.dropzone .dz-preview .dz-details .dz-filename {
white-space: nowrap; }
.dropzone .dz-preview .dz-details .dz-filename:hover span {
border: 1px solid rgba(200, 200, 200, 0.8);
background-color: rgba(255, 255, 255, 0.8); }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) {
overflow: hidden;
text-overflow: ellipsis; }
.dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {
border: 1px solid transparent; }
.dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {
background-color: rgba(255, 255, 255, 0.4);
padding: 0 0.4em;
border-radius: 3px; }
.dropzone .dz-preview:hover .dz-image img {
-webkit-transform: scale(1.05, 1.05);
-moz-transform: scale(1.05, 1.05);
-ms-transform: scale(1.05, 1.05);
-o-transform: scale(1.05, 1.05);
transform: scale(1.05, 1.05);
-webkit-filter: blur(8px);
filter: blur(8px); }
.dropzone .dz-preview .dz-image {
border-radius: 20px;
overflow: hidden;
width: 120px;
height: 120px;
position: relative;
display: block;
z-index: 10; }
.dropzone .dz-preview .dz-image img {
display: block; }
.dropzone .dz-preview.dz-success .dz-success-mark {
-webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview.dz-error .dz-error-mark {
opacity: 1;
-webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
-o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);
animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }
.dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {
pointer-events: none;
opacity: 0;
z-index: 500;
position: absolute;
display: block;
top: 50%;
left: 50%;
margin-left: -27px;
margin-top: -27px; }
.dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {
display: block;
width: 54px;
height: 54px; }
.dropzone .dz-preview.dz-processing .dz-progress {
opacity: 1;
-webkit-transition: all 0.2s linear;
-moz-transition: all 0.2s linear;
-ms-transition: all 0.2s linear;
-o-transition: all 0.2s linear;
transition: all 0.2s linear; }
.dropzone .dz-preview.dz-complete .dz-progress {
opacity: 0;
-webkit-transition: opacity 0.4s ease-in;
-moz-transition: opacity 0.4s ease-in;
-ms-transition: opacity 0.4s ease-in;
-o-transition: opacity 0.4s ease-in;
transition: opacity 0.4s ease-in; }
.dropzone .dz-preview:not(.dz-processing) .dz-progress {
-webkit-animation: pulse 6s ease infinite;
-moz-animation: pulse 6s ease infinite;
-ms-animation: pulse 6s ease infinite;
-o-animation: pulse 6s ease infinite;
animation: pulse 6s ease infinite; }
.dropzone .dz-preview .dz-progress {
opacity: 1;
z-index: 1000;
pointer-events: none;
position: absolute;
height: 16px;
left: 50%;
top: 50%;
margin-top: -8px;
width: 80px;
margin-left: -40px;
background: rgba(255, 255, 255, 0.9);
-webkit-transform: scale(1);
border-radius: 8px;
overflow: hidden; }
.dropzone .dz-preview .dz-progress .dz-upload {
background: #333;
background: linear-gradient(to bottom, #666, #444);
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 0;
-webkit-transition: width 300ms ease-in-out;
-moz-transition: width 300ms ease-in-out;
-ms-transition: width 300ms ease-in-out;
-o-transition: width 300ms ease-in-out;
transition: width 300ms ease-in-out; }
.dropzone .dz-preview.dz-error .dz-error-message {
display: block; }
.dropzone .dz-preview.dz-error:hover .dz-error-message {
opacity: 1;
pointer-events: auto; }
.dropzone .dz-preview .dz-error-message {
pointer-events: none;
z-index: 1000;
position: absolute;
display: block;
display: none;
opacity: 0;
-webkit-transition: opacity 0.3s ease;
-moz-transition: opacity 0.3s ease;
-ms-transition: opacity 0.3s ease;
-o-transition: opacity 0.3s ease;
transition: opacity 0.3s ease;
border-radius: 8px;
font-size: 13px;
top: 130px;
left: -10px;
width: 140px;
background: #be2626;
background: linear-gradient(to bottom, #be2626, #a92222);
padding: 0.5em 1.2em;
color: white; }
.dropzone .dz-preview .dz-error-message:after {
content: '';
position: absolute;
top: -6px;
left: 64px;
width: 0;
height: 0;
border-left: 6px solid transparent;
border-right: 6px solid transparent;
border-bottom: 6px solid #be2626; }

2052
static/vendor/dropzone/dropzone.js vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,931 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
Created by FontForge 20120731 at Thu Feb 19 13:35:54 2015
By Dovy
</metadata>
<defs>
<font id="elusiveicons" horiz-adv-x="1200" >
<font-face
font-family="elusiveicons"
font-weight="500"
font-stretch="normal"
units-per-em="1200"
panose-1="2 0 6 9 0 0 0 0 0 0"
ascent="1075"
descent="-125"
bbox="-2 -125.75 1202 1075.75"
underline-thickness="60"
underline-position="-120"
unicode-range="U+F101-F230"
/>
<missing-glyph
d="M40 0v800h320v-800h-320zM80 40h240v720h-240v-720z" />
<glyph glyph-name=".notdef"
d="M40 0v800h320v-800h-320zM80 40h240v720h-240v-720z" />
<glyph glyph-name=".null" horiz-adv-x="0"
/>
<glyph glyph-name="nonmarkingreturn"
/>
<glyph glyph-name="uniF101" unicode="&#xf101;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM264 811v-672h524h75h73v119h-73v65h73v119h-73v66h73v119h-73v65h73v119h-73h-75h-524zM563 694
q27 0 49.5 -13t35.5 -35.5t13 -48.5q0 -29 -15 -52t-39 -35l124 -75h2v-1v-104h-173h-166v104v1h1l125 75q-24 12 -39 35t-15 52q0 40 28.5 68.5t68.5 28.5z" />
<glyph glyph-name="uniF102" unicode="&#xf102;"
d="M0 1075h935h134h131v-212h-131v-117h131v-213h-131v-116h131v-213h-131v-117h131v-212h-131h-134h-935v1200zM535 865q-47 0 -87 -23t-63.5 -63t-23.5 -87q0 -50 26.5 -91.5t69.5 -63.5l-222 -133h-3v-1v-187h605v187v1h-3l-222 133q44 22 70 63.5t26 91.5
q0 72 -50.5 122.5t-122.5 50.5z" />
<glyph glyph-name="uniF103" unicode="&#xf103;"
d="M104 1075h159v-700h104v-254h-367v254h104v700zM521 1075h158v-452h105v-254h-368v254h105v452zM937 1075h159v-202h104v-254h-367v254h104v202zM886 823v-50h261v50h-261zM937 577h159v-702h-159v702zM470 573v-51h260v51h-260zM521 329h158v-454h-158v454zM53 325v-51
h261v51h-261zM104 79h159v-204h-159v204z" />
<glyph glyph-name="uniF104" unicode="&#xf104;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 900q-115 0 -213 -57t-155 -155t-57 -213t57 -213t155 -155t213 -57v850z" />
<glyph glyph-name="uniF105" unicode="&#xf105;"
d="M605 595q-101 2 -170 72t-70 168q2 100 72.5 169.5t167.5 70.5q50 -2 94.5 -21.5t76.5 -51.5t50.5 -75.5t18.5 -91.5q-1 -66 -34 -121t-88 -87t-118 -32zM799 545q62 -1 112 -26.5t81 -68.5t48 -96t17 -110v-369h-167v324q-3 16 -12.5 23t-20.5 5q-7 -1 -12.5 -4.5
t-9.5 -9.5t-4 -14v-324h-465v324q-5 31 -30 29q-11 -1 -19.5 -9t-8.5 -20v-324h-165v369q-1 80 30.5 148t91.5 110.5t137 42.5h397z" />
<glyph glyph-name="uniF106" unicode="&#xf106;"
d="M291 976h618v-178h-618v178zM127 701h946v-178h-946v178zM234 427h732v-178h-732v178zM0 152h1200v-178h-1200v178z" />
<glyph glyph-name="uniF107" unicode="&#xf107;"
d="M0 976h1200v-178h-1200v178zM0 701h1200v-178h-1200v178zM0 427h1200v-178h-1200v178zM0 152h1200v-178h-1200v178z" />
<glyph glyph-name="uniF108" unicode="&#xf108;"
d="M619 976v-178h-619v178h619zM947 701v-178h-947v178h947zM731 427v-178h-731v178h731zM1200 152v-178h-1200v178h1200z" />
<glyph glyph-name="uniF109" unicode="&#xf109;"
d="M581 976h619v-178h-619v178zM253 701h947v-178h-947v178zM469 427h731v-178h-731v178zM0 152h1200v-178h-1200v178z" />
<glyph glyph-name="uniF10A" unicode="&#xf10a;"
d="M600 -125l-469 703h253v497h432v-497h253z" />
<glyph glyph-name="uniF10B" unicode="&#xf10b;"
d="M0 475l703 469v-253h497v-432h-497v-253z" />
<glyph glyph-name="uniF10C" unicode="&#xf10c;"
d="M1200 475l-703 -469v253h-497v432h497v253z" />
<glyph glyph-name="uniF10D" unicode="&#xf10d;"
d="M600 1075l469 -703h-253v-497h-432v497h-253z" />
<glyph glyph-name="uniF10E" unicode="&#xf10e;"
d="M710 1075h1q27 0 47 -25t22 -69l35 -654q10 35 34.5 70.5t56 64.5t69.5 51.5t74 33.5t69 8t54 -22q26 -19 28 -53.5t-15 -67t-43 -47.5q-52 -23 -91.5 -60t-62.5 -77.5t-45.5 -88t-40 -89.5t-47 -84t-67.5 -70q-28 -21 -82 -21h-434q-55 3 -87 44.5t-42 99.5l-142 793
q-4 34 10 54t35 21t42 -12.5t30 -37.5l65 -226q-20 -37 -15 -80q6 -39 41 -252q4 -40 27.5 -74t55 -50t68 -9t63.5 42q19 -20 45.5 -28.5t53.5 -3t50.5 20.5t39.5 43.5t17 64.5l8 698q3 29 14 50t25.5 31t31.5 11h2zM490 687q32 0 57.5 -19t29.5 -52l10 -304q0 -35 -9 -58.5
t-22.5 -33t-30.5 -9.5q-30 -1 -54.5 25t-26.5 64l-27 310q0 34 18.5 53.5t47.5 22.5q4 1 7 1zM292 618q26 1 47.5 -16.5t26.5 -48.5l26 -257q2 -26 -5.5 -47t-20.5 -32.5t-29 -15.5q-10 -2 -20.5 0.5t-19.5 8.5t-16.5 18t-12.5 28l-44 266q-5 40 11 64.5t43 30.5q7 1 14 1z
" />
<glyph glyph-name="uniF10F" unicode="&#xf10f;"
d="M490 1046h220v-444l422 137l68 -209l-422 -137l261 -359l-178 -130l-261 359l-261 -359l-178 130l261 359l-422 137l68 209l422 -137v444z" />
<glyph glyph-name="uniF110" unicode="&#xf110;"
d="M627 1075v-545l546 545v-1200l-546 545v-545l-600 600z" />
<glyph glyph-name="uniF111" unicode="&#xf111;"
d="M1024.5 899.5q115.5 -115.5 156 -270t0 -309t-156 -270t-270 -156t-309 0t-270 156t-156 270t0 309t156 270t270 156t309 0t270 -156zM861 842v0q-87 62 -192 78t-207.5 -16.5t-180 -110t-110 -180t-16.5 -207.5t78 -192zM967 736l-628 -628q87 -62 192 -78t207.5 16.5
t180 110t110 180t16.5 207.5t-78 192z" />
<glyph glyph-name="uniF112" unicode="&#xf112;"
d="M0 975h100v-1000h-100v1000zM186 975h24v-1000h-24v1000zM244 975h76v-1000h-76v1000zM398 975h32v-1000h-32v1000zM516 975h24v-1000h-24v1000zM551 975h99v-1000h-99v1000zM710 975h50v-1000h-50v1000zM859 975h11v-1000h-11v1000zM947 975h33v-1000h-33v1000z
M1066 975h24v-1000h-24v1000zM1100 975h100v-1000h-100v1000z" />
<glyph glyph-name="uniF113" unicode="&#xf113;"
d="M0 1075h1200v-1200h-1200v1200zM186 579v-514h310q57 2 94 38q38 40 39 99q-1 58 -26 91q-23 28 -61 38v2q35 12 53 37q23 32 23 83q-1 55 -37 91q-38 35 -89 35h-306zM721 578v-84h227v84h-227zM830 469q-45 0 -82 -13q-36 -13 -62 -39q-26 -25 -40 -64t-14 -90
q0 -53 15 -92q14 -39 40.5 -64.5t64.5 -38.5q39 -12 86 -12q95 2 143 41q47 42 48 112h-129q0 -12 -4 -23q-11 -34 -61 -34q-37 0 -54 22q-16 22 -16 63h264q0 76 -14 118q-13 39 -38 64q-26 25 -63 37q-36 13 -84 13zM334 466h101q15 0 24 -11q10 -13 10 -28v-8
q0 -17 -10 -28q-10 -12 -24 -12h-101v87zM835 374q29 0 44 -18q16 -17 16 -48h-130q4 30 20 48q17 18 50 18zM334 273h112q15 -1 24 -12q10 -12 10 -28v-8q-1 -17 -10 -29q-11 -11 -24 -11h-112v88z" />
<glyph glyph-name="uniF114" unicode="&#xf114;"
d="M521 1075h158v-74q123 -27 204.5 -126.5t82.5 -229.5v-319l236 -205v-55h-236h-732h-236v55l236 205v319q1 130 82.5 229.5t204.5 126.5v74zM600 50q36 0 62 -25.5t26 -62t-26 -62t-62 -25.5t-62 25.5t-26 62t26 62t62 25.5z" />
<glyph glyph-name="uniF115" unicode="&#xf115;"
d="M385 1075q33 0 60.5 -16t43 -43.5t15.5 -59.5q0 -50 -34.5 -84.5t-84 -34.5t-84.5 34.5t-35 84t35 84.5t84 35zM286 775q23 37 69 42.5t80 -26.5l139 -176l136 -27q17 -3 29.5 -19.5t8.5 -35.5t-28 -27l438 -601q7 -12 -4.5 -18.5t-18.5 2.5l-470 619l-126 24
q-18 5 -27 17l-54 67v-57v-137l138 -158q7 -5 10 -21l66 -299q4 -21 -5.5 -38t-26 -24t-35 -7t-34 12t-20.5 34l-61 287l-113 127l-50 -177q-6 -17 -10 -22l-166 -214q-14 -16 -33.5 -21.5t-36 0.5t-29 18.5t-13 31.5t12.5 41l160 203l63 226l-2 185l-33 -45l-13 -131
q-5 -32 -29 -42t-45 5.5t-18 44.5l16 143q0 11 7 21z" />
<glyph glyph-name="uniF116" unicode="&#xf116;"
d="M0 1075h1200v-1200h-1200v1200zM642 855l-229 -1q-50 -7 -90 -28.5t-66.5 -59.5t-30.5 -87l-2 -352q0 -118 67.5 -175.5t197.5 -54.5l280 1q49 7 85.5 24.5t58.5 39t36 51.5t19.5 55.5t8.5 56.5v105q-2 37 -16 65t-36 42.5t-45.5 21.5t-50.5 8q12 42 3 111
q-6 73 -56 121.5t-134 55.5zM451 713h186q36 -5 56 -25.5t19.5 -44t-20.5 -44.5t-55 -27h-186q-37 5 -57 25.5t-19.5 44t20.5 44.5t56 27zM408 406l342 -1q25 -4 43 -15.5t26.5 -27.5t8.5 -34t-7.5 -34t-25 -28t-41.5 -16l-342 1q-38 5 -59 27.5t-21 49t20 49.5t56 29z" />
<glyph glyph-name="uniF117" unicode="&#xf117;"
d="M0 1075h698q215 0 323 -74t108 -223q0 -106 -75 -169q-74 -63 -221 -79q178 -17 272.5 -96.5t94.5 -211.5q0 -178 -132 -263q-132 -84 -414 -84h-654v97h151v1006h-151v97zM454 978v-404h103q136 0 202 50q65 51 65 154q0 105 -64 152q-63 48 -203 48h-103zM454 478v-506
h113q151 0 223.5 61t72.5 189q0 129 -73.5 192.5t-222.5 63.5h-113z" />
<glyph glyph-name="uniF118" unicode="&#xf118;"
d="M455 1064l578 -299v-724l-107 -58v724l-515 276q-36 13 -81 -10.5t-72 -57.5l579 -332v-650l-106 -58l-564 350v668q0 37 18 65q22 35 72.5 67t103.5 44.5t94 -5.5z" />
<glyph glyph-name="uniF119" unicode="&#xf119;"
d="M234 1075h732v-1087v-113l-366 366l-366 -366v113v1087zM309 1000v-938l291 291l291 -291v938h-582z" />
<glyph glyph-name="uniF11A" unicode="&#xf11a;"
d="M234 1075h732v-1087v-113l-366 366l-366 -366v113v1087z" />
<glyph glyph-name="uniF11B" unicode="&#xf11b;"
d="M510 24q0 -62 -43.5 -105.5t-105.5 -43.5t-105.5 43.5t-43.5 105.5q0 40 20 74.5t54.5 54.5t74.5 20q62 0 105.5 -43.5t43.5 -105.5zM510 475q0 -30 -11.5 -58t-31.5 -47.5t-47.5 -31.5t-58.5 -12q-62 0 -105.5 43.5t-43.5 105.5t43.5 105.5t105.5 43.5q41 0 75 -20
t54 -54.5t20 -74.5zM510 926q0 -62 -43.5 -105.5t-105.5 -43.5t-105.5 43.5t-43.5 105.5t43.5 105.5t105.5 43.5t105.5 -43.5t43.5 -105.5zM988 24q0 -62 -43.5 -105.5t-105.5 -43.5t-105.5 43.5t-43.5 105.5t43.5 105.5t105.5 43.5t105.5 -43.5t43.5 -105.5zM988 475
q0 -62 -43.5 -105.5t-105.5 -43.5t-105.5 43.5t-43.5 105.5t43.5 105.5t105.5 43.5t105.5 -43.5t43.5 -105.5zM988 926q0 -62 -43.5 -105.5t-105.5 -43.5t-105.5 43.5t-43.5 105.5t43.5 105.5t105.5 43.5q40 0 74.5 -20t54.5 -54.5t20 -74.5z" />
<glyph glyph-name="uniF11C" unicode="&#xf11c;"
d="M318 1001h564v-167h318v-487h-541v100h-118v-100h-541v487h318v167zM405 915v-81h390v81h-390zM0 253h541v-97h118v97h541v-304h-1200v304z" />
<glyph glyph-name="uniF11D" unicode="&#xf11d;"
d="M1094 1075l106 -106l-410 -410q13 -22 10 -48t-22 -45q-33 -33 -78 -19q49 -101 6 -191q-80 -107 -133 -200.5t-74 -180.5q-52 26 -115 68q-10 61 6.5 115t57.5 92q-54 -20 -90.5 -58.5t-50.5 -90.5q-43 31 -108 98q19 25 26.5 35.5t13.5 20t4.5 10t-7.5 -0.5t-15 -6
t-25 -11.5t-31 -11.5q-35 40 -63 77q36 13 64 33t48.5 47.5t31.5 60.5q-84 -85 -196 -67q-31 48 -50 88q58 5 113.5 30.5t92.5 55t86.5 66t88.5 55.5q98 42 191 -6q-14 45 19 78q19 19 45 22t48 -10z" />
<glyph glyph-name="uniF11E" unicode="&#xf11e;"
d="M1158 1075l42 -1q-46 -64 -99.5 -149t-94.5 -155t-97 -156t-112 -160t-134.5 -157.5t-167.5 -157.5l-131 137q16 59 99.5 162t192 209.5t218 204t189.5 160t95 63.5zM323 234l131 -137q-18 -41 -39.5 -73.5t-50 -62t-64 -48t-79.5 -29.5t-100 -9t-121 17q48 17 79.5 40.5
t46.5 49t25 53l20 55t25.5 53.5t47 50t79.5 41z" />
<glyph glyph-name="uniF11F" unicode="&#xf11f;"
d="M600 955q119 0 203 -63t84 -152l-163 -495h-248l-163 495q0 89 84 152t203 63zM600 908q-56 0 -104 -19t-76.5 -46.5t-44 -55t-15.5 -47.5l116 -345h248l116 345q0 17 -15.5 43.5t-44 55.5t-76.5 49t-104 20zM472 209v0h256v-86h-256v86zM472 81h256v-86h-256v86z" />
<glyph glyph-name="uniF120" unicode="&#xf120;"
d="M1030 978v0q28 -1 51 -15.5t36 -37t14 -48.5v-240q24 -8 41 -26.5t23.5 -42t3.5 -47t-21 -44t-47 -31.5v-241q-2 -42 -32 -70.5t-69 -29.5q-75 68 -161.5 121t-184 88.5t-194.5 46.5q-41 -18 -57 -61.5t-8.5 -92.5t32.5 -97t60 -76q-21 -36 -68 -52t-96 -8t-78 36
q-19 54 -29.5 90.5t-20 85t-8 93.5t14.5 87h-131q-43 2 -71.5 32.5t-29.5 69.5v147q2 43 32 72.5t69 29.5h326q167 10 327.5 78.5t275.5 182.5zM1033 848q-245 -182 -505 -221v-171q289 -54 505 -221v613z" />
<glyph glyph-name="uniF121" unicode="&#xf121;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM389 853v-118h63v118h-63zM748 853v-118h63v118h-63zM262 796v-166h676v166h-83v-106h-151v106h-208v-106
h-151v106h-83zM262 587v-490h676v490h-676zM528 474q26 -1 48 -13.5t31 -34.5q12 -34 2 -55q-11 -24 -47 -37q58 -15 59 -67q-1 -38 -30 -62q-29 -23 -63 -23q-94 0 -94 85h55q2 -42 35 -42q41 2 42 45q0 28 -19 36q-15 6 -51 6v43q63 -1 63 36q-2 40 -33 40q-37 -2 -38 -37
h-54q1 39 28 59t66 21zM717 468h49v-281h-53v226q-30 -26 -66 -36v48q42 16 70 43z" />
<glyph glyph-name="uniF122" unicode="&#xf122;"
d="M266 1075h99v-188h-99v188zM835 1075h99v-188h-99v188zM64 985h132v-169h239v169h330v-169h239v169h132v-264h-1072v264zM64 652h1072v-777h-1072v777zM485 473q-61 -1 -104 -33t-44 -93h86q0 26 15.5 41.5t43.5 17.5q50 -1 53 -64q-1 -59 -100 -57v-68q58 0 81 -10
q29 -12 29 -56q0 -69 -65 -73q-26 0 -40 18.5t-16 48.5h-87q0 -134 148 -134q55 0 100 37q46 37 48 97q-1 41 -25.5 68t-68.5 39q57 20 76 58q15 34 -3 87q-15 36 -49.5 55.5t-77.5 20.5zM786 464q-44 -43 -112 -69v-76q58 17 106 58v-358h83v445h-77z" />
<glyph glyph-name="uniF123" unicode="&#xf123;"
d="M391 927h435l37 -152h337v-752h-1200v752h353zM603 775q-92 0 -169.5 -45t-122.5 -122.5t-45 -169.5t45 -169.5t122.5 -123t169.5 -45.5t169.5 45.5t123 123t45.5 169.5t-45.5 169.5t-123 122.5t-169.5 45zM999 702v-99h170v99h-170zM603.5 676q98.5 0 168 -70
t69.5 -168.5t-69.5 -168t-168 -69.5t-168.5 69.5t-70 168t70 168.5t168.5 70z" />
<glyph glyph-name="uniF124" unicode="&#xf124;"
d="M215 974h770l76 -316h21h118v-92h-48v-590h-136v96h-832v-96h-136v590h-48v92h118h21zM255 913l-61 -255h812l-61 255h-690zM87 489v-91l191 -71v92zM1113 489l-191 -70v-92l191 71v91zM416 250v-91h368v91h-368z" />
<glyph glyph-name="uniF125" unicode="&#xf125;"
d="M0 950h1200l-600 -950z" />
<glyph glyph-name="uniF126" unicode="&#xf126;"
d="M1100 -125l-1000 600l1000 600v-1200z" />
<glyph glyph-name="uniF127" unicode="&#xf127;"
d="M100 1075l1000 -600l-1000 -600v1200z" />
<glyph glyph-name="uniF128" unicode="&#xf128;"
d="M0 -25l600 1000l600 -1000h-1200z" />
<glyph glyph-name="uniF129" unicode="&#xf129;"
d="M600 975l600 -117v-766l-600 -117l-600 117v766zM382 709q-97 0 -165.5 -68.5t-68.5 -165.5t68.5 -165.5t165.5 -68.5q69 0 125.5 36.5t85.5 96.5h-114q-40 -39 -97 -39q-58 0 -99 41t-41 99t41 99t99 41q57 0 97 -39h114q-29 60 -85.5 96.5t-125.5 36.5zM841 709
q-64 0 -117.5 -31.5t-85 -85t-31.5 -117.5t31.5 -117.5t85 -85t117.5 -31.5q69 0 125.5 36.5t85.5 96.5h-114q-40 -39 -97 -39q-58 0 -99 41t-41 99t41 99t99 41q57 0 97 -39h114q-19 39 -50.5 69t-73 47t-87.5 17z" />
<glyph glyph-name="uniF12A" unicode="&#xf12a;"
d="M978 8l-260 128l-137 -256l-117 265l-269 -108l80 279l-275 90l240 162l-152 246l288 -31l41 287l201 -209l216 193l19 -289l290 10l-171 -235l228 -179l-281 -69z" />
<glyph glyph-name="uniF12B" unicode="&#xf12b;"
d="M0 1075h1200v-1200h-1200v1200zM197 878v-806h806v806h-806z" />
<glyph glyph-name="uniF12C" unicode="&#xf12c;"
d="M0 1075h776l-197 -197h-382v-382v-424h424h382v382l197 197v-329v-447h-776h-424v424v776zM1030 1060l159 -159l-434 -434l-159 -160l-314 315l159 159l155 -155z" />
<glyph glyph-name="uniF12D" unicode="&#xf12d;"
d="M600 86l-179 178l-421 422l179 178l421 -421l421 421l179 -178l-421 -422z" />
<glyph glyph-name="uniF12E" unicode="&#xf12e;"
d="M211 475l178 179l422 421l178 -179l-421 -421l421 -421l-178 -179l-422 421z" />
<glyph glyph-name="uniF12F" unicode="&#xf12f;"
d="M989 475v0l-178 -179l-422 -421l-178 179l421 421l-421 421l178 179l422 -421z" />
<glyph glyph-name="uniF130" unicode="&#xf130;"
d="M600 864l179 -178l421 -422l-179 -178l-421 421l-421 -421l-179 178l421 422z" />
<glyph glyph-name="uniF131" unicode="&#xf131;"
d="M604.5 1075q101.5 0 173.5 -72t72 -174.5t-72 -174.5t-173.5 -72t-173 72t-71.5 174.5t71.5 174.5t173 72zM464 788q0 -58 41 -99t99 -41t99 41t41 99h-280zM412 543h377q57 1 98 -19t64 -54.5t33.5 -74.5t10.5 -87v-433h-142v389q-3 21 -17 27.5t-27 -2.5t-13 -25v-389
h-386v389q-3 16 -12 23.5t-19 6.5t-18.5 -9.5t-8.5 -20.5v-389h-147v433q-3 110 53 171.5t154 63.5z" />
<glyph glyph-name="uniF132" unicode="&#xf132;"
d="M1200 475q0 -163 -80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301zM903 542h-163v321h-280v-321h-163l303 -455z" />
<glyph glyph-name="uniF133" unicode="&#xf133;"
d="M600 -125q-163 0 -301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5zM667 172v163h321v280h-321v163l-455 -303z" />
<glyph glyph-name="uniF134" unicode="&#xf134;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM533 778v-163h-321v-280h321v-163l455 303z" />
<glyph glyph-name="uniF135" unicode="&#xf135;"
d="M1200 475q0 -163 -80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301zM903 408l-303 455l-303 -455h163v-321h280v321h163z" />
<glyph glyph-name="uniF136" unicode="&#xf136;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM605 763q-114 -2 -187 -121q-49 12 -94.5 -3t-75 -50.5t-46 -81t-11 -99.5t33.5 -100h738q36 31 43.5 76
t-8.5 83.5t-53 64t-83 20.5q-24 91 -98 152t-159 59z" />
<glyph glyph-name="uniF137" unicode="&#xf137;"
d="M984 500q45 4 86 -12t68.5 -45t44 -68.5t17.5 -80t-16 -81.5t-51 -72h-1083q-26 43 -38.5 91.5t-11.5 94t12 90t33 81.5t51.5 68t67 48t80 23.5t90.5 -5.5q32 53 72 91t82 57t86.5 26t88 -1t85 -25.5t79 -46.5t68 -64.5t53.5 -79t36 -89.5z" />
<glyph glyph-name="uniF138" unicode="&#xf138;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM543 841l-11 -111q-34 -9 -64 -26l-86 70l-81 -81l70 -86q-17 -30 -26 -64l-111 -11v-114l111 -11
q9 -34 26 -64l-70 -86l81 -81l86 70q30 -17 64 -26l11 -111h114l11 111q34 9 64 26l86 -70l81 81l-70 86q17 30 26 64l111 11v114l-111 11q-9 34 -26 64l70 86l-81 81l-86 -70q-30 17 -64 26l-11 111h-114zM600 581q44 0 75 -31t31 -75t-31 -75t-75 -31t-75 31t-31 75t31 75
t75 31z" />
<glyph glyph-name="uniF139" unicode="&#xf139;"
d="M506 1075h188l18 -181q55 -15 105 -44l141 116l133 -133l-116 -141q29 -50 44 -105l181 -18v-188l-181 -18q-15 -56 -44 -105l116 -141l-133 -133l-141 116q-50 -29 -105 -44l-18 -181h-188l-18 181q-56 15 -105 44l-141 -116l-133 133l116 141q-29 49 -44 105l-181 18
v188l181 18q15 55 44 105l-116 141l133 133l141 -116q49 29 105 44zM600 648q-72 0 -122.5 -50.5t-50.5 -122.5t50.5 -122.5t122.5 -50.5t122.5 50.5t50.5 122.5t-50.5 122.5t-122.5 50.5z" />
<glyph glyph-name="uniF13A" unicode="&#xf13a;"
d="M910 984l85 -9v-83q24 -9 45 -24l69 45l54 -66l-59 -59q11 -23 15 -49l81 -17l-9 -85h-83q-9 -24 -24 -45l45 -70l-66 -53l-59 59q-23 -11 -49 -15l-17 -81l-85 9v83q-24 9 -45 24l-69 -45l-54 66l59 58q-11 24 -15 50l-81 17l9 85l83 -1q9 25 24 46l-45 69l66 54l59 -59
q23 11 49 15zM924 787q-30 0 -52.5 -20.5t-26.5 -50.5q-3 -32 17.5 -57.5t53 -29t58 17t28.5 53.5q3 21 -5.5 40t-25.5 31.5t-39 14.5q-3 1 -8 1zM315 780h117l11 -113q35 -9 66 -27l88 72l82 -83l-72 -88q18 -30 27 -65l113 -11v-117l-113 -12q-9 -34 -27 -65l72 -88
l-82 -82l-88 71q-31 -17 -66 -27l-11 -112h-117l-11 112q-35 9 -66 27l-87 -71l-83 82l72 88q-18 31 -27 65l-113 12v117l113 11q9 35 27 65l-72 88l83 83l87 -72q31 18 66 27zM373.5 514q-44.5 0 -76 -31.5t-31.5 -76.5t31.5 -76.5t76 -31.5t76.5 31.5t32 76.5t-32 76.5
t-76.5 31.5zM869 370l60 -7v-60q17 -7 32 -18l48 33l38 -48l-41 -43q7 -17 10 -36l57 -13l-6 -62h-58q-7 -18 -18 -33l32 -51l-46 -39l-41 43q-17 -8 -35 -11l-12 -59l-60 7v60q-17 7 -32 18l-48 -33l-38 49l41 42q-7 18 -10 37l-57 12l6 62h58q7 18 18 33l-32 51l46 39
l42 -43q16 8 34 11zM879 226q-21 0 -37 -15t-18 -37q-3 -24 11.5 -42.5t37.5 -21t41 12.5t20.5 39t-12 42.5t-37.5 21.5h-6z" />
<glyph glyph-name="uniF13B" unicode="&#xf13b;"
d="M0 1014h1024v-729h-484l-329 -211v211h-211v729zM1072 854h82h46v-46v-612v-45h-46h-131v-132v-83l-71 45l-264 170h-271l143 91h141h14l11 -7l205 -132v93v46h46h131v520h-36v92z" />
<glyph glyph-name="uniF13C" unicode="&#xf13c;"
d="M0 1026h1200v-855h-567l-386 -247v247h-247v855z" />
<glyph glyph-name="uniF13D" unicode="&#xf13d;"
d="M175.5 50.5q-115.5 115.5 -156 270t0 309t156 270t270 156t309 0t270 -156t156 -270t0 -309t-156 -270t-270 -156t-309 0t-270 156zM271 116l427 261l261 427l-30 30l-426 -262l-262 -426z" />
<glyph glyph-name="uniF13E" unicode="&#xf13e;"
d="M175.5 50.5q-115.5 115.5 -156 270t0 309t156 270t270 156t309 0t270 -156t156 -270t0 -309t-156 -270t-270 -156t-309 0t-270 156zM234.5 109.5q74.5 -74.5 171 -113.5t194.5 -39t194.5 39t171.5 113q99 100 134.5 233t0 266t-135 232.5t-232.5 135t-266 0t-233 -134.5
q-74 -75 -113 -171.5t-39 -194.5t39 -194.5t113.5 -171zM293 141l-27 27l243 398l398 243l27 -27l-243 -398z" />
<glyph glyph-name="uniF13F" unicode="&#xf13f;"
d="M-2 872h1204v-249h-1204v249zM-2 509h1204v-431h-1204v431zM130 319v-137h453v137h-453z" />
<glyph glyph-name="uniF140" unicode="&#xf140;"
d="M0 1051h1200v-927l-600 -225l-600 225v927zM287 683q-67 0 -112 -41.5t-45 -114.5q1 -68 42 -113t115 -44q32 0 57.5 7t45.5 22t31 40t12 59h-90q0 -53 -57 -56q-27 1 -42 21t-14 49q0 4 -0.5 14.5t0 14t1 12.5t2 14t4 11.5t6.5 12.5q11 14 30.5 18t36.5 -2
q30 -13 30 -54h93q0 63 -39.5 96t-106.5 34zM612 683q-25 0 -47 -4.5t-42.5 -14.5t-32.5 -30t-14 -48q1 -69 90 -91q3 -1 20.5 -4t30.5 -6.5t25 -10t13 -14.5q0 -21 -43 -21q-22 0 -35.5 8.5t-12.5 30.5h-92q0 -32 11.5 -54t33.5 -33.5t47 -16t57 -4.5q27 0 49.5 5.5t42 17
t30.5 33t12 50.5q-1 34 -26.5 55.5t-64.5 30.5q-4 0 -16 2.5t-23 4.5t-22.5 5.5t-18.5 9.5t-8 13q0 19 40 20q16 0 27.5 -7.5t11.5 -23.5v-1h91v5q-1 47 -41 70.5t-93 22.5zM930 683q-20 0 -38 -2.5t-35.5 -9t-30.5 -17.5t-21.5 -28t-9.5 -40q0 -69 89 -91q3 -1 21 -4
t30.5 -6t24.5 -10t13 -15q0 -25 -63 -19q-29 5 -28 37h-92q0 -32 11.5 -54t33.5 -33.5t47 -16t57 -4.5q57 0 95 25t39 81q-1 21 -9 35q-19 35 -82 50q-3 1 -21 4.5t-30 6.5t-24 9.5t-13 15.5q0 19 40 20q16 0 28 -8t11 -24h91q0 50 -38.5 74t-95.5 24z" />
<glyph glyph-name="uniF141" unicode="&#xf141;"
d="M600 880q122 0 233 -47.5t191.5 -128t128 -191.5t47.5 -233q0 -109 -38 -210h-164q52 98 52 210q0 91 -35.5 174.5t-96 143.5t-143.5 96t-175 36t-175 -36t-143.5 -96t-96 -143.5t-35.5 -174.5q0 -112 52 -210h-164q-38 101 -38 210q0 122 47.5 233t128 191.5t191.5 128
t233 47.5zM600 644q31 0 53 -22t22 -53t-22 -53t-53 -22t-53 22t-22 53t22 53t53 22zM375 571q31 0 53 -22t22 -53.5t-22 -53t-53 -21.5q-20 0 -37.5 10t-27.5 27t-10 38q0 31 22 53t53 22zM825 571q31 0 53 -22t22 -53.5t-22 -53t-53 -21.5t-53 21.5t-22 53t22 53.5t53 22z
M600 423l59 -294v-59h-118v59z" />
<glyph glyph-name="uniF142" unicode="&#xf142;"
d="M0 1075h600v-600h-600v600zM600 475h600v-600h-600v600z" />
<glyph glyph-name="uniF143" unicode="&#xf143;"
d="M436 549l3 -230h-242q12 46 28 81t43 67t69 52.5t99 29.5zM435 608q-102 -13 -180.5 -44.5t-124.5 -69.5t-76 -86.5t-41 -91.5t-13 -89v-3h575v502h-142zM569 720v-490h-563q2 45 13 87t40.5 89.5t75 84.5t122.5 67t176 44l2 -47q-59 -10 -102 -31.5t-70.5 -54.5t-44 -69
t-27.5 -84l-1 -3h255l-6 407h130zM636 231l2 270q70 4 121 -10v-174l260 -2l-1 3q-14 60 -41.5 105.5t-62 71.5t-76.5 44t-86 23t-90 8.5t-88 -0.5v50q95 1 176.5 -8t150.5 -29t123 -51.5t91.5 -73.5t57.5 -96.5t21 -119.5v-11h-558zM630 225h570v3v15q-2 131 -81 219
t-217 127.5t-331 36.5h-3v-62h3q42 4 88 1t89 -8t85 -22t76 -42.5t61 -69.5t41 -102l-246 2v172l-2 1q-54 16 -128 11l-3 -1zM636 231l2 270q70 4 121 -10v-174l260 -2l-1 3q-14 60 -41.5 105.5t-62 71.5t-76.5 44t-86 23t-90 8.5t-88 -0.5v50q95 1 176.5 -8t150.5 -29
t123 -51.5t91.5 -73.5t57.5 -96.5t21 -119.5v-11h-558zM630 225h570v3v15q-2 131 -81 219t-217 127.5t-331 36.5h-3v-62h3q42 4 88 1t89 -8t85 -22t76 -42.5t61 -69.5t41 -102l-246 2v172l-2 1q-54 16 -128 11l-3 -1z" />
<glyph glyph-name="uniF144" unicode="&#xf144;"
d="M1123 700h-75v-150h-77h-294h-76v150h-77v-229h77v-442h223v220h77v-220h145v442h2h75v229zM677 919v-293h294v293h-294zM1200 771v-377h-77v-440h-599v440h-224v-145h72v-76h76v-219h-373v219h77v-144h220v144h-220v76h72v145h-149v77h372v300h1h153v225h447v-225h152z
M372 771v72h75v-72h-75zM75 771v-300h-75v300h75zM152 771h-77v72h77v-72zM372 843h-220v76h220v-76z" />
<glyph glyph-name="uniF145" unicode="&#xf145;"
d="M0 37h1200v-162h-1200v162zM821 1075v-497h276l-497 -462l-497 462h276v497h442z" />
<glyph glyph-name="uniF146" unicode="&#xf146;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 5q77 0 148.5 24t129 67.5t101 101t67.5 129t24 148.5q0 96 -37.5 182.5t-100.5 149.5t-149.5 100.5
t-182.5 37.5t-182.5 -37.5t-149.5 -100.5t-100.5 -149.5t-37.5 -182.5t37.5 -182.5t100.5 -149.5t149.5 -100.5t182.5 -37.5zM717 726v-267h147l-264 -248l-264 248h147v267h234z" />
<glyph glyph-name="uniF147" unicode="&#xf147;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 988q-62 0 -121 -14q106 -144 193 -301q182 71 269 186q-70 61 -157.5 95t-183.5 34zM382 939
q-109 -51 -184.5 -146t-100.5 -214q237 1 476 63q-17 30 -35 59.5t-40.5 63.5t-35.5 54.5t-41.5 63t-38.5 56.5zM998 799q-53 -64 -129 -117t-158 -86q5 -12 14.5 -32t17 -36.5t13.5 -31.5q178 18 357 -18q-1 181 -115 321zM614 562q-250 -71 -527 -72v-15
q0 -97 34.5 -185.5t97.5 -157.5q33 61 82 114.5t110 95.5t117.5 72.5t127.5 61.5q-6 13 -13.5 28.5l-15 31t-13.5 26.5zM1111 432v-6v6zM885 422q-52 0 -99 -7q22 -56 41.5 -124.5t30 -113t28.5 -128.5q88 59 146 149t75 196q-110 29 -222 28zM1109 413q0 -6 -1 -9q1 3 1 9z
M691 392q-127 -43 -231.5 -126t-174.5 -196q139 -108 315 -108q105 0 200 41q-39 208 -109 389z" />
<glyph glyph-name="uniF148" unicode="&#xf148;"
d="M0 1075h776l-197 -197h-382v-382v-424h424h382v382l197 197v-776h-776h-424v424v776zM1050 1075l150 -150l-77 -77l-150 150zM937 962l150 -150l-440 -440l-150 150zM442 453q49 0 88 -37q47 -45 47 -106h-142v142q5 1 7 1z" />
<glyph glyph-name="uniF149" unicode="&#xf149;"
d="M600 1010l600 -647h-1200zM0 249h1200v-309h-1200v309z" />
<glyph glyph-name="uniF14A" unicode="&#xf14a;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM293 707v-86l307 -175l307 175v86h-614zM293 566v-254l156 164zM907 566l-156 -90l156 -164v254zM492 452
l-199 -209h614l-199 209l-108 -62z" />
<glyph glyph-name="uniF14B" unicode="&#xf14b;"
d="M0 929h1200v-169l-600 -342l-600 342v169zM0 652l306 -174l-306 -321v495zM1200 652v-495l-306 321zM390 430l210 -120l210 120l390 -409h-1200z" />
<glyph glyph-name="uniF14C" unicode="&#xf14c;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM197 636v-322h806v322h-806z" />
<glyph glyph-name="uniF14D" unicode="&#xf14d;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 911q-71 0 -137.5 -22t-120 -62.5t-94 -94t-62.5 -120t-22 -137.5t22 -137.5t62.5 -120t94 -94t120 -62.5
t137.5 -22q89 0 169.5 34.5t139 93t93 139t34.5 169.5t-34.5 169.5t-93 139t-139 93t-169.5 34.5zM281 593h638v-236h-638v236z" />
<glyph glyph-name="uniF14E" unicode="&#xf14e;"
d="M755 876q-98 0 -162 -57q-63 -57 -82 -164h324v-142h-336l-1 -28v-38l1 -26h285v-143h-271q41 -196 258 -196q115 0 221 46v-206q-93 -47 -236 -47q-197 0 -324 107t-160 296h-110v143h95q-3 18 -3 50l2 42h-94v142h107q30 194 160 307t326 113q151 0 283 -66l-79 -186
q-56 25 -104 38q-48 15 -100 15v0z" />
<glyph glyph-name="uniF14F" unicode="&#xf14f;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM382 957l94 -661h248l94 661h-436zM602.5 251q-53.5 0 -91.5 -37.5t-38 -91.5q0 -35 17.5 -64.5t47 -47
t64.5 -17.5q54 0 91.5 38t37.5 91.5t-37.5 91t-91 37.5z" />
<glyph glyph-name="uniF150" unicode="&#xf150;"
d="M670 801l108 184l98 -60l-552 -960l-102 60l75 131l-8 4q-125 64 -212 154q-76 87 -77 132q7 58 77 132q95 96 212 154q153 73 311 74q35 -1 70 -5zM903 736q1 -1 2.5 -1.5l3 -1t2.5 -1.5q125 -63 212 -154q76 -87 77 -132q-7 -57 -77 -132q-95 -96 -212 -154
q-154 -73 -311 -73q-31 0 -70 4l50 86q17 -1 20 -1q117 0 200 79t83 191q0 89 -55 160zM600 717q-117 0 -200 -79.5t-83 -191.5q0 -89 55 -160l58 101q-10 29 -10 59q0 62 40.5 109.5t101.5 59.5l58 101q-10 1 -20 1zM769 504q11 -29 11 -58q0 -61 -40.5 -108.5
t-101.5 -59.5z" />
<glyph glyph-name="uniF151" unicode="&#xf151;"
d="M780 475.5q0 -71.5 -53 -122.5t-127.5 -51t-127 51t-52.5 122.5t52.5 122t127 50.5t127.5 -50.5t53 -122zM600 834q164 -2 311 -73q125 -64 212 -154q76 -87 77 -132q-7 -58 -77 -132q-95 -96 -212 -154q-154 -73 -311 -73q-164 2 -311 73q-125 64 -212 154
q-76 87 -77 132q7 58 77 132q95 96 212 154q153 73 311 73zM600 745q-117 0 -200 -79t-83 -191t83 -191t200 -79t200 79t83 191t-83 191t-200 79z" />
<glyph glyph-name="uniF152" unicode="&#xf152;"
d="M0 1075h1200v-1200h-1200v1200zM863 918q-39 0 -69 -12q-118 -46 -118 -185v-131h-111v-152h111v-423h158v423h156l7 152h-163v112q1 26 7 40.5t19.5 21t36.5 5.5h96l4 142q-71 7 -107 7q-14 1 -27 0z" />
<glyph glyph-name="uniF153" unicode="&#xf153;"
d="M0 940h930v-391l270 391v-930l-270 391v-391h-930v930z" />
<glyph glyph-name="uniF154" unicode="&#xf154;"
d="M0 -125v1200h200v-550l500 500v-500l500 500v-1100l-500 500v-500l-500 500v-550h-200z" />
<glyph glyph-name="uniF155" unicode="&#xf155;"
d="M1200 1075v-1200h-200v550l-500 -500v500l-500 -500v1100l500 -500v500l500 -500v550h200z" />
<glyph glyph-name="uniF156" unicode="&#xf156;"
d="M600 1075q105 0 193.5 -51.5t140 -140.5t51.5 -193q0 -93 -40.5 -173.5t-111.5 -134.5t-160 -71v-124h166v-147h-166v-165h-146v165h-166v147h166v124q-135 26 -223.5 132.5t-88.5 246.5q0 104 51.5 193t140 140.5t193.5 51.5zM600 922q-96 0 -164 -68t-68 -164
q0 -64 31 -117.5t84.5 -84.5t116.5 -31t116.5 31t84.5 84.5t31 117.5q0 96 -68 164t-164 68z" />
<glyph glyph-name="uniF157" unicode="&#xf157;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM497 786l-118 -113v-38h157v151h-39zM590 786v-203h-211v-419h442v622h-231z" />
<glyph glyph-name="uniF158" unicode="&#xf158;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM457 854l-143 -138v-620h537v242l-66 -67v-109h-405v507h125v119h280v-172l-198 -198l-59 -182l181 59
l289 289l-122 123l-25 -25v172h-394zM618 387l61 -61l-91 -30z" />
<glyph glyph-name="uniF159" unicode="&#xf159;"
d="M285 1075h624v-272l39 39l194 -194l-458 -457l-287 -94l93 287l314 314v273h-443v-188h-198v-804h641v173l105 105v-382h-851v982zM539 336l-47 -144l144 47z" />
<glyph glyph-name="uniF15A" unicode="&#xf15a;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM449 853l-132 -128v-575h354v61h-293v471h116v110h259v-183h62v244h-366zM726 555v-146h-146v-113h146v-146
h113v146h146v113h-146v146h-113z" />
<glyph glyph-name="uniF15B" unicode="&#xf15b;"
d="M256 1075h624v-417h-105v313h-443v-188h-197v-804h500v-104h-605v982zM728 566h193v-249h249v-193h-249v-249h-193v249h-249v193h249v249z" />
<glyph glyph-name="uniF15C" unicode="&#xf15c;"
d="M401 1075h76v-292h-302v74zM580 1075h445v-1200h-850v809h405v391z" />
<glyph glyph-name="uniF15D" unicode="&#xf15d;"
d="M71 1075h1058v-1200h-1058v1200zM125 1003v-99h130v99h-130zM945 1003v-99h130v99h-130zM311 996v-524h578v524h-578zM125 781v-99h130v99h-130zM945 781v-99h130v99h-130zM125 560v-99h130v99h-130zM945 560v-99h130v99h-130zM311 435v-523h578v523h-578zM125 338v-99
h130v99h-130zM945 338v-99h130v99h-130zM125 117v-99h130v99h-130zM945 117v-99h130v99h-130z" />
<glyph glyph-name="uniF15E" unicode="&#xf15e;"
d="M0 1075h1200l-416 -416v-483l-368 -301v784z" />
<glyph glyph-name="uniF15F" unicode="&#xf15f;"
d="M382 -125q-180 101 -241 206t-33 243q11 53 41.5 120.5t55.5 131t28 120.5q29 -53 42.5 -96t16.5 -97q93 114 148 263.5t58 308.5q13 -8 34.5 -22t77.5 -61.5t99.5 -98t82 -128.5t44.5 -157q22 47 27 104t-13 106q15 -12 39.5 -37t56.5 -66t62.5 -89.5t53.5 -109
t34.5 -122.5t1 -130.5t-42.5 -133.5t-101 -131.5t-169 -123.5q43 84 50.5 182.5t-17 190t-78.5 173.5t-129 134q3 -21 3.5 -54.5t-7 -80.5t-18.5 -92t-32 -90t-47 -73q11 83 5.5 136t-17.5 78l-11 25q-1 -4 -2.5 -11t-8 -28.5t-14.5 -42.5t-23.5 -51t-33.5 -56
q-26 -38 -40 -69t-22.5 -72.5t1.5 -91t38 -107.5z" />
<glyph glyph-name="uniF160" unicode="&#xf160;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM410 814q-75 0 -149 -43v-635h90v310q55 16 102.5 11t94 -18.5t86.5 -33t80.5 -33.5t76.5 -20t74.5 7.5
t73.5 48.5v363q-60 -39 -118.5 -49t-109.5 3.5t-97 33t-101 37t-103 18.5z" />
<glyph glyph-name="uniF161" unicode="&#xf161;"
d="M0 999q76 44 150 62t138 13.5t127.5 -22t123.5 -42t120.5 -48t124 -39t127.5 -17t138.5 21t150.5 71.5v-643q-49 -49 -101 -74t-102.5 -27t-102.5 9.5t-107 33.5t-110 47t-117 47.5t-123.5 37t-134 14t-143.5 -19.5v-549h-159v1124z" />
<glyph glyph-name="uniF162" unicode="&#xf162;"
d="M0 1075h1200v-1200h-1200v1200zM355 701q-94 0 -160 -66t-66 -160q0 -61 30 -113.5t82 -82.5t113.5 -30t114 30t82.5 82.5t30 113.5q0 94 -66 160t-160 66zM845 701q-94 0 -160 -66t-66 -160t66 -160t160 -66t160 66t66 160t-66 160t-160 66z" />
<glyph glyph-name="uniF163" unicode="&#xf163;"
d="M249 957h259l84 -108h608v-144h-1200v144h165zM0 664h1200v-671h-1200v671z" />
<glyph glyph-name="uniF164" unicode="&#xf164;"
d="M249 957h259l84 -108h402v-144h-870l-124 -466v610h165zM0 58l175 606h1025l-206 -671h-994v65z" />
<glyph glyph-name="uniF165" unicode="&#xf165;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM391 763l-50 -64h-99v-512h716v512h-363l-50 64h-154z" />
<glyph glyph-name="uniF166" unicode="&#xf166;"
d="M249 957h259l84 -108h608v-856h-1200v856h165z" />
<glyph glyph-name="uniF167" unicode="&#xf167;"
d="M335 312l218 564l217 -564h-435zM0 -118v84h104l423 1102h133l423 -1102h117v-84h-431v84h132l-100 261h-498l-100 -261h131v-84h-334v0z" />
<glyph glyph-name="uniF168" unicode="&#xf168;"
d="M1041 282q-18 29 -45 37q-68 22 -103 -16q-21 -27 -21.5 -63.5t21.5 -60.5q34 -29 80 -21t68 41v83zM1140 613q60 -55 60 -156v-389q0 -8 -6 -13.5t-13 -5.5h-121q-7 0 -13 6t-6 13v11q-58 -44 -133 -44q-79 2 -134 53q-61 61 -62 154q3 101 62 156q58 48 134 49
q80 0 133 -42v37q0 88 -92 88q-72 0 -130 -60q-8 -7 -17.5 -5t-13.5 10l-48 82q-6 13 4 23q44 43 101 66q49 17 102.5 20.5t105.5 -9.5t87 -44zM353 677l-85 -302h170zM705 82q2 -8 2 -10q0 -9 -5.5 -14t-13.5 -5h-1h-150q-14 0 -18 14l-42 148h-247l-42 -148
q-4 -14 -20 -14h-148q-24 2 -19 24l251 824q5 14 19 14h165q14 0 19 -14z" />
<glyph glyph-name="uniF169" unicode="&#xf169;"
d="M42 139h186v172q0 88 78 165q57 56 249 191q37 26 83 57.5t69.5 48t46.5 33t35 27.5q25 22 28 29t3 40v171v2h148v-2v-171q0 -50 -21 -97t-60 -82q-23 -21 -53.5 -43t-93 -64.5t-100.5 -69.5q-182 -127 -230 -175q-26 -25 -30 -33t-4 -27v-172h194l-264 -264zM630 139
h190v172q0 11 -0.5 14.5t-3.5 10.5t-9.5 14t-20.5 21q-33 32 -125 100q3 1 10 6.5t12 8.5q30 21 108 73q63 -48 99 -83q78 -77 78 -165v-172h190l-264 -264z" />
<glyph glyph-name="uniF16A" unicode="&#xf16a;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM300 700v-450l300 225zM675 700v-450l300 225z" />
<glyph glyph-name="uniF16B" unicode="&#xf16b;"
d="M573 -125v545l-546 -545v1200l546 -545v545l600 -600z" />
<glyph glyph-name="uniF16C" unicode="&#xf16c;"
d="M0 1075h1010l-274 -376l-82 82q-20 17 -41.5 17t-39.5 -17l-20 -21q-5 8 -11 16q-5 8 -12 16q-77 84 -184 85q-90 -2 -157 -58q-75 -70 -84 -166q-5 -103 57 -175q72 -78 166 -84l245 -245q21 -17 42.5 -17t38.5 17l276 276q17 19 17 41t-16 38l269 227v-856h-1200v1200z
M1068 1075h132v-282l-580 -488q-4 -4 -10 -4h-4q-3 0 -7 4l-184 148h-2h-1q-32 -12 -67 -12q-80 0 -136.5 57t-56.5 137t56.5 137t137 57t137 -57t56.5 -137q0 -39 -15 -74v-2v-2q31 -42 49 -66q21 -26 23 -27q4 -7 13 -7t15 8z" />
<glyph glyph-name="uniF16D" unicode="&#xf16d;"
d="M0 1075h1200v-1200h-1200v1200zM809 910q-72 0 -132 -32q-96 35 -180 29q-122 -12 -179.5 -69.5t-65.5 -155.5q-13 -1 -21.5 -3t-18.5 -9t-16.5 -18t-11 -31t-4.5 -47q-1 -38 3.5 -64.5t15.5 -40.5t21 -20t27 -12l2 -314q1 -4 2 -16t2 -16.5t4 -14.5t8.5 -15t14 -11
t21.5 -9.5t31 -5.5l126 -3q70 -9 96 91q9 -84 74 -86h147q3 1 13 3.5t13 3.5t11.5 4t11.5 6t9 8.5t8.5 11.5t5 15.5t3.5 20.5l3 327l39 -2q15 2 24 4.5t21.5 8.5t22 18t17.5 31v98q-2 14 -6 22.5t-6.5 11t-8 5.5t-8.5 5h5q14 4 21.5 6.5t18 10.5t17.5 24t11 41l-3 80
q1 38 -22 60.5t-75 36.5q-81 12 -112 12zM516 833q38 1 107 -21l2 -95q-6 2 -18 6.5t-16.5 6t-16 4.5t-15 2.5t-13.5 0.5q-19 1 -32.5 -2.5t-21.5 -9t-12.5 -15.5t-6.5 -18t-3 -21v-67l169 -2q1 12 1 34v36t2.5 34t7 33.5t13.5 29.5t22.5 26t34.5 18t48 12q95 13 169 -19
l-2 -100q-27 21 -88 29q-26 4 -42 -2.5t-22 -20t-8.5 -31.5t-1 -37.5t-0.5 -38.5h122v-89h-122l1 -405l-135 4v401l-175 -4v-397h-135l4 397h-66l-2 101l72 -4l-2 27v14q1 20 2 31t4 31t8 32.5t15.5 29.5t24 27t35 19t48.5 12q10 -1 25 0t19 1z" />
<glyph glyph-name="uniF16E" unicode="&#xf16e;"
d="M886 1075q42 0 152 -16q72 -19 103 -50t30 -83l3 -109q-5 -34 -14 -56t-23.5 -33t-25 -14.5t-29.5 -8.5q-4 0 -6 -1q3 -2 8.5 -5t9 -5.5t8 -8t7.5 -15.5t6 -26v-134q-11 -25 -24.5 -41.5t-30.5 -25t-29 -11.5t-33 -6l-53 3l-3 -447q-1 -15 -5 -27.5t-7.5 -21t-11.5 -16
t-12.5 -11.5t-16 -8.5t-15.5 -5.5t-17.5 -4.5t-16.5 -4.5h-201q-90 2 -102 116q-35 -135 -131 -123l-172 4q-21 2 -38 6.5t-28 9.5t-19 13.5t-12.5 15t-7.5 18t-4 18t-2 20t-2 18.5l-4 430q-17 6 -28.5 12t-25 19t-21 31.5t-12.5 50.5t-4 74q0 27 3.5 48.5t8.5 36.5t13 26
t15 17.5t18 10.5t19.5 6t20.5 3q11 133 90 212t245 94q70 6 127 -5t120 -33q81 43 180 43zM486 970q-6 0 -26.5 -1.5t-33.5 -0.5q-29 -3 -53.5 -11.5t-42 -18t-32 -24.5t-23.5 -28t-16 -33t-10.5 -33t-5.5 -35l-3 -33t-1 -32q-1 -13 -1 -19l2 -37l-97 5l3 -137h89l-5 -543
h185v543l239 5v-548l184 -5l-2 553h167v122h-167q0 21 0.5 43t0.5 43.5t5.5 39.5t15 31t30 18.5t50.5 1.5q83 -11 119 -40l3 137q-101 43 -231 26q-37 -5 -65.5 -16.5t-46.5 -25.5t-30.5 -35t-18.5 -39.5t-9.5 -46t-3.5 -47v-49t-1 -46.5l-232 2v92q3 23 6.5 36t14 28
t31 21.5t53.5 4.5q4 2 15 0.5t16.5 -2.5t17 -4.5t18.5 -6t19.5 -7.5t20.5 -7l-3 129q-94 31 -145 30z" />
<glyph glyph-name="uniF16F" unicode="&#xf16f;"
d="M0 1075h410l-142 -144l332 -332l332 332l-146 144h414v-410l-144 142l-332 -332l332 -332l144 146v-414h-410l142 144l-332 332l-332 -332l146 -144h-414v410l144 -142l332 332l-332 332l-144 -146v414z" />
<glyph glyph-name="uniF170" unicode="&#xf170;"
d="M676 1075q158 0 316 -66l-76 -186q-127 51 -220 51q-63 0 -97 -36t-34 -103v-156h304v-177h-304v-116q0 -138 -122 -201h581v-210h-848v201q83 35 114 81q32 47 32 127v118h-144v177h144v158q0 162 92 250q93 88 262 88v0z" />
<glyph glyph-name="uniF171" unicode="&#xf171;"
d="M751 703h390v-301h-75v-527h-932v527h-75v301h428l-188 151l226 150l84 -254l146 325l226 -226zM774 976l-123 -271l242 153zM495 916l-101 -66l167 -134zM525 -50v476h-316v-476h316zM525 477v151h-391v-151h391zM991 -50v476h-316v-476h316zM1066 477v151h-391v-151
h391z" />
<glyph glyph-name="uniF172" unicode="&#xf172;"
d="M1024 777h114v-127q-7 0 -24.5 1.5t-33.5 1.5h-56v-245q0 -88 57 -88q41 0 74 23v-132q-49 -26 -117 -26q-96 0 -133 68q-27 51 -27 162v235h1v3l-20 1q-17 0 -44 -4v127h64v52q0 36 -4 59h152q-3 -25 -3 -57v-54zM603 194q3 26 3 89v409q0 62 -3 85h149q-3 -25 -3 -82
v-404q0 -67 3 -97h-149zM274 784q64 0 119 -32q63 0 146 32v-135q-18 -7 -53 -15q11 -30 11 -56q0 -84 -50.5 -146.5t-130.5 -74.5q-53 -8 -53 -56q0 -18 17 -35q23 -25 66 -31q188 -29 188 -156q0 -204 -243 -204q-100 0 -164 35q-82 45 -82 141q0 110 122 151v3
q-44 27 -44 84q0 73 42 92v2q-42 15 -75 66q-37 55 -37 118q0 95 67 158q64 59 154 59zM279 663q-83 0 -83 -97q0 -91 83 -91q80 0 80 92q0 38 -18 66q-23 30 -62 30zM288 128q-106 0 -106 -69q0 -68 115 -68q101 0 101 70q0 67 -110 67zM769 977q0 -26 -12 -49t-33 -36
t-46 -13t-46 13t-33 36t-12 49q0 41 26.5 69.5t64.5 28.5t64.5 -28.5t26.5 -69.5z" />
<glyph glyph-name="uniF173" unicode="&#xf173;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 1010q-109 0 -208 -42.5t-170.5 -114t-114 -170.5t-42.5 -208t42.5 -208t114 -170.5t170.5 -114
t208 -42.5t208 42.5t170.5 114t114 170.5t42.5 208t-42.5 208t-114 170.5t-170.5 114t-208 42.5zM335 853q76 -4 135 -53q117 32 246 2q15 13 49 30.5t85 20.5q11 -27 14.5 -61.5t-4.5 -65.5q55 -56 58 -151q-1 -74 -27 -124t-91 -81q-46 -21 -117 -27q32 -16 47 -34t19 -55
q2 -22 2 -72.5t2 -72.5q5 -11 15.5 -19t17.5 -12t4 -10.5t-19 -7.5q-40 0 -63 29q-7 11 -7 27v112q0 20 -9 28t-19 11v-148q0 -40 10 -52q9 -12 12 -22q0 -4 -5.5 -5t-20.5 3q-29 7 -41 32t-12 52v145h-30v-145q0 -27 -12 -52q-7 -14 -25 -24t-37 -11q-5 1 -5 5t2.5 7.5
t5.5 8t5 6.5q2 5 5.5 19t3.5 33v148q-9 -3 -17.5 -11t-8.5 -28v-112q0 -16 -7 -27q-21 -28 -63 -29q-16 1 -19 7q-2 5 2 9t11 8t8 6q11 8 16 19q6 10 3 49.5t-1 52.5q-33 -11 -65 -4.5t-60 25.5q-19 17 -37 54q-14 26 -56 60q-5 4 0 8q8 10 22.5 8.5t16.5 -3.5
q16 -7 36.5 -32.5t30.5 -33.5q26 -21 57 -24t60 16q3 12 8 21t16 16.5t17.5 10.5t24.5 12q-76 5 -124 25t-76 51q-38 43 -46.5 111t11.5 124q14 35 39 63q-19 59 7 134z" />
<glyph glyph-name="uniF174" unicode="&#xf174;"
d="M0 1027h1200l-504 -503v-494h185v-107h-562v107h185v494z" />
<glyph glyph-name="uniF175" unicode="&#xf175;"
d="M1119 482h-387l50 -228h313zM466 482h-386l24 -228h312zM1189 549q13 -14 11 -31l-34 -307q-3 -16 -13.5 -26t-24.5 -10h-376q-32 2 -37 32l-61 267q-47 30 -110 3l-60 -270q-8 -32 -37 -32h-376q-16 1 -26 11t-11 25l-34 307q-2 18 9 31l433 222q16 7 29.5 1.5
t20.5 -19.5q6 -15 1.5 -31t-18.5 -22l-274 -124h793l-274 124q-15 8 -20 23.5t2 29.5q8 15 22.5 20t28.5 -2z" />
<glyph glyph-name="uniF176" unicode="&#xf176;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM595 921q-73 0 -139 -21q32 -17 73.5 -31t82.5 -14q29 -1 61 20q33 22 91 10q10 -2 16 -3q-42 19 -88 29
t-97 10zM336 830q-7 0 -14 -1q-68 -52 -113 -125t-58 -161q24 -34 55 -52.5t79 -34.5t68 -25q6 -8 19 -18t17 -14q0 -6 -3 -18q-2 -25 2 -46.5t10 -33.5t19 -33.5t19 -33.5q3 -7 1 -16q-2 -20 -10.5 -78.5t-10.5 -90.5q49 -29 92 -31q5 9 9 21q5 10 11.5 25t16.5 33
q0 18 5.5 31t11.5 22q7 9 16 17q24 16 43 35.5t22 30.5q10 37 10 84q0 12 -9.5 21.5t-24.5 18.5q-21 9 -55 41.5t-52 39.5q-19 8 -39 9.5t-37 -1.5t-39 -1q-5 7 -9 8q-12 5 -4 12q5 11 -2.5 14t-17.5 1q-9 27 -11 44q17 -14 29.5 -20.5t20.5 -9.5q10 -3 16 -2q13 3 15 21.5
t-2 52.5q4 5 5 10q5 20 12.5 26.5t7.5 8.5q4 0 4 2q5 4 20 6l12 2q5 2 11 4q10 5 5 13q-1 0 -1 0.5t-2 0.5q21 11 44 48q-16 24 -45 39q-8 12 -23 7q-7 0 -17 7t-14 9q-6 2 -15 4q-17 11 -32 25.5t-24 31.5q-6 13 -22 17q-11 3 -22 3zM884 817q-43 -5 -90 -19t-62 -35
q-14 -23 -20 -38q-2 -10 -4.5 -22t-3.5 -16.5t-3.5 -12t-7 -14t-11.5 -16.5q-4 -5 -4 -13t7 -23q6 -11 6 -21q36 2 46 12l84 -8q16 18 33.5 17.5t32.5 -17.5q10 -9 21 -30l-34 -24q-23 14 -39 21t-34 8.5t-28 1t-36.5 -3.5t-42.5 -5q-2 -5 -5 -10q-3 -3 -7 -6.5t-10 -5.5
q-1 -3 -1 -12q0 -3 -1 -7q-24 -35 -17 -78q6 -31 24 -48q11 -9 23 -13t22 -3t24 1t25 -3q10 -3 11 -5q-6 -15 -4 -24q1 -6 8 -24t7 -28q-1 -6 -2 -15t-1.5 -15.5t-0.5 -14.5t1 -15t3 -14q6 -13 16 -39.5t16 -38.5q5 -12 16 -14q24 -4 57 30q24 28 28 60q2 12 10 26
q7 15 11 30q2 8 0 16q15 28 15 47q0 12 2 18q2 3 11.5 11.5t13.5 13.5q7 27 3 37q-1 3 -6 5l-20 7q6 12 17.5 19t23.5 4l38 12v8q0 106 -43 195t-118 151z" />
<glyph glyph-name="uniF177" unicode="&#xf177;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM451 912q-75 -25 -140 -77q22 3 44 1q20 -8 45 -37.5t40 -38.5q5 -3 15 -4q4 -11 28 -15t27 -9q29 -15 45 -39
q-1 -1 -5.5 -7.5t-5.5 -8.5t-5 -7t-6.5 -7.5t-6 -6.5t-7 -6.5t-7.5 -4.5q0 -1 0.5 -1t0.5 -1q5 -8 -4 -13q-9 -3 -23.5 -6.5t-21 -6t-13.5 -11.5t-10 -25q-1 -5 -5 -10q4 -33 2 -58t-16 -28q-6 -1 -15 3q-9 2 -21.5 9t-30.5 21q1 -7 6 -18t6 -16h7q7 3 12.5 -2.5t0.5 -11.5
l-3 -6l-1 -3l8 -4q12 -10 22 -10.5t28 2.5q15 5 31.5 2.5t27 -6t24 -12.5t22.5 -16t22 -17.5t23 -17.5q4 -3 25 -15.5t32 -23.5t11 -24q-1 -32 -2 -45.5t-8 -34.5t-21 -36l-27.5 -22t-28 -25.5t-17.5 -27.5q-5 -13 -5 -32q-7 -11 -13.5 -24.5t-13 -28t-11.5 -23.5
q119 -23 232 15t194 126q60 64 91 144t34 166l-46 -28q-28 5 -29 -7l19 -8q5 -2 6 -5q4 -11 -5 -26q-7 -14 -35 -42q-2 -30 -6 -39q-4 -12 -10 -25v-16q-2 -10 -11 -28.5t-11 -28.5q-3 -33 -29 -61q-34 -34 -56 -30q-12 3 -17 14q-6 15 -18 43.5t-15 35.5q-4 11 -4 23
t2.5 28t2.5 23q1 12 -7 30t-9 24q-2 8 4 24q0 1 -10.5 3.5t-37.5 2.5h-10h-4q-54 0 -68 65q-7 42 17 80q1 3 1 9.5t1 9.5q11 2 20 21q9 1 25 3.5t30 4.5t29.5 3.5t29 0t22.5 -6.5q9 -6 18 -11q18 -11 30 -15l36 24q-12 20 -22 30q-34 39 -68 0l-83 8q-17 -13 -47 -13
q-2 13 -6 21q-8 16 -8.5 24t3.5 13t9 9q7 5 11 15t5.5 19t3.5 20.5t4 17.5q6 16 20 39q9 15 28 25t41.5 16.5t46.5 9.5t45 4q-44 38 -91 63q-13 1 -38 6t-35 6q-25 3 -58 -17q-25 -19 -61 -19q-44 0 -89 16t-78 33zM145 557q-10 -64 -3 -129t32 -128q35 -87 100 -152.5
t151 -101.5q2 22 6.5 81t9.5 92q-4 19 -27 61t-25 68q-1 25 1 36.5t2 17.5q-4 3 -11.5 9.5t-11.5 9.5q-9 9 -14 12q-12 5 -40 14.5t-40.5 14.5t-33 14t-36.5 20.5t-32.5 26.5t-27.5 34z" />
<glyph glyph-name="uniF178" unicode="&#xf178;"
d="M0 1075h1200v-326h-221v222h-96v-222h-222v-92h222v-224h96v224h221v-782h-532q23 88 -7 157q-31 69 -100 128q-33 29 -123 99q-46 33 -47 75q1 15 4.5 26.5t12 23t14 17.5t18.5 19q68 53 99 99q43 63 43 150q-1 79 -38 142q-23 40 -68 81h106l99 79h-370
q-89 0 -173 -27.5t-138 -79.5v211zM219 910q56 1 98 -31q81 -69 110 -187q22 -93 3 -154q-13 -35 -36 -61t-53 -35q-40 -12 -85 -7t-76 27q-76 59 -103 167q-19 83 -6 163q16 70 84 103q30 14 64 15zM0 429q107 -80 244 -63q-34 -81 1 -137q18 -27 35 -51q-25 -1 -61 -1
q-47 -2 -78.5 -5t-72 -15t-68.5 -33v305zM297 130q22 0 42 -3q16 -12 75.5 -53t88.5 -65q64 -56 65 -115q0 -11 -2 -19h-566v151q61 69 172 90q98 14 125 14z" />
<glyph glyph-name="uniF179" unicode="&#xf179;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM251 739v-528h698v528h-698zM337 654h526v-358h-526v358zM785 626l-90 -156l-42 88l-27 55l-33 -51l-73 -115
l-31 32l-22 23l-24 -21l-87 -72l44 -52l62 52l38 -40l30 -32l24 37l64 100l43 -92l28 -58l33 56l122 212z" />
<glyph glyph-name="uniF17A" unicode="&#xf17a;"
d="M0 929h1200v-908h-1200v908zM148 783v-616h904v616h-904zM917 734l102 -58l-210 -364l-55 -96l-48 100l-75 156l-111 -171l-40 -63l-51 54l-66 69l-107 -89l-75 90l149 124l42 35l38 -40l52 -54l127 197l56 89l46 -95l72 -151z" />
<glyph glyph-name="uniF17B" unicode="&#xf17b;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM599 741q-43 -2 -74 -30.5t-41 -68.5q-16 -55 9 -111q18 -36 49 -56l-45 -22l-118 -54q-18 -8 -18 -30v-110
q0 -14 1 -23.5t7.5 -18t19.5 -8.5h420q10 2 16 6.5t8 13.5t2 13v17v110q0 22 -17 29l-114 55l-48 23q44 28 60 90q8 36 -1 72q-6 22 -17 40.5t-26 32.5t-34 22t-39 8zM403 691q-44 -3 -70.5 -37.5t-26.5 -76.5q3 -71 53 -102l-133 -61q-14 -6 -14 -24v-105q1 -10 7 -18
t15 -8h88v110q0 22 10.5 39.5t28.5 26.5l89 41q12 7 19 17q-15 23 -23.5 50.5t-8.5 57.5q0 20 4 39t10 35q-21 16 -48 16zM797 691q-26 0 -51 -17q14 -36 14 -73q0 -59 -32 -107q10 -10 24.5 -19t25.5 -14t30 -13t28 -13q18 -9 29 -26.5t11 -39.5v-110h90q10 1 15.5 8.5
t6.5 17.5v105q0 17 -14 24l-130 62q49 36 50 101q-2 45 -29.5 79t-67.5 35z" />
<glyph glyph-name="uniF17C" unicode="&#xf17c;"
d="M597 887q77 0 132 -64t55 -155q0 -40 -12 -77t-33.5 -65.5t-49.5 -47.5l73 -35l176 -84q26 -14 26 -45v-202q0 -12 -4.5 -22.5t-14 -17.5t-23.5 -9h-649q-18 1 -29 15.5t-12 33.5v202q0 31 26 45l183 84l68 32q-29 18 -51.5 47.5t-35 67t-12.5 78.5q0 59 25 109.5t68 80
t94 29.5zM295 810q37 -1 75 -24q-27 -68 -20 -143t48 -139q-14 -16 -30 -25l-136 -65q-59 -27 -63 -100v-171h-136q-10 0 -17.5 5.5t-11 14.5t-4.5 20v161q0 29 21 37l205 95q-38 24 -59 66t-23 92q1 69 45 124q42 49 106 52zM904 810q60 -1 107 -52q43 -50 45 -124
q-1 -46 -21 -87t-59 -69l203 -97q21 -11 21 -37v-161q0 -16 -8.5 -27.5t-24.5 -12.5h-140v171q-1 67 -61 100l-131 62q-19 11 -36 31q39 60 46 133.5t-19 142.5q37 26 78 27z" />
<glyph glyph-name="uniF17D" unicode="&#xf17d;"
d="M624 689l-136 213q-6 12 -3.5 24t12.5 19q11 6 23 3.5t18 -12.5l136 -215q6 -11 3.5 -23.5t-12.5 -18.5q-11 -5 -23.5 -2t-17.5 12zM1195 649q23 -42 -58 -85q-33 2 -63 6.5t-54 8.5q-27 5 -50 10q-2 -13 -6.5 -27t-11.5 -29q-45 10 -89.5 29t-85 50.5t-63.5 69.5
l164 168l30 106l62 -77q10 -2 34.5 -7.5t37.5 -9.5t28.5 -14.5t21.5 -26.5q8 -12 15.5 -52.5t16.5 -52.5q14 -14 31 -25.5t40 -41.5zM579 293q-19 0 -59 7t-59 7q-33 4 -24 -30l54 -216q-1 -27 -14 -45t-34 -21q-19 -2 -37 11.5t-23 28.5l-70 272q-2 14 -15.5 13.5
t-17.5 -13.5l-64 -271q-6 -19 -20.5 -30.5t-33.5 -11.5q-27 0 -43.5 21t-11.5 46l78 320l7 194q-57 14 -110.5 48.5t-77.5 79.5q-7 16 -2.5 30t18.5 22q16 6 31.5 1.5t22.5 -15.5q23 -38 69.5 -62t86.5 -24h382q-38 -192 -33 -362zM673 633q95 -124 258 -158
q-5 -14 -15.5 -41t-15.5 -39q-5 -18 4 -51q36 -139 75 -282q5 -34 -19 -49t-52.5 -7.5t-35.5 29.5l-56 210q-12 21 -33 22t-28 -22l-50 -209q-12 -30 -41 -32.5t-50.5 16t-16.5 41.5l48 195q1 10 -2 20q2 226 30 357z" />
<glyph glyph-name="uniF17E" unicode="&#xf17e;"
d="M228 1075h415q33 -2 54.5 -24.5t22.5 -52.5v-186q17 -22 43 -47t52 -49.5t43 -45.5q22 -27 48 -42q25 -13 63 -18.5t70.5 -13t54.5 -27.5q18 -48 10 -94.5t-39 -85t-74 -53.5q-92 -32 -204 22q1 -66 -1 -329q-5 -68 -47 -111t-105 -43t-106.5 46.5t-44.5 107.5v129
q-38 7 -69 25q-81 -11 -143 42q-55 3 -93 23.5t-56 51.5t-25 73.5t-3 86t12 93.5t18.5 91.5t18 83.5t8.5 67v203q2 33 24.5 55t52.5 22zM228 798q-1 -18 -7 -50t-14.5 -66t-18 -74t-15.5 -78t-9 -75t3.5 -66.5t21 -50.5t44 -30t71.5 -3q18 -32 57 -42.5t69 9.5
q31 -32 65 -36.5t65 23.5q0 -58 0.5 -115t0.5 -115q1 -33 22 -54t51 -22q33 1 54 23t21 53q0 63 0.5 143t1 158.5t0.5 136.5q25 -3 63 -17.5t70 -26.5t66 -19t64.5 5.5t53.5 47.5q14 30 10 56q-3 5 -5.5 5.5t-8.5 2.5q-41 6 -61.5 10.5t-53 14t-56 25t-42.5 37.5
q-20 26 -57 58.5t-66.5 63t-44.5 65.5v3h-415z" />
<glyph glyph-name="uniF17F" unicode="&#xf17f;"
d="M1200 103q0 -20 -10 -37t-27.5 -28t-39.5 -12h-203q-23 -1 -59 -7.5t-72.5 -14.5t-79.5 -17t-83.5 -13.5t-80.5 -5t-73.5 9.5t-60 29t-43 54.5t-18.5 84.5q-53 62 -42 143q-19 31 -25 69h-129q-61 1 -107.5 44.5t-46.5 106.5t43 105t111 47q263 2 329 1q-54 112 -22 204
q12 32 37 58.5t57 40.5t68.5 16.5t70.5 -12.5q20 -22 27.5 -54.5t13 -70.5t18.5 -63q15 -26 42 -48q24 -19 69 -68t73 -70h186q20 -1 37 -10.5t28 -27t12 -39.5v-415zM923 103v415h-3q-35 15 -65.5 44.5t-63 66.5t-58.5 57q-22 19 -37.5 42.5t-25 56t-14 53t-10.5 61.5
q-2 6 -2.5 8.5t-5.5 5.5q-26 4 -56 -10q-35 -23 -47.5 -53.5t-5.5 -64.5t19 -66t26.5 -70t17.5 -63q-58 0 -136.5 -0.5t-158.5 -1t-143 -0.5q-15 0 -28.5 -5.5t-24 -15t-16.5 -24t-7 -30.5q1 -30 22 -51t54 -22q58 0 115 -0.5t115 -0.5q-28 -31 -23.5 -65t36.5 -65
q-20 -30 -9.5 -69t42.5 -57q-6 -42 3 -71.5t30 -44t50.5 -21t66.5 -3.5t75 9t78 15.5t74 18t66 14.5t50 7z" />
<glyph glyph-name="uniF180" unicode="&#xf180;"
d="M0 103v415q1 22 12 39.5t28 27t37 10.5h186q28 21 73 70t69 68q27 22 42 48q13 25 18.5 63t13 70.5t27.5 54.5q67 29 138 -3.5t95 -99.5q32 -92 -22 -204q66 1 329 -1q68 -5 111 -47t43 -105t-46.5 -106.5t-107.5 -44.5h-129q-7 -38 -25 -69q11 -81 -42 -143
q-3 -55 -23.5 -93t-51.5 -56t-73.5 -25t-86 -3t-93.5 12t-91.5 18.5t-83.5 18t-67 8.5h-203q-33 2 -55 24.5t-22 52.5zM277 103q18 -1 50 -7t66 -14.5t74 -18t78 -15.5t75 -9t66.5 3.5t50.5 21t30 44t3 71.5q32 18 42.5 57t-9.5 69q32 31 36.5 65t-23.5 65q58 0 115 0.5
t115 0.5q33 1 54 22t22 51q-1 33 -23 54t-53 21q-63 0 -143 0.5t-158.5 1t-136.5 0.5q3 25 17.5 63t26.5 70t19 66t-5.5 64.5t-47.5 53.5q-30 14 -56 10q-5 -3 -5.5 -5.5t-2.5 -8.5q-6 -41 -10.5 -61.5t-14 -53t-25 -56t-37.5 -42.5q-26 -20 -58.5 -57t-63 -66.5
t-65.5 -44.5h-3v-415z" />
<glyph glyph-name="uniF181" unicode="&#xf181;"
d="M228 -125q-30 0 -52.5 22t-24.5 55v203q-1 25 -8.5 67t-18 83.5t-18.5 91.5t-12 93.5t3 86t25 73.5t56 51.5t93 23.5q62 53 143 42q31 19 69 25v129q1 30 12.5 57.5t31 49t47.5 34.5t60 13q63 0 105 -43t47 -111q2 -263 1 -329q112 54 204 22q67 -24 99.5 -95t3.5 -138
q-22 -20 -54.5 -27.5t-70.5 -13t-63 -18.5q-26 -15 -48 -42q-19 -24 -68 -69t-70 -73v-186q-1 -10 -3.5 -19.5t-7 -17.5t-11.5 -15.5t-15.5 -12.5t-18.5 -8t-21 -4h-415zM228 152h415v3q12 27 33.5 53t43 44t48.5 43t43 47q19 22 42.5 37.5t56 25t53 14t61.5 10.5
q6 2 8.5 2.5t5.5 5.5q4 26 -10 56q-23 35 -53.5 47.5t-64.5 5.5t-66 -19t-70 -26.5t-63 -17.5q0 68 -1 214.5t-1 223.5q0 31 -21 53t-54 23q-30 -1 -51 -22t-22 -54q0 -58 -0.5 -115t-0.5 -115q-31 28 -65 23.5t-65 -36.5q-30 20 -69 9.5t-57 -42.5q-42 6 -71.5 -3t-44 -30
t-21 -50.5t-3.5 -66.5t9 -75t15.5 -78t18 -74t14.5 -66t7 -50z" />
<glyph glyph-name="uniF182" unicode="&#xf182;"
d="M240 985h720l240 -645l-96 -375h-1008l-96 375zM94 281l65 -257h882l65 257h-1012zM928 201q20 0 34 -14.5t14 -34t-14 -33.5t-34 -14t-34 14t-14 33.5t14 34t34 14.5z" />
<glyph glyph-name="uniF183" unicode="&#xf183;"
d="M1050 138v300q0 91 -35.5 174.5t-96 143.5t-143.5 96t-175 36t-175 -36t-143.5 -96t-96 -143.5t-35.5 -174.5v-300q-4 -38 -28 -56t-50.5 -15t-48.5 22.5t-23 48.5v300q0 122 47.5 233t128 191t191.5 128t233 48t233 -48t191.5 -128t128 -191t47.5 -233v-300
q-4 -38 -28 -56t-50.5 -15t-48.5 22.5t-23 48.5zM262 362h76q10 0 18.5 -5t13.5 -13.5t5 -18.5v-375q0 -16 -11 -27t-26 -11h-76q-15 0 -26 11t-11 27v375q0 16 11 26.5t26 10.5zM862 362h76q15 0 26 -10.5t11 -26.5v-375q0 -16 -11 -27t-26 -11h-76q-15 0 -26 11t-11 27
v375q0 16 11 26.5t26 10.5z" />
<glyph glyph-name="uniF184" unicode="&#xf184;"
d="M1160 1057q19 -23 19 -49.5t-19 -45.5l-164 -166q-23 -20 -49 -19.5t-46 19.5q-19 22 -19 49.5t19 45.5l165 166q21 18 48 18t46 -18zM340 326q21 18 48 18t46 -18q19 -22 19 -50t-19 -46l-300 -302q-23 -20 -48.5 -19.5t-45.5 19.5q-19 22 -19 49.5t19 45.5zM628 545
q-1 36 -26 60.5t-58 24.5q-36 -2 -60.5 -27t-24.5 -58q-1 -15 -7.5 -26.5t-17.5 -18t-25 -6.5q-23 1 -37 15.5t-14 35.5q3 81 55 133q57 54 131 54q78 -2 131 -54q54 -58 54 -133q-1 -23 -15 -37t-35 -14q-23 1 -36.5 15.5t-14.5 35.5zM544 928q75 -1 143.5 -30t118.5 -79
q52 -55 80 -124t29 -140q-2 -62 -14 -101t-43 -90q-10 -22 -28.5 -46t-39 -48.5t-31.5 -42.5q-7 -22 -8 -47t1 -57.5t1 -50.5q-1 -47 -18.5 -91.5t-47.5 -68.5q-63 -37 -137 -37q-26 2 -42 18.5t-17 41.5q-2 24 16 42q12 12 25 16.5t31 5.5t29 3q29 9 33 21q7 22 7 71
q1 18 0 45.5t-1 51t5 44.5q11 49 36 81q5 6 12 14t13.5 15.5t10.5 13.5q11 14 38 56q7 11 18.5 30.5t16.5 27.5q13 37 13 82q-4 107 -73 178q-78 73 -177 73q-106 -3 -177 -73q-73 -78 -74 -178q-2 -27 -18.5 -44t-40.5 -17q-27 2 -44 19t-17 42q1 76 29.5 144.5t78.5 119.5
q54 52 123 80.5t140 28.5z" />
<glyph glyph-name="uniF185" unicode="&#xf185;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM733 731q-37 0 -73 -14q-36 -19 -60 -51q-47 58 -124 64.5t-138 -46.5q-44 -47 -48.5 -119t26.5 -134
q56 -103 227 -233q3 -2 16 -12.5t22.5 -16.5t18.5 -8q14 2 60.5 37t80.5 68q69 58 113 119q39 52 52 113.5t-7 129.5q-23 49 -67.5 76.5t-98.5 26.5z" />
<glyph glyph-name="uniF186" unicode="&#xf186;"
d="M832 1029q73 1 139 -24t119 -73.5t84 -115.5l1 -3l1 -3q28 -84 23.5 -170t-33 -162t-77.5 -142v-1v0q-80 -110 -204 -216q-1 0 -1.5 -0.5l-0.5 -0.5q-63 -59 -136 -115q-42 -32 -73 -52q-3 -2 -8.5 -5.5t-9 -5.5t-8.5 -5t-9 -5t-9.5 -3.5t-12 -3t-13.5 -1.5l-7 -1l-7 2
q-34 6 -75 37q-8 6 -17.5 14t-17 14t-11.5 9h-1q-66 50 -118.5 94t-110.5 99t-105 114.5t-79 119.5l-1 1v2q-40 83 -51 172t13 177.5t86 152.5l1 1l2 2q112 96 251 96t242 -89q38 35 84 58l2 2l2 1q72 28 146 29zM834 923q-52 -1 -106 -22q-51 -26 -86 -72l-41 -53l-43 52
q-43 54 -110 78t-140 11.5t-130 -63.5q-43 -45 -59.5 -110t-8 -135t39.5 -136q92 -170 382 -390l1 -1q9 -6 24.5 -19t21.5 -18q10 -7 20 -13q11 5 18 10q26 16 65 46q71 54 130 109l1 1l1 1q116 99 189 199v1q61 82 81.5 176.5t-8.5 198.5q-34 72 -98.5 111.5t-143.5 37.5z
" />
<glyph glyph-name="uniF187" unicode="&#xf187;"
d="M1177 825q20 -62 22.5 -126t-10.5 -124t-38 -115t-62 -104q-84 -116 -216 -229q-40 -37 -93 -81t-107 -81.5t-74 -39.5q-16 4 -34.5 15.5t-44 32t-30.5 24.5q-70 53 -127.5 101t-118 106t-109.5 120t-82 122q-39 83 -50 170t12 171.5t80 144.5q75 68 171.5 85.5
t185.5 -14.5t147 -104q48 62 117 97q69 27 140 28t131.5 -22t110.5 -68.5t79 -108.5z" />
<glyph glyph-name="uniF188" unicode="&#xf188;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 799l-293 -228v-420h202v254h182v-254h202v420z" />
<glyph glyph-name="uniF189" unicode="&#xf189;"
d="M600 1075l543 -422v-778h-373v469h-340v-469h-373v778z" />
<glyph glyph-name="uniF18A" unicode="&#xf18a;"
d="M109 1075h53h876h53v-53q0 -72 3 -170q2 -37 2.5 -52.5t-1.5 -40t-2.5 -32.5t-9 -27t-13.5 -25t-22.5 -26t-30 -31.5t-41.5 -38.5q-65 -61 -109 -104q49 -49 118 -113q27 -25 38.5 -35.5t28 -29.5t21 -25t12.5 -25.5t8.5 -27.5t2.5 -33.5t1 -42t-2 -54.5q-4 -94 -4 -161
v-53h-53h-876h-53v53q0 51 -1 104t-3.5 78.5t-0.5 57.5t1.5 43.5t9 34t16.5 30.5t28.5 32.5t40.5 40.5t58 53.5t75 72.5q-49 49 -118 114q-27 25 -38.5 35.5t-28 29.5t-21 25t-12.5 25t-8.5 27t-2.5 34t-1 42t2 55q4 94 4 160v53zM214 970v-23v-73.5t2.5 -55.5t3.5 -44
t9 -33t13 -29.5t21.5 -26.5t28.5 -30.5t39 -35.5q21 -18 33.5 -30t35.5 -34t45 -43l37 -37l-37 -37q-31 -31 -64 -62t-52.5 -47.5t-40.5 -37.5t-31.5 -33.5t-21.5 -34t-15 -40t-6.5 -50t-2 -66.5t2.5 -87h772v23v74t-2.5 55.5t-3.5 43.5t-9 33t-13 29.5t-21.5 26.5t-28.5 30
t-39 35q-67 61 -114 108l-37 37l37 37q31 31 64 62t52.5 47.5t40.5 37.5t31.5 34t21.5 34t15 39.5t6.5 50t2 66.5t-2.5 87h-772zM321 754q76 -11 139.5 -16t101.5 -7t104.5 3t92 7.5t119.5 12.5q-24 -17 -67.5 -43t-72.5 -45t-60 -45.5t-46.5 -59.5t-14.5 -73h-51
q-8 44 -26.5 78.5t-46 60t-54 44t-61.5 41.5t-57 42zM597.5 314.5q72.5 -0.5 135 -24t104.5 -74.5t42 -119h-557q-2 70 39 121t102.5 74t134 22.5z" />
<glyph glyph-name="uniF18B" unicode="&#xf18b;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM580 853v-120h40v120h-40zM413 817l-33 -23l69 -99l33 24zM787 817l-69 -98l33 -24l69 99zM600 700
q-75 0 -128 -39.5t-53 -95.5l103 -311h156l103 311q0 56 -53 95.5t-128 39.5zM276 664l-14 -38l112 -41l14 38zM924 664l-112 -41l14 -38l112 41zM383 489l-116 -31l11 -39l116 31zM817 489l-11 -39l116 -31l11 39zM520 232v-54h160v54h-160zM520 151v-54h160v54h-160z" />
<glyph glyph-name="uniF18C" unicode="&#xf18c;"
d="M568 1075h64v-190h-64v190zM304 1018l109 -156l-53 -37l-109 156zM896 1018l53 -37l-109 -156l-53 37zM600 832q119 0 202.5 -62.5t83.5 -151.5l-162 -493h-248l-163 493q0 89 84 151.5t203 62.5zM85 775l179 -65l-22 -61l-179 66zM1115 775l22 -60l-179 -66l-22 61z
M256 497l16 -62l-183 -49l-17 62zM944 497l184 -49l-17 -62l-183 49zM473 89h254v-86h-254v86zM473 -39h254v-86h-254v86z" />
<glyph glyph-name="uniF18D" unicode="&#xf18d;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM527 859v-168h-86l159 -238l159 238h-86v168h-146zM240 485v-347h720v347h-236q0 -51 -36.5 -87t-87.5 -36
t-87.5 36t-36.5 87h-236z" />
<glyph glyph-name="uniF18E" unicode="&#xf18e;"
d="M94 438h206l150 -150h300l150 150h206l-278 374h-456zM329 888h542l329 -450v-376h-1200v376z" />
<glyph glyph-name="uniF18F" unicode="&#xf18f;"
d="M478 1075h244v-280h142l-264 -396l-264 396h142v280zM0 453h394q0 -56 27.5 -103t75 -75t103.5 -28q85 0 145.5 60.5t60.5 145.5h394v-578h-1200v578z" />
<glyph glyph-name="uniF190" unicode="&#xf190;"
d="M1200 975v-176h-1200v176h1200zM0 700l338 -225l-338 -225v450zM1200 699v-176h-694v176h694zM1200 425v-175h-694v175h694zM0 151h1200v-176h-1200v176z" />
<glyph glyph-name="uniF191" unicode="&#xf191;"
d="M0 975h1200v-176h-1200v176zM1200 700v-450l-338 225zM0 699h694v-176h-694v176zM0 425h694v-175h-694v175zM1200 151v-176h-1200v176h1200z" />
<glyph glyph-name="uniF192" unicode="&#xf192;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM581 869q-41 0 -67 -22q-25 -23 -25 -59.5t25 -58.5q26 -22 67 -22t67 22t26 58.5t-26 59t-67 22.5zM667 606
q-38 0 -107 -16.5t-112 -33.5l9 -47l42 8q31 0 31 -41v-295q0 -24 -17 -34q-20 -14 -63 -24l10 -42q99 10 141 10t143 -10l8 42q-41 12 -62 25q-12 6 -16 12q-2 6 -2 21v289q0 60 19 109z" />
<glyph glyph-name="uniF193" unicode="&#xf193;"
d="M0 1075h1200v-342h-372q-41 53 -103 84t-133 31q-29 0 -56.5 -5t-53 -15t-48.5 -24.5t-42.5 -32t-36.5 -38.5h-355v342zM960 1024q-30 0 -51 -21t-21 -51v-94q0 -30 21 -51t51 -21h112q30 0 51.5 21t21.5 51v94q0 30 -21.5 51t-51.5 21h-112zM132 1023v-237h41v237h-41z
M202 1023v-237h42v237h-42zM274 1023v-237h41v70v96v71h-41zM101 1017q-18 -8 -30 -25.5t-12 -39.5v-166h42v231zM591 814q109 0 186.5 -77t77.5 -185.5t-77.5 -185.5t-186.5 -77t-186 77t-77 185.5t77 185.5t186 77zM591 761q-57 0 -105.5 -28t-76.5 -76.5t-28 -104.5
q0 -87 61.5 -148t148.5 -61t148.5 61t61.5 147.5t-61.5 148t-148.5 61.5zM0 684h324q-31 -62 -31 -132q0 -41 10.5 -79t30 -70.5t47 -60t60.5 -46.5t71.5 -29.5t79.5 -10.5q123 0 211 86.5t88 209.5q0 70 -32 132h341v-809h-1200v809z" />
<glyph glyph-name="uniF194" unicode="&#xf194;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM392 732q-19 0 -33.5 -14t-15.5 -34v-417q0 -20 14 -34t35 -15h416q20 0 34 14t15 35v417q0 19 -14 33t-35 15
h-416zM462 638h276q6 -1 11.5 -4t9 -8.5t4.5 -12.5v-274q-1 -7 -4 -12.5t-8.5 -9t-12.5 -3.5h-276q-5 0 -9 1.5t-7.5 5t-5.5 8t-3 10.5v274q1 4 2 7.5t3 6.5t5 5.5t7 3.5z" />
<glyph glyph-name="uniF195" unicode="&#xf195;"
d="M578 -40h153l-17 -85h-468l16 85h153l206 1029h-153l18 86h468l-17 -86h-153l-206 -1029v0z" />
<glyph glyph-name="uniF196" unicode="&#xf196;"
d="M328 803q75 0 141.5 -32t112.5 -88t64 -126h1h553v-139h-76v-264h-140v264h-66v-183h-139v183h-127h-1q-20 -117 -111 -194t-212 -77q-89 0 -164.5 44t-119.5 119.5t-44 164.5t44 164.5t119.5 119.5t164.5 44zM328 651q-73 0 -124.5 -51.5t-51.5 -124.5t51.5 -124.5
t124.5 -51.5t125 51.5t52 124.5t-52 124.5t-125 51.5z" />
<glyph glyph-name="uniF197" unicode="&#xf197;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM290 751v-406h620v406h-620zM367 677h466v-258h-466v258zM212 308v-68l40 -41h696l40 41v68h-776zM528 286
h144v-62h-144v62z" />
<glyph glyph-name="uniF198" unicode="&#xf198;"
d="M120 902h960v-628h-960v628zM239 788v-399h722v399h-722zM0 217h1200v-106l-61 -63h-1078l-61 63v106zM489 182v-96h222v96h-222z" />
<glyph glyph-name="uniF199" unicode="&#xf199;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM390 753h-8q-42 -1 -69 -8q-52 -12 -98 -44t-77.5 -80t-42.5 -108.5t5 -129.5q23 -82 86 -140.5t145 -73.5
q52 -10 106 0q43 8 93 37t80 64q0 4 -16 38.5t-18 34.5q-24 -34 -60.5 -59.5t-82.5 -39t-100 -0.5t-102 56q-43 42 -58 102t1 122q22 62 81.5 108t129.5 46q60 0 108.5 -27t80.5 -77q27 -45 69 -149.5t63 -144.5q42 -84 123 -106q65 -15 124.5 3t95.5 64.5t33 109.5
q-2 35 -14 60.5t-37 43.5t-49.5 29.5t-65.5 24.5q-49 17 -67.5 25.5t-29.5 19.5q-15 18 -16.5 42t8 44t29.5 32.5t45 8.5q44 0 86 -44l53 29q-28 46 -67.5 65.5t-68.5 15.5q-40 1 -74 -13.5t-55 -42t-26.5 -66.5t11.5 -86q30 -62 144 -98q19 -6 38 -14.5t43 -25t36 -34.5
t8.5 -45t-29.5 -56q-20 -22 -57 -29.5t-78 6.5t-66 48q-15 31 -40.5 91.5t-52.5 120.5t-52 107q-56 94 -151 127q-45 16 -97 16z" />
<glyph glyph-name="uniF19A" unicode="&#xf19a;"
d="M132 235q-18 43 -20 56q-10 72 5.5 143t50 129.5t83.5 109.5t103.5 87.5t111.5 60.5q50 20 112.5 25t117 1t108 -5.5t102.5 13.5t85 52q19 22 32.5 34.5t35 23.5t43.5 11q33 -1 46 -27q76 -165 43 -332t-134 -304t-232 -207q-252 -125 -486 -44q-19 5 -59 30.5t-65 26.5
q-14 -8 -27.5 -26t-29.5 -45.5t-21 -34.5q-19 -33 -50.5 -38.5t-58.5 21.5q-24 24 -27 49.5t10 47t33 43.5t41 39t34.5 33.5t12.5 26.5zM269 277q17 -13 37.5 -11t33.5 16q100 120 233 177.5t286 53.5q22 -1 37 13.5t16 34.5q1 22 -13.5 36.5t-35.5 15.5q-176 10 -330 -60.5
t-269 -204.5q-14 -17 -12 -37.5t17 -33.5z" />
<glyph glyph-name="uniF19B" unicode="&#xf19b;"
d="M0 1075h1200v-240h-1200v240zM0 595h1200v-240h-1200v240zM0 115h1200v-240h-1200v240z" />
<glyph glyph-name="uniF19C" unicode="&#xf19c;"
d="M321 -125l-321 321l401 401l121 -122l78 78l-122 121l401 401l321 -321l-401 -401l-121 122l-78 -78l122 -121zM321 32l244 244l-43 43l-79 -79l-78 78l79 79l-43 43l-244 -244zM799 510l244 244l-164 164l-244 -244l43 -43l79 79l78 -78l-79 -79z" />
<glyph glyph-name="uniF19D" unicode="&#xf19d;"
d="M0 1075h1200v-1200h-1200v1200zM294 839q-41 -1 -69 -27t-28 -63q1 -40 29.5 -65t65.5 -25h1q41 1 69.5 27t28.5 63q-1 27 -15.5 48t-35.5 31.5t-46 10.5zM804 601q-63 -1 -103 -30q-27 -20 -53 -57v74h-172q1 -21 1 -84q0 -109 -1 -437h172v291q1 28 7 42q31 63 88 64
q33 -1 53.5 -20.5t27.5 -44t7 -53.5v-279h172v299q-2 117 -57 177q-55 57 -142 58zM207 588v-521h172v521h-172z" />
<glyph glyph-name="uniF19E" unicode="&#xf19e;"
d="M600 1075q48 0 82.5 -36t34.5 -84l-1 -117h116h6h32v-38v-75h-540v75v38h32h6h116q1 55 1 118q0 32 15 59.5t41.5 43.5t58.5 16zM175 961h269v-79h-191v-928h694v928h-191v79h269v-1086h-850v1086zM600 959q-11 0 -19.5 -5t-14 -14t-5.5 -19q0 -16 11.5 -27.5t27.5 -11.5
t27.5 11.5t11.5 27.5t-11.5 27t-27.5 11zM330 649h38v-39h-38v39zM446 648h424v-39h-424v39zM330 503h38v-38h-38v38zM446 503h424v-39h-424v39zM330 358h38v-38h-38v38zM446 357h424v-38h-424v38zM330 213h38v-39h-38v39zM446 212h424v-39h-424v39zM330 67h38v-38h-38v38z
M446 67h424v-39h-424v39z" />
<glyph glyph-name="uniF19F" unicode="&#xf19f;"
d="M0 91h216v-216h-216v216zM0 91v-216h216v216h-216zM0 419h216v-216h-216v216zM0 747h216v-216h-216v216zM0 1075h216v-216h-216v216zM318 91v-216h882v216h-882zM318 91h882v-216h-882v216zM318 419h882v-216h-882v216zM318 747h882v-216h-882v216zM318 1075h882v-216
h-882v216z" />
<glyph glyph-name="uniF1A0" unicode="&#xf1a0;"
d="M310 -115q-77 20 -130.5 84t-62.5 145q-30 210 135 445q-31 71 -73 8q-89 -122 -136 -280q-6 41 1 83.5t29.5 87.5t38.5 72.5t47 72.5l18 27q-3 11 -8.5 23.5t-12 24t-14 23t-14.5 20.5t-12.5 16.5t-9 11t-2.5 3.5q-11 13 -20.5 29.5t-17 36.5t-11 39t-0.5 38t13 33
q39 65 102.5 107t134.5 40q21 -5 40.5 -20t31 -29t29.5 -38.5t26 -34.5l13.5 -18t14.5 -19.5t13 -17.5q121 65 229.5 96t215.5 11q57 -9 106.5 -41t82.5 -81.5t43 -105.5q28 -137 -18.5 -277t-140.5 -267q-209 -277 -469 -345q-122 -25 -212 -3zM582 -37q52 17 102 46
t96 69.5t81 77t79 86.5q87 111 128.5 240t16.5 255q-19 85 -89.5 143t-157.5 61q-152 10 -324 -79q-2 -16 15 -37t33 -3q84 43 171.5 55t177.5 -14q56 -20 92.5 -69.5t37.5 -109.5q7 -80 -22 -162t-75.5 -146t-110.5 -123q-31 -36 -64 -45t-81 12q-24 11 -119.5 52
t-145.5 67q-25 23 -49 53.5t-52 70t-44 59.5q-7 -10 -15 -23t-18.5 -33t-13.5 -26q-32 -64 -49.5 -124.5t-14 -130.5t36.5 -126q44 -76 132 -104t179 -9q34 6 67 17zM740 226q-12 65 -45 329q-25 40 -81 116.5t-80 116.5q-8 11 -37 50t-43 57t-37 46.5t-42 49.5
q-23 39 -62 54t-80 -4q-39 -16 -71 -39t-57 -57.5t-32 -72.5q8 -28 24 -56t42 -63t36 -51q30 -39 116.5 -161t136.5 -181q265 -116 314 -140zM448 400q-20 10 -37 31t-34 48.5t-30 41.5q-12 18 -45.5 62.5t-56 77.5t-40.5 65q5 18 12 32t10.5 19.5t17 20.5t18.5 20
q3 3 19.5 15t25.5 18t25.5 15.5t29 12t27 3t27.5 -8t24 -24.5q136 -173 199 -275l56 -234l-50 -40q-22 13 -71.5 38t-87.5 44zM400 623q-11 15 -30 41.5t-31.5 43.5t-30 39.5t-34.5 40.5q-50 -34 -17 -96q7 -13 23 -38l4 -6q13 -17 68.5 -93.5t88.5 -114.5q23 21 28 43.5
t-4 43t-21 38t-26.5 34.5t-17.5 24zM609 568q-7 22 -21 45t-35 50t-31 42q-107 144 -121 162q-7 -3 -37 -14t-43 -25q56 -86 134 -193q35 -44 75 -63.5t79 -3.5zM155 776q-43 51 41 129q6 6 18 16l4 4q65 54 126 45q23 -4 39.5 -24.5t0.5 -33.5q-16 -10 -46.5 -27.5t-50 -29
t-42.5 -32.5t-37 -45q-14 -27 -25.5 -27t-27.5 25zM204 815q15 24 38.5 42t61 38t49.5 29q-3 21 -17 26.5t-33.5 -2t-35.5 -17.5t-29 -20q-4 -4 -15 -14t-18.5 -17t-17.5 -18t-15 -20t-7.5 -18.5t2 -18.5t15.5 -16q5 3 8 7t8 10.5t6 8.5zM106 854q-5 29 8.5 57.5t34.5 48.5
t47 37q37 23 79 25q38 3 34 -26v-2q-55 -17 -101 -53t-75 -84q-6 -10 -14 -12.5t-13 9.5zM880 362q140 186 94 336q-12 39 -41.5 67t-65.5 41.5t-77.5 18t-78.5 -4.5q-9 -3 -24 -6.5t-29 -6t-29 -7t-25.5 -9.5t-16.5 -14t-5 -21q15 -22 133 -180q5 -39 13.5 -106t16 -123
t15.5 -105q49 35 120 120z" />
<glyph glyph-name="uniF1A1" unicode="&#xf1a1;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM596 800q-61 1 -111 -33t-76 -91q-17 -42 -16 -150h-90v-376h594v376h-98v71q0 41 -17 79q-15 36 -43.5 64
t-65.5 44t-77 16zM591 681h5q35 -1 58.5 -24.5t25.5 -58.5v-1v-71h-168v71q4 37 25 60t54 24z" />
<glyph glyph-name="uniF1A2" unicode="&#xf1a2;"
d="M592 1075q111 -1 205.5 -64.5t138.5 -164.5q31 -71 31 -145v-132h181v-694h-1096v694h167q0 50 -0.5 96t7 95.5t22.5 85.5q48 106 140.5 168t203.5 61zM592 854q-64 2 -105.5 -40.5t-47.5 -112.5v-132h308v132v1q-2 42 -22 76t-55 54.5t-78 21.5z" />
<glyph glyph-name="uniF1A3" unicode="&#xf1a3;"
d="M339 1075l66 -277l280 -59l-278 -66l-59 -279l-67 277l-280 59l278 66zM1073 1062l119 -118l-219 -218l-119 119zM775 765v0l119 -118l-775 -772l-119 119zM1015 627l36 -148l149 -31l-149 -36l-31 -149l-36 148l-149 32l148 35zM771 357l39 -163l165 -35l-164 -39
l-34 -164l-40 163l-164 35l163 39z" />
<glyph glyph-name="uniF1A4" unicode="&#xf1a4;"
d="M600 1075q113 0 216 -41.5t177.5 -111.5t118.5 -167t44 -203q0 -23 -2 -46l-11 -230l-351 29l11 230q1 8 1 17q0 79 -60 135t-144 56q-41 0 -79 -15t-65 -41t-43.5 -61t-16.5 -74q0 -8 1 -17l11 -230l-352 -29l-10 230q-2 23 -2 46q0 85 28 164.5t79.5 144t120 113
t153 75t175.5 26.5zM420 169l23 -262l-352 -31l-23 262zM780 168l351 -31l-23 -262l-351 31z" />
<glyph glyph-name="uniF1A5" unicode="&#xf1a5;"
d="M727 1075h469q0 -74 -0.5 -235t-0.5 -234h-167v181l-237 -236q76 -110 76 -244q0 -71 -22 -136.5t-62 -119t-93 -93t-118.5 -61.5t-136.5 -22q-117 0 -216.5 58t-157 157t-57.5 216.5t57.5 217t157 157t216.5 57.5q128 0 234 -69l241 239h-183v167zM435 564
q-70 0 -129.5 -34.5t-94 -93.5t-34.5 -129q0 -107 76 -182.5t182.5 -75.5t182 75.5t75.5 182t-75.5 182t-182.5 75.5z" />
<glyph glyph-name="uniF1A6" unicode="&#xf1a6;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 872q-124 0 -211.5 -87.5t-87.5 -211.5q0 -98 42 -154l257 -341l257 341q14 18 23.5 45t14 55t4.5 54
q0 124 -87.5 211.5t-211.5 87.5zM600 698q52 0 89 -36.5t37 -88.5t-37 -89t-89 -37t-89 37t-37 89t37 88.5t89 36.5z" />
<glyph glyph-name="uniF1A7" unicode="&#xf1a7;"
d="M600 1075q92 0 176 -36t144.5 -96.5t96 -144t35.5 -175.5q0 -62 -16.5 -127t-46.5 -105l-389 -516l-389 516q-63 83 -63 232q0 73 22.5 142t64.5 125t97.5 97.5t124.5 64.5t143 23zM600 813q-79 0 -134.5 -56t-55.5 -134.5t55.5 -134.5t134.5 -56t134.5 56t55.5 134.5
t-55.5 134.5t-134.5 56z" />
<glyph glyph-name="uniF1A8" unicode="&#xf1a8;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM579 865q-29 -2 -58 -11v-104h-43v87q-30 -14 -54 -34v-428q76 -63 176 -63q99 0 176 63v428q-24 19 -53 34
v-87h-43v104q-29 9 -58 11v-115h-43v115zM340 524v-219q23 -22 50 -40q64 -41 139 -55v-72h-85v-53h85h142h85v53h-85v72q75 14 139 55q27 18 50 40v219h-50v-194q-92 -75 -210 -75t-210 75v194h-50zM529 210v25h142v-25q-35 -7 -71 -7t-71 7z" />
<glyph glyph-name="uniF1A9" unicode="&#xf1a9;"
d="M568 1075v-178h66v178q44 -4 89 -18v-160h66v134q45 -22 81 -52h1v-658h-1q-118 -97 -270 -97q-153 0 -270 97h-1v658h1q36 30 82 53v-135h66v161q45 13 90 17zM200 550h78v-298q140 -115 322 -115t322 115v298h78v-337q-36 -33 -78 -60q-98 -64 -212 -86v39h-220v-39
q-114 22 -212 86q-42 27 -78 60v337zM710 67v-110h130v-82h-130h-220h-130v82h130v110q54 -10 110 -10t110 10z" />
<glyph glyph-name="uniF1AA" unicode="&#xf1aa;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM255 573v-196h690v196h-690z" />
<glyph glyph-name="uniF1AB" unicode="&#xf1ab;"
d="M0 645h1200v-340h-1200v340z" />
<glyph glyph-name="uniF1AC" unicode="&#xf1ac;"
d="M0 475l205 205l1 -143h332v332l-145 -1l207 207l205 -205l-143 -1v-332h332l-1 145l207 -207l-205 -205l-1 143h-332v-332l145 1l-207 -207l-205 205l143 1v332h-332l1 -145z" />
<glyph glyph-name="uniF1AD" unicode="&#xf1ad;"
d="M365 995l835 63q-1 -24 -3.5 -77t-7 -163.5t-9.5 -216.5t-9.5 -210t-7.5 -172t-3 -77q-3 -62 -56.5 -110.5t-131.5 -59.5q-87 -13 -155.5 27t-78.5 109q-7 45 16 87t68.5 71.5t102.5 37.5q84 12 152 -26l29 564l-652 -68q-26 -626 -31 -708v-6v-1v1q-3 -30 -18 -58
t-39.5 -49.5t-58.5 -37t-72 -21.5q-87 -12 -155.5 28t-78 108.5t45 126t141.5 69.5q80 12 146 -22z" />
<glyph glyph-name="uniF1AE" unicode="&#xf1ae;"
d="M331 181l-1 -75h-330v75q0 67 49.5 115t117.5 48t116.5 -48t47.5 -115zM317 520.5q0 -62.5 -44 -106.5t-106 -44q-41 0 -75.5 20.5t-55 55t-20.5 75.5q0 62 44.5 106t106.5 44t106 -44t44 -106.5zM740 192l-1 -86h-380v86q0 78 56.5 133t135 55t134.5 -55t55 -133z
M724 584q0 -72 -50.5 -122.5t-122.5 -50.5t-123 50.5t-51 122.5t51 122.5t123 50.5t122.5 -50.5t50.5 -122.5zM1200 204l-1 -98h-431v98q0 88 64 150.5t153.5 62.5t152.5 -62.5t62 -150.5zM1181 647.5q0 -81.5 -57 -139t-138.5 -57.5t-139 57.5t-57.5 139.5q0 53 26.5 98
t71.5 71.5t99 26.5q81 0 138 -57.5t57 -139z" />
<glyph glyph-name="uniF1AF" unicode="&#xf1af;"
d="M1 445q-1 7 -1 28v3q300 26 474 150q55 -25 111 3q59 -60 117.5 -98.5t129.5 -61.5q15 -38 48 -59q-40 -99 -111 -174q-54 36 -112.5 16.5t-82.5 -75.5q-168 1 -322 72t-251 196zM573 90q-179 -92 -352 -82q-69 58 -119 132t-76 155q113 -97 257 -151t290 -54zM821 107
q202 42 341 156q-46 -119 -136.5 -208.5t-200 -134t-235 -44.5t-238.5 51q144 20 274 94q42 -21 82 -16.5t72 33t41 69.5zM1057 442q97 7 143 15q0 -6 -0.5 -18t-0.5 -18q-63 -79 -153 -135.5t-191 -84.5q69 83 109 189q59 7 93 52zM1079 530q-8 62 -57 95q15 142 4 272
q71 -74 114.5 -165t55.5 -187q-52 -11 -117 -15zM411 688q-168 -106 -404 -125q26 163 130 290.5t254 183.5q9 -109 48 -199q-31 -32 -38.5 -71.5t10.5 -78.5zM647 790q108 134 145 252q77 -26 139 -67q22 -172 5 -331q-37 -6 -65 -28t-40 -55q-90 33 -187 130q19 50 3 99z
M519 871q-42 104 -43 191q114 26 232 2q-38 -107 -118 -208q-54 23 -71 15z" />
<glyph glyph-name="uniF1B0" unicode="&#xf1b0;"
d="M514 1075h172v-694h-172v694zM176 899l121 -121q-60 -59 -93 -137.5t-33 -165.5q0 -117 57.5 -215.5t156 -156t215.5 -57.5t215.5 57.5t156 156t57.5 215.5q0 58 -15.5 113.5t-43 103t-67.5 86.5l121 121q83 -83 129.5 -192.5t46.5 -231.5q0 -163 -80.5 -301
t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301q0 82 21.5 159.5t60.5 144t94 120.5z" />
<glyph glyph-name="uniF1B1" unicode="&#xf1b1;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 945q-77 0 -148.5 -24t-129 -67.5t-101 -101t-67.5 -129t-24 -148.5q0 -96 37.5 -182.5t100.5 -149.5
t149.5 -100.5t182.5 -37.5t182.5 37.5t149.5 100.5t100.5 149.5t37.5 182.5t-37.5 182.5t-100.5 149.5t-149.5 100.5t-182.5 37.5zM830 760l111 -111l-348 -348l-110 -111l-112 111l-112 113l110 111l113 -113z" />
<glyph glyph-name="uniF1B2" unicode="&#xf1b2;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM857 794l-389 -389l-126 126l-124 -124l126 -126l125 -125l124 124l389 389z" />
<glyph glyph-name="uniF1B3" unicode="&#xf1b3;"
d="M1004 976l196 -196l-611 -611l-195 -195l-196 196l-198 198l194 195l199 -199z" />
<glyph glyph-name="uniF1B4" unicode="&#xf1b4;"
d="M600 1058q122 0 233 -47.5t191.5 -128t128 -191.5t47.5 -233q0 -193 -111 -348t-287 -218l-148 392q56 17 92 65t36 109q0 37 -14.5 70.5t-38.5 58t-58 39t-71 14.5q-75 0 -128.5 -53.5t-53.5 -128.5q0 -61 36 -109t92 -65l-148 -391q-176 63 -287 217.5t-111 347.5
q0 122 47.5 233t128 191.5t191.5 128t233 47.5z" />
<glyph glyph-name="uniF1B5" unicode="&#xf1b5;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM744 851h-10q-76 -4 -150 -77l-315 -316l52 -51l315 315q63 60 115 56q50 -7 86.5 -56.5t24.5 -93.5l-8 -18
t-7.5 -15.5t-10 -15t-9 -12t-11.5 -13t-11 -11.5l-13.5 -13.5t-12.5 -13.5q-45 -45 -147.5 -146.5t-163.5 -162.5q-22 -20 -38 -28t-33 -5t-36 20q-29 30 -25 58q3 26 29 52l288 288q41 41 56 28q1 -4 1.5 -7.5t0 -7.5t-1.5 -7t-3.5 -7t-4.5 -6.5t-5 -6t-5 -5t-5.5 -5
t-3.5 -4.5l-265 -265l51 -51l265 264q91 93 28 158q-72 61 -160 -26l-288 -288q-44 -44 -50 -96q-5 -64 48 -118q43 -42 95 -43q21 1 44 10t39.5 21t30.5 25l156.5 156.5t185.5 184.5q56 58 70 114q24 96 -55 178q-63 62 -133 63z" />
<glyph glyph-name="uniF1B6" unicode="&#xf1b6;"
d="M472 -36q-22 -22 -49 -40.5t-63 -33t-70 -15.5q-83 1 -152 69q-84 85 -77 188q10 82 81 153l460 460q28 28 56.5 46.5t61.5 29t68.5 2.5t67.5 -36q101 -105 -43 -253l-424 -422l-81 83l422 422q1 0 8 7.5t9.5 10t9 9.5t8.5 11.5t6 11.5t5 12.5t0.5 12.5t-2.5 14
q-14 12 -40 -4.5t-49 -39.5l-460 -459q-42 -43 -47 -83q-6 -46 41 -93q30 -28 57 -33t52.5 7.5t60.5 45.5q97 97 260.5 259.5t235.5 234.5l19 19l18.5 18.5t16 16.5t16.5 18t14 17.5t14 20t12 20t12.5 23.5t10.5 26q12 45 -10.5 98.5t-68.5 93t-98 46.5q-82 8 -184 -89
l-503 -503l-83 81l503 505q119 117 240 123t228 -101q127 -130 89 -284q-24 -89 -113 -182q-104 -101 -295.5 -293.5t-250.5 -250.5z" />
<glyph glyph-name="uniF1B7" unicode="&#xf1b7;"
d="M1157 614q-1 -63 -19 -122.5t-51 -109t-78 -86.5q-154 -118 -398 -122v-72q-2 -68 -39 -124.5t-95 -83.5q-40 -19 -88 -19q-55 1 -112 29v208q50 -35 90 -23q41 15 41 58v578h203v-360q71 1 135 15q96 23 149 70q71 67 71 164q0 67 -31 121.5t-85 88.5q-105 60 -250 61
q-153 -4 -252 -65q-54 -35 -84 -90t-30 -116q10 -127 57 -171l-129 -139q-57 57 -88 145q-31 93 -31 165q1 66 20.5 128t53.5 114t81 91q163 127 402 128q250 -4 403 -127q75 -64 114 -152t40 -182z" />
<glyph glyph-name="uniF1B8" unicode="&#xf1b8;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM331 786v-622h182v622h-182zM687 786v-622h182v622h-182z" />
<glyph glyph-name="uniF1B9" unicode="&#xf1b9;"
d="M0 1075h500v-1200h-500v1200zM700 1075h500v-1200h-500v1200z" />
<glyph glyph-name="uniF1BA" unicode="&#xf1ba;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM802 888q-33 0 -57 -24q-22 -23 -23 -53.5t19 -50.5l100 -100q21 -21 51.5 -19.5t53 24t23.5 53t-20 50.5
l-100 100q-19 19 -47 20zM637 756l-324 -325l200 -199l324 324zM261 394l-53 -264l264 53z" />
<glyph glyph-name="uniF1BB" unicode="&#xf1bb;"
d="M1169 884q33 -32 31 -80t-37.5 -83.5t-83.5 -37.5t-80 30l-158 158q-33 33 -31 81t37.5 83.5t83.5 37t81 -30.5zM165 353l512 511l315 -315l-512 -511zM0 -123l83 416l333 -332z" />
<glyph glyph-name="uniF1BC" unicode="&#xf1bc;"
d="M720 803q27 0 51 -11q17 -8 30.5 -20.5t23 -27.5t14.5 -32.5t5 -35.5v-339q-4 -25 -21.5 -32.5t-33.5 3t-17 29.5v320q-4 13 -22 11t-19 -11v-734q-3 -21 -14.5 -33.5t-27 -14t-30.5 3.5t-25.5 17.5t-10.5 27.5v450q-3 13 -15 16t-22.5 -3t-10.5 -14q1 -109 1 -449
q-3 -26 -20.5 -38.5t-36.5 -10.5t-34.5 15.5t-16.5 32.5l-1 734q-5 12 -22 10.5t-17 -10.5v-320q-3 -19 -15 -28t-24 -7t-22.5 11.5t-10.5 23.5v339q1 38 15.5 69t43.5 47q20 11 49 11h256zM718 957q0 -49 -34.5 -84t-83.5 -35t-83.5 35t-34.5 84q0 32 15.5 59t43 43
t59.5 16q49 0 83.5 -34.5t34.5 -83.5z" />
<glyph glyph-name="uniF1BD" unicode="&#xf1bd;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM384 837q-11 -1 -23 -11l-102 -102q-20 -18 -21 -55q-2 -60 50 -170q85 -161 273 -298q131 -85 234 -88
q35 0 55 21l102 101q12 12 9.5 29t-18.5 27l-148 87h-1q-24 15 -52 -7l-44 -45q-6 -5 -20 -2q-10 3 -19.5 6.5t-18 8.5t-18 11.5t-17 12.5t-16 14t-15 14t-15.5 14.5t-15 13.5q-78 72 -96 143q0 5 4 10l37 38q23 23 9 51l-82 156q-13 21 -32 20z" />
<glyph glyph-name="uniF1BE" unicode="&#xf1be;"
d="M1183 77l-169 -168q-33 -34 -90 -34q-171 5 -388 146q-312 227 -453 494q-25 52 -41 91t-30 93.5t-12 97.5q1 61 35 91l169 169q27 22 50.5 17t40.5 -32l137 -258q10 -23 5.5 -45.5t-21.5 -39.5l-62 -62q-6 -9 -6 -18q30 -117 160 -237q10 -9 38 -36t43.5 -40.5t41 -33
t49.5 -30.5t50 -17q22 -6 32 3l73 74q20 15 43 19.5t45 -6.5h1l245 -145q27 -17 30.5 -45t-16.5 -48z" />
<glyph glyph-name="uniF1BF" unicode="&#xf1bf;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM278 780v-610h644v610h-644zM357 703h486v-335h-486v335z" />
<glyph glyph-name="uniF1C0" unicode="&#xf1c0;"
d="M0 1044h1200v-1138h-1200v1138zM148 900v-624h904v624h-904z" />
<glyph glyph-name="uniF1C1" unicode="&#xf1c1;"
d="M911 980q133 -83 210.5 -218.5t78.5 -287.5q0 -102 -34 -195h-255v701zM1139 217q-70 -141 -200 -229.5t-284 -104.5q-77 -5 -157 8.5t-144 41.5v284h785zM0 474q2 169 91 310.5t235 217.5l228 -204l-532 -478q-22 79 -22 154zM290 -33q-84 53 -147.5 127.5t-99.5 160.5
l247 223v-511zM847 618l-457 412q112 38 210 38q130 0 247 -54v-396z" />
<glyph glyph-name="uniF1C2" unicode="&#xf1c2;"
d="M0 976h1200v-1002h-1200v1002zM92 882v-814h1016v814h-1016zM301 765q41 0 70.5 -29.5t29.5 -72.5q0 -41 -29.5 -70.5t-70.5 -29.5q-43 0 -72 29.5t-29 70.5q0 43 29 72.5t72 29.5zM733 715l267 -276v-275h-800v69l180 234l123 -102z" />
<glyph glyph-name="uniF1C3" unicode="&#xf1c3;"
d="M600 1075q131 -2 243.5 -51.5t190 -131t121.5 -190t45 -227.5q-3 -167 -86 -305t-219 -216t-295 -79q-85 0 -170 25q17 27 34 60q5 10 9.5 20.5t8 22t6.5 20.5t6.5 22.5t5.5 20.5t5.5 22t5.5 21q7 32 22 83q15 -29 56 -51q56 -25 114 -21t108 30q122 69 169 216
q21 76 17 149.5t-28 136.5t-73 113t-117 79q-55 17 -112.5 21.5t-111.5 -3t-105.5 -26.5t-94.5 -48t-77.5 -70t-55.5 -89q-15 -53 -19.5 -105.5t3.5 -103t36 -91t75 -60.5q11 -4 19 0q9 5 17.5 37.5t6.5 43.5q-1 6 -9 16q-34 47 -36.5 109.5t19 116.5t57.5 92
q88 76 204 83.5t197 -62.5q44 -52 57.5 -124.5t0 -140t-45.5 -124.5q-58 -93 -138 -94q-48 1 -77.5 36t-17.5 80q6 27 19.5 68.5t23.5 78t11 65.5q-3 42 -23.5 66t-58.5 25q-57 -7 -85.5 -52t-29.5 -104q5 -68 19 -94q-26 -105 -40 -169q-3 -16 -24 -101t-23 -128
q-2 -36 -1 -67q-167 79 -262.5 225t-96.5 324q3 169 86 307t219 215t295 78z" />
<glyph glyph-name="uniF1C4" unicode="&#xf1c4;"
d="M321 -89l149 480h-215l-135 -120h-120l96 204l-96 204h120l135 -120h215l-149 480h120l269 -480h310q7 0 19.5 -0.5t43.5 -5t54.5 -12.5t43 -25t19.5 -41t-18.5 -41t-45 -25t-53 -12.5t-44.5 -4.5l-19 -1h-310l-269 -480h-120z" />
<glyph glyph-name="uniF1C5" unicode="&#xf1c5;"
d="M600 -125q-163 0 -301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5zM450 775v-600l450 300z" />
<glyph glyph-name="uniF1C6" unicode="&#xf1c6;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 936q-94 0 -179 -36.5t-147 -98.5t-98.5 -147t-36.5 -179t36.5 -179t98.5 -147t147 -98.5t179 -36.5
t179 36.5t147 98.5t98.5 147t36.5 179t-36.5 179t-98.5 147t-147 98.5t-179 36.5zM450 775l450 -300l-450 -300v600z" />
<glyph glyph-name="uniF1C7" unicode="&#xf1c7;"
d="M100 1075l1000 -600l-1000 -600v1200z" />
<glyph glyph-name="uniF1C8" unicode="&#xf1c8;"
d="M0 715q1 1 4.5 5.5t7.5 9.5v-46q-4 5 -7.5 9.5t-4.5 5.5v16zM1165 479q-38 -11 -88 12q-43 20 -76 27q-11 4 -17 1.5t-8 -7.5t-3 -18q-10 -87 -17 -113q-19 -68 -82 -90q-10 -3 -12.5 -9.5t0.5 -16.5q21 -89 25 -126q3 -24 -2 -30t-30 -10q-31 -5 -90 -7q-20 -1 -21 24
q-2 75 -11 141q-3 21 -9.5 24.5t-30.5 0.5q32 -157 34 -166q-18 -7 -26.5 -9.5t-24.5 -7.5t-27 -6t-25.5 -1t-28.5 3q-20 5 -22 24q-6 67 -11 123q0 1 -1 22h-40q14 -80 16 -91q1 -4 1.5 -9.5t1 -12t1.5 -9.5q3 -28 -1 -34t-30 -11q-34 -7 -65 -2q-38 6 -40 50q-2 65 -4 112
l-4 18q-3 0 -5 -1q0 -40 -1 -42q0 -10 -1 -44.5t-1 -53.5q0 -15 -16 -19q-59 -17 -139 5q-23 6 -20 31q4 29 13 79q0 2 8 35q16 62 -13 111q-48 79 -41 146q3 32 9 51q5 16 -11 24q-67 35 -86 91q-16 48 5 95t71 75q-16 -45 -17 -48q-12 -40 10.5 -78t64.5 -47q7 -1 15 2
q10 3 15 9q43 44 97 66t134 40q13 3 33 8.5t33.5 9t32 7t33.5 5.5q109 10 178.5 -22.5t120.5 -119.5q3 -4 45 -85q19 4 29.5 7.5t25.5 10.5t25.5 17.5t18.5 25.5q19 35 51 40.5t57 -20.5q32 -31 8 -68q-2 -3 -32 -44q26 -23 29 -26q6 -5 12 -15q16 -25 10.5 -37t-34.5 -17
q21 17 2 37q-3 3 -41 45q24 32 26 34q2 3 25 33q-7 13 -8 13q-20 32 -44 32t-45 -31l-3 -6t-4 -6.5t-4 -4.5l-7.5 -7.5l-7.5 -7.5t-7 -6.5t-8 -6.5t-9 -5q-64 -32 -141 -25q-20 1 -72 -5q-4 0 -8.5 -4.5t-5.5 -7.5q0 -4 3 -33q104 9 110 9q36 2 67 2t65.5 -9t62.5 -28
q6 -4 15 -6t21.5 -3.5t18.5 -2.5zM920 521q4 -66 4 -69q-2 -47 -32 -71t-76 -17q-90 14 -113 99q-24 91 3 183q7 24 26 49q20 26 47 29.5t53 -16.5q18 -14 36 -42q6 -10 14.5 -29t11.5 -25q6 -11 13 -12q4 -1 42 -1q-9 23 -9 24q-32 70 -88 128q-38 39 -79.5 35.5
t-73.5 -48.5q-38 -54 -49 -138q-18 -125 38 -207q47 -69 131 -79q80 -10 118 63q22 40 21 105q0 15 -0.5 20t-5 10t-10.5 6t-22 3zM857 103q2 4 6 10t5 8.5t1 4.5q-2 3 -4.5 6.5t-6.5 7t-5 5.5q-1 -2 -4.5 -5.5t-5 -6t-1.5 -4.5q1 -4 3 -7l6 -9t6 -10zM56 707q8 -39 14 -65
q-27 28 -19 64q3 0 5 1zM220 854q-5 -18 -15 -55q-9 38 15 55z" />
<glyph glyph-name="uniF1C9" unicode="&#xf1c9;"
d="M0 1075h1200v-1200h-783v263h549v652h-735v-915h-231v1200zM426 333v282h354v-282h-354z" />
<glyph glyph-name="uniF1CA" unicode="&#xf1ca;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM504 813v-242h-242v-192h242v-242h192v242h242v192h-242v242h-192z" />
<glyph glyph-name="uniF1CB" unicode="&#xf1cb;"
d="M430 1075h340v-430h430v-340h-430v-430h-340v430h-430v340h430v430z" />
<glyph glyph-name="uniF1CC" unicode="&#xf1cc;"
d="M600 1057q122 0 233 -47.5t191.5 -127.5t128 -191.5t47.5 -233.5q0 -188 -106 -340t-276 -218v53q74 31 135 82.5t105 116.5t68.5 144t24.5 162q0 112 -43.5 214.5t-117.5 176t-176 117.5t-214 44q-90 0 -174 -28t-151.5 -79t-118.5 -119t-79 -152t-28 -174
q0 -167 92 -304t241 -201v-53q-170 66 -276 218t-106 340q0 122 47.5 233.5t128 191.5t191.5 127.5t233 47.5zM600 938q111 0 205.5 -54.5t149 -149t54.5 -205.5q0 -75 -26 -144t-73 -123t-109 -89v44q78 50 124.5 132.5t46.5 179.5q0 101 -50 186.5t-135.5 135.5t-186.5 50
t-186.5 -50t-135.5 -135.5t-50 -186.5q0 -97 46 -179.5t124 -132.5v-44q-94 54 -150.5 148.5t-56.5 207.5q0 111 54.5 205.5t149 149t205.5 54.5zM600 806q101 0 173 -71.5t72 -173.5q0 -103 -75 -175v57q37 53 37 118q0 86 -60.5 146.5t-146.5 60.5q-56 0 -104 -27.5
t-75.5 -75.5t-27.5 -104q0 -65 37 -118v-57q-75 72 -75 175q0 102 72 173.5t173 71.5zM600 678q48 0 82.5 -34t34.5 -83q0 -32 -15.5 -58.5t-42.5 -42.5t-59 -16t-59 16t-42.5 42.5t-15.5 58.5q0 49 34.5 83t82.5 34zM600 414q29 0 52 -3t37.5 -7.5t25 -10t15.5 -11t8 -10
t4 -7.5v-2q1 -151 -12 -229q-6 -35 -22 -95.5t-30 -103.5l-13 -42h-130q-52 161 -65 240q-6 35 -9 92.5t-3 97.5v40q0 2 1 5.5t9 12t21.5 15.5t42.5 12.5t68 5.5z" />
<glyph glyph-name="uniF1CD" unicode="&#xf1cd;"
d="M367 1001h466v-181h47l280 -119h-1120l280 119h47v181zM0 632h1200v-365h-186l66 -318h-960l66 318h-186v365zM291 494l-93 -458h804l-94 458h-617z" />
<glyph glyph-name="uniF1CE" unicode="&#xf1ce;"
d="M472 1075q70 0 120 -50t50 -120t-49 -120h316v-313q50 50 120.5 50t120.5 -50t50 -120.5t-50 -120.5t-120.5 -50t-120.5 50v-356h-328q64 51 64 133q0 46 -23 85.5t-62 62t-86 22.5q-70 0 -120 -49.5t-50 -120.5q0 -82 64 -133h-368v403q51 -59 129 -59q70 0 120 50
t50 121q0 46 -22.5 85t-62 62t-85.5 23q-78 0 -129 -59v284h350q-49 50 -49 120q0 34 13.5 65.5t36.5 54.5t54.5 36.5t66.5 13.5z" />
<glyph glyph-name="uniF1CF" unicode="&#xf1cf;"
d="M0 1075h545v-545h-545v545zM655 1075h545v-545h-545v545zM109 966v-328h328v328h-328zM763 966v-328h328v328h-328zM218 855h110v-108h-110v108zM872 855h108v-108h-108v108zM0 420h545v-545h-545v545zM655 420h325v-108h111v108h109v-327h-328v109h-109v-327h-108v545z
M109 312v-328h328v328h-328zM218 203h110v-110h-110v110zM872 -16h108v-109h-108v109zM1091 -16h109v-109h-109v109z" />
<glyph glyph-name="uniF1D0" unicode="&#xf1d0;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM589 925q-36 0 -84.5 -20t-85.5 -51.5t-39 -61.5q-2 -28 1 -44.5t5.5 -19t7.5 -5.5h68q13 29 31.5 42.5
t53.5 12.5q39 0 68.5 -39t12.5 -79q-12 -29 -35.5 -67.5t-36.5 -66.5q-23 -49 -25 -107t24 -118l84 -2q-6 31 1.5 62.5t25 60.5t35 53t40 51t32.5 42q21 33 31.5 56t13.5 41t3 49q0 84 -60 145q-63 65 -172 66zM593.5 229q-42.5 0 -72.5 -29.5t-30 -72t30 -72.5t72.5 -30
t72 30t29.5 72.5t-29.5 72t-72 29.5z" />
<glyph glyph-name="uniF1D1" unicode="&#xf1d1;"
d="M586 1075q145 0 229 -87q79 -82 80 -195q0 -58 -11.5 -94.5t-53.5 -99.5q-9 -15 -25 -35t-31 -38t-33 -41.5t-32 -44t-28 -46.5t-21 -49.5t-10.5 -51.5t2.5 -52l-112 2q-24 48 -30 104t2.5 105t28.5 91q17 37 49 88.5t48 90.5q13 39 0 74t-44.5 59.5t-64.5 24.5
q-47 0 -71.5 -18t-41.5 -56h-91q-7 4 -10.5 7.5t-7.5 25.5t-1 60q3 39 52.5 81.5t114 68.5t113.5 26zM591.5 147q56.5 0 96 -39.5t39.5 -96.5q0 -37 -18 -68t-49.5 -49.5t-68.5 -18.5q-56 0 -96 40t-40 96.5t40 96t96.5 39.5z" />
<glyph glyph-name="uniF1D2" unicode="&#xf1d2;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM554 793q-32 -3 -54 -5.5t-55.5 -9.5t-56 -18t-48.5 -30.5t-41.5 -45.5t-26 -65.5t-10.5 -88.5v-295h267v316
h-89q-1 24 6 43.5t19 31.5t32.5 21.5t38 15t44.5 11.5zM912 793q-32 -3 -54 -5.5t-55.5 -9.5t-56 -18t-48.5 -30.5t-41.5 -45.5t-26 -65.5t-10.5 -88.5v-295h268v316h-89q-2 30 8 52t32 35.5t43.5 20.5t55.5 15z" />
<glyph glyph-name="uniF1D3" unicode="&#xf1d3;"
d="M600 -125q-163 0 -301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5zM646 157q32 3 54 5.5t55.5 9.5t56 18t48.5 30.5t41.5 45.5t26 65.5t10.5 88.5v295h-267v-316h89
q2 -30 -8 -52t-32.5 -35.5t-44 -20.5t-55.5 -15zM288 157q32 3 54 5.5t55.5 9.5t56 18t48.5 30.5t41.5 45.5t26 65.5t10.5 88.5v295h-268v-316h89q2 -30 -8 -52t-32 -35.5t-43.5 -20.5t-55.5 -15z" />
<glyph glyph-name="uniF1D4" unicode="&#xf1d4;"
d="M682 -20l-46 211q33 7 56.5 13.5t52 16.5t48 21t39 27.5t30.5 36t17 46t4 57.5h-158v561h475v-524q0 -87 -18.5 -156.5t-46 -115.5t-73.5 -81t-86.5 -54t-99.5 -32.5t-98 -18t-96 -8.5zM46 -20l-46 211q47 11 79 20t68 26.5t57 39t33.5 55.5t9.5 77h-157v561h474v-524
q0 -87 -18.5 -156.5t-46 -115.5t-73.5 -81t-86 -54t-99.5 -32.5t-98.5 -18t-96 -8.5z" />
<glyph glyph-name="uniF1D5" unicode="&#xf1d5;"
d="M518 970l46 -211q-47 -11 -78.5 -20t-68 -26.5t-57 -39t-33.5 -55.5t-10 -77h158v-561h-475v524q0 87 18.5 156.5t46 115.5t73.5 81t86.5 54t99.5 32.5t98 18t96 8.5zM1154 970l46 -211q-47 -11 -79 -20t-68 -26.5t-57 -39t-33.5 -55.5t-9.5 -77h157v-561h-474v524
q0 68 11 125.5t29 100t47.5 77t58 58t69.5 42t74 28.5t78.5 17.5t76 11t74.5 6.5z" />
<glyph glyph-name="uniF1D6" unicode="&#xf1d6;"
d="M936 1033l264 -264l-264 -264v194h-172q-19 0 -27 -4t-33 -30q-48 -48 -175 -230q-25 -36 -56 -81.5t-48 -70t-36.5 -51t-36.5 -44.5q-35 -39 -82 -60t-97 -21h-171h-2v148h2h171q33 0 40 3t29 28q14 16 33 42t62 89.5t71 102.5q135 192 191 249q77 78 165 78h172v186z
M0 847h2h171q50 0 97 -21t82 -59q28 -31 73 -96q-3 -3 -8.5 -11t-9.5 -13q-25 -36 -60 -85q-3 -5 -7 -11t-7 -9q-70 103 -91 126q-22 25 -29 28t-40 3h-171h-2v148zM936 445l264 -264l-264 -264v190h-172q-88 0 -165 78q-35 36 -83 99q52 78 73 108q3 5 8.5 12t6.5 10
q68 -92 100 -125q25 -25 33 -29.5t27 -4.5h172v190z" />
<glyph glyph-name="uniF1D7" unicode="&#xf1d7;"
d="M600 -125q-163 0 -301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5zM600 775q-124 0 -212 -88t-88 -212t88 -212t212 -88t212 88t88 212t-88 212t-212 88z" />
<glyph glyph-name="uniF1D8" unicode="&#xf1d8;"
d="M799 195q5 -7 6 -13t-3.5 -12.5t-6 -7.5t-9.5 -8q-72 -54 -189 -54q-31 0 -63 5t-66 17.5t-54 31.5q-12 9 -15.5 20.5t6.5 22.5q5 4 10 5t11 -2.5t8.5 -5.5t9.5 -8q8 -5 15.5 -9.5t14 -7.5t15 -6t14 -5t15 -4t14.5 -3t16 -2t15.5 -1.5t17 -2t16.5 -1.5q50 2 85.5 11.5
t75.5 31.5q26 23 41 8zM1018 981q31 0 57 -15t41 -41t15 -56q0 -47 -33 -80t-80 -33q-30 0 -56 15t-41.5 41t-15.5 57l-197 46l-79 -223q100 -4 187 -30.5t155 -68.5q40 34 90 34q29 0 54.5 -11t44.5 -30t29.5 -44t10.5 -53q0 -36 -17.5 -67t-48.5 -50q4 -22 4 -42
q0 -74 -42 -140t-116 -115.5t-172 -77.5t-209 -28q-113 0 -210.5 28t-171 77.5t-116 115.5t-42.5 140q0 12 1 22q2 13 3 21q-29 19 -46 49.5t-17 66.5q0 28 10.5 53t29.5 44t43.5 30t53.5 11q53 0 91 -34q71 44 161.5 70.5t194.5 28.5l97 275l232 -57q13 32 41.5 51.5
t63.5 19.5zM599 649q-102 0 -193 -25t-157.5 -68t-106 -101.5t-39.5 -124t39.5 -123.5t106 -101t157.5 -68t193 -25t192.5 25t158 68t106.5 101t39 123.5t-39 124t-106.5 101.5t-158 68t-192.5 25zM781.5 480q35.5 0 60.5 -24.5t25 -59.5t-25 -60t-60 -25q-23 0 -43 11.5
t-31 31t-11 42.5q0 35 24.5 59.5t60 24.5zM428 479q23 0 43 -11.5t31 -31t11 -42.5q0 -35 -24.5 -59.5t-60.5 -24.5q-23 0 -42.5 11t-31 30.5t-11.5 42.5q0 35 25 60t60 25zM1132 370q-1 0 -1 -1q0 1 1 1z" />
<glyph glyph-name="uniF1D9" unicode="&#xf1d9;"
d="M364 67l-104 -116h-260l259 294zM687 -49h-223l-66 113l134 150zM383 89l-362 616h222l169 -287l514 581h274z" />
<glyph glyph-name="uniF1DA" unicode="&#xf1da;"
d="M600 1075q122 0 231.5 -46.5t192.5 -129.5l176 176v-483h-178h-305l193 193q-61 60 -141 94t-169 34q-149 0 -266 -90t-156 -231h-167q28 137 111.5 247t209 173t268.5 63zM0 358h483l-193 -193q61 -60 141 -94t169 -34q149 0 266 90t156 231h167q-28 -137 -111.5 -247
t-209 -173t-268.5 -63q-122 0 -231.5 46.5t-192.5 129.5l-176 -176v483z" />
<glyph glyph-name="uniF1DB" unicode="&#xf1db;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 945q-77 0 -148.5 -24t-129 -67.5t-101 -101t-67.5 -129t-24 -148.5q0 -96 37.5 -182.5t100.5 -149.5
t149.5 -100.5t182.5 -37.5t182.5 37.5t149.5 100.5t100.5 149.5t37.5 182.5t-37.5 182.5t-100.5 149.5t-149.5 100.5t-182.5 37.5zM435 770l165 -165l165 165l130 -130l-165 -165l165 -165l-130 -130l-165 165l-165 -165l-130 130l165 165l-165 165z" />
<glyph glyph-name="uniF1DC" unicode="&#xf1dc;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM411 812l-149 -148l189 -189l-189 -189l149 -148l189 188l189 -188l149 148l-189 189l189 189l-149 148
l-189 -188z" />
<glyph glyph-name="uniF1DD" unicode="&#xf1dd;"
d="M0 810l265 265l335 -335l335 335l265 -265l-335 -335l335 -335l-265 -265l-335 335l-335 -335l-265 265l335 335z" />
<glyph glyph-name="uniF1DE" unicode="&#xf1de;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 823q-71 0 -135 -28t-110.5 -74.5t-74.5 -110.5t-28 -135q0 -94 46.5 -174.5t127 -127t174.5 -46.5
q95 0 175 47.5t126 127.5l-122 70q-27 -47 -75 -75t-104 -28q-86 0 -146 60t-60 146t60 146t146 60q72 0 129 -45l-91 -65l310 -103v323l-101 -71q-32 32 -70.5 54.5t-84 35.5t-92.5 13z" />
<glyph glyph-name="uniF1DF" unicode="&#xf1df;"
d="M600 1075q123 0 233 -47t193 -131l174 124v-559l-535 179l158 112q-98 78 -223 78q-97 0 -179 -47.5t-129.5 -129.5t-47.5 -179t47.5 -179t129.5 -129.5t179 -47.5q65 0 124.5 22.5t106.5 62.5t78 93l211 -121q-52 -90 -130.5 -157.5t-179.5 -105.5t-210 -38
q-163 0 -301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5z" />
<glyph glyph-name="uniF1E0" unicode="&#xf1e0;"
d="M670 1075h530v-530l-177 178l-242 -242l-175 175l242 242zM419 469l175 -175l-242 -242l178 -177h-530v530l177 -178z" />
<glyph glyph-name="uniF1E1" unicode="&#xf1e1;"
d="M304 779v-203h592v203l304 -304l-304 -304v203h-592v-203l-304 304z" />
<glyph glyph-name="uniF1E2" unicode="&#xf1e2;"
d="M1025 1075l175 -175l-241 -241l177 -178h-530v530l178 -177zM64 469h530v-530l-178 177l-241 -241l-175 175l241 241z" />
<glyph glyph-name="uniF1E3" unicode="&#xf1e3;"
d="M904 771h-203v-315v-37v-240h203l-304 -304l-304 304h203v240v37v315h-203l304 304z" />
<glyph glyph-name="uniF1E4" unicode="&#xf1e4;"
d="M809 941h134h257v-257v-268v-257h-257h-525v-150l-418 279l418 278v-150h525v268h-134v257z" />
<glyph glyph-name="uniF1E5" unicode="&#xf1e5;"
d="M300 850l300 -300h-225v-225h150l150 -150h-450v375h-225zM525 775h450v-375h225l-300 -300l-300 300h225v225h-150z" />
<glyph glyph-name="uniF1E6" unicode="&#xf1e6;"
d="M600 -125q-163 0 -301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5zM525 700l-300 -225l300 -225v450zM900 700l-300 -225l300 -225v450z" />
<glyph glyph-name="uniF1E7" unicode="&#xf1e7;"
d="M1200 -125h-502l-11 345h-174l-11 -345h-502l242 1200h299l-9 -277h136l-9 277h299zM684 324h-168l14 407h140l14 -407v0z" />
<glyph glyph-name="uniF1E8" unicode="&#xf1e8;"
d="M1200 -125h-240q0 131 -34.5 255t-96.5 229.5t-150.5 194t-194 150.5t-229.5 96.5t-255 34.5v240q196 0 379 -60.5t330.5 -171.5t258.5 -258.5t171.5 -330.5t60.5 -379zM720 -125h-240q0 98 -38 186.5t-102.5 153t-153 102.5t-186.5 38v240q146 0 279.5 -57t230 -153.5
t153.5 -230t57 -279.5zM240 -125h-240v240q99 0 169.5 -70.5t70.5 -169.5z" />
<glyph glyph-name="uniF1E9" unicode="&#xf1e9;"
d="M517 997q33 0 63 -13t51.5 -35t34.5 -52t13 -63q0 -71 -54 -120h1q32 -23 50.5 -59t34 -92t23.5 -76q25 -2 67.5 -4t75 -4t74 -6.5t75.5 -14t67.5 -25t60.5 -41t46 -59.5h-734q-51 7 -86 27q-20 -43 -60 -69.5t-89 -26.5q-38 0 -72 17t-57 46l-13 18l-24 -2q-27 0 -46 19
t-19 46t19 46t46 19q8 0 10.5 2t5.5 10q18 46 59 74.5t91 28.5q58 0 103 -37l92 -65q18 -15 48 -17.5t51 1.5t58 13q-2 13 -5.5 37t-5.5 35t-8.5 27t-17.5 28t-28 23q-14 10 -39.5 28t-38 27.5t-31 26.5t-28 32.5t-17 38t-9.5 48.5q0 68 47.5 115.5t114.5 47.5zM517 916
q-22 0 -41 -11t-29.5 -30t-10.5 -41q0 -33 23.5 -57t57 -24t57.5 24t24 57.5t-24 57.5t-57 24zM231.5 507q-33.5 0 -57.5 -24t-24 -57.5t24 -57t57 -23.5q22 0 41 10.5t29.5 29.5t10.5 41q0 33 -23.5 57t-57 24zM664 473q-19 0 -32.5 -13.5t-13.5 -32.5t13.5 -32.5
t32.5 -13.5t32.5 13.5t13.5 32.5t-13.5 32.5t-32.5 13.5zM668 251h152l111 -298q-29 3 -54.5 13t-44.5 22.5t-37.5 33t-31 39t-27 45.5t-23.5 47t-22.5 49.5t-22.5 48.5zM180 161h158v-72h-158v72zM464 161h141l33 -72h-174v72zM960 161h179v-72h-158z" />
<glyph glyph-name="uniF1EA" unicode="&#xf1ea;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM250 765v-462h254v-67h-62v-51h316v51h-62v67h254v462h-700zM336 677h528v-287h-528v287z" />
<glyph glyph-name="uniF1EB" unicode="&#xf1eb;"
d="M0 971h1200v-792h-436v-114h106v-86h-540v86h106v114h-436v792zM148 822v-493h904v493h-904z" />
<glyph glyph-name="uniF1EC" unicode="&#xf1ec;"
d="M510 1075h180v-156q134 -27 230.5 -123.5t123.5 -230.5h156v-180h-156q-27 -134 -123.5 -230.5t-230.5 -123.5v-156h-180v156q-134 27 -230.5 123.5t-123.5 230.5h-156v180h156q27 134 123.5 230.5t230.5 123.5v156zM510 798q-85 -23 -147.5 -85.5t-85.5 -147.5h175v-180
h-175q23 -85 85.5 -147.5t147.5 -85.5v175h180v-175q85 23 147.5 85.5t85.5 147.5h-175v180h175q-23 85 -85.5 147.5t-147.5 85.5v-175h-180v175z" />
<glyph glyph-name="uniF1ED" unicode="&#xf1ed;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM641.5 815q-120.5 0 -206 -85t-85.5 -206q0 -84 45 -155v0l-127 -127l108 -107l131 131v1q62 -33 134 -33
q121 0 206 85t85 205.5t-85 205.5t-205.5 85zM641 686q44 0 81 -21.5t59 -59t22 -81.5q0 -67 -47.5 -114t-114.5 -47t-114 47t-47 114t47 114.5t114 47.5z" />
<glyph glyph-name="uniF1EE" unicode="&#xf1ee;"
d="M672.5 1075q104.5 0 199.5 -40.5t163.5 -109.5t109.5 -164t41 -199t-41 -199t-109.5 -164t-163.5 -109.5t-199 -40.5q-127 0 -238 58v-1l-231 -231l-190 190l224 223h1q-79 125 -79 274q0 104 40.5 199t109 164t163.5 109.5t199.5 40.5zM673 847q-78 0 -143.5 -38
t-103.5 -104t-38 -143q0 -118 83.5 -201.5t201.5 -83.5t201.5 83.5t83.5 201.5t-83.5 201.5t-201.5 83.5z" />
<glyph glyph-name="uniF1EF" unicode="&#xf1ef;"
d="M755 1040l445 -445l-445 -446v321q-255 0 -358 -17q-178 -29 -267 -139q-102 -126 -130 -404q0 135 18 248t45.5 194t74 145t88.5 104.5t105 69.5t108 43t113.5 22t104.5 9t98 1v294z" />
<glyph glyph-name="uniF1F0" unicode="&#xf1f0;"
d="M0 1075h594v-197h-397v-806h806v221l197 209v-627h-1200v1200zM858 1075l342 -342l-342 -342v247q-73 0 -110 -1t-95.5 -4.5t-88.5 -11.5t-73.5 -22.5t-66.5 -36t-51.5 -53.5t-44 -75t-29.5 -99.5t-21 -127.5q0 104 14 190.5t35 148.5t56.5 111.5t68 80.5t81 53.5
t83 33.5t87 16.5t80.5 6.5t75 1v226z" />
<glyph glyph-name="uniF1F1" unicode="&#xf1f1;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM298 822q-15 4 -28 -3t-17.5 -21t1.5 -28q8 -13 22 -18l83 -26l30 -296l-19 -105q-3 -17 7.5 -29t28.5 -13
h451q14 0 25 10t12 26q0 14 -10.5 24.5t-26.5 11.5h-408l8 48h430q8 0 15 3.5t12.5 10.5t7.5 16l30 169q2 14 -7.5 26.5t-25.5 15.5l-483 54l-6 59q-3 24 -26 31zM460 262q-23 0 -39.5 -16.5t-16.5 -40t16.5 -39.5t39.5 -16t39.5 16t16.5 39.5t-16.5 40t-39.5 16.5z
M790.5 262q-23.5 0 -40 -16.5t-16.5 -40t16.5 -39.5t40 -16t40 16t16.5 39.5t-16.5 40t-40 16.5z" />
<glyph glyph-name="uniF1F2" unicode="&#xf1f2;"
d="M1199 671l-50 -288q-4 -24 -21 -38t-40 -14h-734l-14 -82h699q18 -1 32.5 -9.5t22 -22.5t7.5 -30q-1 -18 -9.5 -32.5t-22 -22t-30.5 -7.5h-773q-31 2 -48.5 23.5t-13.5 50.5l33 180l-51 506l-143 45q-25 10 -36 31.5t-5 46.5q10 25 32 36t46 5l183 -58q37 -14 43 -53
l10 -101l829 -93q28 -6 43 -26t11 -47zM455 -6.5q0 -39.5 -27.5 -67t-67 -27.5t-67.5 27.5t-28 67t28 67.5t67.5 28t67 -28t27.5 -67.5zM1023 -6q0 -19 -8 -37t-20.5 -30.5t-30 -20t-36.5 -7.5q-40 0 -68 27.5t-28 67t28 67.5t67.5 28t67.5 -28t28 -67z" />
<glyph glyph-name="uniF1F3" unicode="&#xf1f3;"
d="M960 -125v1200h240v-1200h-240zM640 775h240v-900h-240v900zM320 475h240v-600h-240v600zM0 175h240v-300h-240v300z" />
<glyph glyph-name="uniF1F4" unicode="&#xf1f4;"
d="M934 326q1 67 -34.5 114.5t-95.5 75.5q-57 25 -112 38q-18 5 -67 16t-77 19q-33 8 -61 29t-29 47q3 22 17.5 38.5t35.5 24.5t40.5 11.5t40.5 3.5q93 3 145 -85q12 -21 22 -32.5t25 -19.5t35 -8q33 2 56.5 25t24.5 54q-5 64 -52 107t-114 65q-164 42 -298 -9
q-66 -24 -106.5 -75t-40.5 -115q1 -45 20 -81.5t45.5 -59t67.5 -41t72.5 -28t75.5 -18.5q66 -13 104 -26q81 -29 82 -87q0 -42 -43 -71q-114 -56 -195 -14q-29 14 -47.5 37t-33.5 57q-14 32 -33 48.5t-49 16.5q-33 -1 -58 -22.5t-25 -51.5q5 -59 41.5 -108t88.5 -77
q95 -39 190.5 -43t187.5 32q70 30 112 87t42 126zM1158 349q33 -70 33 -147q-1 -66 -26.5 -126.5t-69.5 -104.5q-101 -95 -231 -96q-85 1 -154 39q-82 -14 -168 -4.5t-156 39.5q-102 46 -180 125t-121 176q-65 173 -33 334q-55 100 -40.5 209.5t91.5 187.5q84 80 197.5 92
t208.5 -46q91 14 182.5 -1t171.5 -55.5t142 -101.5q32 -33 58 -71t46 -77.5t33.5 -81.5t20.5 -84.5t8 -85.5q-1 -62 -13 -120z" />
<glyph glyph-name="uniF1F5" unicode="&#xf1f5;"
d="M62 1075h1073v-578q18 13 38 14q6 0 10 -1.5t7 -5.5t3 -9q-6 -20 -18 -39t-31.5 -36.5t-37.5 -31t-46 -28.5t-44.5 -24t-45.5 -23t-39 -19q29 -97 20 -194q-11 -91 -65.5 -154.5t-144.5 -66.5q-32 0 -60.5 15.5t-46.5 42.5q-12 18 -12 44v235q-9 2 -25 7t-19 6v-252
q0 -43 -37 -72t-83 -30q-85 1 -142 66.5t-68 155.5q-10 99 21 193q-143 62 -245 165q-1 2 -5 8.5t-6 10.5t-4.5 9.5t-1.5 10.5t4 9q11 6 25 3t26 -11v580zM125 1011v-555q8 -4 19 -10t22 -11.5t20 -9.5l838 9q35 17 47 24v553h-946zM437.5 718q58.5 0 100 -41.5t41.5 -100
t-41.5 -100t-100 -41.5t-100 41.5t-41.5 100t41.5 100t100 41.5zM773 718q38 0 70.5 -19t51.5 -51.5t19 -71.5q0 -58 -41.5 -99.5t-100 -41.5t-100 41.5t-41.5 100t41.5 100t100.5 41.5z" />
<glyph glyph-name="uniF1F6" unicode="&#xf1f6;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM286 789v-628h628v628h-628zM491 669q28 0 48 -19.5t20 -47.5t-20 -48t-48 -20t-47.5 20t-19.5 48t19.5 47.5
t47.5 19.5zM702.5 669q28.5 0 48 -19.5t19.5 -47.5t-19.5 -48t-48 -20t-48 20t-19.5 48t19.5 47.5t48 19.5zM382 456h436q0 -90 -64 -154t-154 -64q-59 0 -109.5 29t-79.5 79.5t-29 109.5z" />
<glyph glyph-name="uniF1F7" unicode="&#xf1f7;"
d="M0 1075h1200v-1200h-1200v1200zM392.5 847q-53.5 0 -91.5 -38t-38 -91.5t38 -91.5t91.5 -38t91.5 38t38 91.5t-38 91.5t-91.5 38zM796 847q-26 0 -50 -10.5t-41.5 -27.5t-27.5 -41t-10 -51q0 -53 37.5 -91t91.5 -38t92 38t38 91q0 27 -10.5 51t-28 41t-41.5 27.5
t-50 10.5zM183 439q0 -113 56 -209.5t152 -152t209 -55.5t209 55.5t152 152t56 209.5h-834z" />
<glyph glyph-name="uniF1F8" unicode="&#xf1f8;"
d="M729 734q57 1 111 -22.5t91 -63.5q55 -68 64 -143l1 -6q39 15 78 9q62 -9 96.5 -55t28.5 -106q-7 -56 -44 -94t-89 -37h-426q-8 2 -11 10l-1 480q3 8 18 14q39 14 83 14zM596.5 699q15.5 0 19.5 -347q-14 -133 -17 -135t-6 17q-2 14 -14 118q2 347 17.5 347zM545 671.5
q15 0.5 20 -319.5q-14 -133 -17 -135t-6 17q-2 14 -14 118q2 319 17 319.5zM395 639v0q14 -1 20 -287q-1 -9 -2 -24q-12 -111 -16 -111.5t-15 101.5l-4 34q3 284 17 287zM445.5 629.5q14.5 -0.5 19.5 -277.5q-14 -133 -18 -135q-2 -2 -5 17q-2 14 -14 118q3 278 17.5 277.5z
M346 626q16 0 21 -274q-14 -133 -18 -135q-2 -2 -5 17q-2 14 -14 118q0 274 16 274zM495 620v0q15 0 20 -268q-14 -133 -17 -135t-6 17q-2 14 -13 118q1 266 16 268zM297.5 608.5q12.5 -0.5 19.5 -256.5q-14 -133 -18 -135q-2 -2 -5 17q-2 14 -14 118q5 257 17.5 256.5z
M250 560.5q11 -0.5 18 -208.5q-14 -133 -18 -135q-2 -2 -5 17q-2 14 -14 118q8 209 19 208.5zM153 491q3 1 7 -40q2 -16 7 -61q2 -21 4 -32q-13 -131 -17 -134q-2 -1 -5 16q-2 15 -13 118q13 133 17 133zM105 488v0q3 -1 17 -131q-12 -128 -16 -131q-2 -2 -5 16
q-2 14 -13 115q13 130 17 131zM200 486q4 -1 19 -134q-14 -131 -17 -133q-2 -1 -4 5q-2 12 -16 128q14 133 18 134zM58 464q3 0 18 -110q-13 -108 -17 -110q-1 -1 -3 6q-3 10 -15 104q13 109 17 110zM14 424.5q3 0.5 11 -53.5l3 -18q-11 -71 -13.5 -70.5t-14.5 70.5
q11 71 14 71.5z" />
<glyph glyph-name="uniF1F9" unicode="&#xf1f9;"
d="M0 725h283l425 346v-1192l-425 346h-283v500zM868 781q125 -125 128 -305q0 -172 -128 -295l-86 89q88 88 88 209q0 123 -88 214zM1016 926q184 -184 184 -445t-184 -447l-91 91q147 145 147 355t-147 358z" />
<glyph glyph-name="uniF1FA" unicode="&#xf1fa;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301q0 -146 -65 -272t-178 -210q-28 67 -84.5 120t-127.5 84.5t-154 42.5t-163 0.5t-157 -48t-135 -98.5q-65 79 -100.5 176.5t-35.5 204.5q0 163 80.5 301t218.5 218.5t301 80.5zM961 763q-110 40 -222.5 59.5t-219.5 19.5
t-228 -10q-20 1 -32.5 -22t-6.5 -50.5t32 -36.5q97 15 182 17t167.5 -9.5t153.5 -29t166 -47.5q20 -2 32.5 21.5t6.5 51t-31 36.5zM882 586q-93 34 -188 50.5t-185.5 16.5t-193.5 -8q-10 1 -18.5 -7t-12 -20t-3.5 -25t7 -24.5t21 -15.5q82 12 154 14t142 -8t130.5 -25
t140.5 -40q7 -1 13.5 3t11 11t7.5 16t2.5 18.5t-3 18t-9 15.5t-16.5 10zM818 411q-78 30 -158.5 43.5t-156.5 13.5t-162 -7q-15 1 -24 -15.5t-4.5 -36.5t22.5 -26q69 11 130 12.5t120 -7t109.5 -21t118.5 -33.5q14 -1 23 15.5t5 36t-23 25.5zM532 73q72 0 141.5 -49.5
t103.5 -121.5q-86 -27 -177 -27q-151 0 -282 71q29 58 87 92.5t127 34.5z" />
<glyph glyph-name="uniF1FB" unicode="&#xf1fb;"
d="M284 131h473v-98h-473v98zM292 307l471 -32l-6 -98l-472 32zM147 348h78v-394h591v394h78v-473h-50h-619h-78v473zM328 515l459 -113l-24 -95l-459 114zM429 752l408 -239l-50 -84l-407 239zM678 977l263 -393l-81 -54l-263 392zM996 1075l57 -469l-97 -12l-57 469z" />
<glyph glyph-name="uniF1FC" unicode="&#xf1fc;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM604 865l-102 -293l-310 2l246 -188l-97 -294l255 176l250 -183l-89 297l251 181l-309 7z" />
<glyph glyph-name="uniF1FD" unicode="&#xf1fd;"
d="M606 1048l34 -108l105 -326l342 -7l113 -3l-92 -66l-278 -200l99 -327l32 -109l-91 67l-276 202l-281 -195l-93 -64l35 108l107 324l-272 208l-90 68h113l342 -2l113 323zM603 809l-85 -241l-9 -26h-27l-255 1l203 -155l21 -16l-8 -26l-80 -243l210 146l22 15l22 -16
l206 -151l-73 245l-8 26l22 16l208 149l-256 6l-27 1l-8 25z" />
<glyph glyph-name="uniF1FE" unicode="&#xf1fe;"
d="M961 -98l-367 269l-374 -259l142 432l-362 276l455 -2l151 430l139 -434l455 -10l-370 -266z" />
<glyph glyph-name="uniF1FF" unicode="&#xf1ff;"
d="M250 -125v1200h200v-550l500 500v-1100l-500 500v-550h-200z" />
<glyph glyph-name="uniF200" unicode="&#xf200;"
d="M950 1075v-1200h-200v550l-500 -500v1100l500 -500v550h200z" />
<glyph glyph-name="uniF201" unicode="&#xf201;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM300 775v-600h600v600h-600z" />
<glyph glyph-name="uniF202" unicode="&#xf202;"
d="M0 1075h1200v-1200h-1200v1200z" />
<glyph glyph-name="uniF203" unicode="&#xf203;"
d="M1075 843q99 -131 120 -293.5t-40 -307.5q-50 -111 -136 -194t-194 -127.5t-224 -45.5q-171 2 -314.5 91t-220.5 236h262q56 0 104 22t77 62t30 91q0 45 -17 81.5t-51 57.5q-10 5 -21 9.5t-19.5 7.5t-22 6t-20 4.5t-22.5 4t-21 3.5q-2 0 -9.5 1.5t-10 2.5t-9.5 2.5t-10 3
t-8.5 4t-8.5 5t-6 6t-4.5 7.5t-1.5 9q3 53 88 53h182q49 -1 74 -12q36 -16 37 -51v-182q2 -95 63 -148q61 -49 145 -50q90 2 146 50q63 59 63 148v443zM601 1075q183 -2 338 -104v-576q-3 -31 -23 -51.5t-50 -20.5q-31 2 -52 22.5t-21 49.5v173q-3 149 -97 184
q-29 11 -63 11h-295q-84 -2 -138 -47q-58 -53 -58 -129q1 -55 25 -91q37 -51 110 -65q14 -3 47.5 -7.5t50.5 -10.5q30 -11 30 -42q-2 -32 -36 -42q-24 -6 -88 -6h-262q-19 80 -19 152q2 123 51.5 234.5t130.5 191t190.5 126.5t228.5 48z" />
<glyph glyph-name="uniF204" unicode="&#xf204;"
d="M31 634v348q2 39 29 66t63 27h348q45 -3 89 -20t70 -46l515 -573q24 -31 24 -68.5t-24 -63.5l-403 -403q-30 -26 -68.5 -26t-63.5 26l-513 575q-30 34 -48 76t-18 82zM182 835q1 -38 27 -63.5t62 -25.5q38 1 63.5 27.5t25.5 61.5q-2 38 -28 63.5t-61 25.5
q-38 -2 -63.5 -28t-25.5 -61z" />
<glyph glyph-name="uniF205" unicode="&#xf205;"
d="M0 608v290q3 34 24.5 55.5t52.5 22.5h291q52 -1 106 -34l456 -500q20 -27 20.5 -57t-20.5 -52l-337 -336q-26 -22 -57 -22.5t-52 22.5l-429 478q-54 67 -55 133zM147 723q25 -22 55 -21.5t51 21.5q22 24 21.5 54.5t-21.5 51.5q-24 21 -54.5 20.5t-51.5 -20.5
q-22 -26 -21.5 -55t21.5 -51zM506 974h112q37 -2 73.5 -16.5t58.5 -38.5l429 -479q21 -25 21 -56.5t-21 -53.5l-336 -335q-74 -42 -118 9l329 329q22 25 21.5 56t-21.5 53l-383 429q-30 38 -86.5 69.5t-78.5 33.5z" />
<glyph glyph-name="uniF206" unicode="&#xf206;"
d="M0 944h1200v-235h-1200v235zM753 886v-119h385v119h-385zM0 592h1200v-234h-1200v234zM488 534v-118h650v118h-650zM0 241h1200v-235h-1200v235zM895 183v-119h243v119h-243z" />
<glyph glyph-name="uniF207" unicode="&#xf207;"
d="M992 1075l208 -209h-139v-782h139l-208 -209l-209 209h140v782h-140zM6 867h685l5 -213h-73q0 110 -23.5 128t-164.5 18v-588q0 -53 13 -62t90 -9v-58h-380v58h1q75 -1 88.5 7.5t13.5 49.5v14v588h-1q-139 0 -162.5 -18t-23.5 -128h-74z" />
<glyph glyph-name="uniF208" unicode="&#xf208;"
d="M258 1075h685l5 -213h-73q0 109 -24 127.5t-164 18.5v-588q0 -53 13 -62t90 -9v-59h-380v59h1q75 -2 88 6.5t14 50.5v14v588h-1q-139 0 -162.5 -18.5t-23.5 -127.5h-74zM209 292v-140h782v140l209 -209l-209 -208v139h-782v-139l-209 208z" />
<glyph glyph-name="uniF209" unicode="&#xf209;"
d="M0 1075h525v-525h-525v525zM675 1075h525v-525h-525v525zM0 400h525v-525h-525v525zM675 400h525v-525h-525v525z" />
<glyph glyph-name="uniF20A" unicode="&#xf20a;"
d="M0 1075h300v-300h-300v300zM469 1075h731v-300h-731v300zM0 625h300v-300h-300v300zM469 625h731v-300h-731v300zM0 175h300v-300h-300v300zM469 175h731v-300h-731v300z" />
<glyph glyph-name="uniF20B" unicode="&#xf20b;"
d="M0 1075h300v-300h-300v300zM450 1075h300v-300h-300v300zM900 1075h300v-300h-300v300zM0 625h300v-300h-300v300zM450 625h300v-300h-300v300zM900 625h300v-300h-300v300zM0 175h300v-300h-300v300zM450 175h300v-300h-300v300zM900 175h300v-300h-300v300z" />
<glyph glyph-name="uniF20C" unicode="&#xf20c;"
d="M1141 278h-298q9 -71 25 -142q8 -109 -113 -191q-24 -15 -51 -7q-25 9 -37 35l-136 305h-137q-18 1 -31.5 9t-21 21t-7.5 30v602q1 18 9 31.5t21.5 21t29.5 7.5h552q42 -3 84 -27q65 -40 86 -104l83 -520q4 -29 -13.5 -50t-44.5 -21zM218 266h-175q-9 1 -17 4.5
t-13.5 8.5t-9 12.5t-3.5 16.5v665q1 19 13.5 30.5t29.5 11.5h175q19 -2 31 -13.5t12 -28.5v-665q-1 -19 -13.5 -30.5t-29.5 -11.5z" />
<glyph glyph-name="uniF20D" unicode="&#xf20d;"
d="M718 1014q19 1 41.5 -13t36 -27t32.5 -34q19 -23 28.5 -48t9 -54.5t-2.5 -50.5t-9.5 -58.5t-10.5 -55.5h299q29 -1 44.5 -20.5t13.5 -51.5l-84 -518q-9 -32 -34.5 -61t-61.5 -48t-74 -24h-552q-25 1 -41.5 17t-18.5 43v603q0 12 4.5 22.5t12 18.5t19 13t24.5 6h137
l136 304q6 14 20 25.5t31 11.5zM218 685q11 -1 20.5 -6t15.5 -14.5t7 -21.5v-666q0 -17 -12.5 -28.5t-30.5 -12.5h-175q-17 0 -29 11.5t-14 29.5v666q0 11 5.5 20.5t15.5 15t22 6.5h175z" />
<glyph glyph-name="uniF20E" unicode="&#xf20e;"
d="M1024 899q83 -83 129.5 -192.5t46.5 -231.5q0 -163 -80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5q122 0 231.5 -46.5t192.5 -129.5zM902 813l-297 -298l-176 176l-13 -12l-84 -84l-11 -12l284 -284v0l406 406z
" />
<glyph glyph-name="uniF20F" unicode="&#xf20f;"
d="M600 1075q117 0 227.5 -44.5t196.5 -131.5q116 -115 156.5 -269.5t0 -309t-156 -270t-270 -156t-309 0t-270 156t-156 270t0 309t156.5 269.5q86 87 196.5 131.5t227.5 44.5zM600 918q-87 0 -168.5 -33t-144.5 -97q-86 -85 -116 -199t0 -228t115.5 -199.5t199.5 -115.5
t228 0t199 116q52 51 84 114.5t41.5 131t0 135t-41.5 131t-84 114.5q-42 43 -94 72.5t-107 43.5t-112 14zM539 818h153v-281v-153h-153h-156v153h156v281z" />
<glyph glyph-name="uniF210" unicode="&#xf210;"
d="M176 300q2 125 67 227q23 33 68.5 97t65.5 94q107 166 152 308q9 26 28 38.5t43 9.5q27 2 45 -11t26 -37q44 -143 153 -308q21 -35 66.5 -96t66.5 -95q66 -106 67 -227q-2 -87 -34.5 -165t-88.5 -136q-62 -60 -141 -91.5t-160 -32.5q-86 2 -164 34.5t-136 89.5
q-60 62 -92 141t-32 160zM362 206q2 -45 33 -75.5t73 -31.5q45 2 75 33.5t31 73.5q0 32 -17 56q-21 28 -34 48q-30 49 -38 77q-3 15 -17 13q-14 3 -18 -13q-10 -34 -37 -77q-5 -8 -11 -16t-12.5 -16.5t-10.5 -15.5q-18 -24 -17 -56z" />
<glyph glyph-name="uniF211" unicode="&#xf211;"
d="M1130 304v-429h-1060v429l405 172q-72 46 -109.5 122t-37.5 160q0 80 33.5 151.5t97 118t141.5 47.5q62 -2 114 -30.5t86 -73.5t53 -100.5t19 -112.5q-2 -88 -39.5 -163t-103.5 -117z" />
<glyph glyph-name="uniF212" unicode="&#xf212;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM507 851v-58h-217v-105h620v105h-217v58h-186zM323 607v-508h554v508h-554z" />
<glyph glyph-name="uniF213" unicode="&#xf213;"
d="M451 1075h298v-92h346v-169h-990v169h346v92zM158 686h884v-811h-884v811z" />
<glyph glyph-name="uniF214" unicode="&#xf214;"
d="M1200 1075v-1200h-1200v1200h1200zM699 200q-39 11 -57 25q-9 8 -9 14v307h194v134h-194v203h-112q-6 -85 -50.5 -144t-121.5 -59v-134h92v-332q1 -40 18.5 -72t48.5 -49q50 -26 124 -26q102 0 123 1q53 2 96 24v143v2v-2q-25 -16 -56 -28q-53 -17 -96 -7z" />
<glyph glyph-name="uniF215" unicode="&#xf215;"
d="M1200 858q-12 -25 -45 -64t-81 -68q2 -11 2 -21q5 -132 -51 -278q-97 -242 -293 -364q-190 -109 -457 -83q-170 19 -275 106q99 -12 192.5 17t174.5 89q-80 -2 -141 47t-92 125q20 -5 52 -2q39 3 59 8q-121 39 -167 129q-28 59 -28 124q66 -36 111 -34q-98 83 -109 177
q-7 74 30 160q136 -150 285 -214q113 -46 224 -47q-14 113 30 190q53 84 155 113q65 16 126 -4t103 -67q73 8 159 59q-15 -47 -43.5 -85t-66.5 -57q75 14 146 44z" />
<glyph glyph-name="uniF216" unicode="&#xf216;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM600 995q-106 0 -202 -41.5t-166 -111t-111 -165.5t-41 -202t41 -202t111 -166t166 -111t202 -41t202 41
t165.5 111t111 166t41.5 202t-41.5 202t-111 166t-165.5 111t-202 41zM922 534q13 -12 13.5 -28t-9.5 -28q-11 -13 -28 -14t-28 10q-23 21 -74.5 64t-77.5 67l-3.5 2t-8.5 4.5t-8 2.5q-7 0 -7 -17q1 -17 1 -69.5t3 -80.5q3 -26 3 -30l58 -327q3 -22 -8.5 -38t-31.5 -20
q-12 -3 -25 2t-21.5 15.5t-10.5 22.5q-47 264 -47 269q-1 0 -1.5 4t-1 7.5t-1.5 7.5t-3 6.5t-5 2.5q-4 -1 -6.5 -5.5t-3 -8.5t-1 -8.5t-1.5 -5.5l-47 -269q-6 -21 -22 -32t-35 -8q-22 6 -32.5 22t-7.5 36l57 329q7 45 7 176q0 18 -7 18.5t-19 -9.5l-152 -130
q-13 -10 -29.5 -9t-26.5 13q-23 32 4 56l199 176q14 9 26.5 12.5t29.5 3.5h134q17 0 29.5 -3.5t26.5 -13.5q11 -10 85 -75t114 -100zM688 836.5q0 -36.5 -25.5 -62t-62 -25.5t-62 25.5t-25.5 62t25.5 62t62 25.5t62 -25.5t25.5 -62z" />
<glyph glyph-name="uniF217" unicode="&#xf217;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM608 863q-55 -3 -98.5 -28.5t-69.5 -70t-30 -100.5v-92h-101v-367h582v367h-364v92q0 22 11 40t29.5 29
t40.5 12q17 1 31.5 -4.5t25 -16t17 -25.5t8.5 -32h116q-3 80 -59.5 139.5t-138.5 56.5z" />
<glyph glyph-name="uniF218" unicode="&#xf218;"
d="M1131 544v-669h-1062v669h184v168q1 49 14 96t36.5 87.5t55.5 73.5q49 48 115 77t141 29q73 -1 138.5 -29t115.5 -75q50 -52 78 -118t30 -134h-213q-2 56 -43 98q-46 43 -106 44q-63 -2 -105 -44q-43 -46 -43 -105v-168h664z" />
<glyph glyph-name="uniF219" unicode="&#xf219;"
d="M600 -125q-163 0 -301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5t301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5zM600 945q-96 0 -182.5 -37.5t-149.5 -100.5t-100.5 -149.5t-37.5 -182.5t37.5 -182.5t100.5 -149.5
t149.5 -100.5t182.5 -37.5t182.5 37.5t149.5 100.5t100.5 149.5t37.5 182.5t-37.5 182.5t-100.5 149.5t-149.5 100.5t-182.5 37.5zM717 224h-234v267h-147l264 248l264 -248h-147v-267z" />
<glyph glyph-name="uniF21A" unicode="&#xf21a;"
d="M960 288q0 -114 -82 -183q-44 -37 -91 -56.5t-118 -26.5v-147h-143v144q-85 2 -150.5 16.5t-134.5 45.5v189q63 -31 150 -54q6 -2 23 -6.5t22 -6t18 -4.5t19 -4t16 -3t18.5 -3t18.5 -1v222l-26 19q-142 56 -201 121q-59 66 -59 163q0 104 81 170q44 37 90 56t115 26v110
h143v-107q79 -3 142 -19t133 -47l-68 -168q-62 26 -107 39t-100 17v-211q43 -17 80.5 -36t51 -28t44.5 -30q60 -39 87 -86q28 -48 28 -111zM744 277q0 31 -24 51q-6 5 -12.5 13.5t-15 16t-23.5 13.5v-178q46 7 60.5 27t14.5 57zM456 713q0 -32 21 -53q5 -3 9.5 -9.5t8.5 -11
t12 -10t19 -10.5v168q-43 -6 -56.5 -23t-13.5 -51v0z" />
<glyph glyph-name="uniF21B" unicode="&#xf21b;"
d="M940 217q80 -30 137.5 -57t90 -52.5t32.5 -45.5v-187h-1200v187q0 30 69.5 70t190.5 85q119 43 163.5 87.5t44.5 121.5q0 27 -13 53.5t-31.5 54.5t-24.5 48q-14 42 -36 162q-12 65 -17 112q-2 21 3 46.5t21.5 57t43.5 56.5t75.5 42t110.5 17t110.5 -17t75.5 -42
t43.5 -56.5t21.5 -57t3 -46.5q-5 -47 -17 -112q-22 -119 -36 -162q-7 -20 -25 -48t-31 -54.5t-13 -53.5q0 -53 19.5 -88.5t63.5 -63.5t125 -57z" />
<glyph glyph-name="uniF21C" unicode="&#xf21c;"
d="M551 1075q43 -24 82 -92t60 -138.5t20 -115.5zM1058 1051q2 0 4 -3q55 -74 57 -224q-1 -45 -14.5 -90t-39 -87t-68 -68t-95.5 -26q-54 5 -107 51q-8 7 -6.5 10.5t19.5 14.5q81 48 141 101t80 94q10 22 9 25q-2 2 -9 -9l-6 -8q-62 -99 -173 -153q-52 -25 -94 -31
q-15 30 -21 54.5t-4.5 54t14.5 59.5q11 22 34.5 43t52 36t59.5 24q48 13 90.5 44.5t68.5 78.5q4 8 8 9zM513 740q88 0 169 -34l-39 -91q-62 27 -130 27q-91 0 -168 -45t-121.5 -121.5t-44.5 -167.5q0 -64 23 -122t62 -101.5t93.5 -72.5t116.5 -36q50 29 91 77t66 103
t44.5 118.5t27.5 124.5t13.5 120.5t3.5 106.5t-2 83q40 -85 45 -192.5t-21 -209t-82 -192t-131 -141.5q134 6 226 102.5t92 231.5q0 68 -26 130l91 38q34 -80 34 -168t-34.5 -168t-92.5 -138t-138 -92.5t-168 -34.5t-168 34.5t-138 92.5t-92 138t-34 167.5t34 167.5t92 138
t138 92.5t168 34.5z" />
<glyph glyph-name="uniF21D" unicode="&#xf21d;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM242 746v-542h716v542h-716zM330 658h540v-366h-540v366zM520 594v-244l210 123z" />
<glyph glyph-name="uniF21E" unicode="&#xf21e;"
d="M0 1026h1200v-855h-567l-386 -247v247h-247v855zM263 811v-398h483v149l191 -149v398l-191 -149v149h-483z" />
<glyph glyph-name="uniF21F" unicode="&#xf21f;"
d="M0 929h1200v-908h-1200v908zM147 782v-614h906v614h-906zM465 675l354 -204l-354 -205v409z" />
<glyph glyph-name="uniF220" unicode="&#xf220;"
d="M1111 1075l89 -89l-1111 -1111l-89 88zM0 1073h281v-281h-281v281zM331 1073h282v-281h-282v281zM0 737h281v-282h-281v282zM331 737h282l-282 -282v282zM826 439h374v-158h-548zM615 237h585v-158h-585v158zM615 35h585v-158h-585v158z" />
<glyph glyph-name="uniF221" unicode="&#xf221;"
d="M953 757q-64 49 -131.5 31.5t-121.5 -70t-75 -111.5h15h15t15 -0.5t14 -2t13 -3.5q35 -18 30 -78q-8 -35 -23 -73t-40 -72t-51 -38q-18 -2 -37 20q-17 21 -27.5 50t-14 51.5t-7 57t-6.5 51.5q-1 8 -4 27t-5.5 33t-7 33.5t-10.5 34t-14 29t-19.5 25t-25.5 15.5
q-26 3 -52.5 -3.5t-52 -22.5t-43 -30t-39.5 -34q-44 -41 -89 -78v-5q4 -5 10.5 -14t8.5 -12q14 -14 44 -4q5 1 12.5 3t11.5 3t9.5 2.5t9 1.5h8t7.5 -1t6.5 -3.5t6.5 -6t6.5 -8t7.5 -11.5q34 -91 88 -304q9 -27 15 -43t17.5 -39.5t26.5 -38.5t34 -23q29 -9 61.5 -1.5
t55.5 21.5q144 91 255 287q5 11 26 50.5t32.5 63t27 64t21 68t3 57.5t-16.5 51zM1200 1075v-1200h-1200v1200h1200z" />
<glyph glyph-name="uniF222" unicode="&#xf222;"
d="M0 1075h1200v-1200h-1200v1200zM533 754q-86 -1 -100 -38q20 -6 33 -16.5t18.5 -24t7 -24.5t1.5 -27q-1 -113 -5 -113q-7 -27 -20.5 -28t-28.5 15q-56 74 -117 204q-12 28 -35 27q-11 0 -59.5 1t-74.5 -1.5t-37 -11.5q3 -33 25 -80q55 -120 172 -285q23 -26 35 -39
t34 -33.5t37 -30t38.5 -22.5t47 -18t54.5 -8t66 -1h4q12 0 19 1t16.5 5t14.5 13t7 23l6 59q2 19 16.5 23t28.5 -2.5t20 -15.5q17 -27 63.5 -69t79.5 -41l154 6q23 1 28 21t-12 46q-34 51 -122 133q-1 0 -2 1q-43 39 18 105q12 13 28 33t35.5 47t33 51.5t20.5 46t-1 30.5v1
q-8 9 -12.5 10.5t-24.5 1.5h-7h-144q-29 0 -36 -9q-3 -4 -10 -19l-4 -8q-1 -3 -13 -29.5t-16.5 -35.5t-16.5 -32.5t-20.5 -35.5t-20.5 -28.5t-24.5 -27t-25.5 -18.5q-12 5 -18.5 23.5t-7 46.5t0.5 52.5t3.5 51.5t2.5 33q2 55 -70 57q-1 0 -32 2t-51 2z" />
<glyph glyph-name="uniF223" unicode="&#xf223;"
d="M171 690h243l367 299v-1028l-367 299h-243v430zM919 739q108 -108 110 -263q0 -148 -110 -254l-74 76q76 76 76 180q0 106 -76 185z" />
<glyph glyph-name="uniF224" unicode="&#xf224;"
d="M1089 394q3 -3 3 -6.5t-3 -6.5l-57 -57q-3 -2 -6 -2t-6 2l-82 82l-81 -82q-2 -2 -6 -2q-3 0 -6 2l-57 57q-2 3 -2 7q0 3 2 6l81 81l-81 81q-2 3 -2 6q0 4 2 7l57 57q3 2 6.5 2t5.5 -2l81 -82l82 82q2 2 5.5 2t6.5 -2l57 -57q3 -3 3 -6.5t-3 -6.5l-81 -81zM108 690h244
l367 299v-1028l-367 299h-244v430z" />
<glyph glyph-name="uniF225" unicode="&#xf225;"
d="M0 690h244l367 299v-1028l-367 299h-244v430zM748 739q109 -108 111 -263q0 -148 -111 -254l-74 76q77 76 77 180q0 106 -77 185zM876 864q159 -159 159 -383.5t-159 -386.5l-79 79q127 125 127 306.5t-127 308.5zM992 981q98 -98 153 -227.5t55 -273.5t-55 -274.5
t-153 -227.5l-76 76q176 176 176 425t-176 425z" />
<glyph glyph-name="uniF226" unicode="&#xf226;"
d="M1074 446q5 21 -11 27l-45 21q-9 3 -17.5 -1t-10.5 -12q-16 -34 -41 -34q-26 0 -42.5 28t-16.5 73.5t16.5 74t42.5 28.5q25 -2 41 -33q7 -17 28 -11l45 21q8 4 11 12.5t-2 16.5q-39 85 -123 85q-70 0 -113 -53.5t-43 -140t43 -139.5t113 -53q84 0 125 90zM638 356
q54 1 91 34.5t38 82.5q-2 50 -40 82q34 32 34 76q-1 52 -37.5 80.5t-85.5 28.5q-78 0 -121 -61q-10 -14 3 -28l33 -30q15 -14 31 1q21 29 50 29q23 0 27 -11q7 -15 0 -32q-5 -5 -12.5 -7.5t-12 -3t-16 0t-14.5 0.5q-6 0 -11.5 -2.5t-8.5 -7.5t-3 -11v-49q1 -11 7.5 -17
t15.5 -4q54 0 60 -11q5 -11 5 -18q0 -31 -35 -31q-33 0 -55 30q-6 8 -15.5 8.5t-15.5 -5.5l-34 -34q-13 -13 -3 -27q44 -62 125 -63zM502 710q2 10 -4 18t-15 8h-61q-16 0 -19 -16l-29 -147l-30 147q-4 16 -20 16h-44q-18 0 -21 -16l-30 -147l-29 147q-3 16 -20 16h-59
q-8 0 -13 -4t-7 -9.5t-1 -12.5l76 -332q4 -16 20 -16h58q16 0 20 16l28 137l27 -137q3 -16 21 -16h57q17 0 21 16zM1200 1075v-919l-600 -281l-600 281v919h1200z" />
<glyph glyph-name="uniF227" unicode="&#xf227;"
d="M600 1075l600 -1200h-1200zM554 659v-159l22 -223h48l22 223v159h-92zM554 190v-100h92v100h-92z" />
<glyph glyph-name="uniF228" unicode="&#xf228;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM281 773v-596h638v596h-638zM360 695h480v-440h-480v440zM412 639v-195h375v195h-375zM412 410v-106h106v106
h-106zM546 410v-106h106v106h-106zM680 410v-106h107v106h-107z" />
<glyph glyph-name="uniF229" unicode="&#xf229;"
d="M699 153h-200v199h200v-199zM951 153h-199v199h199v-199zM446 153h-200v199h200v-199zM951 784v-368h-705v368h705zM1052 890h-904v-830h904v830zM0 -87v1124h1200v-1124h-1200z" />
<glyph glyph-name="uniF22A" unicode="&#xf22a;"
d="M477 1075q51 -2 84.5 -36t34.5 -83q-2 -51 -37 -85.5t-82 -34.5q-34 1 -61.5 17t-43 43t-16.5 60q2 33 18 60.5t43 43t60 15.5zM510 809q33 0 58 -20q12 -10 19.5 -19.5t12 -23t6.5 -20.5t5.5 -26.5t4.5 -27.5h200q8 -1 16 -4t14.5 -8t11 -11.5t6.5 -14.5
q4 -18 -2.5 -33.5t-20.5 -23.5t-33 -7h-170l26 -125h217q56 -3 77 -47l196 -341q9 -19 5 -38.5t-17 -32.5q-26 -22 -57.5 -16t-45.5 36l-169 294q-65 1 -102 0.5t-102.5 -1t-100.5 -0.5q-32 2 -54 20t-28 47l-70 339h1q-4 19 5 41t22 35q28 28 69 28zM326 663q39 1 52 -31
q7 -22 -2 -40t-29 -24q-93 -38 -147 -114q-56 -82 -56 -173q1 -63 25.5 -119t67.5 -97q99 -89 223 -90q103 2 183 56q83 60 115 146q8 18 12 37q7 22 24 32.5t37 6.5q23 -7 34 -23t6 -37q-6 -27 -15 -49q-48 -124 -154 -195q-114 -73 -242 -74q-85 2 -162 33t-134 86
q-59 59 -91 134.5t-33 152.5q3 130 74 231q78 104 196 149q8 2 16 2z" />
<glyph glyph-name="uniF22B" unicode="&#xf22b;"
d="M599 -125q-123 2 -234 51.5t-190.5 131t-126.5 191t-48 227.5q2 123 51.5 234t130.5 190.5t190 126.5t227 48q123 -2 234.5 -51.5t191.5 -130.5t127 -190t48 -227q-2 -99 -34 -191t-88.5 -165t-130 -128.5t-163.5 -85.5t-185 -31zM599 1032q-114 -2 -217.5 -47.5
t-177.5 -121t-118 -177t-45 -210.5q2 -115 48 -218.5t121.5 -177.5t177.5 -118t211 -44q115 2 218.5 48t177.5 121.5t118 177t44 211.5q-2 114 -48 217.5t-121.5 177t-177 117.5t-211.5 44zM455 -15l154 441l160 -432q-158 -53 -314 -9zM337 765q-84 -11 -164 -8
q75 107 189 167.5t237 61.5q98 -2 187.5 -37t158.5 -98q-56 5 -85 -46q-6 -20 -6.5 -39.5t3.5 -35t12 -34t15.5 -31.5t18.5 -31.5t17 -30.5q40 -75 11 -173l-77 -262l-185 550q53 5 56 6q16 3 19 15t-8 21q-6 5 -15 5l-111 -8h-84q-6 -1 -32.5 3.5t-44 2.5t-20.5 -16
q-2 -8 3 -15t14 -8q38 -5 56 -7l81 -217l-113 -332l-186 550q52 5 57 6q22 3 20 22q-2 8 -9 13.5t-15 5.5zM132 680l245 -664q-130 64 -208 185q-68 107 -77 238t40 241zM1091 339q-30 -99 -91 -178t-146 -128q9 22 26 74l143 414q21 60 29 134q3 34 -1 59q90 -195 40 -375z
" />
<glyph glyph-name="uniF22C" unicode="&#xf22c;"
d="M600 1075q163 0 301 -80.5t218.5 -218.5t80.5 -301t-80.5 -301t-218.5 -218.5t-301 -80.5t-301 80.5t-218.5 218.5t-80.5 301t80.5 301t218.5 218.5t301 80.5zM763 835q-81 0 -138 -57q-41 -41 -53 -97.5t7 -108.5l-339 -339l118 -118l339 339q52 -19 108.5 -7t97.5 53
t53 97.5t-7 108.5l-120 -120l-85 33l-33 85l120 120q-33 11 -68 11zM333 257q9 9 23 9t26 -9q10 -11 10 -25t-10.5 -24.5t-24.5 -10.5t-24.5 10.5t-10.5 24.5t11 25z" />
<glyph glyph-name="uniF22D" unicode="&#xf22d;"
d="M984 1056l-199 -199l55 -142l142 -55l199 199q32 -85 12 -179.5t-88.5 -162.5t-162.5 -88t-180 12l-565 -566l-197 197l566 565q-32 86 -12 180t88 162.5t162.5 88.5t179.5 -12zM236 111q-17 17 -41 17t-40.5 -17t-16.5 -41t16.5 -40.5t40.5 -16.5t41 16.5t17 40.5
t-17 41z" />
<glyph glyph-name="uniF22E" unicode="&#xf22e;"
d="M1200 20h-1200v910h1200v-910zM427 209l420 263l-420 264v-527z" />
<glyph glyph-name="uniF22F" unicode="&#xf22f;"
d="M614 768v-154h154v-153h-154v-154h-153v154h-154v153h154v154h153zM1200 9l-134 -134l-221 222q-139 -97 -308 -97q-109 0 -208.5 42.5t-171.5 114.5t-114.5 171.5t-42.5 209t42.5 209t114.5 171.5t171.5 114.5t208.5 42.5q74 0 143.5 -19.5t128.5 -54t108.5 -84
t84 -108.5t54 -128.5t19.5 -142.5q0 -169 -97 -308zM537.5 154q104.5 0 193 51t139.5 139.5t51 193t-51 193t-139.5 139.5t-193 51t-193 -51t-140 -139.5t-51.5 -193t51.5 -193t140 -139.5t193 -51z" />
<glyph glyph-name="uniF230" unicode="&#xf230;"
d="M1200 9l-134 -134l-221 222q-139 -97 -308 -97q-109 0 -208.5 42.5t-171.5 114.5t-114.5 171.5t-42.5 209t42.5 209t114.5 171.5t171.5 114.5t209 42.5t209 -42.5t171.5 -114.5t114.5 -171.5t42.5 -208.5q0 -169 -97 -308zM537.5 154q104.5 0 193 51t139.5 139.5t51 193
t-51 193t-139.5 139.5t-193.5 51q-78 0 -149 -30t-122.5 -81.5t-82 -122.5t-30.5 -150q0 -104 51.5 -192.5t140 -139.5t193 -51zM307 461v153h461v-153h-461z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,606 @@
/*
* jquery.flot.tooltip
*
* description: easy-to-use tooltips for Flot charts
* version: 0.9.0
* authors: Krzysztof Urbas @krzysu [myviews.pl],Evan Steinkerchner @Roundaround
* website: https://github.com/krzysu/flot.tooltip
*
* build on 2016-07-26
* released under MIT License, 2012
*/
(function ($) {
// plugin options, default values
var defaultOptions = {
tooltip: {
show: false,
cssClass: "flotTip",
content: "%s | X: %x | Y: %y",
// allowed templates are:
// %s -> series label,
// %c -> series color,
// %lx -> x axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),
// %ly -> y axis label (requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels),
// %x -> X value,
// %y -> Y value,
// %x.2 -> precision of X value,
// %p -> percent
// %n -> value (not percent) of pie chart
xDateFormat: null,
yDateFormat: null,
monthNames: null,
dayNames: null,
shifts: {
x: 10,
y: 20
},
defaultTheme: true,
snap: true,
lines: false,
clickTips: false,
// callbacks
onHover: function (flotItem, $tooltipEl) {},
$compat: false
}
};
// dummy default options object for legacy code (<0.8.5) - is deleted later
defaultOptions.tooltipOpts = defaultOptions.tooltip;
// object
var FlotTooltip = function (plot) {
// variables
this.tipPosition = {x: 0, y: 0};
this.init(plot);
};
// main plugin function
FlotTooltip.prototype.init = function (plot) {
var that = this;
// detect other flot plugins
var plotPluginsLength = $.plot.plugins.length;
this.plotPlugins = [];
if (plotPluginsLength) {
for (var p = 0; p < plotPluginsLength; p++) {
this.plotPlugins.push($.plot.plugins[p].name);
}
}
plot.hooks.bindEvents.push(function (plot, eventHolder) {
// get plot options
that.plotOptions = plot.getOptions();
// for legacy (<0.8.5) implementations
if (typeof(that.plotOptions.tooltip) === 'boolean') {
that.plotOptions.tooltipOpts.show = that.plotOptions.tooltip;
that.plotOptions.tooltip = that.plotOptions.tooltipOpts;
delete that.plotOptions.tooltipOpts;
}
// if not enabled return
if (that.plotOptions.tooltip.show === false || typeof that.plotOptions.tooltip.show === 'undefined') return;
// shortcut to access tooltip options
that.tooltipOptions = that.plotOptions.tooltip;
if (that.tooltipOptions.$compat) {
that.wfunc = 'width';
that.hfunc = 'height';
} else {
that.wfunc = 'innerWidth';
that.hfunc = 'innerHeight';
}
// create tooltip DOM element
var $tip = that.getDomElement();
// bind event
$( plot.getPlaceholder() ).bind("plothover", plothover);
if (that.tooltipOptions.clickTips) {
$( plot.getPlaceholder() ).bind("plotclick", plotclick);
}
that.clickmode = false;
$(eventHolder).bind('mousemove', mouseMove);
});
plot.hooks.shutdown.push(function (plot, eventHolder){
$(plot.getPlaceholder()).unbind("plothover", plothover);
$(plot.getPlaceholder()).unbind("plotclick", plotclick);
plot.removeTooltip();
$(eventHolder).unbind("mousemove", mouseMove);
});
function mouseMove(e){
var pos = {};
pos.x = e.pageX;
pos.y = e.pageY;
plot.setTooltipPosition(pos);
}
/**
* open the tooltip (if not already open) and freeze it on the current position till the next click
*/
function plotclick(event, pos, item) {
if (! that.clickmode) {
// it is the click activating the clicktip
plothover(event, pos, item);
if (that.getDomElement().is(":visible")) {
$(plot.getPlaceholder()).unbind("plothover", plothover);
that.clickmode = true;
}
} else {
// it is the click deactivating the clicktip
$( plot.getPlaceholder() ).bind("plothover", plothover);
plot.hideTooltip();
that.clickmode = false;
}
}
function plothover(event, pos, item) {
// Simple distance formula.
var lineDistance = function (p1x, p1y, p2x, p2y) {
return Math.sqrt((p2x - p1x) * (p2x - p1x) + (p2y - p1y) * (p2y - p1y));
};
// Here is some voodoo magic for determining the distance to a line form a given point {x, y}.
var dotLineLength = function (x, y, x0, y0, x1, y1, o) {
if (o && !(o =
function (x, y, x0, y0, x1, y1) {
if (typeof x0 !== 'undefined') return { x: x0, y: y };
else if (typeof y0 !== 'undefined') return { x: x, y: y0 };
var left,
tg = -1 / ((y1 - y0) / (x1 - x0));
return {
x: left = (x1 * (x * tg - y + y0) + x0 * (x * -tg + y - y1)) / (tg * (x1 - x0) + y0 - y1),
y: tg * left - tg * x + y
};
} (x, y, x0, y0, x1, y1),
o.x >= Math.min(x0, x1) && o.x <= Math.max(x0, x1) && o.y >= Math.min(y0, y1) && o.y <= Math.max(y0, y1))
) {
var l1 = lineDistance(x, y, x0, y0), l2 = lineDistance(x, y, x1, y1);
return l1 > l2 ? l2 : l1;
} else {
var a = y0 - y1, b = x1 - x0, c = x0 * y1 - y0 * x1;
return Math.abs(a * x + b * y + c) / Math.sqrt(a * a + b * b);
}
};
if (item) {
plot.showTooltip(item, that.tooltipOptions.snap ? item : pos);
} else if (that.plotOptions.series.lines.show && that.tooltipOptions.lines === true) {
var maxDistance = that.plotOptions.grid.mouseActiveRadius;
var closestTrace = {
distance: maxDistance + 1
};
var ttPos = pos;
$.each(plot.getData(), function (i, series) {
var xBeforeIndex = 0,
xAfterIndex = -1;
// Our search here assumes our data is sorted via the x-axis.
// TODO: Improve efficiency somehow - search smaller sets of data.
for (var j = 1; j < series.data.length; j++) {
if (series.data[j - 1][0] <= pos.x && series.data[j][0] >= pos.x) {
xBeforeIndex = j - 1;
xAfterIndex = j;
}
}
if (xAfterIndex === -1) {
plot.hideTooltip();
return;
}
var pointPrev = { x: series.data[xBeforeIndex][0], y: series.data[xBeforeIndex][1] },
pointNext = { x: series.data[xAfterIndex][0], y: series.data[xAfterIndex][1] };
var distToLine = dotLineLength(series.xaxis.p2c(pos.x), series.yaxis.p2c(pos.y), series.xaxis.p2c(pointPrev.x),
series.yaxis.p2c(pointPrev.y), series.xaxis.p2c(pointNext.x), series.yaxis.p2c(pointNext.y), false);
if (distToLine < closestTrace.distance) {
var closestIndex = lineDistance(pointPrev.x, pointPrev.y, pos.x, pos.y) <
lineDistance(pos.x, pos.y, pointNext.x, pointNext.y) ? xBeforeIndex : xAfterIndex;
var pointSize = series.datapoints.pointsize;
// Calculate the point on the line vertically closest to our cursor.
var pointOnLine = [
pos.x,
pointPrev.y + ((pointNext.y - pointPrev.y) * ((pos.x - pointPrev.x) / (pointNext.x - pointPrev.x)))
];
var item = {
datapoint: pointOnLine,
dataIndex: closestIndex,
series: series,
seriesIndex: i
};
closestTrace = {
distance: distToLine,
item: item
};
if (that.tooltipOptions.snap) {
ttPos = {
pageX: series.xaxis.p2c(pointOnLine[0]),
pageY: series.yaxis.p2c(pointOnLine[1])
};
}
}
});
if (closestTrace.distance < maxDistance + 1)
plot.showTooltip(closestTrace.item, ttPos);
else
plot.hideTooltip();
} else {
plot.hideTooltip();
}
}
// Quick little function for setting the tooltip position.
plot.setTooltipPosition = function (pos) {
var $tip = that.getDomElement();
var totalTipWidth = $tip.outerWidth() + that.tooltipOptions.shifts.x;
var totalTipHeight = $tip.outerHeight() + that.tooltipOptions.shifts.y;
if ((pos.x - $(window).scrollLeft()) > ($(window)[that.wfunc]() - totalTipWidth)) {
pos.x -= totalTipWidth;
pos.x = Math.max(pos.x, 0);
}
if ((pos.y - $(window).scrollTop()) > ($(window)[that.hfunc]() - totalTipHeight)) {
pos.y -= totalTipHeight;
}
/*
The section applies the new positioning ONLY if pos.x and pos.y
are numbers. If they are undefined or not a number, use the last
known numerical position. This hack fixes a bug that kept pie
charts from keeping their tooltip positioning.
*/
if (isNaN(pos.x)) {
that.tipPosition.x = that.tipPosition.xPrev;
}
else {
that.tipPosition.x = pos.x;
that.tipPosition.xPrev = pos.x;
}
if (isNaN(pos.y)) {
that.tipPosition.y = that.tipPosition.yPrev;
}
else {
that.tipPosition.y = pos.y;
that.tipPosition.yPrev = pos.y;
}
};
// Quick little function for showing the tooltip.
plot.showTooltip = function (target, position, targetPosition) {
var $tip = that.getDomElement();
// convert tooltip content template to real tipText
var tipText = that.stringFormat(that.tooltipOptions.content, target);
if (tipText === '')
return;
$tip.html(tipText);
plot.setTooltipPosition({ x: that.tipPosition.x, y: that.tipPosition.y });
$tip.css({
left: that.tipPosition.x + that.tooltipOptions.shifts.x,
top: that.tipPosition.y + that.tooltipOptions.shifts.y
}).show();
// run callback
if (typeof that.tooltipOptions.onHover === 'function') {
that.tooltipOptions.onHover(target, $tip);
}
};
// Quick little function for hiding the tooltip.
plot.hideTooltip = function () {
that.getDomElement().hide().html('');
};
plot.removeTooltip = function() {
that.getDomElement().remove();
};
};
/**
* get or create tooltip DOM element
* @return jQuery object
*/
FlotTooltip.prototype.getDomElement = function () {
var $tip = $('<div>');
if (this.tooltipOptions && this.tooltipOptions.cssClass) {
$tip = $('.' + this.tooltipOptions.cssClass);
if( $tip.length === 0 ){
$tip = $('<div />').addClass(this.tooltipOptions.cssClass);
$tip.appendTo('body').hide().css({position: 'absolute'});
if(this.tooltipOptions.defaultTheme) {
$tip.css({
'background': '#fff',
'z-index': '1040',
'padding': '0.4em 0.6em',
'border-radius': '0.5em',
'font-size': '0.8em',
'border': '1px solid #111',
'display': 'none',
'white-space': 'nowrap'
});
}
}
}
return $tip;
};
/**
* core function, create tooltip content
* @param {string} content - template with tooltip content
* @param {object} item - Flot item
* @return {string} real tooltip content for current item
*/
FlotTooltip.prototype.stringFormat = function (content, item) {
var percentPattern = /%p\.{0,1}(\d{0,})/;
var seriesPattern = /%s/;
var colorPattern = /%c/;
var xLabelPattern = /%lx/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded
var yLabelPattern = /%ly/; // requires flot-axislabels plugin https://github.com/markrcote/flot-axislabels, will be ignored if plugin isn't loaded
var xPattern = /%x\.{0,1}(\d{0,})/;
var yPattern = /%y\.{0,1}(\d{0,})/;
var xPatternWithoutPrecision = "%x";
var yPatternWithoutPrecision = "%y";
var customTextPattern = "%ct";
var nPiePattern = "%n";
var x, y, customText, p, n;
// for threshold plugin we need to read data from different place
if (typeof item.series.threshold !== "undefined") {
x = item.datapoint[0];
y = item.datapoint[1];
customText = item.datapoint[2];
}
// for CurvedLines plugin we need to read data from different place
else if (typeof item.series.curvedLines !== "undefined") {
x = item.datapoint[0];
y = item.datapoint[1];
}
else if (typeof item.series.lines !== "undefined" && item.series.lines.steps) {
x = item.series.datapoints.points[item.dataIndex * 2];
y = item.series.datapoints.points[item.dataIndex * 2 + 1];
// TODO: where to find custom text in this variant?
customText = "";
} else {
x = item.series.data[item.dataIndex][0];
y = item.series.data[item.dataIndex][1];
customText = item.series.data[item.dataIndex][2];
}
// I think this is only in case of threshold plugin
if (item.series.label === null && item.series.originSeries) {
item.series.label = item.series.originSeries.label;
}
// if it is a function callback get the content string
if (typeof(content) === 'function') {
content = content(item.series.label, x, y, item);
}
// the case where the passed content is equal to false
if (typeof(content) === 'boolean' && !content) {
return '';
}
/* replacement of %ct and other multi-character templates must
precede the replacement of single-character templates
to avoid conflict between '%c' and '%ct' and similar substrings
*/
if (customText) {
content = content.replace(customTextPattern, customText);
}
// percent match for pie charts and stacked percent
if (typeof (item.series.percent) !== 'undefined') {
p = item.series.percent;
} else if (typeof (item.series.percents) !== 'undefined') {
p = item.series.percents[item.dataIndex];
}
if (typeof p === 'number') {
content = this.adjustValPrecision(percentPattern, content, p);
}
// replace %n with number of items represented by slice in pie charts
if (item.series.hasOwnProperty('pie')) {
if (typeof item.series.data[0][1] !== 'undefined') {
n = item.series.data[0][1];
}
}
if (typeof n === 'number') {
content = content.replace(nPiePattern, n);
}
// series match
if (typeof(item.series.label) !== 'undefined') {
content = content.replace(seriesPattern, item.series.label);
} else {
//remove %s if label is undefined
content = content.replace(seriesPattern, "");
}
// color match
if (typeof(item.series.color) !== 'undefined') {
content = content.replace(colorPattern, item.series.color);
} else {
//remove %s if color is undefined
content = content.replace(colorPattern, "");
}
// x axis label match
if (this.hasAxisLabel('xaxis', item)) {
content = content.replace(xLabelPattern, item.series.xaxis.options.axisLabel);
} else {
//remove %lx if axis label is undefined or axislabels plugin not present
content = content.replace(xLabelPattern, "");
}
// y axis label match
if (this.hasAxisLabel('yaxis', item)) {
content = content.replace(yLabelPattern, item.series.yaxis.options.axisLabel);
} else {
//remove %ly if axis label is undefined or axislabels plugin not present
content = content.replace(yLabelPattern, "");
}
// time mode axes with custom dateFormat
if (this.isTimeMode('xaxis', item) && this.isXDateFormat(item)) {
content = content.replace(xPattern, this.timestampToDate(x, this.tooltipOptions.xDateFormat, item.series.xaxis.options));
}
if (this.isTimeMode('yaxis', item) && this.isYDateFormat(item)) {
content = content.replace(yPattern, this.timestampToDate(y, this.tooltipOptions.yDateFormat, item.series.yaxis.options));
}
// set precision if defined
if (typeof x === 'number') {
content = this.adjustValPrecision(xPattern, content, x);
}
if (typeof y === 'number') {
content = this.adjustValPrecision(yPattern, content, y);
}
// change x from number to given label, if given
if (typeof item.series.xaxis.ticks !== 'undefined') {
var ticks;
if (this.hasRotatedXAxisTicks(item)) {
// xaxis.ticks will be an empty array if tickRotor is being used, but the values are available in rotatedTicks
ticks = 'rotatedTicks';
} else {
ticks = 'ticks';
}
// see https://github.com/krzysu/flot.tooltip/issues/65
var tickIndex = item.dataIndex + item.seriesIndex;
for (var xIndex in item.series.xaxis[ticks]) {
if (item.series.xaxis[ticks].hasOwnProperty(tickIndex) && !this.isTimeMode('xaxis', item)) {
var valueX = (this.isCategoriesMode('xaxis', item)) ? item.series.xaxis[ticks][tickIndex].label : item.series.xaxis[ticks][tickIndex].v;
if (valueX === x) {
content = content.replace(xPattern, item.series.xaxis[ticks][tickIndex].label.replace(/\$/g, '$$$$'));
}
}
}
}
// change y from number to given label, if given
if (typeof item.series.yaxis.ticks !== 'undefined') {
for (var yIndex in item.series.yaxis.ticks) {
if (item.series.yaxis.ticks.hasOwnProperty(yIndex)) {
var valueY = (this.isCategoriesMode('yaxis', item)) ? item.series.yaxis.ticks[yIndex].label : item.series.yaxis.ticks[yIndex].v;
if (valueY === y) {
content = content.replace(yPattern, item.series.yaxis.ticks[yIndex].label.replace(/\$/g, '$$$$'));
}
}
}
}
// if no value customization, use tickFormatter by default
if (typeof item.series.xaxis.tickFormatter !== 'undefined') {
//escape dollar
content = content.replace(xPatternWithoutPrecision, item.series.xaxis.tickFormatter(x, item.series.xaxis).replace(/\$/g, '$$'));
}
if (typeof item.series.yaxis.tickFormatter !== 'undefined') {
//escape dollar
content = content.replace(yPatternWithoutPrecision, item.series.yaxis.tickFormatter(y, item.series.yaxis).replace(/\$/g, '$$'));
}
return content;
};
// helpers just for readability
FlotTooltip.prototype.isTimeMode = function (axisName, item) {
return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'time');
};
FlotTooltip.prototype.isXDateFormat = function (item) {
return (typeof this.tooltipOptions.xDateFormat !== 'undefined' && this.tooltipOptions.xDateFormat !== null);
};
FlotTooltip.prototype.isYDateFormat = function (item) {
return (typeof this.tooltipOptions.yDateFormat !== 'undefined' && this.tooltipOptions.yDateFormat !== null);
};
FlotTooltip.prototype.isCategoriesMode = function (axisName, item) {
return (typeof item.series[axisName].options.mode !== 'undefined' && item.series[axisName].options.mode === 'categories');
};
//
FlotTooltip.prototype.timestampToDate = function (tmst, dateFormat, options) {
var theDate = $.plot.dateGenerator(tmst, options);
return $.plot.formatDate(theDate, dateFormat, this.tooltipOptions.monthNames, this.tooltipOptions.dayNames);
};
//
FlotTooltip.prototype.adjustValPrecision = function (pattern, content, value) {
var precision;
var matchResult = content.match(pattern);
if( matchResult !== null ) {
if(RegExp.$1 !== '') {
precision = RegExp.$1;
value = value.toFixed(precision);
// only replace content if precision exists, in other case use thickformater
content = content.replace(pattern, value);
}
}
return content;
};
// other plugins detection below
// check if flot-axislabels plugin (https://github.com/markrcote/flot-axislabels) is used and that an axis label is given
FlotTooltip.prototype.hasAxisLabel = function (axisName, item) {
return ($.inArray('axisLabels', this.plotPlugins) !== -1 && typeof item.series[axisName].options.axisLabel !== 'undefined' && item.series[axisName].options.axisLabel.length > 0);
};
// check whether flot-tickRotor, a plugin which allows rotation of X-axis ticks, is being used
FlotTooltip.prototype.hasRotatedXAxisTicks = function (item) {
return ($.inArray('tickRotor',this.plotPlugins) !== -1 && typeof item.series.xaxis.rotatedTicks !== 'undefined');
};
//
var init = function (plot) {
new FlotTooltip(plot);
};
// define Flot plugin
$.plot.plugins.push({
init: init,
options: defaultOptions,
name: 'tooltip',
version: '0.8.5'
});
})(jQuery);

View File

@@ -0,0 +1,190 @@
/* Flot plugin for plotting textual data or categories.
Copyright (c) 2007-2014 IOLA and Ole Laursen.
Licensed under the MIT license.
Consider a dataset like [["February", 34], ["March", 20], ...]. This plugin
allows you to plot such a dataset directly.
To enable it, you must specify mode: "categories" on the axis with the textual
labels, e.g.
$.plot("#placeholder", data, { xaxis: { mode: "categories" } });
By default, the labels are ordered as they are met in the data series. If you
need a different ordering, you can specify "categories" on the axis options
and list the categories there:
xaxis: {
mode: "categories",
categories: ["February", "March", "April"]
}
If you need to customize the distances between the categories, you can specify
"categories" as an object mapping labels to values
xaxis: {
mode: "categories",
categories: { "February": 1, "March": 3, "April": 4 }
}
If you don't specify all categories, the remaining categories will be numbered
from the max value plus 1 (with a spacing of 1 between each).
Internally, the plugin works by transforming the input data through an auto-
generated mapping where the first category becomes 0, the second 1, etc.
Hence, a point like ["February", 34] becomes [0, 34] internally in Flot (this
is visible in hover and click events that return numbers rather than the
category labels). The plugin also overrides the tick generator to spit out the
categories as ticks instead of the values.
If you need to map a value back to its label, the mapping is always accessible
as "categories" on the axis object, e.g. plot.getAxes().xaxis.categories.
*/
(function ($) {
var options = {
xaxis: {
categories: null
},
yaxis: {
categories: null
}
};
function processRawData(plot, series, data, datapoints) {
// if categories are enabled, we need to disable
// auto-transformation to numbers so the strings are intact
// for later processing
var xCategories = series.xaxis.options.mode == "categories",
yCategories = series.yaxis.options.mode == "categories";
if (!(xCategories || yCategories))
return;
var format = datapoints.format;
if (!format) {
// FIXME: auto-detection should really not be defined here
var s = series;
format = [];
format.push({ x: true, number: true, required: true });
format.push({ y: true, number: true, required: true });
if (s.bars.show || (s.lines.show && s.lines.fill)) {
var autoscale = !!((s.bars.show && s.bars.zero) || (s.lines.show && s.lines.zero));
format.push({ y: true, number: true, required: false, defaultValue: 0, autoscale: autoscale });
if (s.bars.horizontal) {
delete format[format.length - 1].y;
format[format.length - 1].x = true;
}
}
datapoints.format = format;
}
for (var m = 0; m < format.length; ++m) {
if (format[m].x && xCategories)
format[m].number = false;
if (format[m].y && yCategories)
format[m].number = false;
}
}
function getNextIndex(categories) {
var index = -1;
for (var v in categories)
if (categories[v] > index)
index = categories[v];
return index + 1;
}
function categoriesTickGenerator(axis) {
var res = [];
for (var label in axis.categories) {
var v = axis.categories[label];
if (v >= axis.min && v <= axis.max)
res.push([v, label]);
}
res.sort(function (a, b) { return a[0] - b[0]; });
return res;
}
function setupCategoriesForAxis(series, axis, datapoints) {
if (series[axis].options.mode != "categories")
return;
if (!series[axis].categories) {
// parse options
var c = {}, o = series[axis].options.categories || {};
if ($.isArray(o)) {
for (var i = 0; i < o.length; ++i)
c[o[i]] = i;
}
else {
for (var v in o)
c[v] = o[v];
}
series[axis].categories = c;
}
// fix ticks
if (!series[axis].options.ticks)
series[axis].options.ticks = categoriesTickGenerator;
transformPointsOnAxis(datapoints, axis, series[axis].categories);
}
function transformPointsOnAxis(datapoints, axis, categories) {
// go through the points, transforming them
var points = datapoints.points,
ps = datapoints.pointsize,
format = datapoints.format,
formatColumn = axis.charAt(0),
index = getNextIndex(categories);
for (var i = 0; i < points.length; i += ps) {
if (points[i] == null)
continue;
for (var m = 0; m < ps; ++m) {
var val = points[i + m];
if (val == null || !format[m][formatColumn])
continue;
if (!(val in categories)) {
categories[val] = index;
++index;
}
points[i + m] = categories[val];
}
}
}
function processDatapoints(plot, series, datapoints) {
setupCategoriesForAxis(series, "xaxis", datapoints);
setupCategoriesForAxis(series, "yaxis", datapoints);
}
function init(plot) {
plot.hooks.processRawData.push(processRawData);
plot.hooks.processDatapoints.push(processDatapoints);
}
$.plot.plugins.push({
init: init,
options: options,
name: 'categories',
version: '1.0'
});
})(jQuery);

3168
static/vendor/flot/jquery.flot.js vendored Normal file

File diff suppressed because it is too large Load Diff

820
static/vendor/flot/jquery.flot.pie.js vendored Normal file
View File

@@ -0,0 +1,820 @@
/* Flot plugin for rendering pie charts.
Copyright (c) 2007-2014 IOLA and Ole Laursen.
Licensed under the MIT license.
The plugin assumes that each series has a single data value, and that each
value is a positive integer or zero. Negative numbers don't make sense for a
pie chart, and have unpredictable results. The values do NOT need to be
passed in as percentages; the plugin will calculate the total and per-slice
percentages internally.
* Created by Brian Medendorp
* Updated with contributions from btburnett3, Anthony Aragues and Xavi Ivars
The plugin supports these options:
series: {
pie: {
show: true/false
radius: 0-1 for percentage of fullsize, or a specified pixel length, or 'auto'
innerRadius: 0-1 for percentage of fullsize or a specified pixel length, for creating a donut effect
startAngle: 0-2 factor of PI used for starting angle (in radians) i.e 3/2 starts at the top, 0 and 2 have the same result
tilt: 0-1 for percentage to tilt the pie, where 1 is no tilt, and 0 is completely flat (nothing will show)
offset: {
top: integer value to move the pie up or down
left: integer value to move the pie left or right, or 'auto'
},
stroke: {
color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#FFF')
width: integer pixel width of the stroke
},
label: {
show: true/false, or 'auto'
formatter: a user-defined function that modifies the text/style of the label text
radius: 0-1 for percentage of fullsize, or a specified pixel length
background: {
color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#000')
opacity: 0-1
},
threshold: 0-1 for the percentage value at which to hide labels (if they're too small)
},
combine: {
threshold: 0-1 for the percentage value at which to combine slices (if they're too small)
color: any hexidecimal color value (other formats may or may not work, so best to stick with something like '#CCC'), if null, the plugin will automatically use the color of the first slice to be combined
label: any text value of what the combined slice should be labeled
}
highlight: {
opacity: 0-1
}
}
}
More detail and specific examples can be found in the included HTML file.
*/
(function($) {
// Maximum redraw attempts when fitting labels within the plot
var REDRAW_ATTEMPTS = 10;
// Factor by which to shrink the pie when fitting labels within the plot
var REDRAW_SHRINK = 0.95;
function init(plot) {
var canvas = null,
target = null,
options = null,
maxRadius = null,
centerLeft = null,
centerTop = null,
processed = false,
ctx = null;
// interactive variables
var highlights = [];
// add hook to determine if pie plugin in enabled, and then perform necessary operations
plot.hooks.processOptions.push(function(plot, options) {
if (options.series.pie.show) {
options.grid.show = false;
// set labels.show
if (options.series.pie.label.show == "auto") {
if (options.legend.show) {
options.series.pie.label.show = false;
} else {
options.series.pie.label.show = true;
}
}
// set radius
if (options.series.pie.radius == "auto") {
if (options.series.pie.label.show) {
options.series.pie.radius = 3/4;
} else {
options.series.pie.radius = 1;
}
}
// ensure sane tilt
if (options.series.pie.tilt > 1) {
options.series.pie.tilt = 1;
} else if (options.series.pie.tilt < 0) {
options.series.pie.tilt = 0;
}
}
});
plot.hooks.bindEvents.push(function(plot, eventHolder) {
var options = plot.getOptions();
if (options.series.pie.show) {
if (options.grid.hoverable) {
eventHolder.unbind("mousemove").mousemove(onMouseMove);
}
if (options.grid.clickable) {
eventHolder.unbind("click").click(onClick);
}
}
});
plot.hooks.processDatapoints.push(function(plot, series, data, datapoints) {
var options = plot.getOptions();
if (options.series.pie.show) {
processDatapoints(plot, series, data, datapoints);
}
});
plot.hooks.drawOverlay.push(function(plot, octx) {
var options = plot.getOptions();
if (options.series.pie.show) {
drawOverlay(plot, octx);
}
});
plot.hooks.draw.push(function(plot, newCtx) {
var options = plot.getOptions();
if (options.series.pie.show) {
draw(plot, newCtx);
}
});
function processDatapoints(plot, series, datapoints) {
if (!processed) {
processed = true;
canvas = plot.getCanvas();
target = $(canvas).parent();
options = plot.getOptions();
plot.setData(combine(plot.getData()));
}
}
function combine(data) {
var total = 0,
combined = 0,
numCombined = 0,
color = options.series.pie.combine.color,
newdata = [];
// Fix up the raw data from Flot, ensuring the data is numeric
for (var i = 0; i < data.length; ++i) {
var value = data[i].data;
// If the data is an array, we'll assume that it's a standard
// Flot x-y pair, and are concerned only with the second value.
// Note how we use the original array, rather than creating a
// new one; this is more efficient and preserves any extra data
// that the user may have stored in higher indexes.
if ($.isArray(value) && value.length == 1) {
value = value[0];
}
if ($.isArray(value)) {
// Equivalent to $.isNumeric() but compatible with jQuery < 1.7
if (!isNaN(parseFloat(value[1])) && isFinite(value[1])) {
value[1] = +value[1];
} else {
value[1] = 0;
}
} else if (!isNaN(parseFloat(value)) && isFinite(value)) {
value = [1, +value];
} else {
value = [1, 0];
}
data[i].data = [value];
}
// Sum up all the slices, so we can calculate percentages for each
for (var i = 0; i < data.length; ++i) {
total += data[i].data[0][1];
}
// Count the number of slices with percentages below the combine
// threshold; if it turns out to be just one, we won't combine.
for (var i = 0; i < data.length; ++i) {
var value = data[i].data[0][1];
if (value / total <= options.series.pie.combine.threshold) {
combined += value;
numCombined++;
if (!color) {
color = data[i].color;
}
}
}
for (var i = 0; i < data.length; ++i) {
var value = data[i].data[0][1];
if (numCombined < 2 || value / total > options.series.pie.combine.threshold) {
newdata.push(
$.extend(data[i], { /* extend to allow keeping all other original data values
and using them e.g. in labelFormatter. */
data: [[1, value]],
color: data[i].color,
label: data[i].label,
angle: value * Math.PI * 2 / total,
percent: value / (total / 100)
})
);
}
}
if (numCombined > 1) {
newdata.push({
data: [[1, combined]],
color: color,
label: options.series.pie.combine.label,
angle: combined * Math.PI * 2 / total,
percent: combined / (total / 100)
});
}
return newdata;
}
function draw(plot, newCtx) {
if (!target) {
return; // if no series were passed
}
var canvasWidth = plot.getPlaceholder().width(),
canvasHeight = plot.getPlaceholder().height(),
legendWidth = target.children().filter(".legend").children().width() || 0;
ctx = newCtx;
// WARNING: HACK! REWRITE THIS CODE AS SOON AS POSSIBLE!
// When combining smaller slices into an 'other' slice, we need to
// add a new series. Since Flot gives plugins no way to modify the
// list of series, the pie plugin uses a hack where the first call
// to processDatapoints results in a call to setData with the new
// list of series, then subsequent processDatapoints do nothing.
// The plugin-global 'processed' flag is used to control this hack;
// it starts out false, and is set to true after the first call to
// processDatapoints.
// Unfortunately this turns future setData calls into no-ops; they
// call processDatapoints, the flag is true, and nothing happens.
// To fix this we'll set the flag back to false here in draw, when
// all series have been processed, so the next sequence of calls to
// processDatapoints once again starts out with a slice-combine.
// This is really a hack; in 0.9 we need to give plugins a proper
// way to modify series before any processing begins.
processed = false;
// calculate maximum radius and center point
maxRadius = Math.min(canvasWidth, canvasHeight / options.series.pie.tilt) / 2;
centerTop = canvasHeight / 2 + options.series.pie.offset.top;
centerLeft = canvasWidth / 2;
if (options.series.pie.offset.left == "auto") {
if (options.legend.position.match("w")) {
centerLeft += legendWidth / 2;
} else {
centerLeft -= legendWidth / 2;
}
if (centerLeft < maxRadius) {
centerLeft = maxRadius;
} else if (centerLeft > canvasWidth - maxRadius) {
centerLeft = canvasWidth - maxRadius;
}
} else {
centerLeft += options.series.pie.offset.left;
}
var slices = plot.getData(),
attempts = 0;
// Keep shrinking the pie's radius until drawPie returns true,
// indicating that all the labels fit, or we try too many times.
do {
if (attempts > 0) {
maxRadius *= REDRAW_SHRINK;
}
attempts += 1;
clear();
if (options.series.pie.tilt <= 0.8) {
drawShadow();
}
} while (!drawPie() && attempts < REDRAW_ATTEMPTS)
if (attempts >= REDRAW_ATTEMPTS) {
clear();
target.prepend("<div class='error'>Could not draw pie with labels contained inside canvas</div>");
}
if (plot.setSeries && plot.insertLegend) {
plot.setSeries(slices);
plot.insertLegend();
}
// we're actually done at this point, just defining internal functions at this point
function clear() {
ctx.clearRect(0, 0, canvasWidth, canvasHeight);
target.children().filter(".pieLabel, .pieLabelBackground").remove();
}
function drawShadow() {
var shadowLeft = options.series.pie.shadow.left;
var shadowTop = options.series.pie.shadow.top;
var edge = 10;
var alpha = options.series.pie.shadow.alpha;
var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
if (radius >= canvasWidth / 2 - shadowLeft || radius * options.series.pie.tilt >= canvasHeight / 2 - shadowTop || radius <= edge) {
return; // shadow would be outside canvas, so don't draw it
}
ctx.save();
ctx.translate(shadowLeft,shadowTop);
ctx.globalAlpha = alpha;
ctx.fillStyle = "#000";
// center and rotate to starting position
ctx.translate(centerLeft,centerTop);
ctx.scale(1, options.series.pie.tilt);
//radius -= edge;
for (var i = 1; i <= edge; i++) {
ctx.beginPath();
ctx.arc(0, 0, radius, 0, Math.PI * 2, false);
ctx.fill();
radius -= i;
}
ctx.restore();
}
function drawPie() {
var startAngle = Math.PI * options.series.pie.startAngle;
var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
// center and rotate to starting position
ctx.save();
ctx.translate(centerLeft,centerTop);
ctx.scale(1, options.series.pie.tilt);
//ctx.rotate(startAngle); // start at top; -- This doesn't work properly in Opera
// draw slices
ctx.save();
var currentAngle = startAngle;
for (var i = 0; i < slices.length; ++i) {
slices[i].startAngle = currentAngle;
drawSlice(slices[i].angle, slices[i].color, true);
}
ctx.restore();
// draw slice outlines
if (options.series.pie.stroke.width > 0) {
ctx.save();
ctx.lineWidth = options.series.pie.stroke.width;
currentAngle = startAngle;
for (var i = 0; i < slices.length; ++i) {
drawSlice(slices[i].angle, options.series.pie.stroke.color, false);
}
ctx.restore();
}
// draw donut hole
drawDonutHole(ctx);
ctx.restore();
// Draw the labels, returning true if they fit within the plot
if (options.series.pie.label.show) {
return drawLabels();
} else return true;
function drawSlice(angle, color, fill) {
if (angle <= 0 || isNaN(angle)) {
return;
}
if (fill) {
ctx.fillStyle = color;
} else {
ctx.strokeStyle = color;
ctx.lineJoin = "round";
}
ctx.beginPath();
if (Math.abs(angle - Math.PI * 2) > 0.000000001) {
ctx.moveTo(0, 0); // Center of the pie
}
//ctx.arc(0, 0, radius, 0, angle, false); // This doesn't work properly in Opera
ctx.arc(0, 0, radius,currentAngle, currentAngle + angle / 2, false);
ctx.arc(0, 0, radius,currentAngle + angle / 2, currentAngle + angle, false);
ctx.closePath();
//ctx.rotate(angle); // This doesn't work properly in Opera
currentAngle += angle;
if (fill) {
ctx.fill();
} else {
ctx.stroke();
}
}
function drawLabels() {
var currentAngle = startAngle;
var radius = options.series.pie.label.radius > 1 ? options.series.pie.label.radius : maxRadius * options.series.pie.label.radius;
for (var i = 0; i < slices.length; ++i) {
if (slices[i].percent >= options.series.pie.label.threshold * 100) {
if (!drawLabel(slices[i], currentAngle, i)) {
return false;
}
}
currentAngle += slices[i].angle;
}
return true;
function drawLabel(slice, startAngle, index) {
if (slice.data[0][1] == 0) {
return true;
}
// format label text
var lf = options.legend.labelFormatter, text, plf = options.series.pie.label.formatter;
if (lf) {
text = lf(slice.label, slice);
} else {
text = slice.label;
}
if (plf) {
text = plf(text, slice);
}
var halfAngle = ((startAngle + slice.angle) + startAngle) / 2;
var x = centerLeft + Math.round(Math.cos(halfAngle) * radius);
var y = centerTop + Math.round(Math.sin(halfAngle) * radius) * options.series.pie.tilt;
var html = "<span class='pieLabel' id='pieLabel" + index + "' style='position:absolute;top:" + y + "px;left:" + x + "px;'>" + text + "</span>";
target.append(html);
var label = target.children("#pieLabel" + index);
var labelTop = (y - label.height() / 2);
var labelLeft = (x - label.width() / 2);
label.css("top", labelTop);
label.css("left", labelLeft);
// check to make sure that the label is not outside the canvas
if (0 - labelTop > 0 || 0 - labelLeft > 0 || canvasHeight - (labelTop + label.height()) < 0 || canvasWidth - (labelLeft + label.width()) < 0) {
return false;
}
if (options.series.pie.label.background.opacity != 0) {
// put in the transparent background separately to avoid blended labels and label boxes
var c = options.series.pie.label.background.color;
if (c == null) {
c = slice.color;
}
var pos = "top:" + labelTop + "px;left:" + labelLeft + "px;";
$("<div class='pieLabelBackground' style='position:absolute;width:" + label.width() + "px;height:" + label.height() + "px;" + pos + "background-color:" + c + ";'></div>")
.css("opacity", options.series.pie.label.background.opacity)
.insertBefore(label);
}
return true;
} // end individual label function
} // end drawLabels function
} // end drawPie function
} // end draw function
// Placed here because it needs to be accessed from multiple locations
function drawDonutHole(layer) {
if (options.series.pie.innerRadius > 0) {
// subtract the center
layer.save();
var innerRadius = options.series.pie.innerRadius > 1 ? options.series.pie.innerRadius : maxRadius * options.series.pie.innerRadius;
layer.globalCompositeOperation = "destination-out"; // this does not work with excanvas, but it will fall back to using the stroke color
layer.beginPath();
layer.fillStyle = options.series.pie.stroke.color;
layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);
layer.fill();
layer.closePath();
layer.restore();
// add inner stroke
layer.save();
layer.beginPath();
layer.strokeStyle = options.series.pie.stroke.color;
layer.arc(0, 0, innerRadius, 0, Math.PI * 2, false);
layer.stroke();
layer.closePath();
layer.restore();
// TODO: add extra shadow inside hole (with a mask) if the pie is tilted.
}
}
//-- Additional Interactive related functions --
function isPointInPoly(poly, pt) {
for(var c = false, i = -1, l = poly.length, j = l - 1; ++i < l; j = i)
((poly[i][1] <= pt[1] && pt[1] < poly[j][1]) || (poly[j][1] <= pt[1] && pt[1]< poly[i][1]))
&& (pt[0] < (poly[j][0] - poly[i][0]) * (pt[1] - poly[i][1]) / (poly[j][1] - poly[i][1]) + poly[i][0])
&& (c = !c);
return c;
}
function findNearbySlice(mouseX, mouseY) {
var slices = plot.getData(),
options = plot.getOptions(),
radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius,
x, y;
for (var i = 0; i < slices.length; ++i) {
var s = slices[i];
if (s.pie.show) {
ctx.save();
ctx.beginPath();
ctx.moveTo(0, 0); // Center of the pie
//ctx.scale(1, options.series.pie.tilt); // this actually seems to break everything when here.
ctx.arc(0, 0, radius, s.startAngle, s.startAngle + s.angle / 2, false);
ctx.arc(0, 0, radius, s.startAngle + s.angle / 2, s.startAngle + s.angle, false);
ctx.closePath();
x = mouseX - centerLeft;
y = mouseY - centerTop;
if (ctx.isPointInPath) {
if (ctx.isPointInPath(mouseX - centerLeft, mouseY - centerTop)) {
ctx.restore();
return {
datapoint: [s.percent, s.data],
dataIndex: 0,
series: s,
seriesIndex: i
};
}
} else {
// excanvas for IE doesn;t support isPointInPath, this is a workaround.
var p1X = radius * Math.cos(s.startAngle),
p1Y = radius * Math.sin(s.startAngle),
p2X = radius * Math.cos(s.startAngle + s.angle / 4),
p2Y = radius * Math.sin(s.startAngle + s.angle / 4),
p3X = radius * Math.cos(s.startAngle + s.angle / 2),
p3Y = radius * Math.sin(s.startAngle + s.angle / 2),
p4X = radius * Math.cos(s.startAngle + s.angle / 1.5),
p4Y = radius * Math.sin(s.startAngle + s.angle / 1.5),
p5X = radius * Math.cos(s.startAngle + s.angle),
p5Y = radius * Math.sin(s.startAngle + s.angle),
arrPoly = [[0, 0], [p1X, p1Y], [p2X, p2Y], [p3X, p3Y], [p4X, p4Y], [p5X, p5Y]],
arrPoint = [x, y];
// TODO: perhaps do some mathmatical trickery here with the Y-coordinate to compensate for pie tilt?
if (isPointInPoly(arrPoly, arrPoint)) {
ctx.restore();
return {
datapoint: [s.percent, s.data],
dataIndex: 0,
series: s,
seriesIndex: i
};
}
}
ctx.restore();
}
}
return null;
}
function onMouseMove(e) {
triggerClickHoverEvent("plothover", e);
}
function onClick(e) {
triggerClickHoverEvent("plotclick", e);
}
// trigger click or hover event (they send the same parameters so we share their code)
function triggerClickHoverEvent(eventname, e) {
var offset = plot.offset();
var canvasX = parseInt(e.pageX - offset.left);
var canvasY = parseInt(e.pageY - offset.top);
var item = findNearbySlice(canvasX, canvasY);
if (options.grid.autoHighlight) {
// clear auto-highlights
for (var i = 0; i < highlights.length; ++i) {
var h = highlights[i];
if (h.auto == eventname && !(item && h.series == item.series)) {
unhighlight(h.series);
}
}
}
// highlight the slice
if (item) {
highlight(item.series, eventname);
}
// trigger any hover bind events
var pos = { pageX: e.pageX, pageY: e.pageY };
target.trigger(eventname, [pos, item]);
}
function highlight(s, auto) {
//if (typeof s == "number") {
// s = series[s];
//}
var i = indexOfHighlight(s);
if (i == -1) {
highlights.push({ series: s, auto: auto });
plot.triggerRedrawOverlay();
} else if (!auto) {
highlights[i].auto = false;
}
}
function unhighlight(s) {
if (s == null) {
highlights = [];
plot.triggerRedrawOverlay();
}
//if (typeof s == "number") {
// s = series[s];
//}
var i = indexOfHighlight(s);
if (i != -1) {
highlights.splice(i, 1);
plot.triggerRedrawOverlay();
}
}
function indexOfHighlight(s) {
for (var i = 0; i < highlights.length; ++i) {
var h = highlights[i];
if (h.series == s)
return i;
}
return -1;
}
function drawOverlay(plot, octx) {
var options = plot.getOptions();
var radius = options.series.pie.radius > 1 ? options.series.pie.radius : maxRadius * options.series.pie.radius;
octx.save();
octx.translate(centerLeft, centerTop);
octx.scale(1, options.series.pie.tilt);
for (var i = 0; i < highlights.length; ++i) {
drawHighlight(highlights[i].series);
}
drawDonutHole(octx);
octx.restore();
function drawHighlight(series) {
if (series.angle <= 0 || isNaN(series.angle)) {
return;
}
//octx.fillStyle = parseColor(options.series.pie.highlight.color).scale(null, null, null, options.series.pie.highlight.opacity).toString();
octx.fillStyle = "rgba(255, 255, 255, " + options.series.pie.highlight.opacity + ")"; // this is temporary until we have access to parseColor
octx.beginPath();
if (Math.abs(series.angle - Math.PI * 2) > 0.000000001) {
octx.moveTo(0, 0); // Center of the pie
}
octx.arc(0, 0, radius, series.startAngle, series.startAngle + series.angle / 2, false);
octx.arc(0, 0, radius, series.startAngle + series.angle / 2, series.startAngle + series.angle, false);
octx.closePath();
octx.fill();
}
}
} // end init (plugin body)
// define pie specific options and their default values
var options = {
series: {
pie: {
show: false,
radius: "auto", // actual radius of the visible pie (based on full calculated radius if <=1, or hard pixel value)
innerRadius: 0, /* for donut */
startAngle: 3/2,
tilt: 1,
shadow: {
left: 5, // shadow left offset
top: 15, // shadow top offset
alpha: 0.02 // shadow alpha
},
offset: {
top: 0,
left: "auto"
},
stroke: {
color: "#fff",
width: 1
},
label: {
show: "auto",
formatter: function(label, slice) {
return "<div style='font-size:x-small;text-align:center;padding:2px;color:" + slice.color + ";'>" + label + "<br/>" + Math.round(slice.percent) + "%</div>";
}, // formatter function
radius: 1, // radius at which to place the labels (based on full calculated radius if <=1, or hard pixel value)
background: {
color: null,
opacity: 0
},
threshold: 0 // percentage at which to hide the label (i.e. the slice is too narrow)
},
combine: {
threshold: -1, // percentage at which to combine little slices into one larger slice
color: null, // color to give the new slice (auto-generated if null)
label: "Other" // label to give the new slice
},
highlight: {
//color: "#fff", // will add this functionality once parseColor is available
opacity: 0.5
}
}
}
};
$.plot.plugins.push({
init: init,
options: options,
name: "pie",
version: "1.1"
});
})(jQuery);

View File

@@ -0,0 +1,59 @@
/* Flot plugin for automatically redrawing plots as the placeholder resizes.
Copyright (c) 2007-2014 IOLA and Ole Laursen.
Licensed under the MIT license.
It works by listening for changes on the placeholder div (through the jQuery
resize event plugin) - if the size changes, it will redraw the plot.
There are no options. If you need to disable the plugin for some plots, you
can just fix the size of their placeholders.
*/
/* Inline dependency:
* jQuery resize event - v1.1 - 3/14/2010
* http://benalman.com/projects/jquery-resize-plugin/
*
* Copyright (c) 2010 "Cowboy" Ben Alman
* Dual licensed under the MIT and GPL licenses.
* http://benalman.com/about/license/
*/
(function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);
(function ($) {
var options = { }; // no options
function init(plot) {
function onResize() {
var placeholder = plot.getPlaceholder();
// somebody might have hidden us and we can't plot
// when we don't have the dimensions
if (placeholder.width() == 0 || placeholder.height() == 0)
return;
plot.resize();
plot.setupGrid();
plot.draw();
}
function bindEvents(plot, eventHolder) {
plot.getPlaceholder().resize(onResize);
}
function shutdown(plot, eventHolder) {
plot.getPlaceholder().unbind("resize", onResize);
}
plot.hooks.bindEvents.push(bindEvents);
plot.hooks.shutdown.push(shutdown);
}
$.plot.plugins.push({
init: init,
options: options,
name: 'resize',
version: '1.0'
});
})(jQuery);

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 586 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,372 @@
<?xml version="1.0" standalone="no"?>
<!--
Font Awesome Free 5.0.13 by @fontawesome - https://fontawesome.com
License - https://fontawesome.com/license (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
-->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<defs>
<font id="fontawesome-free" horiz-adv-x="640">
<font-face font-family="Font Awesome 5 Free"
units-per-em="512" ascent="448"
descent="64"
font-weight="400"
font-style="Regular" />
<missing-glyph horiz-adv-x="0" />
<glyph glyph-name="address-book"
unicode="&#xF2B9;"
horiz-adv-x="448" d=" M436 288C442.6 288 448 293.4 448 300V340C448 346.6 442.6 352 436 352H416V400C416 426.5 394.5 448 368 448H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H368C394.5 -64 416 -42.5 416 -16V32H436C442.6 32 448 37.4 448 44V84C448 90.6 442.6 96 436 96H416V160H436C442.6 160 448 165.4 448 172V212C448 218.6 442.6 224 436 224H416V288H436zM368 -16H48V400H368V-16zM208 192C243.3 192 272 220.7 272 256S243.3 320 208 320S144 291.3 144 256S172.7 192 208 192zM118.4 64H297.6C310 64 320 72.6 320 83.2V102.4C320 134.2 289.9 160 252.8 160C242 160 234.1 152 208 152C181.1 152 174.6 160 163.2 160C126.1 160 96 134.2 96 102.4V83.2C96 72.6 106 64 118.4 64z" />
<glyph glyph-name="address-card"
unicode="&#xF2BB;"
horiz-adv-x="576" d=" M528 416H48C21.5 416 0 394.5 0 368V16C0 -10.5 21.5 -32 48 -32H528C554.5 -32 576 -10.5 576 16V368C576 394.5 554.5 416 528 416zM528 16H48V368H528V16zM208 192C243.3 192 272 220.7 272 256S243.3 320 208 320S144 291.3 144 256S172.7 192 208 192zM118.4 64H297.6C310 64 320 72.6 320 83.2V102.4C320 134.2 289.9 160 252.8 160C242 160 234.1 152 208 152C181.1 152 174.6 160 163.2 160C126.1 160 96 134.2 96 102.4V83.2C96 72.6 106 64 118.4 64zM360 128H472C476.4 128 480 131.6 480 136V152C480 156.4 476.4 160 472 160H360C355.6 160 352 156.4 352 152V136C352 131.6 355.6 128 360 128zM360 192H472C476.4 192 480 195.6 480 200V216C480 220.4 476.4 224 472 224H360C355.6 224 352 220.4 352 216V200C352 195.6 355.6 192 360 192zM360 256H472C476.4 256 480 259.6 480 264V280C480 284.4 476.4 288 472 288H360C355.6 288 352 284.4 352 280V264C352 259.6 355.6 256 360 256z" />
<glyph glyph-name="arrow-alt-circle-down"
unicode="&#xF358;"
horiz-adv-x="512" d=" M256 440C119 440 8 329 8 192S119 -56 256 -56S504 55 504 192S393 440 256 440zM256 -8C145.5 -8 56 81.5 56 192S145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8zM224 308V192H157C146.3 192 141 179.1 148.5 171.5L247.5 72.5C252.2 67.8 259.8 67.8 264.5 72.5L363.5 171.5C371.1 179.1 365.7 192 355 192H288V308C288 314.6 282.6 320 276 320H236C229.4 320 224 314.6 224 308z" />
<glyph glyph-name="arrow-alt-circle-left"
unicode="&#xF359;"
horiz-adv-x="512" d=" M8 192C8 55 119 -56 256 -56S504 55 504 192S393 440 256 440S8 329 8 192zM456 192C456 81.5 366.5 -8 256 -8S56 81.5 56 192S145.5 392 256 392S456 302.5 456 192zM384 212V172C384 165.4 378.6 160 372 160H256V93C256 82.3 243.1 77 235.5 84.5L136.5 183.5C131.8 188.2 131.8 195.8 136.5 200.5L235.5 299.5C243.1 307.1 256 301.7 256 291V224H372C378.6 224 384 218.6 384 212z" />
<glyph glyph-name="arrow-alt-circle-right"
unicode="&#xF35A;"
horiz-adv-x="512" d=" M504 192C504 329 393 440 256 440S8 329 8 192S119 -56 256 -56S504 55 504 192zM56 192C56 302.5 145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8S56 81.5 56 192zM128 172V212C128 218.6 133.4 224 140 224H256V291C256 301.7 268.9 307 276.5 299.5L375.5 200.5C380.2 195.8 380.2 188.2 375.5 183.5L276.5 84.5C268.9 76.9 256 82.3 256 93V160H140C133.4 160 128 165.4 128 172z" />
<glyph glyph-name="arrow-alt-circle-up"
unicode="&#xF35B;"
horiz-adv-x="512" d=" M256 -56C393 -56 504 55 504 192S393 440 256 440S8 329 8 192S119 -56 256 -56zM256 392C366.5 392 456 302.5 456 192S366.5 -8 256 -8S56 81.5 56 192S145.5 392 256 392zM276 64H236C229.4 64 224 69.4 224 76V192H157C146.3 192 141 204.9 148.5 212.5L247.5 311.5C252.2 316.2 259.8 316.2 264.5 311.5L363.5 212.5C371.1 204.9 365.7 192 355 192H288V76C288 69.4 282.6 64 276 64z" />
<glyph glyph-name="bell-slash"
unicode="&#xF1F6;"
horiz-adv-x="576" d=" M130.9 48C114.138 48 105.765 68.39 117.566 80.191C142.792 105.417 163.66 129.5290000000001 168.215 201.6710000000001L121.438 242.9450000000001A168.48 168.48 0 0 1 121.142 233.1430000000001C121.142 151.21 103.591 133.8510000000001 86.599 117.0650000000001C38.504 69.559 73.726 0 130.919 0H224C224 -35.346 252.654 -64 288 -64S352 -35.346 352 0H396.777L342.377 48H130.9zM288 -24C274.766 -24 264 -13.234 264 0H312C312 -13.234 301.234 -24 288 -24zM571.867 -24.553L503.936 35.018C517.04 59.136 515.4599999999999 91.336 489.404 117.0600000000001C472.415 133.8450000000001 454.858 151.2030000000001 454.858 233.1430000000001C454.858 316.1690000000001 393.9 385.2170000000001 314.391 397.9050000000001A31.848 31.848 0 0 1 320 416C320 433.673 305.673 448 288 448S256 433.673 256 416A31.848 31.848 0 0 1 261.609 397.905C220.138 391.287 183.718 369.334 158.36 338.064L36.459 444.963C31.401 449.399 23.682 448.919 19.219 443.892L3.056 425.687C-1.407 420.6600000000001 -0.925 412.988 4.134 408.553L539.542 -60.963C544.6 -65.399 552.3190000000001 -64.919 556.782 -59.892L572.945 -41.687C577.407 -36.66 576.9250000000001 -28.988 571.8670000000001 -24.553zM288 352C353.538 352 406.857 298.681 406.857 233.143C406.857 135.493 430.078 108.569 458.425 80.191C461.333 77.283 462.9979999999999 73.8630000000001 463.634 70.359L194.482 306.3880000000001C216.258 334.133 250.075 352 288 352z" />
<glyph glyph-name="bell"
unicode="&#xF0F3;"
horiz-adv-x="448" d=" M425.403 117.061C408.4140000000001 133.846 390.8570000000001 151.204 390.8570000000001 233.144C390.8570000000001 316.17 329.899 385.218 250.39 397.906A31.842999999999996 31.842999999999996 0 0 1 256 416C256 433.673 241.673 448 224 448S192 433.673 192 416A31.848 31.848 0 0 1 197.609 397.905C118.101 385.217 57.143 316.169 57.143 233.143C57.143 151.21 39.592 133.851 22.6 117.065C-25.496 69.559 9.726 0 66.919 0H160C160 -35.346 188.654 -64 224 -64C259.346 -64 288 -35.346 288 0H381.08C438.27 0 473.495 69.583 425.403 117.061zM224 -24C210.766 -24 200 -13.234 200 0H248C248 -13.234 237.234 -24 224 -24zM381.092 48H66.9C50.138 48 41.765 68.39 53.566 80.191C82.151 108.776 105.143 135.915 105.143 233.1430000000001C105.143 298.6810000000001 158.462 352 224 352S342.857 298.681 342.857 233.143C342.857 135.493 366.078 108.569 394.425 80.191C406.278 68.339 397.783 48 381.092 48z" />
<glyph glyph-name="bookmark"
unicode="&#xF02E;"
horiz-adv-x="384" d=" M336 448H48C21.49 448 0 426.51 0 400V-64L192 48L384 -64V400C384 426.51 362.51 448 336 448zM336 19.57L192 103.57L48 19.57V394A6 6 0 0 0 54 400H330C333.314 400 336 397.317 336 394.004V19.57z" />
<glyph glyph-name="building"
unicode="&#xF1AD;"
horiz-adv-x="448" d=" M128 300V340C128 346.6 133.4 352 140 352H180C186.6 352 192 346.6 192 340V300C192 293.4 186.6 288 180 288H140C133.4 288 128 293.4 128 300zM268 288H308C314.6 288 320 293.4 320 300V340C320 346.6 314.6 352 308 352H268C261.4 352 256 346.6 256 340V300C256 293.4 261.4 288 268 288zM140 192H180C186.6 192 192 197.4 192 204V244C192 250.6 186.6 256 180 256H140C133.4 256 128 250.6 128 244V204C128 197.4 133.4 192 140 192zM268 192H308C314.6 192 320 197.4 320 204V244C320 250.6 314.6 256 308 256H268C261.4 256 256 250.6 256 244V204C256 197.4 261.4 192 268 192zM192 108V148C192 154.6 186.6 160 180 160H140C133.4 160 128 154.6 128 148V108C128 101.4 133.4 96 140 96H180C186.6 96 192 101.4 192 108zM268 96H308C314.6 96 320 101.4 320 108V148C320 154.6 314.6 160 308 160H268C261.4 160 256 154.6 256 148V108C256 101.4 261.4 96 268 96zM448 -28V-64H0V-28C0 -21.4 5.4 -16 12 -16H31.5V424C31.5 437.3 42.2 448 55.5 448H392.5C405.8 448 416.5 437.3 416.5 424V-16H436C442.6 -16 448 -21.4 448 -28zM79.5 -15H192V52C192 58.6 197.4 64 204 64H244C250.6 64 256 58.6 256 52V-15H368.5V399L80 400L79.5 -15z" />
<glyph glyph-name="calendar-alt"
unicode="&#xF073;"
horiz-adv-x="448" d=" M148 160H108C101.4 160 96 165.4 96 172V212C96 218.6 101.4 224 108 224H148C154.6 224 160 218.6 160 212V172C160 165.4 154.6 160 148 160zM256 172V212C256 218.6 250.6 224 244 224H204C197.4 224 192 218.6 192 212V172C192 165.4 197.4 160 204 160H244C250.6 160 256 165.4 256 172zM352 172V212C352 218.6 346.6 224 340 224H300C293.4 224 288 218.6 288 212V172C288 165.4 293.4 160 300 160H340C346.6 160 352 165.4 352 172zM256 76V116C256 122.6 250.6 128 244 128H204C197.4 128 192 122.6 192 116V76C192 69.4 197.4 64 204 64H244C250.6 64 256 69.4 256 76zM160 76V116C160 122.6 154.6 128 148 128H108C101.4 128 96 122.6 96 116V76C96 69.4 101.4 64 108 64H148C154.6 64 160 69.4 160 76zM352 76V116C352 122.6 346.6 128 340 128H300C293.4 128 288 122.6 288 116V76C288 69.4 293.4 64 300 64H340C346.6 64 352 69.4 352 76zM448 336V-16C448 -42.5 426.5 -64 400 -64H48C21.5 -64 0 -42.5 0 -16V336C0 362.5 21.5 384 48 384H96V436C96 442.6 101.4 448 108 448H148C154.6 448 160 442.6 160 436V384H288V436C288 442.6 293.4 448 300 448H340C346.6 448 352 442.6 352 436V384H400C426.5 384 448 362.5 448 336zM400 -10V288H48V-10C48 -13.3 50.7 -16 54 -16H394C397.3 -16 400 -13.3 400 -10z" />
<glyph glyph-name="calendar-check"
unicode="&#xF274;"
horiz-adv-x="448" d=" M400 384H352V436C352 442.627 346.627 448 340 448H300C293.373 448 288 442.627 288 436V384H160V436C160 442.627 154.627 448 148 448H108C101.373 448 96 442.627 96 436V384H48C21.49 384 0 362.51 0 336V-16C0 -42.51 21.49 -64 48 -64H400C426.51 -64 448 -42.51 448 -16V336C448 362.51 426.51 384 400 384zM394 -16H54A6 6 0 0 0 48 -10V288H400V-10A6 6 0 0 0 394 -16zM341.151 184.65L198.842 43.481C194.137 38.814 186.539 38.844 181.871 43.549L106.78 119.248C102.113 123.953 102.143 131.551 106.848 136.219L129.567 158.755C134.272 163.422 141.87 163.392 146.537 158.686L190.641 114.225L301.713 224.406C306.418 229.073 314.016 229.043 318.6840000000001 224.3379999999999L341.2200000000001 201.62C345.887 196.9149999999999 345.8560000000001 189.317 341.151 184.65z" />
<glyph glyph-name="calendar-minus"
unicode="&#xF272;"
horiz-adv-x="448" d=" M124 120C117.4 120 112 125.4 112 132V156C112 162.6 117.4 168 124 168H324C330.6 168 336 162.6 336 156V132C336 125.4 330.6 120 324 120H124zM448 336V-16C448 -42.5 426.5 -64 400 -64H48C21.5 -64 0 -42.5 0 -16V336C0 362.5 21.5 384 48 384H96V436C96 442.6 101.4 448 108 448H148C154.6 448 160 442.6 160 436V384H288V436C288 442.6 293.4 448 300 448H340C346.6 448 352 442.6 352 436V384H400C426.5 384 448 362.5 448 336zM400 -10V288H48V-10C48 -13.3 50.7 -16 54 -16H394C397.3 -16 400 -13.3 400 -10z" />
<glyph glyph-name="calendar-plus"
unicode="&#xF271;"
horiz-adv-x="448" d=" M336 156V132C336 125.4 330.6 120 324 120H248V44C248 37.4 242.6 32 236 32H212C205.4 32 200 37.4 200 44V120H124C117.4 120 112 125.4 112 132V156C112 162.6 117.4 168 124 168H200V244C200 250.6 205.4 256 212 256H236C242.6 256 248 250.6 248 244V168H324C330.6 168 336 162.6 336 156zM448 336V-16C448 -42.5 426.5 -64 400 -64H48C21.5 -64 0 -42.5 0 -16V336C0 362.5 21.5 384 48 384H96V436C96 442.6 101.4 448 108 448H148C154.6 448 160 442.6 160 436V384H288V436C288 442.6 293.4 448 300 448H340C346.6 448 352 442.6 352 436V384H400C426.5 384 448 362.5 448 336zM400 -10V288H48V-10C48 -13.3 50.7 -16 54 -16H394C397.3 -16 400 -13.3 400 -10z" />
<glyph glyph-name="calendar-times"
unicode="&#xF273;"
horiz-adv-x="448" d=" M311.7 73.3L294.7 56.3C290 51.6 282.4 51.6 277.7 56.3L224 110.1L170.3 56.4C165.6 51.7 158 51.7 153.3 56.4L136.3 73.4C131.6 78.1 131.6 85.7000000000001 136.3 90.4L190 144.1L136.3 197.8C131.6 202.5 131.6 210.1 136.3 214.8L153.3 231.8C158 236.5 165.6 236.5 170.3 231.8L224 178.1L277.7 231.8C282.4 236.5 290 236.5 294.7 231.8L311.7 214.8C316.4 210.1 316.4 202.5 311.7 197.8L257.9 144L311.6 90.3C316.4 85.6 316.4 78 311.7 73.3zM448 336V-16C448 -42.5 426.5 -64 400 -64H48C21.5 -64 0 -42.5 0 -16V336C0 362.5 21.5 384 48 384H96V436C96 442.6 101.4 448 108 448H148C154.6 448 160 442.6 160 436V384H288V436C288 442.6 293.4 448 300 448H340C346.6 448 352 442.6 352 436V384H400C426.5 384 448 362.5 448 336zM400 -10V288H48V-10C48 -13.3 50.7 -16 54 -16H394C397.3 -16 400 -13.3 400 -10z" />
<glyph glyph-name="calendar"
unicode="&#xF133;"
horiz-adv-x="448" d=" M400 384H352V436C352 442.6 346.6 448 340 448H300C293.4 448 288 442.6 288 436V384H160V436C160 442.6 154.6 448 148 448H108C101.4 448 96 442.6 96 436V384H48C21.5 384 0 362.5 0 336V-16C0 -42.5 21.5 -64 48 -64H400C426.5 -64 448 -42.5 448 -16V336C448 362.5 426.5 384 400 384zM394 -16H54C50.7 -16 48 -13.3 48 -10V288H400V-10C400 -13.3 397.3 -16 394 -16z" />
<glyph glyph-name="caret-square-down"
unicode="&#xF150;"
horiz-adv-x="448" d=" M125.1 240H322.9C333.6 240 339 227 331.4 219.5L232.5 121.2C227.8 116.5 220.3 116.5 215.6 121.2L116.7 219.5C109 227 114.4 240 125.1 240zM448 368V16C448 -10.5 426.5 -32 400 -32H48C21.5 -32 0 -10.5 0 16V368C0 394.5 21.5 416 48 416H400C426.5 416 448 394.5 448 368zM400 22V362C400 365.3 397.3 368 394 368H54C50.7 368 48 365.3 48 362V22C48 18.7 50.7 16 54 16H394C397.3 16 400 18.7 400 22z" />
<glyph glyph-name="caret-square-left"
unicode="&#xF191;"
horiz-adv-x="448" d=" M272 290.9V93.1C272 82.4 259 77 251.5 84.6L153.2 183.5C148.5 188.2 148.5 195.7 153.2 200.4L251.5 299.3C259 307 272 301.6 272 290.9zM448 368V16C448 -10.5 426.5 -32 400 -32H48C21.5 -32 0 -10.5 0 16V368C0 394.5 21.5 416 48 416H400C426.5 416 448 394.5 448 368zM400 22V362C400 365.3 397.3 368 394 368H54C50.7 368 48 365.3 48 362V22C48 18.7 50.7 16 54 16H394C397.3 16 400 18.7 400 22z" />
<glyph glyph-name="caret-square-right"
unicode="&#xF152;"
horiz-adv-x="448" d=" M176 93.1V290.9C176 301.6 189 307 196.5 299.4L294.8 200.5C299.5 195.8 299.5 188.3 294.8 183.6L196.5 84.7000000000001C189 77.0000000000001 176 82.4 176 93.1zM448 368V16C448 -10.5 426.5 -32 400 -32H48C21.5 -32 0 -10.5 0 16V368C0 394.5 21.5 416 48 416H400C426.5 416 448 394.5 448 368zM400 22V362C400 365.3 397.3 368 394 368H54C50.7 368 48 365.3 48 362V22C48 18.7 50.7 16 54 16H394C397.3 16 400 18.7 400 22z" />
<glyph glyph-name="caret-square-up"
unicode="&#xF151;"
horiz-adv-x="448" d=" M322.9 144H125.1C114.4 144 109 157 116.6 164.5L215.5 262.8C220.2 267.5 227.7 267.5 232.4 262.8L331.3 164.5C339 157 333.6 144 322.9000000000001 144zM448 368V16C448 -10.5 426.5 -32 400 -32H48C21.5 -32 0 -10.5 0 16V368C0 394.5 21.5 416 48 416H400C426.5 416 448 394.5 448 368zM400 22V362C400 365.3 397.3 368 394 368H54C50.7 368 48 365.3 48 362V22C48 18.7 50.7 16 54 16H394C397.3 16 400 18.7 400 22z" />
<glyph glyph-name="chart-bar"
unicode="&#xF080;"
horiz-adv-x="512" d=" M500 48C506.6 48 512 42.6 512 36V12C512 5.4 506.6 0 500 0H12C5.4 0 0 5.4 0 12V372C0 378.6 5.4 384 12 384H36C42.6 384 48 378.6 48 372V48H500zM144 108V180C144 186.6 138.6 192 132 192H108C101.4 192 96 186.6 96 180V108C96 101.4 101.4 96 108 96H132C138.6 96 144 101.4 144 108zM240 108V308C240 314.6 234.6 320 228 320H204C197.4 320 192 314.6 192 308V108C192 101.4 197.4 96 204 96H228C234.6 96 240 101.4 240 108zM336 108V244C336 250.6 330.6 256 324 256H300C293.4 256 288 250.6 288 244V108C288 101.4 293.4 96 300 96H324C330.6 96 336 101.4 336 108zM432 108V340C432 346.6 426.6 352 420 352H396C389.4 352 384 346.6 384 340V108C384 101.4 389.4 96 396 96H420C426.6 96 432 101.4 432 108z" />
<glyph glyph-name="check-circle"
unicode="&#xF058;"
horiz-adv-x="512" d=" M256 440C119.033 440 8 328.967 8 192S119.033 -56 256 -56S504 55.033 504 192S392.967 440 256 440zM256 392C366.532 392 456 302.549 456 192C456 81.468 366.549 -8 256 -8C145.468 -8 56 81.451 56 192C56 302.532 145.451 392 256 392M396.204 261.733L373.668 284.451C369.0010000000001 289.156 361.403 289.187 356.698 284.519L215.346 144.303L155.554 204.58C150.887 209.285 143.289 209.316 138.584 204.649L115.865 182.113C111.16 177.446 111.129 169.848 115.797 165.142L206.578 73.6259999999999C211.245 68.9209999999999 218.843 68.8899999999999 223.548 73.5579999999999L396.1370000000001 244.762C400.8410000000001 249.43 400.8710000000001 257.0279999999999 396.2040000000001 261.733z" />
<glyph glyph-name="check-square"
unicode="&#xF14A;"
horiz-adv-x="448" d=" M400 416H48C21.49 416 0 394.51 0 368V16C0 -10.51 21.49 -32 48 -32H400C426.51 -32 448 -10.51 448 16V368C448 394.51 426.51 416 400 416zM400 16H48V368H400V16zM364.136 257.724L191.547 86.52C186.842 81.853 179.244 81.883 174.577 86.588L83.796 178.104C79.129 182.809 79.159 190.407 83.865 195.075L106.584 217.611C111.289 222.278 118.887 222.248 123.554 217.542L183.346 157.265L324.698 297.481C329.403 302.148 337.001 302.118 341.668 297.413L364.204 274.695C368.871 269.9890000000001 368.841 262.391 364.136 257.724z" />
<glyph glyph-name="circle"
unicode="&#xF111;"
horiz-adv-x="512" d=" M256 440C119 440 8 329 8 192S119 -56 256 -56S504 55 504 192S393 440 256 440zM256 -8C145.5 -8 56 81.5 56 192S145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8z" />
<glyph glyph-name="clipboard"
unicode="&#xF328;"
horiz-adv-x="384" d=" M336 384H256C256 419.29 227.29 448 192 448S128 419.29 128 384H48C21.49 384 0 362.51 0 336V-16C0 -42.51 21.49 -64 48 -64H336C362.51 -64 384 -42.51 384 -16V336C384 362.51 362.51 384 336 384zM330 -16H54A6 6 0 0 0 48 -10V330A6 6 0 0 0 54 336H96V300C96 293.373 101.373 288 108 288H276C282.627 288 288 293.373 288 300V336H330A6 6 0 0 0 336 330V-10A6 6 0 0 0 330 -16zM192 408C205.255 408 216 397.255 216 384S205.255 360 192 360S168 370.745 168 384S178.745 408 192 408" />
<glyph glyph-name="clock"
unicode="&#xF017;"
horiz-adv-x="512" d=" M256 440C119 440 8 329 8 192S119 -56 256 -56S504 55 504 192S393 440 256 440zM256 -8C145.5 -8 56 81.5 56 192S145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8zM317.8 96.4L232.9 158.1C229.8 160.4 228 164 228 167.8V332C228 338.6 233.4 344 240 344H272C278.6 344 284 338.6 284 332V190.3L350.8 141.7C356.2 137.8 357.3 130.3 353.4000000000001 124.9L334.6 99C330.7000000000001 93.7 323.2000000000001 92.5 317.8 96.4z" />
<glyph glyph-name="clone"
unicode="&#xF24D;"
horiz-adv-x="512" d=" M464 448H144C117.49 448 96 426.51 96 400V352H48C21.49 352 0 330.51 0 304V-16C0 -42.51 21.49 -64 48 -64H368C394.51 -64 416 -42.51 416 -16V32H464C490.51 32 512 53.49 512 80V400C512 426.51 490.51 448 464 448zM362 -16H54A6 6 0 0 0 48 -10V298A6 6 0 0 0 54 304H96V80C96 53.49 117.49 32 144 32H368V-10A6 6 0 0 0 362 -16zM458 80H150A6 6 0 0 0 144 86V394A6 6 0 0 0 150 400H458A6 6 0 0 0 464 394V86A6 6 0 0 0 458 80z" />
<glyph glyph-name="closed-captioning"
unicode="&#xF20A;"
horiz-adv-x="512" d=" M464 384H48C21.5 384 0 362.5 0 336V48C0 21.5 21.5 0 48 0H464C490.5 0 512 21.5 512 48V336C512 362.5 490.5 384 464 384zM458 48H54C50.7 48 48 50.7 48 54V330C48 333.3 50.7 336 54 336H458C461.3 336 464 333.3 464 330V54C464 50.7 461.3 48 458 48zM246.9 133.7C248.6 131.3 248.4 128.1 246.4 126C192.8 69.2 73.6 93.9 73.6 193.9C73.6 291.2 195.3 313.4 246.1 264C248.2 262 248.6 260.8 247.1 258.3L229.6 227.8C227.7 224.7 223.4 223.8 220.5 226.1C179.7 258.1 125.9 241.0000000000001 125.9 194.9C125.9 146.9 176.9 124.4 218.1 162.3C220.9 164.8 225.2 164.4 227.3 161.4L246.9 133.7000000000001zM437.3 133.7C439 131.3 438.8 128.1 436.8 126C383.2 69.1 264 93.9 264 193.9C264 291.2 385.7 313.4 436.5 264C438.6 262 439 260.8 437.5 258.3L420 227.8C418.1 224.7 413.8 223.8 410.9 226.1C370.1 258.1 316.3 241.0000000000001 316.3 194.9C316.3 146.9 367.3 124.4 408.5 162.3C411.3 164.8 415.6 164.4 417.7 161.4L437.3 133.7000000000001z" />
<glyph glyph-name="comment-alt"
unicode="&#xF27A;"
horiz-adv-x="512" d=" M448 448H64C28.7 448 0 419.3 0 384V96C0 60.7 28.7 32 64 32H160V-52C160 -59.1 165.8 -64 172 -64C174.4 -64 176.9 -63.3 179.1 -61.6L304 32H448C483.3 32 512 60.7 512 96V384C512 419.3 483.3 448 448 448zM464 96C464 87.2 456.8 80 448 80H288L275.2 70.4L208 20V80H64C55.2 80 48 87.2 48 96V384C48 392.8 55.2 400 64 400H448C456.8 400 464 392.8 464 384V96z" />
<glyph glyph-name="comment-dots"
unicode="&#xF4AD;"
horiz-adv-x="512" d=" M144 240C126.3 240 112 225.7 112 208S126.3 176 144 176S176 190.3 176 208S161.7 240 144 240zM256 240C238.3 240 224 225.7 224 208S238.3 176 256 176S288 190.3 288 208S273.7 240 256 240zM368 240C350.3 240 336 225.7 336 208S350.3 176 368 176S400 190.3 400 208S385.7 240 368 240zM256 416C114.6 416 0 322.9 0 208C0 160.4 19.9 116.8 52.9 81.7C38 42.3 7 8.9 6.5 8.5C-0.1 1.5 -1.9 -8.7 1.9 -17.5S14.4 -32 24 -32C85.5 -32 134 -6.3 163.1 14.3C192 5.2 223.2 0 256 0C397.4 0 512 93.1 512 208S397.4 416 256 416zM256 48C229.3 48 202.9 52.1 177.6 60.1L154.9 67.3L135.4 53.5C121.1 43.4 101.5 32.1 77.9 24.5C85.2 36.6 92.3 50.2 97.8 64.7L108.4 92.8L87.8 114.6C69.7 133.9 48 165.8 48 208C48 296.2 141.3 368 256 368S464 296.2 464 208S370.7 48 256 48z" />
<glyph glyph-name="comment"
unicode="&#xF075;"
horiz-adv-x="512" d=" M256 416C114.6 416 0 322.9 0 208C0 160.4 19.9 116.8 52.9 81.7C38 42.3 7 8.9 6.5 8.5C-0.1 1.5 -1.9 -8.7 1.9 -17.5S14.4 -32 24 -32C85.5 -32 134 -6.3 163.1 14.3C192 5.2 223.2 0 256 0C397.4 0 512 93.1 512 208S397.4 416 256 416zM256 48C229.3 48 202.9 52.1 177.6 60.1L154.9 67.3L135.4 53.5C121.1 43.4 101.5 32.1 77.9 24.5C85.2 36.6 92.3 50.2 97.8 64.7L108.4 92.8L87.8 114.6C69.7 133.9 48 165.8 48 208C48 296.2 141.3 368 256 368S464 296.2 464 208S370.7 48 256 48z" />
<glyph glyph-name="comments"
unicode="&#xF086;"
horiz-adv-x="576" d=" M532 61.8C559.5 88.9 576 122.9 576 160C576 240 499.5 306.1 399.8 317.9C368.3 375.5 294.3 416 208 416C93.1 416 0 344.4 0 256C0 219 16.5 185 44 157.8C28.7 127.1 6.7 103.3 6.3 102.9C0 96.2000000000001 -1.8 86.4 1.9 77.9C5.5 69.4 13.9 63.9 23.1 63.9C76.6 63.9 119.8 84.1 148.3 102.7000000000001C157.5 100.6 167 99.0000000000001 176.7 97.8000000000001C208.1 40.4 281.8 0 368 0C388.8 0 408.8 2.4 427.8 6.8C456.3 -11.7 499.4 -32 553 -32C562.2 -32 570.5 -26.5 574.2 -18C577.8000000000001 -9.5 576.1 0.3 569.8000000000001 7C569.4000000000001 7.3 547.3000000000001 31.1 532.0000000000001 61.8zM139.2 154.1L122.1 143C108 133.9 93.6 126.7 79 121.6C81.7 126.3 84.4 131.3 87 136.4L102.5 167.5000000000001L77.7 192C64.2 205.4 48 227.3 48 256C48 316.7 121.3 368 208 368S368 316.7 368 256S294.7 144 208 144C191.5 144 175 145.9 159 149.6L139.2 154.1zM498.3 96L473.6 71.6L489.1 40.5C491.7 35.4 494.4 30.4 497.1 25.7C482.5 30.8 468.1 38 454 47.1L436.9 58.2L417 53.6C401 49.9 384.5 47.9999999999999 368 47.9999999999999C314 47.9999999999999 265.8 68.1 236.7 97.6999999999999C338 108.5 416 175.1 416 256C416 259.4 415.6 262.7 415.3 266C479.7 251.5 528 209.2 528 160C528 131.3 511.8 109.4 498.3 96z" />
<glyph glyph-name="compass"
unicode="&#xF14E;"
horiz-adv-x="512" d=" M256 440C119.033 440 8 328.967 8 192S119.033 -56 256 -56S504 55.033 504 192S392.967 440 256 440zM256 -8C145.468 -8 56 81.451 56 192C56 302.531 145.451 392 256 392C366.532 392 456 302.549 456 192C456 81.468 366.549 -8 256 -8zM347.326 304.131L313.9670000000001 166.352A24.005 24.005 0 0 0 307.1950000000001 154.623L204.5550000000001 56.844C187.4510000000001 40.551 158.9950000000001 56.41 164.6750000000001 79.868L198.0340000000001 217.647A23.997 23.997 0 0 0 204.8060000000001 229.376L307.4480000000001 327.155C324.7330000000001 343.625 352.9420000000001 327.33 347.3260000000001 304.131zM256 224C238.327 224 224 209.673 224 192S238.327 160 256 160S288 174.327 288 192S273.673 224 256 224z" />
<glyph glyph-name="copy"
unicode="&#xF0C5;"
horiz-adv-x="448" d=" M433.941 382.059L382.059 433.941A48 48 0 0 1 348.118 448H176C149.49 448 128 426.51 128 400V352H48C21.49 352 0 330.51 0 304V-16C0 -42.51 21.49 -64 48 -64H272C298.51 -64 320 -42.51 320 -16V32H400C426.51 32 448 53.49 448 80V348.118A48 48 0 0 1 433.941 382.059zM266 -16H54A6 6 0 0 0 48 -10V298A6 6 0 0 0 54 304H128V80C128 53.49 149.49 32 176 32H272V-10A6 6 0 0 0 266 -16zM394 80H182A6 6 0 0 0 176 86V394A6 6 0 0 0 182 400H288V312C288 298.745 298.745 288 312 288H400V86A6 6 0 0 0 394 80zM400 336H336V400H345.632C347.223 400 348.749 399.368 349.875 398.243L398.243 349.875A6 6 0 0 0 400 345.632V336z" />
<glyph glyph-name="copyright"
unicode="&#xF1F9;"
horiz-adv-x="512" d=" M256 440C119.033 440 8 328.967 8 192S119.033 -56 256 -56S504 55.033 504 192S392.967 440 256 440zM256 -8C145.468 -8 56 81.451 56 192C56 302.531 145.451 392 256 392C366.532 392 456 302.549 456 192C456 81.468 366.549 -8 256 -8zM363.351 93.064C353.737 83.352 317.8210000000001 51.668 259.286 51.668C176.856 51.668 118.802 113.093 118.802 193.235C118.802 272.387 179.077 332.636 258.564 332.636C314.095 332.636 347.302 306.016 356.157 297.857A11.965 11.965 0 0 0 358.093 282.535L339.938 254.422C336.097 248.472 327.972 247.14 322.439 251.501C313.844 258.277 290.625 274.039 260.731 274.039C212.428 274.039 182.815 238.709 182.815 193.957C182.815 152.368 209.703 110.265 261.092 110.265C293.749 110.265 317.935 129.304 326.818 137.49C332.088 142.347 340.414 141.529 344.638 135.752L364.503 108.582A11.947000000000001 11.947000000000001 0 0 0 363.351 93.064z" />
<glyph glyph-name="credit-card"
unicode="&#xF09D;"
horiz-adv-x="576" d=" M527.9 416H48.1C21.5 416 0 394.5 0 368V16C0 -10.5 21.5 -32 48.1 -32H527.9C554.5 -32 576 -10.5 576 16V368C576 394.5 554.5 416 527.9 416zM54.1 368H521.9C525.1999999999999 368 527.9 365.3 527.9 362V320H48.1V362C48.1 365.3 50.8 368 54.1 368zM521.9 16H54.1C50.8 16 48.1 18.7 48.1 22V192H527.9V22C527.9 18.7 525.1999999999999 16 521.9 16zM192 116V76C192 69.4 186.6 64 180 64H108C101.4 64 96 69.4 96 76V116C96 122.6 101.4 128 108 128H180C186.6 128 192 122.6 192 116zM384 116V76C384 69.4 378.6 64 372 64H236C229.4 64 224 69.4 224 76V116C224 122.6 229.4 128 236 128H372C378.6 128 384 122.6 384 116z" />
<glyph glyph-name="dot-circle"
unicode="&#xF192;"
horiz-adv-x="512" d=" M256 392C366.532 392 456 302.549 456 192C456 81.468 366.549 -8 256 -8C145.468 -8 56 81.451 56 192C56 302.532 145.451 392 256 392M256 440C119.033 440 8 328.967 8 192S119.033 -56 256 -56S504 55.033 504 192S392.967 440 256 440zM256 272C211.817 272 176 236.183 176 192S211.817 112 256 112S336 147.817 336 192S300.183 272 256 272z" />
<glyph glyph-name="edit"
unicode="&#xF044;"
horiz-adv-x="576" d=" M402.3 103.1L434.3 135.1C439.3 140.1 448 136.6 448 129.4V-16C448 -42.5 426.5 -64 400 -64H48C21.5 -64 0 -42.5 0 -16V336C0 362.5 21.5 384 48 384H321.5C328.6 384 332.2 375.4 327.2 370.3L295.2 338.3C293.7 336.8 291.7 336 289.5 336H48V-16H400V97.5C400 99.6 400.8 101.6 402.3 103.1zM558.9 304.9000000000001L296.3 42.3L205.9 32.3C179.7 29.4 157.4 51.5 160.3 77.9L170.3 168.3000000000001L432.9 430.9C455.8 453.8 492.8 453.8 515.6 430.9L558.8000000000001 387.7C581.7 364.8 581.7 327.7 558.9000000000001 304.9zM460.1 274L402 332.1L216.2 146.2L208.9 80.9L274.2 88.2L460.1 274zM524.9 353.7L481.7 396.9C477.6 401 470.9 401 466.9 396.9L436 366L494.1 307.9L525 338.8C529 343 529 349.6 524.9 353.7000000000001z" />
<glyph glyph-name="envelope-open"
unicode="&#xF2B6;"
horiz-adv-x="512" d=" M494.586 283.4840000000001C489.889 287.367 382.863 373.4340000000001 359.3350000000001 392.141C337.231 409.809 299.437 448 256 448C212.795 448 175.364 410.283 152.665 392.141C128.202 372.6910000000001 21.595 286.9460000000001 17.515 283.592A48.004000000000005 48.004000000000005 0 0 1 0 246.515V-16C0 -42.51 21.49 -64 48 -64H464C490.51 -64 512 -42.51 512 -16V246.491A48 48 0 0 1 494.586 283.4840000000001zM464 -10A6 6 0 0 0 458 -16H54A6 6 0 0 0 48 -10V243.653C48 245.466 48.816 247.179 50.226 248.318C66.096 261.132 159.019 335.872 182.59 354.611C200.755 369.12 232.398 400 256 400C279.693 400 311.857 368.631 329.41 354.611C352.983 335.87 445.913 261.118 461.776 248.295A5.99 5.99 0 0 0 463.9999999999999 243.632V-10zM432.009 177.704C436.2580000000001 172.545 435.474 164.909 430.264 160.723C401.289 137.44 370.99 113.126 359.3350000000001 103.86C336.636 85.717 299.205 48 256 48C212.548 48 174.713 86.237 152.665 103.86C141.386 112.827 110.921 137.273 81.738 160.725C76.528 164.912 75.745 172.547 79.993 177.706L95.251 196.234C99.429 201.307 106.908 202.077 112.03 197.96C140.648 174.959 170.596 150.925 182.59 141.389C200.143 127.369 232.307 96 256 96C279.602 96 311.246 126.88 329.41 141.389C341.404 150.924 371.354 174.959 399.973 197.957C405.095 202.073 412.574 201.303 416.751 196.23L432.009 177.704z" />
<glyph glyph-name="envelope"
unicode="&#xF0E0;"
horiz-adv-x="512" d=" M464 384H48C21.49 384 0 362.51 0 336V48C0 21.49 21.49 0 48 0H464C490.51 0 512 21.49 512 48V336C512 362.51 490.51 384 464 384zM464 336V295.195C441.578 276.936 405.832 248.544 329.413 188.705C312.572 175.458 279.212 143.633 256 144.004C232.792 143.629 199.421 175.463 182.587 188.705C106.18 248.535 70.425 276.933 48 295.195V336H464zM48 48V233.602C70.914 215.351 103.409 189.74 152.938 150.956C174.795 133.751 213.072 95.77 256 96.001C298.717 95.77 336.509 133.2000000000001 359.053 150.948C408.581 189.7310000000001 441.085 215.3490000000001 464 233.6010000000001V48H48z" />
<glyph glyph-name="eye-slash"
unicode="&#xF070;"
horiz-adv-x="576" d=" M272.702 88.861C192.219 97.872 136.49 175.747 155.772 255.903L272.702 88.861zM288 56C185.444 56 95.908 110.701 48 192C69.755 228.917 100.1 260.342 136.344 283.658L108.803 323.0010000000001C67.001 295.766 31.921 259.259 6.646 216.369A47.999 47.999 0 0 1 6.646 167.63C63.004 71.994 168.14 8 288 8A332.89 332.89 0 0 1 327.648 10.367L295.627 56.111A284.16 284.16 0 0 0 288 56zM569.354 167.631C536.1220000000001 111.237 485.933 65.889 425.8000000000001 38.139L473.9160000000001 -30.601C477.717 -36.03 476.3960000000001 -43.513 470.967 -47.313L450.23 -61.83C444.8010000000001 -65.631 437.3180000000001 -64.3099999999999 433.5180000000001 -58.881L102.084 414.601C98.283 420.03 99.604 427.513 105.033 431.313L125.77 445.83C131.199 449.631 138.682 448.31 142.482 442.881L198.008 363.556C226.612 371.657 256.808 376 288 376C407.86 376 512.996 312.006 569.354 216.369A48.00200000000001 48.00200000000001 0 0 0 569.354 167.631zM528 192C483.843 266.933 404.323 319.27 311.838 327.007C302.042 316.9220000000001 296 303.17 296 288C296 257.072 321.072 232 352 232S408 257.072 408 288L407.999 288.0420000000001C438.6310000000001 230.765 424.738 157.7820000000001 371.0710000000001 116.323L397.766 78.188C452.626 101.449 498.308 141.614 528 192z" />
<glyph glyph-name="eye"
unicode="&#xF06E;"
horiz-adv-x="576" d=" M569.354 216.369C512.97 312.051 407.81 376 288 376C168.14 376 63.004 312.006 6.646 216.369A47.999 47.999 0 0 1 6.646 167.63C63.031 71.949 168.19 8 288 8C407.86 8 512.996 71.994 569.354 167.631A47.997 47.997 0 0 1 569.354 216.369zM288 56C185.444 56 95.909 110.701 48 192C92.157 266.933 171.677 319.27 264.1620000000001 327.007C273.9580000000001 316.9220000000001 280 303.17 280 288C280 257.072 254.928 232 224 232S168 257.072 168 288L168.001 288.0420000000001C157.794 268.957 152 247.156 152 224C152 148.889 212.889 88 288 88S424 148.889 424 224C424 255.031 413.6 283.629 396.105 306.515C451.704 283.362 498.009 242.894 528 192C480.092 110.701 390.5560000000001 56 288 56z" />
<glyph glyph-name="file-alt"
unicode="&#xF15C;"
horiz-adv-x="384" d=" M288 200V172C288 165.4 282.6 160 276 160H108C101.4 160 96 165.4 96 172V200C96 206.6 101.4 212 108 212H276C282.6 212 288 206.6 288 200zM276 128H108C101.4 128 96 122.6 96 116V88C96 81.4 101.4 76 108 76H276C282.6 76 288 81.4 288 88V116C288 122.6 282.6 128 276 128zM384 316.1V-16C384 -42.5 362.5 -64 336 -64H48C21.5 -64 0 -42.5 0 -16V400C0 426.5 21.5 448 48 448H252.1C264.8 448 277 442.9 286 433.9L369.9 350C378.9 341.1 384 328.8 384 316.1zM256 396.1V320H332.1L256 396.1zM336 -16V272H232C218.7 272 208 282.7 208 296V400H48V-16H336z" />
<glyph glyph-name="file-archive"
unicode="&#xF1C6;"
horiz-adv-x="384" d=" M369.941 350.059L286.059 433.9410000000001A48 48 0 0 1 252.118 448H48C21.49 448 0 426.51 0 400V-16C0 -42.51 21.49 -64 48 -64H336C362.51 -64 384 -42.51 384 -16V316.118A48 48 0 0 1 369.941 350.059zM256 396.118L332.118 320H256V396.118zM336 -16H48V400H127.714V384H159.714V400H208V296C208 282.745 218.745 272 232 272H336V-16zM192.27 352H160.27V384H192.27V352zM160.27 352V320H128.27V352H160.27zM160.27 288V256H128.27V288H160.27zM192.27 288H160.27V320H192.27V288zM194.179 182.322A12 12 0 0 1 182.406 192H160.27V224H128.27V192L108.58 94.894C101.989 62.389 126.834 32 160 32C193.052 32 217.871 62.192 211.476 94.62L194.179 182.322zM160.27 57.927C142.352 57.927 127.826 70.032 127.826 84.963C127.826 99.895 142.351 111.999 160.27 111.999S192.714 99.894 192.714 84.963C192.714 70.032 178.188 57.927 160.27 57.927zM192.27 224H160.27V256H192.27V224z" />
<glyph glyph-name="file-audio"
unicode="&#xF1C7;"
horiz-adv-x="384" d=" M369.941 350.059L286.059 433.9410000000001A48 48 0 0 1 252.118 448H48C21.49 448 0 426.51 0 400V-16C0 -42.51 21.49 -64 48 -64H336C362.51 -64 384 -42.51 384 -16V316.118A48 48 0 0 1 369.941 350.059zM332.118 320H256V396.118L332.118 320zM48 -16V400H208V296C208 282.745 218.745 272 232 272H336V-16H48zM192 60.024C192 49.333 179.074 43.979 171.515 51.539L136 87.514H108C101.373 87.514 96 92.887 96 99.514V155.514C96 162.141 101.373 167.514 108 167.514H136L171.515 204.461C179.075 212.021 192 206.667 192 195.976V60.024zM233.201 107.154C242.252 116.451 242.261 131.287 233.202 140.593C211.053 163.345 245.437 196.839 267.597 174.074C294.795 146.134 294.809 101.63 267.598 73.673C245.805 51.287 210.651 83.988 233.201 107.154z" />
<glyph glyph-name="file-code"
unicode="&#xF1C9;"
horiz-adv-x="384" d=" M369.941 350.059L286.059 433.9410000000001A48 48 0 0 1 252.118 448H48C21.49 448 0 426.51 0 400V-16C0 -42.51 21.49 -64 48 -64H336C362.51 -64 384 -42.51 384 -16V316.118A48 48 0 0 1 369.941 350.059zM332.118 320H256V396.118L332.118 320zM48 -16V400H208V296C208 282.745 218.745 272 232 272H336V-16H48zM149.677 99.115L116.854 128L149.676 156.885A8.793 8.793 0 0 1 150.281 169.509L132.878 188.073C129.494 191.686 123.914 191.735 120.44 188.4740000000001L62.78 134.42C59.077 130.946 59.076 125.053 62.781 121.5800000000001L120.44 67.525A8.738 8.738 0 0 1 126.452 65.1440000000001A8.746 8.746 0 0 1 132.879 67.9260000000001L150.282 86.489A8.795 8.795 0 0 1 149.677 99.115zM233.961 226.965L209.56 234.049A8.796 8.796 0 0 1 198.655 228.051L144.04 39.939C142.687 35.279 145.378 30.387 150.038 29.0340000000001L174.441 21.95C179.121 20.595 183.998 23.304 185.346 27.948L239.958 216.06C241.312 220.72 238.621 225.612 233.961 226.9650000000001zM321.219 134.42L263.561 188.475C260.035 191.7820000000001 254.462 191.6400000000001 251.122 188.074L233.719 169.511A8.795 8.795 0 0 1 234.324 156.886L267.146 128L234.324 99.115A8.793 8.793 0 0 1 233.719 86.491L251.122 67.927A8.797 8.797 0 0 1 263.5610000000001 67.526H263.5600000000001L321.2200000000001 121.581C324.923 125.054 324.923 130.947 321.2190000000001 134.42z" />
<glyph glyph-name="file-excel"
unicode="&#xF1C3;"
horiz-adv-x="384" d=" M369.9 350.1L286 434C277 443 264.8 448.1 252.1 448.1H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H336C362.5 -64 384 -42.5 384 -16V316.1C384 328.8 378.9 341.1 369.9 350.1zM332.1 320H256V396.1L332.1 320zM48 -16V400H208V296C208 282.7 218.7 272 232 272H336V-16H48zM260 224H231.2C226.8 224 222.8 221.6 220.7 217.7C202.7 184.6 198.5 175.3 192.1 160C178.2 189.1 185.2 177.3 163.5 217.7C161.4 221.6 157.3 224 152.9 224H124C114.7 224 109 214 113.6 206L159.9 128L113.6 50C108.9 42 114.7 32 124 32H152.9C157.3 32 161.3 34.4 163.4 38.3C185.1 78.3 186.4 83.3 192 96C206.9 65.8 197.9 80.1 220.6 38.3C222.7 34.4 226.8 32 231.2 32H260C269.3 32 275 42 270.4 50L224 128C224.7 129.1 254.3 178.5 270.3 206C275 214 269.2 224 260 224z" />
<glyph glyph-name="file-image"
unicode="&#xF1C5;"
horiz-adv-x="384" d=" M369.9 350.1L286 434C277 443 264.8 448.1 252.1 448.1H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H336C362.5 -64 384 -42.5 384 -16V316.1C384 328.8 378.9 341.1 369.9 350.1zM332.1 320H256V396.1L332.1 320zM48 -16V400H208V296C208 282.7 218.7 272 232 272H336V-16H48zM80 32H304V160L280.5 183.5C275.8 188.2 268.2 188.2 263.5 183.5L176 96L136.5 135.5C131.8 140.2 124.2 140.2 119.5 135.5L80 96V32zM128 272C101.5 272 80 250.5 80 224S101.5 176 128 176S176 197.5 176 224S154.5 272 128 272z" />
<glyph glyph-name="file-pdf"
unicode="&#xF1C1;"
horiz-adv-x="384" d=" M369.9 350.1L286 434C277 443 264.8 448.1 252.1 448.1H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H336C362.5 -64 384 -42.5 384 -16V316.1C384 328.8 378.9 341.1 369.9 350.1zM332.1 320H256V396.1L332.1 320zM48 -16V400H208V296C208 282.7 218.7 272 232 272H336V-16H48zM298.2 127.7C286 139.7 251.2 136.4 233.8 134.2C216.6 144.7 205.1 159.2 197 180.5C200.9 196.6 207.1 221.1 202.4 236.5C198.2 262.7 164.6 260.1 159.8 242.4C155.4 226.3 159.4 203.9 166.8 175.3C156.8 151.4 141.9 119.3 131.4 100.9C111.4 90.6 84.4 74.7 80.4 54.7C77.1 38.9 106.4 -0.5 156.5 85.9C178.9 93.3 203.3 102.4 224.9 106C243.8 95.8 265.9 89 280.7 89C306.2 89 308.7 117.2 298.2 127.7zM100.1 49.9C105.2 63.6 124.6 79.4 130.5 84.9C111.5 54.6 100.1 49.2 100.1 49.9zM181.7 240.5C189.1 240.5 188.4 208.4 183.5 199.7C179.1 213.6 179.2 240.5 181.7 240.5zM157.3 103.9C167 120.8 175.3 140.9 182 158.6C190.3 143.5 200.9 131.4 212.1 123.1C191.3 118.8 173.2 109.9999999999999 157.3 103.9zM288.9 108.9S283.9 102.9 251.6 116.7C286.7 119.3 292.5 111.3 288.9 108.9z" />
<glyph glyph-name="file-powerpoint"
unicode="&#xF1C4;"
horiz-adv-x="384" d=" M369.9 350.1L286 434C277 443 264.8 448.1 252.1 448.1H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H336C362.5 -64 384 -42.5 384 -16V316.1C384 328.8 378.9 341.1 369.9 350.1zM332.1 320H256V396.1L332.1 320zM48 -16V400H208V296C208 282.7 218.7 272 232 272H336V-16H48zM120 44V212C120 218.6 125.4 224 132 224H201.2C237.9 224 264 197 264 157.7C264 83.4 195.3 91.2 168.5 91.2V44C168.5 37.4 163.1 32 156.5 32H132C125.4 32 120 37.4 120 44zM168.5 131.4H191.5C199.4 131.4 205.4 133.8 209.6 138.6C218.1 148.4 218 167.1 209.7 176.4C205.6 181 199.8 183.4 192.3 183.4H168.4V131.4z" />
<glyph glyph-name="file-video"
unicode="&#xF1C8;"
horiz-adv-x="384" d=" M369.941 350.059L286.059 433.9410000000001A48 48 0 0 1 252.118 448H48C21.49 448 0 426.51 0 400V-16C0 -42.51 21.49 -64 48 -64H336C362.51 -64 384 -42.51 384 -16V316.118A48 48 0 0 1 369.941 350.059zM332.118 320H256V396.118L332.118 320zM48 -16V400H208V296C208 282.745 218.745 272 232 272H336V-16H48zM276.687 195.303L224 142.626V180C224 191.046 215.046 200 204 200H100C88.954 200 80 191.046 80 180V76C80 64.954 88.954 56 100 56H204C215.046 56 224 64.954 224 76V113.374L276.687 60.7000000000001C286.704 50.682 304 57.72 304 72.014V183.989C304 198.3 286.691 205.308 276.687 195.303z" />
<glyph glyph-name="file-word"
unicode="&#xF1C2;"
horiz-adv-x="384" d=" M369.9 350.1L286 434C277 443 264.8 448.1 252.1 448.1H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H336C362.5 -64 384 -42.5 384 -16V316.1C384 328.8 378.9 341.1 369.9 350.1zM332.1 320H256V396.1L332.1 320zM48 -16V400H208V296C208 282.7 218.7 272 232 272H336V-16H48zM268.1 192C262.4000000000001 192 257.5 188 256.4000000000001 182.5C235.8000000000001 84.8 236.0000000000001 87.1 235.4000000000001 79C235.2000000000001 80.2 235.0000000000001 81.6 234.7000000000001 83.3C233.9000000000001 88.4 235.0000000000001 83.1 211.1000000000001 182.8C209.8000000000001 188.2 205.0000000000001 192 199.4000000000001 192H186.1000000000001C180.6000000000001 192 175.8000000000001 188.2 174.4000000000001 182.9C150.0000000000001 83.9 150.4000000000001 86.7 149.6000000000001 79.2C149.5000000000001 80.3 149.4000000000001 81.7 149.1000000000001 83.4C148.4000000000001 88.6 135.0000000000001 156.7 130.0000000000001 182.4C128.9000000000001 188 124.0000000000001 192.1 118.2000000000001 192.1H101.4000000000001C93.6000000000001 192.1 87.9000000000001 184.8 89.7000000000001 177.3C97.7000000000001 144.6999999999999 116.4000000000001 67.8 122.9000000000001 41.3C124.2000000000001 35.9 129.0000000000001 32.1999999999999 134.6000000000001 32.1999999999999H159.8000000000001C165.3000000000001 32.1999999999999 170.1000000000001 35.8999999999999 171.4 41.3L189.3000000000001 112.6999999999999C190.8000000000001 118.8999999999999 191.8000000000001 124.6999999999999 192.3000000000001 130L195.2000000000001 112.6999999999999C195.3000000000001 112.3 207.8000000000001 62.1999999999999 213.1000000000001 41.3C214.4000000000001 35.9999999999999 219.2000000000001 32.1999999999999 224.7000000000001 32.1999999999999H249.4000000000001C254.9000000000001 32.1999999999999 259.7000000000001 35.8999999999999 261.0000000000001 41.3C281.8000000000001 123.1999999999999 291.2000000000001 160.3 295.5000000000001 177.3C297.4000000000001 184.9 291.7000000000001 192.2 283.9000000000001 192.2H268.1z" />
<glyph glyph-name="file"
unicode="&#xF15B;"
horiz-adv-x="384" d=" M369.9 350.1L286 434C277 443 264.8 448.1 252.1 448.1H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H336C362.5 -64 384 -42.5 384 -16V316.1C384 328.8 378.9 341.1 369.9 350.1zM332.1 320H256V396.1L332.1 320zM48 -16V400H208V296C208 282.7 218.7 272 232 272H336V-16H48z" />
<glyph glyph-name="flag"
unicode="&#xF024;"
horiz-adv-x="512" d=" M336.174 368C287.042 368 242.869 400 174.261 400C142.96 400 115.958 393.5180000000001 93.54 384.832A48.04 48.04 0 0 1 95.682 405.559C93.067 428.425 74.167 446.406 51.201 447.896C23.242 449.71 0 427.569 0 400C0 382.236 9.657 366.738 24 358.438V-48C24 -56.837 31.163 -64 40 -64H56C64.837 -64 72 -56.837 72 -48V35.443C109.869 52.72 143.259 64 199.826 64C248.958 64 293.131 32 361.7390000000001 32C420.218 32 463.711 54.617 490.287 71.981C503.846 80.839 512 95.949 512 112.145V352.063C512 386.522 476.736 409.831 445.096 396.18C409.193 380.6910000000001 371.641 368 336.174 368zM464 112C442.217 96.588 403.176 80 361.7390000000001 80C301.7940000000001 80 259.737 112 199.826 112C156.465 112 103.447 102.597 72 88V320C93.784 335.4120000000001 132.824 352 174.261 352C234.206 352 276.2630000000001 320 336.1740000000001 320C379.4450000000001 320 432.4940000000001 337.366 464 352V112z" />
<glyph glyph-name="folder-open"
unicode="&#xF07C;"
horiz-adv-x="576" d=" M527.943 224H480V272C480 298.51 458.51 320 432 320H272L208 384H48C21.49 384 0 362.51 0 336V48C0 21.49 21.49 0 48 0H448A48.001 48.001 0 0 1 488.704 22.56L568.646 150.56C588.5939999999999 182.477 565.608 224 527.943 224zM54 336H188.118L252.118 272H426A6 6 0 0 0 432 266V224H152A48 48 0 0 1 110.902 200.798L48 96.551V330.007A5.993 5.993 0 0 0 54 336zM448 48H72L149.234 176H528L448 48z" />
<glyph glyph-name="folder"
unicode="&#xF07B;"
horiz-adv-x="512" d=" M464 320H272L208 384H48C21.49 384 0 362.51 0 336V48C0 21.49 21.49 0 48 0H464C490.51 0 512 21.49 512 48V272C512 298.51 490.51 320 464 320zM458 48H54C50.686 48 48 50.678 48 53.992V330.008A5.993 5.993 0 0 0 54 336H188.118L252.118 272H458A6 6 0 0 0 464 266V54A6 6 0 0 0 458 48z" />
<glyph glyph-name="frown"
unicode="&#xF119;"
horiz-adv-x="496" d=" M248 440C111 440 0 329 0 192S111 -56 248 -56S496 55 496 192S385 440 248 440zM248 -8C137.7 -8 48 81.7 48 192S137.7 392 248 392S448 302.3 448 192S358.3 -8 248 -8zM168 208C185.7 208 200 222.3 200 240S185.7 272 168 272S136 257.7 136 240S150.3 208 168 208zM328 272C310.3 272 296 257.7 296 240S310.3 208 328 208S360 222.3 360 240S345.7 272 328 272zM248 144C207.8 144 170 126.3 144.2 95.4C135.7 85.2 137.1 70.1 147.3 61.6C157.5 53.1 172.6 54.4999999999999 181.1 64.7C197.7 84.6 222.1 96.1 248 96.1S298.3 84.7 314.9 64.7C319.7 59 326.5 56.1 333.4 56.1C338.8 56.1 344.3 57.9 348.8 61.7C359 70.2 360.3 85.3 351.9 95.5C326 126.3 288.2 144 248 144z" />
<glyph glyph-name="futbol"
unicode="&#xF1E3;"
horiz-adv-x="496" d=" M483.8 268.6C449.8 373.4 352.6 440 248.1 440C222.7 440 196.9 436.1 171.4 427.8C41.2 385.5 -30.1 245.6 12.2 115.4C46.2 10.6 143.4 -56 247.9 -56C273.3 -56 299.1 -52.1 324.6 -43.8C454.8 -1.5 526.1 138.4 483.8 268.6zM409.3 74.9L357.1 68.5L313.4000000000001 129.4L337.8 204.6L408.9 226.7L447.8 190.3C447.6 159.6 440.4 129.1999999999999 426.1 101.1C421.4 91.8 415.4 83.3 409.3 74.9zM409.3 310.3L398.9000000000001 257.2L328.2000000000001 235.2L264.0000000000001 281.7V355.5L311.4000000000001 381.7C350.6 368.7 384.8000000000001 343.7 409.3000000000001 310.3zM184.9 381.6L232 355.5V281.7L167.8 235.2L97.2 257.2L87.1 309.7C111.4 343.1 145 368.3 184.9 381.6zM139 68.5L85.9 75C71.5 95.1 48.6 134.6 48.1 190.3L87.1 226.7L158.2 204.5L182.5 130.2000000000001L139 68.5000000000001zM187.2 1.5L164.8 49.6L208.4 111.3H287L331.3 49.6L308.9000000000001 1.5C302.7000000000001 -0.3 251.3000000000001 -18.9 187.2000000000001 1.5z" />
<glyph glyph-name="gem"
unicode="&#xF3A5;"
horiz-adv-x="576" d=" M464 448H112C108 448 104.2 446 102 442.6L2 295.4C-0.9 291 -0.6 285.2000000000001 2.7 281.2000000000001L278.7 -59.6C283.5 -65.5 292.5 -65.5 297.3 -59.6L573.3 281.2C576.5999999999999 285.3 576.9 291 574 295.4L474.1 442.6C471.8 446 468.1 448 464 448zM444.7 400L508 304H439.6L387.9000000000001 400H444.7000000000001zM242.6 400H333.3L385 304H191L242.6 400zM131.3 400H188.1L136.4 304H68L131.3 400zM88.3 256H139.7L208 96L88.3 256zM191.2 256H384.8L288 12.7L191.2 256zM368 96L436.2 256H487.6L368 96z" />
<glyph glyph-name="hand-lizard"
unicode="&#xF258;"
horiz-adv-x="576" d=" M556.686 157.458L410.328 383.171C397.001 403.728 374.417 416 349.917 416H56C25.121 416 0 390.878 0 360V352C0 307.8880000000001 35.888 272 80 272H276.0420000000001L257.7090000000001 224H144C95.477 224 56 184.523 56 136C56 105.121 81.121 80 112 80H243.552C246.539 80 249.466 79.451 252.249 78.369L352 39.582V-32H576V92.171C576 115.396 569.321 137.972 556.686 157.458zM528 16H400V39.582C400 59.53 387.986 77.09 369.396 84.318L269.645 123.106A71.733 71.733 0 0 1 243.552 128H112C107.589 128 104 131.589 104 136C104 158.056 121.944 176 144 176H257.709C277.476 176 295.495 188.407 302.549 206.873L327.101 271.154C336.097 294.707 318.673 320 293.471 320H80C62.355 320 48 334.355 48 352V360C48 364.411 51.589 368 56 368H349.917C358.083 368 365.61 363.91 370.054 357.058L516.412 131.343A71.84 71.84 0 0 0 528 92.171V16z" />
<glyph glyph-name="hand-paper"
unicode="&#xF256;"
horiz-adv-x="448" d=" M372.57 335.359V346.184C372.57 389.796 332.05 422.875 289.531 411.73C263.902 461.23 195.441 459.18 171.549 410.983C130.269 421.544 89.144 390.055 89.144 346V219.87C69.191 227.297 45.836 224.938 27.061 210.999C-2.294 189.203 -8.733 147.666 12.511 117.846L132.48 -50.569A32 32 0 0 1 158.542 -64.001H381.439C396.343 -64.001 409.274 -53.712 412.621 -39.188L442.805 91.77A203.637 203.637 0 0 1 448 137.436V269C448 309.62 412.477 340.992 372.57 335.359zM399.997 137.437C399.997 125.706 398.663 113.968 396.0320000000001 102.551L368.707 -16H166.787L51.591 145.697C37.152 165.967 66.614 188.473 80.985 168.302L108.113 130.223C117.108 117.597 137.144 123.936 137.144 139.506V346C137.144 371.645 173.715 370.81 173.715 345.309V192C173.715 183.163 180.878 176 189.715 176H196.571C205.408 176 212.571 183.163 212.571 192V381C212.571 406.663 249.142 405.81 249.142 380.309V192C249.142 183.163 256.305 176 265.142 176H271.998C280.835 176 287.998 183.163 287.998 192V346.875C287.998 372.5470000000001 324.568 371.685 324.568 346.184V192C324.568 183.163 331.731 176 340.568 176H347.425C356.262 176 363.425 183.163 363.425 192V268.309C363.425 294.551 399.995 293.949 399.995 269V137.437z" />
<glyph glyph-name="hand-peace"
unicode="&#xF25B;"
horiz-adv-x="448" d=" M362.146 256.024C348.4360000000001 277.673 323.385 290.04 297.14 286.365V374C297.14 414.804 264.329 448 223.999 448C183.669 448 150.859 414.804 150.859 374L160 280L141.321 358.85C126.578 397.157 83.85 415.89 46.209 400.7920000000001C8.735 385.762 -9.571 343.0370000000001 5.008 305.15L60.765 160.223C30.208 135.267 16.771 102.414 36.032 68.005L90.885 -29.994C102.625 -50.97 124.73 -64 148.575 -64H354.277C385.021 -64 411.835 -42.56 418.832 -12.203L446.259 106.7960000000001A67.801 67.801 0 0 1 447.988 121.999L448 192C448 236.956 404.737 269.343 362.146 256.024zM399.987 122C399.987 120.512 399.8180000000001 119.023 399.485 117.577L372.058 -1.424C370.08 -10.006 362.768 -16 354.276 -16H148.575C142.089 -16 136.033 -12.379 132.77 -6.551L77.916 91.449C73.359 99.59 75.297 110.117 82.424 115.937L109.071 137.701A16 16 0 0 1 113.883 155.84L49.793 322.389C37.226 355.044 84.37 373.163 96.51 341.611L156.294 186.254A16 16 0 0 1 171.227 176H182.859C191.696 176 198.859 183.163 198.859 192V374C198.859 408.375 249.14 408.43 249.14 374V192C249.14 183.163 256.303 176 265.14 176H271.996C280.833 176 287.996 183.163 287.996 192V220C287.996 245.122 324.563 245.159 324.563 220V192C324.563 183.163 331.726 176 340.563 176H347.419C356.256 176 363.419 183.163 363.419 192C363.419 217.12 399.986 217.16 399.986 192V122z" />
<glyph glyph-name="hand-point-down"
unicode="&#xF0A7;"
horiz-adv-x="448" d=" M188.8 -64C234.416 -64 272 -26.235 272 19.2V54.847A93.148 93.148 0 0 1 294.064 62.776C316.0700000000001 60.269 339.0420000000001 66.2789999999999 356.855 78.761C409.342 79.9 448 116.159 448 178.701V200C448 260.063 408 298.512 408 327.2V329.879C412.952 335.626 416 343.415 416 351.999V416C416 433.673 403.106 448 387.2 448H156.8C140.894 448 128 433.673 128 416V352C128 343.416 131.048 335.627 136 329.88V327.201C136 320.237 129.807 312.339 112.332 297.0180000000001L112.184 296.889L112.038 296.7580000000001C102.101 287.9020000000001 91.197 278.642 78.785 270.9070000000001C48.537 252.202 0 240.514 0 195.2C0 138.272 35.286 103.2 83.2 103.2C91.226 103.2 98.689 104.014 105.6 105.376V19.2C105.6 -25.899 143.701 -64 188.8 -64zM188.8 -16C170.1 -16 153.6 0.775 153.6 19.2V177.6C136.275 177.6 118.4 151.2000000000001 83.2 151.2000000000001C56.8 151.2000000000001 48 171.8250000000001 48 195.2000000000001C48 203.9940000000001 80.712 215.6450000000001 104.1 230.1260000000001C118.675 239.2000000000001 131.325 249.6500000000001 143.975 260.9250000000001C162.349 277.0340000000001 180.608 294.761 183.571 320.0000000000001H360.3230000000001C364.087 277.2100000000001 400 245.491 400 200V178.701C400 138.177 377.803 121.577 338.675 128.1C330.6740000000001 113.488 304.6960000000001 103.949 285.05 115.175C266.825 95.81 238.669 97.388 224 110.225V19.2C224 0.225 207.775 -16 188.8 -16zM328 384C328 397.255 338.745 408 352 408S376 397.255 376 384S365.255 360 352 360S328 370.745 328 384z" />
<glyph glyph-name="hand-point-left"
unicode="&#xF0A5;"
horiz-adv-x="512" d=" M0 227.2C0 181.584 37.765 144 83.2 144H118.847A93.148 93.148 0 0 1 126.776 121.936C124.269 99.93 130.279 76.958 142.761 59.145C143.9 6.658 180.159 -32 242.701 -32H264C324.063 -32 362.512 8 391.2 8H393.879C399.626 3.048 407.415 0 415.999 0H479.999C497.672 0 511.999 12.894 511.999 28.8V259.2C511.999 275.106 497.672 288 479.999 288H415.999C407.415 288 399.626 284.952 393.879 280H391.2C384.236 280 376.338 286.193 361.017 303.668L360.888 303.8160000000001L360.757 303.962C351.901 313.899 342.641 324.803 334.906 337.215C316.202 367.463 304.514 416 259.2 416C202.272 416 167.2 380.714 167.2 332.8C167.2 324.774 168.014 317.3110000000001 169.376 310.4H83.2C38.101 310.4 0 272.299 0 227.2zM48 227.2C48 245.9 64.775 262.4 83.2 262.4H241.6C241.6 279.725 215.2 297.6 215.2 332.8C215.2 359.2 235.825 368 259.2000000000001 368C267.9940000000001 368 279.6450000000001 335.288 294.1260000000001 311.9C303.2000000000001 297.325 313.6500000000001 284.675 324.925 272.025C341.034 253.651 358.761 235.392 384 232.429V55.677C341.21 51.913 309.491 16 264 16H242.701C202.177 16 185.577 38.197 192.1 77.325C177.488 85.326 167.949 111.304 179.175 130.95C159.81 149.175 161.388 177.331 174.225 192H83.2C64.225 192 48 208.225 48 227.2zM448 88C461.255 88 472 77.255 472 64S461.255 40 448 40S424 50.745 424 64S434.745 88 448 88z" />
<glyph glyph-name="hand-point-right"
unicode="&#xF0A4;"
horiz-adv-x="512" d=" M428.8 310.4H342.623A115.52 115.52 0 0 1 344.799 332.8C344.799 380.714 309.727 416 252.799 416C207.485 416 195.797 367.463 177.092 337.216C169.357 324.803 160.098 313.899 151.241 303.963L151.11 303.817L150.981 303.6690000000001C135.662 286.193 127.764 280 120.8 280H118.121C112.374 284.952 104.585 288 96.001 288H32C14.327 288 0 275.106 0 259.2V28.8C0 12.894 14.327 0 32 0H96C104.584 0 112.373 3.048 118.12 8H120.799C149.487 8 187.936 -32 247.999 -32H269.298C331.8400000000001 -32 368.098 6.658 369.238 59.145C381.7200000000001 76.958 387.729 99.93 385.223 121.936A93.148 93.148 0 0 1 393.152 144H428.8C474.235 144 512 181.584 512 227.2C512 272.299 473.899 310.4 428.8 310.4zM428.8 192H337.774C350.611 177.331 352.189 149.175 332.824 130.95C344.051 111.304 334.511 85.326 319.899 77.325C326.423 38.197 309.823 16 269.299 16H248C202.509 16 170.79 51.913 128 55.676V232.429C153.239 235.393 170.966 253.651 187.075 272.025C198.35 284.675 208.8 297.3250000000001 217.874 311.9C232.355 335.288 244.006 368 252.8 368C276.175 368 296.8 359.2 296.8 332.8C296.8 297.6 270.4000000000001 279.725 270.4000000000001 262.4H428.8000000000001C447.2250000000001 262.4 464.0000000000001 245.9 464.0000000000001 227.2C464.0000000000001 208.225 447.7750000000001 192 428.8000000000001 192zM88 64C88 50.745 77.255 40 64 40S40 50.745 40 64S50.745 88 64 88S88 77.255 88 64z" />
<glyph glyph-name="hand-point-up"
unicode="&#xF0A6;"
horiz-adv-x="448" d=" M105.6 364.8V278.623A115.52 115.52 0 0 1 83.2 280.799C35.286 280.799 0 245.727 0 188.799C0 143.485 48.537 131.797 78.784 113.092C91.197 105.357 102.101 96.098 112.037 87.241L112.183 87.11L112.331 86.981C129.807 71.662 136 63.764 136 56.8V54.121C131.048 48.374 128 40.585 128 32.001V-31.999C128 -49.672 140.894 -63.999 156.8 -63.999H387.2000000000001C403.1060000000001 -63.999 416.0000000000001 -49.672 416.0000000000001 -31.999V32.001C416.0000000000001 40.585 412.9520000000001 48.374 408.0000000000001 54.121V56.8C408.0000000000001 85.488 448.0000000000001 123.937 448.0000000000001 184V205.299C448.0000000000001 267.841 409.3420000000001 304.099 356.8550000000001 305.2390000000001C339.0420000000001 317.721 316.0700000000001 323.73 294.0640000000001 321.224A93.148 93.148 0 0 1 272 329.153V364.8C272 410.235 234.416 448 188.8 448C143.701 448 105.6 409.899 105.6 364.8zM224 364.8V273.774C238.669 286.611 266.825 288.189 285.05 268.824C304.6960000000001 280.0510000000001 330.6740000000001 270.511 338.675 255.899C377.803 262.423 400 245.823 400 205.299V184C400 138.509 364.087 106.79 360.324 64H183.571C180.607 89.239 162.349 106.966 143.975 123.075C131.325 134.35 118.675 144.8 104.1 153.874C80.712 168.355 48 180.006 48 188.8C48 212.175 56.8 232.8 83.2 232.8C118.4 232.8 136.275 206.4 153.6 206.4V364.8C153.6 383.225 170.1 400 188.8 400C207.775 400 224 383.775 224 364.8zM352 24C365.255 24 376 13.255 376 0S365.255 -24 352 -24S328 -13.255 328 0S338.745 24 352 24z" />
<glyph glyph-name="hand-pointer"
unicode="&#xF25A;"
horiz-adv-x="448" d=" M358.182 268.639C338.689 293.4070000000001 305.5030000000001 300.584 278.31 287.737C263.183 303.4240000000001 242.128 310.2240000000001 221.715 307.366V381C221.715 417.944 191.979 448 155.429 448S89.143 417.944 89.143 381V219.871C69.234 227.281 45.871 224.965 27.06 210.999C-2.295 189.204 -8.733 147.6660000000001 12.51 117.847L122.209 -36.154C134.632 -53.59 154.741 -64 176 -64H354.286C385.088 -64 411.86 -42.5 418.843 -12.203L446.272 106.7960000000001A67.873 67.873 0 0 1 448 122V206C448 252.844 401.375 285.273 358.182 268.639zM80.985 168.303L108.111 130.224C117.106 117.598 137.142 123.937 137.142 139.507V381C137.142 406.12 173.713 406.16 173.713 381V206C173.713 197.164 180.876 190 189.713 190H196.57C205.407 190 212.57 197.164 212.57 206V241C212.57 266.12 249.141 266.16 249.141 241V206C249.141 197.164 256.304 190 265.141 190H272C280.837 190 288 197.164 288 206V227C288 252.12 324.5710000000001 252.16 324.5710000000001 227V206C324.5710000000001 197.164 331.7340000000001 190 340.5710000000001 190H347.4280000000001C356.2650000000001 190 363.4280000000001 197.164 363.4280000000001 206C363.4280000000001 231.121 399.999 231.16 399.999 206V122C399.999 120.512 399.8300000000001 119.023 399.497 117.577L372.067 -1.424C370.089 -10.006 362.777 -16 354.2850000000001 -16H176C170.231 -16 164.737 -13.122 161.303 -8.303L51.591 145.697C37.185 165.92 66.585 188.515 80.985 168.303zM176.143 48V144C176.143 152.837 182.411 160 190.143 160H196.143C203.875 160 210.143 152.837 210.143 144V48C210.143 39.163 203.875 32 196.143 32H190.143C182.41 32 176.143 39.163 176.143 48zM251.571 48V144C251.571 152.837 257.839 160 265.5710000000001 160H271.5710000000001C279.3030000000001 160 285.5710000000001 152.837 285.5710000000001 144V48C285.5710000000001 39.163 279.3030000000001 32 271.5710000000001 32H265.5710000000001C257.839 32 251.5710000000001 39.163 251.5710000000001 48zM327 48V144C327 152.837 333.268 160 341 160H347C354.7320000000001 160 361 152.837 361 144V48C361 39.163 354.7320000000001 32 347 32H341C333.268 32 327 39.163 327 48z" />
<glyph glyph-name="hand-rock"
unicode="&#xF255;"
horiz-adv-x="512" d=" M408.864 368.948C386.463 402.846 342.756 411.221 310.051 392.536C280.577 424.005 230.906 423.629 201.717 392.558C154.557 419.578 93.007 387.503 91.046 331.752C44.846 342.593 0 307.999 0 260.5710000000001V203.618C0 170.877 14.28 139.664 39.18 117.984L136.89 32.903C141.142 29.201 140 27.33 140 -1e-13C140 -17.6730000000001 154.327 -32.0000000000001 172 -32.0000000000001H424C441.673 -32.0000000000001 456 -17.6730000000001 456 -1e-13C456 23.5129999999999 454.985 30.745 459.982 42.37L502.817 142.026C508.911 156.203 512 171.198 512 186.5939999999999V301.0370000000001C512 353.876 457.686 389.699 408.8640000000001 368.948zM464 186.594A64.505 64.505 0 0 0 458.718 160.981L415.8830000000001 61.326C410.653 49.155 408.0000000000001 36.286 408.0000000000001 23.076V16H188V26.286C188 42.656 180.86 58.263 168.41 69.103L70.7 154.183C56.274 166.745 48 184.764 48 203.619V260.572C48 293.78 100 294.1090000000001 100 259.895V218.667A16 16 0 0 1 105.493 206.6L112.493 200.505A16 16 0 0 1 139 212.571V329.1430000000001C139 362.24 191 362.868 191 328.466V301.7150000000001C191 292.879 198.164 285.7150000000001 207 285.7150000000001H214C222.836 285.7150000000001 230 292.879 230 301.7150000000001V342.858C230 375.992 282 376.533 282 342.181V301.7150000000001C282 292.879 289.163 285.7150000000001 298 285.7150000000001H305C313.837 285.7150000000001 321 292.879 321 301.7150000000001V329.144C321 362.174 373 362.924 373 328.467V301.716C373 292.88 380.163 285.716 389 285.716H396C404.837 285.716 412 292.88 412 301.716C412 334.862 464 335.329 464 301.039V186.5940000000001z" />
<glyph glyph-name="hand-scissors"
unicode="&#xF257;"
horiz-adv-x="512" d=" M256 -32L326 -31.987C331.114 -31.987 336.231 -31.404 341.203 -30.258L460.202 -2.831C490.56 4.165 512 30.98 512 61.723V267.425C512 291.27 498.97 313.376 477.995 325.115L379.996 379.968C345.587 399.2290000000001 312.733 385.7920000000001 287.778 355.235L142.85 410.992C104.963 425.5710000000001 62.238 407.265 47.208 369.791C32.11 332.149 50.843 289.421 89.15 274.679L168 256L74 265.141C33.196 265.141 0 232.33 0 192.001C0 151.671 33.196 118.86 74 118.86H161.635C157.96 92.615 170.327 67.563 191.976 53.8539999999999C178.657 11.263 211.044 -32 256 -32zM256 16.013C230.84 16.013 230.88 52.58 256 52.58C264.837 52.58 272 59.743 272 68.58V75.436C272 84.273 264.837 91.436 256 91.436H228C202.841 91.436 202.878 128.003 228 128.003H256C264.837 128.003 272 135.166 272 144.003V150.859C272 159.696 264.837 166.859 256 166.859H74C39.57 166.859 39.625 217.14 74 217.14H256C264.837 217.14 272 224.303 272 233.14V244.772A16 16 0 0 1 261.746 259.705L106.389 319.49C74.837 331.63 92.957 378.773 125.611 366.207L292.16 302.116A16.001 16.001 0 0 1 310.299 306.928L332.063 333.5750000000001C337.883 340.702 348.411 342.639 356.551 338.0830000000001L454.551 283.2290000000001C460.379 279.966 464 273.911 464 267.424V61.723C464 53.232 458.006 45.919 449.424 43.941L330.423 16.514A19.743 19.743 0 0 0 326 16.012H256z" />
<glyph glyph-name="hand-spock"
unicode="&#xF259;"
horiz-adv-x="512" d=" M21.096 66.21L150.188 -55.303A32 32 0 0 1 172.12 -64.001H409.7200000000001C423.8900000000001 -64.001 436.3730000000001 -54.682 440.4000000000001 -41.097L472.215 66.216A115.955 115.955 0 0 1 477 99.189V136.028C477 140.079 477.476 144.132 478.414 148.073L510.144 281.4830000000001C520.243 323.8950000000001 487.828 364.221 444.6 364.0080000000001C440.456 388.8640000000001 422.057 411.1730000000001 394.75 418.0000000000001C358.947 426.9520000000001 322.523 405.3450000000001 313.5 369.25L296.599 264L274.924 395.99C266.638 432.06 230.621 454.562 194.62 446.286C165.004 439.4820000000001 144.482 413.897 142.738 384.991C100.101 384.16 69.283 344.428 78.667 303.147L109.707 166.639C82.513 189.154 42.423 186.631 18.225 160.917C-7.151 133.956 -5.873 91.592 21.096 66.21zM53.164 128.021L53.166 128.0219999999999C60.385 135.694 72.407 136.002 80.022 128.8349999999999L133.034 78.9409999999999C143.225 69.351 160 76.6 160 90.594V160.073C160 161.266 159.866 162.456 159.603 163.619L125.473 313.791C119.877 338.408 156.975 346.651 162.527 322.212L192.926 188.4549999999999A16 16 0 0 1 208.529 176.0009999999999H217.1330000000001C227.4090000000001 176.0009999999999 235.0270000000001 185.5679999999999 232.7270000000001 195.5839999999999L191.107 376.7369999999999C185.484 401.2059999999999 222.497 409.813 228.142 385.2449999999999L273.362 188.4169999999999A16 16 0 0 1 288.956 176H302.173A16 16 0 0 1 317.695 188.119L360.067 357.6090000000001C366.171 382.0310000000001 403.029 372.7680000000001 396.932 348.3920000000001L358.805 195.88C356.284 185.792 363.92 176 374.327 176H384.021A16 16 0 0 1 399.586 188.295L426.509 301.4C432.3300000000001 325.848 469.306 317.087 463.475 292.598L431.7200000000001 159.19A100.094 100.094 0 0 1 429 136.028V99.189C429 92.641 428.057 86.138 426.195 79.8610000000001L397.775 -16H178.465L53.978 101.164C46.349 108.344 45.984 120.393 53.164 128.021z" />
<glyph glyph-name="handshake"
unicode="&#xF2B5;"
horiz-adv-x="640" d=" M519.2 320.1L471.6 367.7A56.252 56.252 0 0 1 432 384H205.2C190.4 384 176.1 378.1 165.6 367.7L118 320.1H0V64.4H64C81.6 64.4 95.8 78.6 95.9 96.1H105L189.6 19.6999999999999C220.5 -5.4000000000001 263.4 -6.0000000000001 295.2 15.8999999999999C307.7 5.0999999999999 321.2 -1e-13 336.3 -1e-13C354.5 -1e-13 371.6 7.3999999999999 385.1 23.9999999999999C407.2000000000001 15.3 433.3 21.3999999999999 449.1 40.8L475.3 73.1C480.9 79.9999999999999 484.4 87.9 486.2 96.1H544.1C544.2 78.6 558.5 64.4 576 64.4H640V320.1H519.2zM48 96.4C39.2 96.4 32 103.6 32 112.4S39.2 128.4 48 128.4S64 121.2 64 112.4C64 103.5 56.8 96.4 48 96.4zM438 103.3L411.9 71.1C409.1 67.7 404.1 67.1 400.6 69.9L376.7 89.3L346.7 52.8C340.7 45.4999999999999 331.7 47.9999999999999 328.7 50.4L291.9 81.9L276.3 62.7C262.4 45.6 237.1 43 221 56.1L123.7 144.1H96V272.2H137.9L199.6 333.8C201.6 334.6 203.3 335.3 205.3 336.1H262L223.3 300.6C193.9 273.7 192.2 228.3 218.9 199.3C233.7 183.1 280.1 158.1 320.4 194.9L328.6 202.4L436.8 114.6C440.2 111.8 440.7 106.7 438 103.3zM544 144.1H474.8C472.5 146.9 469.9 149.5 467.1 151.8L364.4000000000001 235.2L376.9000000000001 246.6C383.4000000000001 252.6 383.9000000000001 262.7 377.9000000000001 269.2L367 280.9C361 287.4 350.9 287.8 344.4 281.9L289.2 231.3C279.7 222.6 263.5 221.9 254.6 231.3C245.3 241.2 246.1 256.4 255.8 265.2000000000001L321.4 325.3C328.8 332.1 338.4 335.8 348.4 335.8L432.1 336C434.2 336 436.2 335.2000000000001 437.6 333.7000000000001L499.3 272.1H544V144.1zM592 96.4C583.2 96.4 576 103.6 576 112.4S583.2 128.4 592 128.4S608 121.2 608 112.4C608 103.5 600.8 96.4 592 96.4z" />
<glyph glyph-name="hdd"
unicode="&#xF0A0;"
horiz-adv-x="576" d=" M567.403 212.358L462.323 363.411A48 48 0 0 1 422.919 384H153.081A48 48 0 0 1 113.677 363.411L8.597 212.358A48.001 48.001 0 0 1 0 184.946V48C0 21.49 21.49 0 48 0H528C554.51 0 576 21.49 576 48V184.946C576 194.747 573 204.312 567.403 212.358zM153.081 336H422.919L500.832 224H75.168L153.081 336zM528 48H48V176H528V48zM496 112C496 94.327 481.673 80 464 80S432 94.327 432 112S446.327 144 464 144S496 129.673 496 112zM400 112C400 94.327 385.673 80 368 80S336 94.327 336 112S350.327 144 368 144S400 129.673 400 112z" />
<glyph glyph-name="heart"
unicode="&#xF004;"
horiz-adv-x="512" d=" M458.4 383.7C400.6 432.3 311.3 425 256 368.7C200.7 425 111.4 432.4 53.6 383.7C-21.6 320.4 -10.6 217.2 43 162.5L218.4 -16.2C228.4 -26.4 241.8 -32.1 256 -32.1C270.3 -32.1 283.6 -26.4999999999999 293.6 -16.3L469 162.4C522.5 217.1 533.7 320.3 458.4 383.7zM434.8 196.2L259.4 17.5C257 15.1 255 15.1 252.6 17.5L77.2 196.2C40.7 233.4 33.3 303.8 84.5 346.9C123.4 379.6 183.4 374.7 221 336.4L256 300.7L291 336.4C328.8 374.9 388.8 379.6 427.5 347C478.6 303.9 471 233.1 434.8 196.2z" />
<glyph glyph-name="hospital"
unicode="&#xF0F8;"
horiz-adv-x="448" d=" M128 204V244C128 250.627 133.373 256 140 256H180C186.627 256 192 250.627 192 244V204C192 197.373 186.627 192 180 192H140C133.373 192 128 197.373 128 204zM268 192H308C314.627 192 320 197.373 320 204V244C320 250.627 314.627 256 308 256H268C261.373 256 256 250.627 256 244V204C256 197.373 261.373 192 268 192zM192 108V148C192 154.627 186.627 160 180 160H140C133.373 160 128 154.627 128 148V108C128 101.373 133.373 96 140 96H180C186.627 96 192 101.373 192 108zM268 96H308C314.627 96 320 101.373 320 108V148C320 154.627 314.627 160 308 160H268C261.373 160 256 154.627 256 148V108C256 101.373 261.373 96 268 96zM448 -28V-64H0V-28C0 -21.373 5.373 -16 12 -16H31.5V362.9650000000001C31.5 374.582 42.245 384 55.5 384H144V424C144 437.255 154.745 448 168 448H280C293.255 448 304 437.255 304 424V384H392.5C405.755 384 416.5 374.582 416.5 362.9650000000001V-16H436C442.627 -16 448 -21.373 448 -28zM79.5 -15H192V52C192 58.627 197.373 64 204 64H244C250.627 64 256 58.627 256 52V-15H368.5V336H304V312C304 298.745 293.255 288 280 288H168C154.745 288 144 298.745 144 312V336H79.5V-15zM266 384H240V410A6 6 0 0 1 234 416H214A6 6 0 0 1 208 410V384H182A6 6 0 0 1 176 378V358A6 6 0 0 1 182 352H208V326A6 6 0 0 1 214 320H234A6 6 0 0 1 240 326V352H266A6 6 0 0 1 272 358V378A6 6 0 0 1 266 384z" />
<glyph glyph-name="hourglass"
unicode="&#xF254;"
horiz-adv-x="384" d=" M368 400H372C378.627 400 384 405.373 384 412V436C384 442.627 378.627 448 372 448H12C5.373 448 0 442.627 0 436V412C0 405.373 5.373 400 12 400H16C16 319.4360000000001 48.188 234.193 113.18 192C47.899 149.619 16 64.1 16 -16H12C5.373 -16 0 -21.373 0 -28V-52C0 -58.627 5.373 -64 12 -64H372C378.627 -64 384 -58.627 384 -52V-28C384 -21.373 378.627 -16 372 -16H368C368 64.564 335.812 149.807 270.82 192C336.102 234.381 368 319.9 368 400zM64 400H320C320 298.38 262.693 216 192 216S64 298.379 64 400zM320 -16H64C64 85.62 121.308 168 192 168S320 85.62 320 -16z" />
<glyph glyph-name="id-badge"
unicode="&#xF2C1;"
horiz-adv-x="384" d=" M336 448H48C21.5 448 0 426.5 0 400V-16C0 -42.5 21.5 -64 48 -64H336C362.5 -64 384 -42.5 384 -16V400C384 426.5 362.5 448 336 448zM336 -16H48V400H336V-16zM144 336H240C248.8 336 256 343.2 256 352S248.8 368 240 368H144C135.2 368 128 360.8 128 352S135.2 336 144 336zM192 160C227.3 160 256 188.7 256 224S227.3 288 192 288S128 259.3 128 224S156.7 160 192 160zM102.4 32H281.6C294 32 304 40.6 304 51.2V70.4C304 102.2 273.9 128 236.8 128C226 128 218.1 120 192 120C165.1 120 158.6 128 147.2 128C110.1 128 80 102.2 80 70.4V51.2C80 40.6 90 32 102.4 32z" />
<glyph glyph-name="id-card"
unicode="&#xF2C2;"
horiz-adv-x="576" d=" M528 416H48C21.5 416 0 394.5 0 368V16C0 -10.5 21.5 -32 48 -32H528C554.5 -32 576 -10.5 576 16V368C576 394.5 554.5 416 528 416zM528 16H303.2C304.1 20.5 304 12.4 304 38.4C304 70.2 273.9 96 236.8 96C226 96 218.1 88 192 88C165.1 88 158.6 96 147.2 96C110.1 96 80 70.2 80 38.4C80 12.4 79.8 20.5 80.8 16H48V304H528V16zM360 96H472C476.4 96 480 99.6 480 104V120C480 124.4 476.4 128 472 128H360C355.6 128 352 124.4 352 120V104C352 99.6 355.6 96 360 96zM360 160H472C476.4 160 480 163.6 480 168V184C480 188.4 476.4 192 472 192H360C355.6 192 352 188.4 352 184V168C352 163.6 355.6 160 360 160zM360 224H472C476.4 224 480 227.6 480 232V248C480 252.4 476.4 256 472 256H360C355.6 256 352 252.4 352 248V232C352 227.6 355.6 224 360 224zM192 128C227.3 128 256 156.7 256 192S227.3 256 192 256S128 227.3 128 192S156.7 128 192 128z" />
<glyph glyph-name="image"
unicode="&#xF03E;"
horiz-adv-x="512" d=" M464 384H48C21.49 384 0 362.51 0 336V48C0 21.49 21.49 0 48 0H464C490.51 0 512 21.49 512 48V336C512 362.51 490.51 384 464 384zM458 48H54A6 6 0 0 0 48 54V330A6 6 0 0 0 54 336H458A6 6 0 0 0 464 330V54A6 6 0 0 0 458 48zM128 296C105.909 296 88 278.091 88 256S105.909 216 128 216S168 233.909 168 256S150.091 296 128 296zM96 96H416V176L328.485 263.515C323.7990000000001 268.201 316.201 268.201 311.514 263.515L192 144L152.485 183.515C147.799 188.201 140.201 188.201 135.514 183.515L96 144V96z" />
<glyph glyph-name="images"
unicode="&#xF302;"
horiz-adv-x="576" d=" M480 32V16C480 -10.51 458.51 -32 432 -32H48C21.49 -32 0 -10.51 0 16V272C0 298.51 21.49 320 48 320H64V272H54A6 6 0 0 1 48 266V22A6 6 0 0 1 54 16H426A6 6 0 0 1 432 22V32H480zM522 368H150A6 6 0 0 1 144 362V118A6 6 0 0 1 150 112H522A6 6 0 0 1 528 118V362A6 6 0 0 1 522 368zM528 416C554.51 416 576 394.51 576 368V112C576 85.49 554.51 64 528 64H144C117.49 64 96 85.49 96 112V368C96 394.51 117.49 416 144 416H528zM264 304C264 281.909 246.091 264 224 264S184 281.909 184 304S201.909 344 224 344S264 326.091 264 304zM192 208L231.515 247.515C236.201 252.201 243.799 252.201 248.486 247.515L288 208L391.515 311.515C396.201 316.201 403.799 316.201 408.486 311.515L480 240V160H192V208z" />
<glyph glyph-name="keyboard"
unicode="&#xF11C;"
horiz-adv-x="576" d=" M528 384H48C21.49 384 0 362.51 0 336V48C0 21.49 21.49 0 48 0H528C554.51 0 576 21.49 576 48V336C576 362.51 554.51 384 528 384zM536 48C536 43.589 532.411 40 528 40H48C43.589 40 40 43.589 40 48V336C40 340.411 43.589 344 48 344H528C532.411 344 536 340.411 536 336V48zM170 178V206C170 212.627 164.627 218 158 218H130C123.373 218 118 212.627 118 206V178C118 171.373 123.373 166 130 166H158C164.627 166 170 171.373 170 178zM266 178V206C266 212.627 260.627 218 254 218H226C219.373 218 214 212.627 214 206V178C214 171.373 219.373 166 226 166H254C260.627 166 266 171.373 266 178zM362 178V206C362 212.627 356.627 218 350 218H322C315.373 218 310 212.627 310 206V178C310 171.373 315.373 166 322 166H350C356.627 166 362 171.373 362 178zM458 178V206C458 212.627 452.627 218 446 218H418C411.373 218 406 212.627 406 206V178C406 171.373 411.373 166 418 166H446C452.627 166 458 171.373 458 178zM122 96V124C122 130.627 116.627 136 110 136H82C75.373 136 70 130.627 70 124V96C70 89.373 75.373 84 82 84H110C116.627 84 122 89.373 122 96zM506 96V124C506 130.627 500.627 136 494 136H466C459.373 136 454 130.627 454 124V96C454 89.373 459.373 84 466 84H494C500.627 84 506 89.373 506 96zM122 260V288C122 294.627 116.627 300 110 300H82C75.373 300 70 294.627 70 288V260C70 253.373 75.373 248 82 248H110C116.627 248 122 253.373 122 260zM218 260V288C218 294.627 212.627 300 206 300H178C171.373 300 166 294.627 166 288V260C166 253.373 171.373 248 178 248H206C212.627 248 218 253.373 218 260zM314 260V288C314 294.627 308.627 300 302 300H274C267.373 300 262 294.627 262 288V260C262 253.373 267.373 248 274 248H302C308.627 248 314 253.373 314 260zM410 260V288C410 294.627 404.627 300 398 300H370C363.373 300 358 294.627 358 288V260C358 253.373 363.373 248 370 248H398C404.627 248 410 253.373 410 260zM506 260V288C506 294.627 500.627 300 494 300H466C459.373 300 454 294.627 454 288V260C454 253.373 459.373 248 466 248H494C500.627 248 506 253.373 506 260zM408 102V118C408 124.627 402.627 130 396 130H180C173.373 130 168 124.627 168 118V102C168 95.373 173.373 90 180 90H396C402.627 90 408 95.373 408 102z" />
<glyph glyph-name="lemon"
unicode="&#xF094;"
horiz-adv-x="512" d=" M484.112 420.111C455.989 448.233 416.108 456.057 387.0590000000001 439.135C347.604 416.152 223.504 489.111 91.196 356.803C-41.277 224.328 31.923 100.528 8.866 60.942C-8.056 31.891 -0.234 -7.99 27.888 -36.112C56.023 -64.247 95.899 -72.0499999999999 124.945 -55.133C164.368 -32.163 288.502 -105.102 420.803 27.196C553.277 159.673 480.076 283.473 503.134 323.057C520.056 352.1070000000001 512.234 391.988 484.112 420.111zM461.707 347.217C422.907 280.608 507.307 181.582 386.862 61.137C266.422 -59.306 167.387 25.089 100.786 -13.706C78.1069999999999 -26.913 36.751 13.535 50.2929999999999 36.782C89.0929999999999 103.391 4.6929999999999 202.417 125.138 322.862C245.573 443.298 344.616 358.914 411.219 397.708C433.949 410.948 475.224 370.42 461.707 347.217zM291.846 338.481C293.216 327.521 285.442 317.524 274.481 316.154C219.635 309.299 138.702 228.367 131.846 173.519C130.473 162.53 120.447 154.785 109.52 156.154C98.559 157.524 90.785 167.52 92.155 178.48C101.317 251.766 196.322 346.6950000000001 269.5200000000001 355.8450000000001C280.473 357.213 290.4760000000001 349.442 291.8460000000001 338.481z" />
<glyph glyph-name="life-ring"
unicode="&#xF1CD;"
horiz-adv-x="512" d=" M256 -56C392.967 -56 504 55.033 504 192S392.967 440 256 440S8 328.967 8 192S119.033 -56 256 -56zM152.602 20.72L206.013 74.131C237.819 60.625 274.141 60.609 305.987 74.131L359.398 20.72C296.1810000000001 -17.599 215.819 -17.599 152.602 20.72zM336 192C336 147.888 300.112 112 256 112S176 147.888 176 192S211.888 272 256 272S336 236.112 336 192zM427.28 88.602L373.869 142.013C387.374 173.819 387.391 210.141 373.869 241.987L427.28 295.398C465.599 232.181 465.599 151.819 427.28 88.602zM359.397 363.28L305.986 309.8690000000001C274.18 323.374 237.858 323.391 206.013 309.8690000000001L152.602 363.28C215.819 401.599 296.1810000000001 401.599 359.397 363.28zM84.72 295.398L138.131 241.987C124.625 210.181 124.609 173.859 138.131 142.013L84.72 88.602C46.401 151.819 46.401 232.181 84.72 295.398z" />
<glyph glyph-name="lightbulb"
unicode="&#xF0EB;"
horiz-adv-x="384" d=" M272 20V-8C272 -18.449 265.32 -27.334 256 -30.629V-40C256 -53.255 245.255 -64 232 -64H152C138.745 -64 128 -53.255 128 -40V-30.629C118.68 -27.334 112 -18.449 112 -8V20C112 26.627 117.373 32 124 32H260C266.627 32 272 26.627 272 20zM128 272C128 307.29 156.71 336 192 336C200.837 336 208 343.164 208 352S200.837 368 192 368C139.065 368 96 324.935 96 272C96 263.164 103.164 256 112 256S128 263.164 128 272zM192 400C262.734 400 320 342.746 320 272C320 194.398 282.617 211.523 239.02 112H144.98C101.318 211.67 64 194.131 64 272C64 342.735 121.254 400 192 400M192 448C94.805 448 16 369.197 16 272C16 170.269 67.697 180.459 106.516 79.326C110.066 70.077 118.986 64 128.892 64H255.107C265.013 64 273.933 70.078 277.483 79.326C316.303 180.459 368 170.269 368 272C368 369.197 289.195 448 192 448z" />
<glyph glyph-name="list-alt"
unicode="&#xF022;"
horiz-adv-x="512" d=" M464 416H48C21.49 416 0 394.51 0 368V16C0 -10.51 21.49 -32 48 -32H464C490.51 -32 512 -10.51 512 16V368C512 394.51 490.51 416 464 416zM458 16H54A6 6 0 0 0 48 22V362A6 6 0 0 0 54 368H458A6 6 0 0 0 464 362V22A6 6 0 0 0 458 16zM416 108V84C416 77.373 410.627 72 404 72H204C197.373 72 192 77.373 192 84V108C192 114.627 197.373 120 204 120H404C410.627 120 416 114.627 416 108zM416 204V180C416 173.373 410.627 168 404 168H204C197.373 168 192 173.373 192 180V204C192 210.627 197.373 216 204 216H404C410.627 216 416 210.627 416 204zM416 300V276C416 269.373 410.627 264 404 264H204C197.373 264 192 269.373 192 276V300C192 306.627 197.373 312 204 312H404C410.627 312 416 306.627 416 300zM164 288C164 268.118 147.882 252 128 252S92 268.118 92 288S108.118 324 128 324S164 307.882 164 288zM164 192C164 172.118 147.882 156 128 156S92 172.118 92 192S108.118 228 128 228S164 211.882 164 192zM164 96C164 76.118 147.882 60 128 60S92 76.118 92 96S108.118 132 128 132S164 115.882 164 96z" />
<glyph glyph-name="map"
unicode="&#xF279;"
horiz-adv-x="576" d=" M508.505 411.83L381.517 355.424L207.179 413.537A47.992 47.992 0 0 1 172.505 411.863L28.505 347.863A48 48 0 0 1 0 304V16.033C0 -18.905 35.991 -41.831 67.495 -27.83L194.483 28.576L368.822 -29.537A47.992 47.992 0 0 1 403.496 -27.863L547.496 36.137A48 48 0 0 1 576 80V367.967C576 402.905 540.009 425.831 508.505 411.83zM360 24L216 72V360L360 312V24zM48 16V304L168 357.333V69.333L48 16zM528 80L408 26.667V314.6670000000001L528 368V80z" />
<glyph glyph-name="meh"
unicode="&#xF11A;"
horiz-adv-x="496" d=" M248 440C111 440 0 329 0 192S111 -56 248 -56S496 55 496 192S385 440 248 440zM248 -8C137.7 -8 48 81.7 48 192S137.7 392 248 392S448 302.3 448 192S358.3 -8 248 -8zM168 208C185.7 208 200 222.3 200 240S185.7 272 168 272S136 257.7 136 240S150.3 208 168 208zM328 272C310.3 272 296 257.7 296 240S310.3 208 328 208S360 222.3 360 240S345.7 272 328 272zM336 128H160C146.8 128 136 117.2 136 104S146.8 80 160 80H336C349.2 80 360 90.8 360 104S349.2 128 336 128z" />
<glyph glyph-name="minus-square"
unicode="&#xF146;"
horiz-adv-x="448" d=" M108 164C101.4 164 96 169.4 96 176V208C96 214.6 101.4 220 108 220H340C346.6 220 352 214.6 352 208V176C352 169.4 346.6 164 340 164H108zM448 368V16C448 -10.5 426.5 -32 400 -32H48C21.5 -32 0 -10.5 0 16V368C0 394.5 21.5 416 48 416H400C426.5 416 448 394.5 448 368zM400 22V362C400 365.3 397.3 368 394 368H54C50.7 368 48 365.3 48 362V22C48 18.7 50.7 16 54 16H394C397.3 16 400 18.7 400 22z" />
<glyph glyph-name="money-bill-alt"
unicode="&#xF3D1;"
horiz-adv-x="640" d=" M320 304C266.98 304 224 253.86 224 192C224 130.15 266.98 80 320 80C373 80 416 130.13 416 192C416 253.86 373.02 304 320 304zM360 136C360 131.58 356.42 128 352 128H288C283.58 128 280 131.58 280 136V152C280 156.42 283.58 160 288 160H304V215.44L303.53 215.13A7.991999999999999 7.991999999999999 0 0 0 292.44 217.35L283.56 230.66A7.991999999999999 7.991999999999999 0 0 0 285.7800000000001 241.75L301.11 251.97A23.99 23.99 0 0 0 314.42 256H328C332.42 256 336 252.42 336 248V160H352C356.42 160 360 156.42 360 152V136zM608 384H32C14.33 384 0 369.67 0 352V32C0 14.33 14.33 0 32 0H608C625.67 0 640 14.33 640 32V352C640 369.67 625.67 384 608 384zM592 112C556.65 112 528 83.35 528 48H112C112 83.35 83.35 112 48 112V272C83.35 272 112 300.65 112 336H528C528 300.65 556.65 272 592 272V112z" />
<glyph glyph-name="moon"
unicode="&#xF186;"
horiz-adv-x="512" d=" M279.135 -64C357.891 -64 430.117 -28.196 477.979 30.775C506.249 65.606 475.421 116.497 431.73 108.176C349.382 92.493 273.458 155.444 273.458 238.968C273.458 287.392 299.518 331.26 340.892 354.804C379.637 376.854 369.891 435.592 325.87 443.723A257.936 257.936 0 0 1 279.135 448C137.775 448 23.135 333.425 23.135 192C23.135 50.64 137.711 -64 279.135 -64zM279.135 400C292.12 400 304.824 398.799 317.151 396.522C262.391 365.359 225.4580000000001 306.48 225.4580000000001 238.968C225.4580000000001 125.12 329.0990000000001 39.768 440.7100000000001 61.024C402.574 14.036 344.366 -16 279.135 -16C164.26 -16 71.135 77.125 71.135 192S164.26 400 279.135 400z" />
<glyph glyph-name="newspaper"
unicode="&#xF1EA;"
horiz-adv-x="576" d=" M552 384H112C91.142 384 73.357 370.623 66.752 352H24C10.745 352 0 341.255 0 328V56C0 25.072 25.072 0 56 0H552C565.255 0 576 10.745 576 24V360C576 373.255 565.255 384 552 384zM48 56V304H64V56C64 51.589 60.411 48 56 48S48 51.589 48 56zM528 48H111.422C111.796 50.614 112 53.283 112 56V336H528V48zM172 168H308C314.627 168 320 173.373 320 180V276C320 282.627 314.627 288 308 288H172C165.373 288 160 282.627 160 276V180C160 173.373 165.373 168 172 168zM200 248H280V208H200V248zM160 108V132C160 138.627 165.373 144 172 144H308C314.627 144 320 138.627 320 132V108C320 101.373 314.627 96 308 96H172C165.373 96 160 101.373 160 108zM352 108V132C352 138.627 357.373 144 364 144H468C474.627 144 480 138.627 480 132V108C480 101.373 474.627 96 468 96H364C357.373 96 352 101.373 352 108zM352 252V276C352 282.627 357.373 288 364 288H468C474.627 288 480 282.627 480 276V252C480 245.373 474.627 240 468 240H364C357.373 240 352 245.373 352 252zM352 180V204C352 210.627 357.373 216 364 216H468C474.627 216 480 210.627 480 204V180C480 173.373 474.627 168 468 168H364C357.373 168 352 173.373 352 180z" />
<glyph glyph-name="object-group"
unicode="&#xF247;"
horiz-adv-x="512" d=" M500 320C506.627 320 512 325.373 512 332V404C512 410.627 506.627 416 500 416H428C421.373 416 416 410.627 416 404V392H96V404C96 410.627 90.627 416 84 416H12C5.373 416 0 410.627 0 404V332C0 325.373 5.373 320 12 320H24V64H12C5.373 64 0 58.627 0 52V-20C0 -26.627 5.373 -32 12 -32H84C90.627 -32 96 -26.627 96 -20V-8H416V-20C416 -26.627 421.373 -32 428 -32H500C506.627 -32 512 -26.627 512 -20V52C512 58.627 506.627 64 500 64H488V320H500zM448 384H480V352H448V384zM32 384H64V352H32V384zM64 0H32V32H64V0zM480 0H448V32H480V0zM440 64H428C421.373 64 416 58.627 416 52V40H96V52C96 58.627 90.627 64 84 64H72V320H84C90.627 320 96 325.373 96 332V344H416V332C416 325.373 421.373 320 428 320H440V64zM404 256H320V308C320 314.628 314.627 320 308 320H108C101.373 320 96 314.628 96 308V140C96 133.372 101.373 128 108 128H192V76C192 69.372 197.373 64 204 64H404C410.627 64 416 69.372 416 76V244C416 250.628 410.627 256 404 256zM136 280H280V168H136V280zM376 104H232V128H308C314.627 128 320 133.372 320 140V216H376V104z" />
<glyph glyph-name="object-ungroup"
unicode="&#xF248;"
horiz-adv-x="576" d=" M564 224C570.627 224 576 229.373 576 236V308C576 314.627 570.627 320 564 320H492C485.373 320 480 314.627 480 308V296H392V320H404C410.627 320 416 325.373 416 332V404C416 410.627 410.627 416 404 416H332C325.373 416 320 410.627 320 404V392H96V404C96 410.627 90.627 416 84 416H12C5.373 416 0 410.627 0 404V332C0 325.373 5.373 320 12 320H24V160H12C5.373 160 0 154.627 0 148V76C0 69.373 5.373 64 12 64H84C90.627 64 96 69.373 96 76V88H184V64H172C165.373 64 160 58.627 160 52V-20C160 -26.627 165.373 -32 172 -32H244C250.627 -32 256 -26.627 256 -20V-8H480V-20C480 -26.627 485.373 -32 492 -32H564C570.627 -32 576 -26.627 576 -20V52C576 58.627 570.627 64 564 64H552V224H564zM352 384H384V352H352V384zM352 128H384V96H352V128zM64 96H32V128H64V96zM64 352H32V384H64V352zM96 136V148C96 154.627 90.627 160 84 160H72V320H84C90.627 320 96 325.373 96 332V344H320V332C320 325.373 325.373 320 332 320H344V160H332C325.373 160 320 154.627 320 148V136H96zM224 0H192V32H224V0zM504 64H492C485.373 64 480 58.627 480 52V40H256V52C256 58.627 250.627 64 244 64H232V88H320V76C320 69.373 325.373 64 332 64H404C410.627 64 416 69.373 416 76V148C416 154.627 410.627 160 404 160H392V248H480V236C480 229.373 485.373 224 492 224H504V64zM544 0H512V32H544V0zM544 256H512V288H544V256z" />
<glyph glyph-name="paper-plane"
unicode="&#xF1D8;"
horiz-adv-x="512" d=" M440 441.5L24 201.6C-10.4 181.7 -7.1 130.8 29.7 115.7L144 68.4V-16C144 -62.4 203.2 -81.5 230.6 -44.6L274.4 14.5L386.3 -31.7C392.2 -34.1 398.4 -35.3 404.6 -35.3C412.8 -35.3 420.9 -33.2 428.2 -29.1C441 -21.9 449.8 -9.1 452.1 5.4L511.4999999999999 392.6C517.5999999999999 432.7 474.6 461.4 440 441.5zM192 -16V48.6L228.6 33.5L192 -16zM404.6 12.7L250.8 76.2L391 278.5C401.7 294 381.5 312 367.3 299.7L155.8 115.4L48 160L464 400L404.6 12.7z" />
<glyph glyph-name="pause-circle"
unicode="&#xF28B;"
horiz-adv-x="512" d=" M256 440C119 440 8 329 8 192S119 -56 256 -56S504 55 504 192S393 440 256 440zM256 -8C145.5 -8 56 81.5 56 192S145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8zM352 272V112C352 103.2 344.8 96 336 96H288C279.2 96 272 103.2 272 112V272C272 280.8 279.2 288 288 288H336C344.8 288 352 280.8 352 272zM240 272V112C240 103.2 232.8 96 224 96H176C167.2 96 160 103.2 160 112V272C160 280.8 167.2 288 176 288H224C232.8 288 240 280.8 240 272z" />
<glyph glyph-name="play-circle"
unicode="&#xF144;"
horiz-adv-x="512" d=" M371.7 210L195.7 317C179.9 325.8 160 314.5 160 296V88C160 69.6 179.8 58.2 195.7 67L371.7 168C388.1 177.1 388.1 200.8 371.7 210zM504 192C504 329 393 440 256 440S8 329 8 192S119 -56 256 -56S504 55 504 192zM56 192C56 302.5 145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8S56 81.5 56 192z" />
<glyph glyph-name="plus-square"
unicode="&#xF0FE;"
horiz-adv-x="448" d=" M352 208V176C352 169.4 346.6 164 340 164H252V76C252 69.4 246.6 64 240 64H208C201.4 64 196 69.4 196 76V164H108C101.4 164 96 169.4 96 176V208C96 214.6 101.4 220 108 220H196V308C196 314.6 201.4 320 208 320H240C246.6 320 252 314.6 252 308V220H340C346.6 220 352 214.6 352 208zM448 368V16C448 -10.5 426.5 -32 400 -32H48C21.5 -32 0 -10.5 0 16V368C0 394.5 21.5 416 48 416H400C426.5 416 448 394.5 448 368zM400 22V362C400 365.3 397.3 368 394 368H54C50.7 368 48 365.3 48 362V22C48 18.7 50.7 16 54 16H394C397.3 16 400 18.7 400 22z" />
<glyph glyph-name="question-circle"
unicode="&#xF059;"
horiz-adv-x="512" d=" M256 440C119.043 440 8 328.9170000000001 8 192C8 55.003 119.043 -56 256 -56S504 55.003 504 192C504 328.9170000000001 392.957 440 256 440zM256 -8C145.468 -8 56 81.431 56 192C56 302.495 145.472 392 256 392C366.491 392 456 302.529 456 192C456 81.47 366.569 -8 256 -8zM363.2440000000001 247.2C363.2440000000001 180.148 290.8230000000001 179.116 290.8230000000001 154.337V148C290.8230000000001 141.373 285.4500000000001 136 278.8230000000001 136H233.1760000000001C226.5490000000001 136 221.1760000000001 141.373 221.1760000000001 148V156.659C221.1760000000001 192.404 248.2760000000001 206.693 268.7550000000001 218.175C286.3160000000001 228.02 297.0790000000001 234.716 297.0790000000001 247.754C297.0790000000001 265 275.0800000000001 276.447 257.2950000000001 276.447C234.1060000000001 276.447 223.4010000000001 265.4700000000001 208.3530000000001 246.478C204.2960000000001 241.358 196.8930000000001 240.407 191.6870000000001 244.354L163.8630000000001 265.452C158.7560000000001 269.324 157.6120000000001 276.5180000000001 161.2190000000001 281.815C184.846 316.509 214.94 336 261.794 336C310.865 336 363.244 297.6960000000001 363.244 247.2zM298 80C298 56.841 279.159 38 256 38S214 56.841 214 80S232.841 122 256 122S298 103.159 298 80z" />
<glyph glyph-name="registered"
unicode="&#xF25D;"
horiz-adv-x="512" d=" M256 440C119.033 440 8 328.967 8 192S119.033 -56 256 -56S504 55.033 504 192S392.967 440 256 440zM256 -8C145.468 -8 56 81.451 56 192C56 302.531 145.451 392 256 392C366.532 392 456 302.549 456 192C456 81.468 366.549 -8 256 -8zM366.442 73.791C313.396 170.075 316.192 165.259 313.171 169.876C337.438 183.755 352.653 211.439 352.653 243.052C352.653 295.555 322.406 328.304 251.1550000000001 328.304H172.488C165.8710000000001 328.304 160.488 322.921 160.488 316.304V68C160.488 61.383 165.8710000000001 56 172.488 56H211.0560000000001C217.673 56 223.0560000000001 61.383 223.0560000000001 68V151.663H255.0140000000001L302.5290000000001 62.36A11.98 11.98 0 0 1 313.1220000000001 56H355.9320000000001C365.0720000000001 56 370.8460000000001 65.799 366.4420000000001 73.791zM256.933 208.094H223.058V272.234H250.435C282.852 272.234 289.3640000000001 260.101 289.3640000000001 240.525C289.3630000000001 219.612 277.846 208.094 256.9330000000001 208.094z" />
<glyph glyph-name="save"
unicode="&#xF0C7;"
horiz-adv-x="448" d=" M433.941 318.059L350.059 401.9410000000001A48 48 0 0 1 316.118 416H48C21.49 416 0 394.51 0 368V16C0 -10.51 21.49 -32 48 -32H400C426.51 -32 448 -10.51 448 16V284.118A48 48 0 0 1 433.941 318.059zM272 368V288H144V368H272zM394 16H54A6 6 0 0 0 48 22V362A6 6 0 0 0 54 368H96V264C96 250.745 106.745 240 120 240H296C309.255 240 320 250.745 320 264V364.118L398.243 285.875A6 6 0 0 0 400 281.632V22A6 6 0 0 0 394 16zM224 216C175.477 216 136 176.523 136 128S175.477 40 224 40S312 79.477 312 128S272.523 216 224 216zM224 88C201.944 88 184 105.944 184 128S201.944 168 224 168S264 150.056 264 128S246.056 88 224 88z" />
<glyph glyph-name="share-square"
unicode="&#xF14D;"
horiz-adv-x="576" d=" M561.938 289.94L417.94 433.908C387.926 463.922 336 442.903 336 399.968V342.77C293.55 340.89 251.97 336.2200000000001 215.24 324.7800000000001C180.07 313.8300000000001 152.17 297.2000000000001 132.33 275.36C108.22 248.8 96 215.4 96 176.06C96 114.363 129.178 63.605 180.87 31.3C218.416 7.792 266.118 43.951 251.89 87.04C236.375 134.159 234.734 157.963 336 165.8V112C336 69.007 387.968 48.087 417.94 78.06L561.938 222.06C580.688 240.8 580.688 271.2 561.938 289.94zM384 112V215.84C255.309 213.918 166.492 192.65 206.31 72C176.79 90.45 144 123.92 144 176.06C144 285.394 273.14 295.007 384 295.91V400L528 256L384 112zM408.74 27.507A82.658 82.658 0 0 1 429.714 36.81C437.69 41.762 448 35.984 448 26.596V-16C448 -42.51 426.51 -64 400 -64H48C21.49 -64 0 -42.51 0 -16V336C0 362.51 21.49 384 48 384H180C186.627 384 192 378.627 192 372V367.514C192 362.597 189.013 358.145 184.431 356.362C170.729 351.031 158.035 344.825 146.381 337.777A12.138 12.138 0 0 0 140.101 336H54A6 6 0 0 1 48 330V-10A6 6 0 0 1 54 -16H394A6 6 0 0 1 400 -10V15.966C400 21.336 403.579 26.025 408.74 27.507z" />
<glyph glyph-name="smile"
unicode="&#xF118;"
horiz-adv-x="496" d=" M248 440C111 440 0 329 0 192S111 -56 248 -56S496 55 496 192S385 440 248 440zM248 -8C137.7 -8 48 81.7 48 192S137.7 392 248 392S448 302.3 448 192S358.3 -8 248 -8zM332 135.4C311.2 110.4 280.5 96 248 96S184.8 110.3 164 135.4C155.5 145.6 140.4 146.9 130.2 138.5C120 130 118.7 114.9 127.1 104.7C157.1 68.7 201.2 48.1 248 48.1S338.9 68.7 368.9 104.7C377.4 114.9 376 130 365.8 138.5C355.6 146.9 340.5 145.6 332 135.4zM168 208C185.7 208 200 222.3 200 240S185.7 272 168 272S136 257.7 136 240S150.3 208 168 208zM328 208C345.7 208 360 222.3 360 240S345.7 272 328 272S296 257.7 296 240S310.3 208 328 208z" />
<glyph glyph-name="snowflake"
unicode="&#xF2DC;"
horiz-adv-x="448" d=" M438.237 92.073L371.663 130.613L431.111 140.94C436.957 142.315 441.72 146.123 444.569 151.07C447.0490000000001 155.377 448.075 160.548 447.093 165.721C444.983 176.836 434.4070000000001 183.76 423.4720000000001 181.188L338.0490000000001 150.073L255.914 192L338.05 233.926L423.473 202.811C434.409 200.239 444.985 207.163 447.094 218.278C449.205 229.393 442.048 240.487 431.113 243.059L371.665 253.386L438.238 291.926C447.778 297.449 450.853 310.018 445.105 320C439.357 329.982 426.965 333.596 417.425 328.074L350.851 289.534L371.656 346.3210000000001C374.902 357.103 368.898 368.863 358.243 372.589C347.589 376.314 336.3209999999999 370.592 333.075 359.81L317.2369999999999 270.075L244.8139999999999 228.149V312L314.3989999999999 370.621C322.0879999999999 378.831 321.3959999999999 391.4770000000001 312.8509999999999 398.866C304.3059999999999 406.257 291.1459999999999 405.589 283.4569999999999 397.38L244.8129999999999 350.92V428C244.8129999999999 439.046 235.4949999999999 448 223.9999999999999 448S203.1869999999999 439.046 203.1869999999999 428V350.92L164.5429999999999 397.38C156.8539999999999 405.5900000000001 143.6939999999999 406.256 135.1489999999999 398.866C126.6049999999999 391.477 125.9129999999999 378.831 133.6019999999999 370.621L203.187 312V228.147L130.764 270.073L114.926 359.809C111.679 370.591 100.411 376.313 89.757 372.588C79.101 368.863 73.098 357.102 76.344 346.32L97.149 289.533L30.576 328.073C21.036 333.596 8.643 329.981 2.896 319.999S0.223 297.448 9.763 291.925L76.337 253.385L16.888 243.057C5.953 240.485 -1.202 229.391 0.907 218.276C3.017 207.162 13.593 200.238 24.529 202.81L109.951 233.925L192.086 192L109.95 150.074L24.527 181.189C13.591 183.761 3.016 176.8370000000001 0.905 165.723C-1.204 154.61 5.951 143.514 16.886 140.942L76.335 130.614L9.761 92.074C0.223 86.551 -2.852 73.982 2.896 64S21.036 50.403 30.576 55.926L97.15 94.466L76.345 37.68C74.61 31.916 75.517 25.875 78.365 20.929C80.845 16.622 84.798 13.145 89.757 11.412C100.412 7.687 111.68 13.409 114.926 24.191L130.764 113.927L203.187 155.853V72L133.602 13.379C125.912 5.169 126.605 -7.476 135.149 -14.866C143.693 -22.254 156.854 -21.589 164.543 -13.379L203.187 33.081V-44C203.187 -55.046 212.505 -64 224 -64S244.813 -55.046 244.813 -44V33.081L283.457 -13.379C287.568 -17.768 293.2389999999999 -19.9999999999999 298.935 -19.9999999999999C303.8949999999999 -19.9999999999999 308.874 -18.3059999999999 312.851 -14.8659999999999C321.396 -7.4759999999999 322.088 5.1690000000001 314.399 13.3790000000001L244.813 72V155.853L317.236 113.927L333.074 24.191C336.32 13.409 347.588 7.687 358.242 11.412C368.8950000000001 15.138 374.901 26.8990000000001 371.654 37.6800000000001L350.849 94.467L417.423 55.927C426.963 50.404 439.356 54.019 445.103 64.001C450.852 73.982 447.778 86.5510000000001 438.237 92.073z" />
<glyph glyph-name="square"
unicode="&#xF0C8;"
horiz-adv-x="448" d=" M400 416H48C21.5 416 0 394.5 0 368V16C0 -10.5 21.5 -32 48 -32H400C426.5 -32 448 -10.5 448 16V368C448 394.5 426.5 416 400 416zM394 16H54C50.7 16 48 18.7 48 22V362C48 365.3 50.7 368 54 368H394C397.3 368 400 365.3 400 362V22C400 18.7 397.3 16 394 16z" />
<glyph glyph-name="star-half"
unicode="&#xF089;"
horiz-adv-x="576" d=" M288 62.7L163.7 -2.7L187.4 135.6999999999999L86.8 233.7L225.8 253.8999999999999L288 379.8999999999999V448C276.6 448 265.2 442.1 259.3 430.2L194 297.8L47.9 276.6C21.7 272.8 11.2 240.5 30.2 222L135.9 119L110.9 -26.5C106.4 -52.6 133.9 -72.5 157.3 -60.2L288 8.4V62.7z" />
<glyph glyph-name="star"
unicode="&#xF005;"
horiz-adv-x="576" d=" M528.1 276.5L382 297.8L316.7 430.2C305 453.8 271.1 454.1 259.3 430.2L194 297.8L47.9 276.5C21.7 272.7 11.2 240.4 30.2 221.9L135.9 118.9L110.9 -26.6C106.4 -52.9 134.1 -72.6 157.3 -60.3L288 8.4L418.7 -60.3C441.9 -72.5 469.6 -52.9 465.1 -26.6L440.1 118.9L545.8 221.9C564.8 240.4 554.3 272.7 528.0999999999999 276.5zM388.6 135.7L412.3 -2.7L288 62.6L163.7 -2.7L187.4 135.7000000000001L86.8 233.7000000000001L225.8 253.9000000000001L288 379.9000000000001L350.2 253.9000000000001L489.2 233.7000000000001L388.6 135.7000000000001z" />
<glyph glyph-name="sticky-note"
unicode="&#xF249;"
horiz-adv-x="448" d=" M448 99.894V368C448 394.51 426.51 416 400 416H48C21.49 416 0 394.51 0 368V16.012C0 -10.498 21.49 -31.988 48 -31.988H316.118A48 48 0 0 1 350.059 -17.929L433.941 65.953A48 48 0 0 1 448 99.894zM320 19.894V96.012H396.118L320 19.894zM400 368V144.012H296C282.745 144.012 272 133.267 272 120.012V16.012H48V368H400z" />
<glyph glyph-name="stop-circle"
unicode="&#xF28D;"
horiz-adv-x="512" d=" M504 192C504 329 393 440 256 440S8 329 8 192S119 -56 256 -56S504 55 504 192zM56 192C56 302.5 145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8S56 81.5 56 192zM352 272V112C352 103.2 344.8 96 336 96H176C167.2 96 160 103.2 160 112V272C160 280.8 167.2 288 176 288H336C344.8 288 352 280.8 352 272z" />
<glyph glyph-name="sun"
unicode="&#xF185;"
horiz-adv-x="512" d=" M220.116 -39.936L199.903 9.489A3.9920000000000004 3.9920000000000004 0 0 1 194.095 11.3750000000001L148.691 -16.7289999999999C119.225 -34.9689999999999 82.396 -8.2099999999999 90.637 25.45L103.336 77.3150000000001A3.9930000000000003 3.9930000000000003 0 0 1 99.746 82.256L46.495 86.2070000000001C11.941 88.7690000000001 -2.137 132.0620000000001 24.321 154.4540000000001L65.08 188.95A3.9920000000000004 3.9920000000000004 0 0 1 65.08 195.056L24.32 229.553C-2.13 251.937 11.93 295.235 46.494 297.799L99.745 301.75A3.9930000000000003 3.9930000000000003 0 0 1 103.335 306.691L90.637 358.557C82.398 392.213 119.218 418.977 148.691 400.736L194.094 372.632A3.9930000000000003 3.9930000000000003 0 0 1 199.902 374.519L220.115 423.944C233.231 456.015 278.753 456.025 291.873 423.944L312.085 374.52A3.9939999999999998 3.9939999999999998 0 0 1 317.894 372.6330000000001L363.2970000000001 400.737C392.761 418.973 429.5940000000001 392.224 421.351 358.558L408.652 306.693A3.9950000000000006 3.9950000000000006 0 0 1 412.242 301.752L465.4929999999999 297.8010000000001C500.0459999999999 295.2380000000001 514.126 251.947 487.6679999999999 229.555L446.908 195.058A3.9930000000000003 3.9930000000000003 0 0 1 446.908 188.951L487.6679999999999 154.455C514.179 132.014 499.99 88.766 465.4929999999999 86.208L412.242 82.257A3.9930000000000003 3.9930000000000003 0 0 1 408.653 77.3149999999999L421.351 25.451C429.592 -8.207 392.7679999999999 -34.97 363.2969999999999 -16.729L317.8939999999999 11.3749999999999A3.9939999999999998 3.9939999999999998 0 0 1 312.0849999999999 9.4879999999999L291.8729999999999 -39.936C278.7139999999999 -72.114 233.1979999999999 -71.9290000000001 220.1159999999999 -39.936zM236.93 24.632L255.994 -21.984L275.058 24.631C285.366 49.831 315.836 59.697 338.95 45.39L381.772 18.883L369.796 67.802C363.321 94.246 382.176 120.141 409.283 122.151L459.509 125.877L421.065 158.413C400.283 176.004 400.318 208.034 421.066 225.593L459.508 258.129L409.283 261.856C382.132 263.871 363.333 289.8040000000001 369.795 316.2050000000001L381.773 365.124L338.95 338.617C315.799 324.29 285.347 334.217 275.058 359.377L255.994 405.992L236.93 359.375C226.625 334.177 196.152 324.3090000000001 173.039 338.615L130.216 365.123L142.193 316.2050000000001C148.667 289.759 129.812 263.867 102.705 261.855L52.481 258.129L90.924 225.592C111.706 208.004 111.671 175.973 90.924 158.414L52.48 125.877L102.706 122.151C129.857 120.137 148.656 94.204 142.193 67.802L130.216 18.883L173.039 45.39C196.227 59.7450000000001 226.661 49.742 236.93 24.6320000000001zM256 64C185.42 64 128 121.421 128 192C128 262.58 185.42 320 256 320C326.579 320 384 262.58 384 192C384 121.421 326.579 64 256 64zM256 272C211.888 272 176 236.112 176 192S211.888 112 256 112S336 147.888 336 192S300.112 272 256 272z" />
<glyph glyph-name="thumbs-down"
unicode="&#xF165;"
horiz-adv-x="512" d=" M466.27 222.69C470.944 245.337 467.134 267.228 457.28 285.68C460.238 309.548 453.259 334.245 439.94 352.67C438.986 408.577 404.117 448 327 448C320 448 312 447.99 304.78 447.99C201.195 447.99 168.997 408 128 408H117.155C111.515 412.975 104.113 416 96 416H32C14.327 416 0 401.673 0 384V144C0 126.327 14.327 112 32 112H96C107.842 112 118.175 118.438 123.708 128H130.76C149.906 111.047 176.773 67.347 199.52 44.6C213.187 30.9330000000001 209.673 -64 271.28 -64C328.86 -64 366.55 -32.064 366.55 40.73C366.55 59.14 362.62 74.46 357.7 87.27H394.18C442.782 87.27 479.9999999999999 128.835 479.9999999999999 172.85C479.9999999999999 192 475.04 207.84 466.2699999999999 222.69zM64 152C50.745 152 40 162.745 40 176S50.745 200 64 200S88 189.255 88 176S77.255 152 64 152zM394.18 135.27H290.19C290.19 97.45 318.55 79.9 318.55 40.73C318.55 16.98 318.55 -16.0000000000001 271.2800000000001 -16.0000000000001C252.3700000000001 2.91 261.8200000000001 50.18 233.4600000000001 78.54C206.9 105.11 167.28 176 138.92 176H128V362.17C181.611 362.17 228.001 399.99 299.64 399.99H337.46C372.972 399.99 398.28 382.87 390.58 334.0900000000001C405.78 325.93 417.08 297.65 404.52 276.52C426.101 256.136 423.219 225.455 409.73 210.9C419.18 210.9 432.09 191.99 432 173.09C431.91 154.18 415.29 135.2700000000001 394.18 135.2700000000001z" />
<glyph glyph-name="thumbs-up"
unicode="&#xF164;"
horiz-adv-x="512" d=" M466.27 161.31C475.04 176.16 480 192 480 211.15C480 255.165 442.782 296.73 394.18 296.73H357.7C362.62 309.54 366.55 324.86 366.55 343.27C366.55 416.064 328.86 448 271.28 448C209.673 448 213.187 353.067 199.52 339.4C176.773 316.653 149.905 272.953 130.76 256H32C14.327 256 0 241.673 0 224V-16C0 -33.673 14.327 -48 32 -48H96C110.893 -48 123.408 -37.826 126.978 -24.05C171.487 -25.051 202.038 -63.99 304.78 -63.99C312 -63.99 320 -64 327 -64C404.117 -64 438.986 -24.577 439.94 31.33C453.259 49.755 460.239 74.452 457.28 98.32C467.134 116.772 470.944 138.663 466.27 161.31zM404.52 107.48C417.08 86.35 405.78 58.0700000000001 390.58 49.91C398.28 1.13 372.972 -15.99 337.46 -15.99H299.64C228.001 -15.99 181.611 21.83 128 21.83V208H138.92C167.28 208 206.9 278.89 233.46 305.46C261.82 333.82 252.37 381.09 271.28 400C318.55 400 318.55 367.02 318.55 343.27C318.55 304.1 290.19 286.55 290.19 248.73H394.18C415.29 248.73 431.91 229.82 432 210.91C432.0899999999999 192.01 419.18 173.1 409.73 173.1C423.219 158.545 426.101 127.864 404.52 107.48zM88 16C88 2.745 77.255 -8 64 -8S40 2.745 40 16S50.745 40 64 40S88 29.255 88 16z" />
<glyph glyph-name="times-circle"
unicode="&#xF057;"
horiz-adv-x="512" d=" M256 440C119 440 8 329 8 192S119 -56 256 -56S504 55 504 192S393 440 256 440zM256 -8C145.5 -8 56 81.5 56 192S145.5 392 256 392S456 302.5 456 192S366.5 -8 256 -8zM357.8 254.2L295.6 192L357.8 129.8C362.5 125.1 362.5 117.5 357.8 112.8L335.2 90.2C330.5 85.5 322.9 85.5 318.2 90.2L256 152.4L193.8 90.2C189.1 85.5 181.5 85.5 176.8 90.2L154.2 112.8C149.5 117.5 149.5 125.1 154.2 129.8L216.4 192L154.2000000000001 254.2C149.5000000000001 258.9 149.5000000000001 266.5 154.2000000000001 271.2L176.8000000000001 293.8C181.5 298.5 189.1000000000001 298.5 193.8000000000001 293.8L256.0000000000001 231.6L318.2000000000001 293.8C322.9000000000001 298.5 330.5000000000001 298.5 335.2000000000001 293.8L357.8000000000001 271.2C362.5000000000001 266.5 362.5000000000001 258.9 357.8000000000001 254.2z" />
<glyph glyph-name="trash-alt"
unicode="&#xF2ED;"
horiz-adv-x="448" d=" M192 260V44C192 37.373 186.627 32 180 32H156C149.373 32 144 37.373 144 44V260C144 266.627 149.373 272 156 272H180C186.627 272 192 266.627 192 260zM292 272H268C261.373 272 256 266.627 256 260V44C256 37.373 261.373 32 268 32H292C298.627 32 304 37.373 304 44V260C304 266.627 298.627 272 292 272zM424 368C437.255 368 448 357.255 448 344V332C448 325.373 442.627 320 436 320H416V-16C416 -42.51 394.51 -64 368 -64H80C53.49 -64 32 -42.51 32 -16V320H12C5.373 320 0 325.373 0 332V344C0 357.255 10.745 368 24 368H98.411L132.429 424.6960000000001A48 48 0 0 0 173.589 448H274.412A48 48 0 0 0 315.572 424.6960000000001L349.589 368H424zM154.389 368H293.612L276.1600000000001 397.087A6 6 0 0 1 271.015 400H176.987A6 6 0 0 1 171.842 397.087L154.389 368zM368 320H80V-10A6 6 0 0 1 86 -16H362A6 6 0 0 1 368 -10V320z" />
<glyph glyph-name="user-circle"
unicode="&#xF2BD;"
horiz-adv-x="496" d=" M248 344C195 344 152 301 152 248S195 152 248 152S344 195 344 248S301 344 248 344zM248 200C221.5 200 200 221.5 200 248S221.5 296 248 296S296 274.5 296 248S274.5 200 248 200zM248 440C111 440 0 329 0 192S111 -56 248 -56S496 55 496 192S385 440 248 440zM248 -8C198.3 -8 152.9 10.3 117.9 40.4C132.8 63.4 158.3 79 187.5 79.9C208.3 73.5 228.1 70.3 248 70.3S287.7 73.4 308.5 79.9C337.7 78.9 363.2 63.4 378.1 40.4C343.1 10.3 297.7000000000001 -8 248.0000000000001 -8zM410.7 76.1C386.3 107.5 348.6 128 305.6 128C295.4000000000001 128 279.6 118.4 248.0000000000001 118.4C216.5 118.4 200.6 128 190.4 128C147.5 128 109.8 107.5 85.3 76.1C61.9 108.8 48 148.8 48 192C48 302.3 137.7 392 248 392S448 302.3 448 192C448 148.8 434.1 108.8 410.7 76.1z" />
<glyph glyph-name="user"
unicode="&#xF007;"
horiz-adv-x="448" d=" M313.6 144C284.9000000000001 144 271.1 128 224 128C176.9 128 163.2000000000001 144 134.4 144C60.2 144 0 83.8 0 9.6V-16C0 -42.5 21.5 -64 48 -64H400C426.5 -64 448 -42.5 448 -16V9.6C448 83.8 387.8 144 313.6 144zM400 -16H48V9.6C48 57.2000000000001 86.8 96 134.4 96C149 96 172.7 80 224 80C275.7 80 298.9 96 313.6 96C361.2000000000001 96 400 57.2 400 9.6V-16zM224 160C303.5 160 368 224.5 368 304S303.5 448 224 448S80 383.5 80 304S144.5 160 224 160zM224 400C276.9 400 320 356.9 320 304S276.9 208 224 208S128 251.1 128 304S171.1 400 224 400z" />
<glyph glyph-name="window-close"
unicode="&#xF410;"
horiz-adv-x="512" d=" M464 416H48C21.5 416 0 394.5 0 368V16C0 -10.5 21.5 -32 48 -32H464C490.5 -32 512 -10.5 512 16V368C512 394.5 490.5 416 464 416zM464 22C464 18.7 461.3 16 458 16H54C50.7 16 48 18.7 48 22V362C48 365.3 50.7 368 54 368H458C461.3 368 464 365.3 464 362V22zM356.5 253.4L295.1 192L356.5 130.6C361.1 126 361.1 118.5 356.5 113.8L334.2 91.5C329.6 86.9 322.1 86.9 317.4 91.5L256 152.9L194.6 91.5C190 86.9 182.5 86.9 177.8 91.5L155.5 113.8C150.9 118.4 150.9 125.9 155.5 130.6L216.9 192L155.5 253.4000000000001C150.9 258 150.9 265.5 155.5 270.2000000000001L177.8 292.5000000000001C182.4 297.1 189.9 297.1 194.6 292.5000000000001L256 231.1000000000001L317.4 292.5000000000001C322 297.1 329.5 297.1 334.2 292.5000000000001L356.5 270.2000000000001C361.2 265.6 361.2 258.1 356.5 253.4000000000001z" />
<glyph glyph-name="window-maximize"
unicode="&#xF2D0;"
horiz-adv-x="512" d=" M464 416H48C21.5 416 0 394.5 0 368V16C0 -10.5 21.5 -32 48 -32H464C490.5 -32 512 -10.5 512 16V368C512 394.5 490.5 416 464 416zM464 22C464 18.7 461.3 16 458 16H54C50.7 16 48 18.7 48 22V256H464V22z" />
<glyph glyph-name="window-minimize"
unicode="&#xF2D1;"
horiz-adv-x="512" d=" M480 -32H32C14.3 -32 0 -17.7 0 0S14.3 32 32 32H480C497.7 32 512 17.7 512 0S497.7 -32 480 -32z" />
<glyph glyph-name="window-restore"
unicode="&#xF2D2;"
horiz-adv-x="512" d=" M464 448H144C117.5 448 96 426.5 96 400V352H48C21.5 352 0 330.5 0 304V-16C0 -42.5 21.5 -64 48 -64H368C394.5 -64 416 -42.5 416 -16V32H464C490.5 32 512 53.5 512 80V400C512 426.5 490.5 448 464 448zM368 -16H48V192H368V-16zM464 80H416V304C416 330.5 394.5 352 368 352H144V400H464V80z" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because it is too large Load Diff

After

Width:  |  Height:  |  Size: 477 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

219
static/vendor/fuelux/js/spinner.js vendored Normal file
View File

@@ -0,0 +1,219 @@
/*
* Fuel UX Spinner
* https://github.com/ExactTarget/fuelux
*
* Copyright (c) 2012 ExactTarget
* Licensed under the MIT license.
*/
// SPINNER CONSTRUCTOR AND PROTOTYPE
var Spinner = function (element, options) {
this.$element = $(element);
this.options = $.extend({}, $.fn.spinner.defaults, options);
this.$input = this.$element.find('.spinner-input');
this.$element.on('keyup', this.$input, $.proxy(this.change, this));
if (this.options.hold) {
this.$element.on('mousedown', '.spinner-up', $.proxy(function() { this.startSpin(true); } , this));
this.$element.on('mouseup', '.spinner-up, .spinner-down', $.proxy(this.stopSpin, this));
this.$element.on('mouseout', '.spinner-up, .spinner-down', $.proxy(this.stopSpin, this));
this.$element.on('mousedown', '.spinner-down', $.proxy(function() {this.startSpin(false);} , this));
} else {
this.$element.on('click', '.spinner-up', $.proxy(function() { this.step(true); } , this));
this.$element.on('click', '.spinner-down', $.proxy(function() { this.step(false); }, this));
}
this.switches = {
count: 1,
enabled: true
};
if (this.options.speed === 'medium') {
this.switches.speed = 300;
} else if (this.options.speed === 'fast') {
this.switches.speed = 100;
} else {
this.switches.speed = 500;
}
this.lastValue = null;
this.render();
if (this.options.disabled) {
this.disable();
}
};
Spinner.prototype = {
constructor: Spinner,
render: function () {
var inputValue = this.$input.val();
if (inputValue) {
this.value(inputValue);
} else {
this.$input.val(this.options.value);
}
this.$input.attr('maxlength', (this.options.max + '').split('').length);
},
change: function () {
var newVal = this.$input.val();
if(newVal/1){
this.options.value = newVal/1;
}else{
newVal = newVal.replace(/[^0-9]/g,'') || '';
this.$input.val(newVal);
this.options.value = newVal/1;
}
this.triggerChangedEvent();
},
stopSpin: function () {
if(this.switches.timeout!==undefined){
clearTimeout(this.switches.timeout);
this.switches.count = 1;
this.triggerChangedEvent();
}
},
triggerChangedEvent: function () {
var currentValue = this.value();
if (currentValue === this.lastValue) return;
this.lastValue = currentValue;
// Primary changed event
this.$element.trigger('changed', currentValue);
// Undocumented, kept for backward compatibility
this.$element.trigger('change');
},
startSpin: function (type) {
if (!this.options.disabled) {
var divisor = this.switches.count;
if (divisor === 1) {
this.step(type);
divisor = 1;
} else if (divisor < 3){
divisor = 1.5;
} else if (divisor < 8){
divisor = 2.5;
} else {
divisor = 4;
}
this.switches.timeout = setTimeout($.proxy(function() {this.iterator(type);} ,this),this.switches.speed/divisor);
this.switches.count++;
}
},
iterator: function (type) {
this.step(type);
this.startSpin(type);
},
step: function (dir) {
var curValue = this.options.value;
var limValue = dir ? this.options.max : this.options.min;
var digits, multiple;
if ((dir ? curValue < limValue : curValue > limValue)) {
var newVal = curValue + (dir ? 1 : -1) * this.options.step;
if(this.options.step % 1 !== 0){
digits = (this.options.step + '').split('.')[1].length;
multiple = Math.pow(10, digits);
newVal = Math.round(newVal * multiple) / multiple;
}
if (dir ? newVal > limValue : newVal < limValue) {
this.value(limValue);
} else {
this.value(newVal);
}
} else if (this.options.cycle) {
var cycleVal = dir ? this.options.min : this.options.max;
this.value(cycleVal);
}
},
value: function (value) {
if (!isNaN(parseFloat(value)) && isFinite(value)) {
value = parseFloat(value);
this.options.value = value;
this.$input.val(value);
return this;
} else {
return this.options.value;
}
},
disable: function () {
this.options.disabled = true;
this.$input.attr('disabled','');
this.$element.find('button').addClass('disabled');
},
enable: function () {
this.options.disabled = false;
this.$input.removeAttr("disabled");
this.$element.find('button').removeClass('disabled');
}
};
// SPINNER PLUGIN DEFINITION
$.fn.spinner = function (option) {
var args = Array.prototype.slice.call( arguments, 1 );
var methodReturn;
var $set = this.each(function () {
var $this = $( this );
var data = $this.data( 'spinner' );
var options = typeof option === 'object' && option;
if( !data ) $this.data('spinner', (data = new Spinner( this, options ) ) );
if( typeof option === 'string' ) methodReturn = data[ option ].apply( data, args );
});
return ( methodReturn === undefined ) ? $set : methodReturn;
};
$.fn.spinner.defaults = {
value: 1,
min: 1,
max: 999,
step: 1,
hold: true,
speed: 'medium',
disabled: false
};
$.fn.spinner.Constructor = Spinner;
$.fn.spinner.noConflict = function () {
$.fn.spinner = old;
return this;
};
// SPINNER DATA-API
$(function () {
$('body').on('mousedown.spinner.data-api', '.spinner', function () {
var $this = $(this);
if ($this.data('spinner')) return;
$this.spinner($this.data());
});
});

File diff suppressed because it is too large Load Diff

17841
static/vendor/fullcalendar/fullcalendar.js vendored Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,208 @@
/*!
* FullCalendar v3.5.1 Print Stylesheet
* Docs & License: https://fullcalendar.io/
* (c) 2017 Adam Shaw
*/
/*
* Include this stylesheet on your page to get a more printer-friendly calendar.
* When including this stylesheet, use the media='print' attribute of the <link> tag.
* Make sure to include this stylesheet IN ADDITION to the regular fullcalendar.css.
*/
.fc {
max-width: 100% !important;
}
/* Global Event Restyling
--------------------------------------------------------------------------------------------------*/
.fc-event {
background: #fff !important;
color: #000 !important;
page-break-inside: avoid;
}
.fc-event .fc-resizer {
display: none;
}
/* Table & Day-Row Restyling
--------------------------------------------------------------------------------------------------*/
.fc th,
.fc td,
.fc hr,
.fc thead,
.fc tbody,
.fc-row {
border-color: #ccc !important;
background: #fff !important;
}
/* kill the overlaid, absolutely-positioned components */
/* common... */
.fc-bg,
.fc-bgevent-skeleton,
.fc-highlight-skeleton,
.fc-helper-skeleton,
/* for timegrid. within cells within table skeletons... */
.fc-bgevent-container,
.fc-business-container,
.fc-highlight-container,
.fc-helper-container {
display: none;
}
/* don't force a min-height on rows (for DayGrid) */
.fc tbody .fc-row {
height: auto !important; /* undo height that JS set in distributeHeight */
min-height: 0 !important; /* undo the min-height from each view's specific stylesheet */
}
.fc tbody .fc-row .fc-content-skeleton {
position: static; /* undo .fc-rigid */
padding-bottom: 0 !important; /* use a more border-friendly method for this... */
}
.fc tbody .fc-row .fc-content-skeleton tbody tr:last-child td { /* only works in newer browsers */
padding-bottom: 1em; /* ...gives space within the skeleton. also ensures min height in a way */
}
.fc tbody .fc-row .fc-content-skeleton table {
/* provides a min-height for the row, but only effective for IE, which exaggerates this value,
making it look more like 3em. for other browers, it will already be this tall */
height: 1em;
}
/* Undo month-view event limiting. Display all events and hide the "more" links
--------------------------------------------------------------------------------------------------*/
.fc-more-cell,
.fc-more {
display: none !important;
}
.fc tr.fc-limited {
display: table-row !important;
}
.fc td.fc-limited {
display: table-cell !important;
}
.fc-popover {
display: none; /* never display the "more.." popover in print mode */
}
/* TimeGrid Restyling
--------------------------------------------------------------------------------------------------*/
/* undo the min-height 100% trick used to fill the container's height */
.fc-time-grid {
min-height: 0 !important;
}
/* don't display the side axis at all ("all-day" and time cells) */
.fc-agenda-view .fc-axis {
display: none;
}
/* don't display the horizontal lines */
.fc-slats,
.fc-time-grid hr { /* this hr is used when height is underused and needs to be filled */
display: none !important; /* important overrides inline declaration */
}
/* let the container that holds the events be naturally positioned and create real height */
.fc-time-grid .fc-content-skeleton {
position: static;
}
/* in case there are no events, we still want some height */
.fc-time-grid .fc-content-skeleton table {
height: 4em;
}
/* kill the horizontal spacing made by the event container. event margins will be done below */
.fc-time-grid .fc-event-container {
margin: 0 !important;
}
/* TimeGrid *Event* Restyling
--------------------------------------------------------------------------------------------------*/
/* naturally position events, vertically stacking them */
.fc-time-grid .fc-event {
position: static !important;
margin: 3px 2px !important;
}
/* for events that continue to a future day, give the bottom border back */
.fc-time-grid .fc-event.fc-not-end {
border-bottom-width: 1px !important;
}
/* indicate the event continues via "..." text */
.fc-time-grid .fc-event.fc-not-end:after {
content: "...";
}
/* for events that are continuations from previous days, give the top border back */
.fc-time-grid .fc-event.fc-not-start {
border-top-width: 1px !important;
}
/* indicate the event is a continuation via "..." text */
.fc-time-grid .fc-event.fc-not-start:before {
content: "...";
}
/* time */
/* undo a previous declaration and let the time text span to a second line */
.fc-time-grid .fc-event .fc-time {
white-space: normal !important;
}
/* hide the the time that is normally displayed... */
.fc-time-grid .fc-event .fc-time span {
display: none;
}
/* ...replace it with a more verbose version (includes AM/PM) stored in an html attribute */
.fc-time-grid .fc-event .fc-time:after {
content: attr(data-full);
}
/* Vertical Scroller & Containers
--------------------------------------------------------------------------------------------------*/
/* kill the scrollbars and allow natural height */
.fc-scroller,
.fc-day-grid-container, /* these divs might be assigned height, which we need to cleared */
.fc-time-grid-container { /* */
overflow: visible !important;
height: auto !important;
}
/* kill the horizontal border/padding used to compensate for scrollbars */
.fc-row {
border: 0 !important;
margin: 0 !important;
}
/* Button Controls
--------------------------------------------------------------------------------------------------*/
.fc-button-group,
.fc button {
display: none; /* don't display any button-related controls */
}

977
static/vendor/gauge/gauge.js vendored Normal file
View File

@@ -0,0 +1,977 @@
// Generated by CoffeeScript 1.10.0
(function() {
var AnimatedText, AnimatedTextFactory, Bar, BaseDonut, BaseGauge, Donut, Gauge, GaugePointer, TextRenderer, ValueUpdater, addCommas, cutHex, formatNumber, mergeObjects, secondsToString,
slice = [].slice,
hasProp = {}.hasOwnProperty,
extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
(function() {
var browserRequestAnimationFrame, isCancelled, j, lastId, len, vendor, vendors;
vendors = ['ms', 'moz', 'webkit', 'o'];
for (j = 0, len = vendors.length; j < len; j++) {
vendor = vendors[j];
if (window.requestAnimationFrame) {
break;
}
window.requestAnimationFrame = window[vendor + 'RequestAnimationFrame'];
window.cancelAnimationFrame = window[vendor + 'CancelAnimationFrame'] || window[vendor + 'CancelRequestAnimationFrame'];
}
browserRequestAnimationFrame = null;
lastId = 0;
isCancelled = {};
if (!requestAnimationFrame) {
window.requestAnimationFrame = function(callback, element) {
var currTime, id, lastTime, timeToCall;
currTime = new Date().getTime();
timeToCall = Math.max(0, 16 - (currTime - lastTime));
id = window.setTimeout(function() {
return callback(currTime + timeToCall);
}, timeToCall);
lastTime = currTime + timeToCall;
return id;
};
return window.cancelAnimationFrame = function(id) {
return clearTimeout(id);
};
} else if (!window.cancelAnimationFrame) {
browserRequestAnimationFrame = window.requestAnimationFrame;
window.requestAnimationFrame = function(callback, element) {
var myId;
myId = ++lastId;
browserRequestAnimationFrame(function() {
if (!isCancelled[myId]) {
return callback();
}
}, element);
return myId;
};
return window.cancelAnimationFrame = function(id) {
return isCancelled[id] = true;
};
}
})();
secondsToString = function(sec) {
var hr, min;
hr = Math.floor(sec / 3600);
min = Math.floor((sec - (hr * 3600)) / 60);
sec -= (hr * 3600) + (min * 60);
sec += '';
min += '';
while (min.length < 2) {
min = '0' + min;
}
while (sec.length < 2) {
sec = '0' + sec;
}
hr = hr ? hr + ':' : '';
return hr + min + ':' + sec;
};
formatNumber = function() {
var digits, num, value;
num = 1 <= arguments.length ? slice.call(arguments, 0) : [];
value = num[0];
digits = 0 || num[1];
return addCommas(value.toFixed(digits));
};
mergeObjects = function(obj1, obj2) {
var key, out, val;
out = {};
for (key in obj1) {
if (!hasProp.call(obj1, key)) continue;
val = obj1[key];
out[key] = val;
}
for (key in obj2) {
if (!hasProp.call(obj2, key)) continue;
val = obj2[key];
out[key] = val;
}
return out;
};
addCommas = function(nStr) {
var rgx, x, x1, x2;
nStr += '';
x = nStr.split('.');
x1 = x[0];
x2 = '';
if (x.length > 1) {
x2 = '.' + x[1];
}
rgx = /(\d+)(\d{3})/;
while (rgx.test(x1)) {
x1 = x1.replace(rgx, '$1' + ',' + '$2');
}
return x1 + x2;
};
cutHex = function(nStr) {
if (nStr.charAt(0) === "#") {
return nStr.substring(1, 7);
}
return nStr;
};
ValueUpdater = (function() {
ValueUpdater.prototype.animationSpeed = 32;
function ValueUpdater(addToAnimationQueue, clear) {
if (addToAnimationQueue == null) {
addToAnimationQueue = true;
}
this.clear = clear != null ? clear : true;
if (addToAnimationQueue) {
AnimationUpdater.add(this);
}
}
ValueUpdater.prototype.update = function(force) {
var diff;
if (force == null) {
force = false;
}
if (force || this.displayedValue !== this.value) {
if (this.ctx && this.clear) {
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
}
diff = this.value - this.displayedValue;
if (Math.abs(diff / this.animationSpeed) <= 0.001) {
this.displayedValue = this.value;
} else {
this.displayedValue = this.displayedValue + diff / this.animationSpeed;
}
this.render();
return true;
}
return false;
};
return ValueUpdater;
})();
BaseGauge = (function(superClass) {
extend(BaseGauge, superClass);
function BaseGauge() {
return BaseGauge.__super__.constructor.apply(this, arguments);
}
BaseGauge.prototype.displayScale = 1;
BaseGauge.prototype.forceUpdate = true;
BaseGauge.prototype.setTextField = function(textField, fractionDigits) {
return this.textField = textField instanceof TextRenderer ? textField : new TextRenderer(textField, fractionDigits);
};
BaseGauge.prototype.setMinValue = function(minValue, updateStartValue) {
var gauge, j, len, ref, results;
this.minValue = minValue;
if (updateStartValue == null) {
updateStartValue = true;
}
if (updateStartValue) {
this.displayedValue = this.minValue;
ref = this.gp || [];
results = [];
for (j = 0, len = ref.length; j < len; j++) {
gauge = ref[j];
results.push(gauge.displayedValue = this.minValue);
}
return results;
}
};
BaseGauge.prototype.setOptions = function(options) {
if (options == null) {
options = null;
}
this.options = mergeObjects(this.options, options);
if (this.textField) {
this.textField.el.style.fontSize = options.fontSize + 'px';
}
if (this.options.angle > .5) {
this.options.angle = .5;
}
this.configDisplayScale();
return this;
};
BaseGauge.prototype.configDisplayScale = function() {
var backingStorePixelRatio, devicePixelRatio, height, prevDisplayScale, width;
prevDisplayScale = this.displayScale;
if (this.options.highDpiSupport === false) {
delete this.displayScale;
} else {
devicePixelRatio = window.devicePixelRatio || 1;
backingStorePixelRatio = this.ctx.webkitBackingStorePixelRatio || this.ctx.mozBackingStorePixelRatio || this.ctx.msBackingStorePixelRatio || this.ctx.oBackingStorePixelRatio || this.ctx.backingStorePixelRatio || 1;
this.displayScale = devicePixelRatio / backingStorePixelRatio;
}
if (this.displayScale !== prevDisplayScale) {
width = this.canvas.G__width || this.canvas.width;
height = this.canvas.G__height || this.canvas.height;
this.canvas.width = width * this.displayScale;
this.canvas.height = height * this.displayScale;
this.canvas.style.width = width + "px";
this.canvas.style.height = height + "px";
this.canvas.G__width = width;
this.canvas.G__height = height;
}
return this;
};
BaseGauge.prototype.parseValue = function(value) {
value = parseFloat(value) || Number(value);
if (isFinite(value)) {
return value;
} else {
return 0;
}
};
return BaseGauge;
})(ValueUpdater);
TextRenderer = (function() {
function TextRenderer(el, fractionDigits1) {
this.el = el;
this.fractionDigits = fractionDigits1;
}
TextRenderer.prototype.render = function(gauge) {
return this.el.innerHTML = formatNumber(gauge.displayedValue, this.fractionDigits);
};
return TextRenderer;
})();
AnimatedText = (function(superClass) {
extend(AnimatedText, superClass);
AnimatedText.prototype.displayedValue = 0;
AnimatedText.prototype.value = 0;
AnimatedText.prototype.setVal = function(value) {
return this.value = 1 * value;
};
function AnimatedText(elem1, text) {
this.elem = elem1;
this.text = text != null ? text : false;
AnimatedText.__super__.constructor.call(this);
if (this.elem === void 0) {
throw new Error('The element isn\'t defined.');
}
this.value = 1 * this.elem.innerHTML;
if (this.text) {
this.value = 0;
}
}
AnimatedText.prototype.render = function() {
var textVal;
if (this.text) {
textVal = secondsToString(this.displayedValue.toFixed(0));
} else {
textVal = addCommas(formatNumber(this.displayedValue));
}
return this.elem.innerHTML = textVal;
};
return AnimatedText;
})(ValueUpdater);
AnimatedTextFactory = {
create: function(objList) {
var elem, j, len, out;
out = [];
for (j = 0, len = objList.length; j < len; j++) {
elem = objList[j];
out.push(new AnimatedText(elem));
}
return out;
}
};
GaugePointer = (function(superClass) {
extend(GaugePointer, superClass);
GaugePointer.prototype.displayedValue = 0;
GaugePointer.prototype.value = 0;
GaugePointer.prototype.options = {
strokeWidth: 0.035,
length: 0.1,
color: "#000000",
iconPath: null,
iconScale: 1.0,
iconAngle: 0
};
GaugePointer.prototype.img = null;
function GaugePointer(gauge1) {
this.gauge = gauge1;
if (this.gauge === void 0) {
throw new Error('The element isn\'t defined.');
}
this.ctx = this.gauge.ctx;
this.canvas = this.gauge.canvas;
GaugePointer.__super__.constructor.call(this, false, false);
this.setOptions();
}
GaugePointer.prototype.setOptions = function(options) {
if (options == null) {
options = null;
}
this.options = mergeObjects(this.options, options);
this.length = 2 * this.gauge.radius * this.gauge.options.radiusScale * this.options.length;
this.strokeWidth = this.canvas.height * this.options.strokeWidth;
this.maxValue = this.gauge.maxValue;
this.minValue = this.gauge.minValue;
this.animationSpeed = this.gauge.animationSpeed;
this.options.angle = this.gauge.options.angle;
if (this.options.iconPath) {
this.img = new Image();
return this.img.src = this.options.iconPath;
}
};
GaugePointer.prototype.render = function() {
var angle, endX, endY, imgX, imgY, startX, startY, x, y;
angle = this.gauge.getAngle.call(this, this.displayedValue);
x = Math.round(this.length * Math.cos(angle));
y = Math.round(this.length * Math.sin(angle));
startX = Math.round(this.strokeWidth * Math.cos(angle - Math.PI / 2));
startY = Math.round(this.strokeWidth * Math.sin(angle - Math.PI / 2));
endX = Math.round(this.strokeWidth * Math.cos(angle + Math.PI / 2));
endY = Math.round(this.strokeWidth * Math.sin(angle + Math.PI / 2));
this.ctx.beginPath();
this.ctx.fillStyle = this.options.color;
this.ctx.arc(0, 0, this.strokeWidth, 0, Math.PI * 2, false);
this.ctx.fill();
this.ctx.beginPath();
this.ctx.moveTo(startX, startY);
this.ctx.lineTo(x, y);
this.ctx.lineTo(endX, endY);
this.ctx.fill();
if (this.img) {
imgX = Math.round(this.img.width * this.options.iconScale);
imgY = Math.round(this.img.height * this.options.iconScale);
this.ctx.save();
this.ctx.translate(x, y);
this.ctx.rotate(angle + Math.PI / 180.0 * (90 + this.options.iconAngle));
this.ctx.drawImage(this.img, -imgX / 2, -imgY / 2, imgX, imgY);
return this.ctx.restore();
}
};
return GaugePointer;
})(ValueUpdater);
Bar = (function() {
function Bar(elem1) {
this.elem = elem1;
}
Bar.prototype.updateValues = function(arrValues) {
this.value = arrValues[0];
this.maxValue = arrValues[1];
this.avgValue = arrValues[2];
return this.render();
};
Bar.prototype.render = function() {
var avgPercent, valPercent;
if (this.textField) {
this.textField.text(formatNumber(this.value));
}
if (this.maxValue === 0) {
this.maxValue = this.avgValue * 2;
}
valPercent = (this.value / this.maxValue) * 100;
avgPercent = (this.avgValue / this.maxValue) * 100;
$(".bar-value", this.elem).css({
"width": valPercent + "%"
});
return $(".typical-value", this.elem).css({
"width": avgPercent + "%"
});
};
return Bar;
})();
Gauge = (function(superClass) {
extend(Gauge, superClass);
Gauge.prototype.elem = null;
Gauge.prototype.value = [20];
Gauge.prototype.maxValue = 80;
Gauge.prototype.minValue = 0;
Gauge.prototype.displayedAngle = 0;
Gauge.prototype.displayedValue = 0;
Gauge.prototype.lineWidth = 40;
Gauge.prototype.paddingTop = 0.1;
Gauge.prototype.paddingBottom = 0.1;
Gauge.prototype.percentColors = null;
Gauge.prototype.options = {
colorStart: "#6fadcf",
colorStop: void 0,
gradientType: 0,
strokeColor: "#e0e0e0",
pointer: {
length: 0.8,
strokeWidth: 0.035,
iconScale: 1.0
},
angle: 0.15,
lineWidth: 0.44,
radiusScale: 1.0,
fontSize: 40,
limitMax: false,
limitMin: false
};
function Gauge(canvas) {
var h, w;
this.canvas = canvas;
Gauge.__super__.constructor.call(this);
this.percentColors = null;
if (typeof G_vmlCanvasManager !== 'undefined') {
this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
}
this.ctx = this.canvas.getContext('2d');
h = this.canvas.clientHeight;
w = this.canvas.clientWidth;
this.canvas.height = h;
this.canvas.width = w;
this.gp = [new GaugePointer(this)];
this.setOptions();
}
Gauge.prototype.setOptions = function(options) {
var gauge, j, len, phi, ref;
if (options == null) {
options = null;
}
Gauge.__super__.setOptions.call(this, options);
this.configPercentColors();
this.extraPadding = 0;
if (this.options.angle < 0) {
phi = Math.PI * (1 + this.options.angle);
this.extraPadding = Math.sin(phi);
}
this.availableHeight = this.canvas.height * (1 - this.paddingTop - this.paddingBottom);
this.lineWidth = this.availableHeight * this.options.lineWidth;
this.radius = (this.availableHeight - this.lineWidth / 2) / (1.0 + this.extraPadding);
this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);
ref = this.gp;
for (j = 0, len = ref.length; j < len; j++) {
gauge = ref[j];
gauge.setOptions(this.options.pointer);
gauge.render();
}
this.render();
return this;
};
Gauge.prototype.configPercentColors = function() {
var bval, gval, i, j, ref, results, rval;
this.percentColors = null;
if (this.options.percentColors !== void 0) {
this.percentColors = new Array();
results = [];
for (i = j = 0, ref = this.options.percentColors.length - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {
rval = parseInt((cutHex(this.options.percentColors[i][1])).substring(0, 2), 16);
gval = parseInt((cutHex(this.options.percentColors[i][1])).substring(2, 4), 16);
bval = parseInt((cutHex(this.options.percentColors[i][1])).substring(4, 6), 16);
results.push(this.percentColors[i] = {
pct: this.options.percentColors[i][0],
color: {
r: rval,
g: gval,
b: bval
}
});
}
return results;
}
};
Gauge.prototype.set = function(value) {
var gp, i, j, k, l, len, ref, ref1, val;
if (!(value instanceof Array)) {
value = [value];
}
for (i = j = 0, ref = value.length - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {
value[i] = this.parseValue(value[i]);
}
if (value.length > this.gp.length) {
for (i = k = 0, ref1 = value.length - this.gp.length; 0 <= ref1 ? k < ref1 : k > ref1; i = 0 <= ref1 ? ++k : --k) {
gp = new GaugePointer(this);
gp.setOptions(this.options.pointer);
this.gp.push(gp);
}
} else if (value.length < this.gp.length) {
this.gp = this.gp.slice(this.gp.length - value.length);
}
i = 0;
for (l = 0, len = value.length; l < len; l++) {
val = value[l];
if (val > this.maxValue) {
if (this.options.limitMax) {
val = this.maxValue;
} else {
this.maxValue = val + 1;
}
} else if (val < this.minValue) {
if (this.options.limitMin) {
val = this.minValue;
} else {
this.minValue = val - 1;
}
}
this.gp[i].value = val;
this.gp[i++].setOptions({
minValue: this.minValue,
maxValue: this.maxValue,
angle: this.options.angle
});
}
this.value = Math.max(Math.min(value[value.length - 1], this.maxValue), this.minValue);
AnimationUpdater.run(this.forceUpdate);
return this.forceUpdate = false;
};
Gauge.prototype.getAngle = function(value) {
return (1 + this.options.angle) * Math.PI + ((value - this.minValue) / (this.maxValue - this.minValue)) * (1 - this.options.angle * 2) * Math.PI;
};
Gauge.prototype.getColorForPercentage = function(pct, grad) {
var color, endColor, i, j, rangePct, ref, startColor;
if (pct === 0) {
color = this.percentColors[0].color;
} else {
color = this.percentColors[this.percentColors.length - 1].color;
for (i = j = 0, ref = this.percentColors.length - 1; 0 <= ref ? j <= ref : j >= ref; i = 0 <= ref ? ++j : --j) {
if (pct <= this.percentColors[i].pct) {
if (grad === true) {
startColor = this.percentColors[i - 1] || this.percentColors[0];
endColor = this.percentColors[i];
rangePct = (pct - startColor.pct) / (endColor.pct - startColor.pct);
color = {
r: Math.floor(startColor.color.r * (1 - rangePct) + endColor.color.r * rangePct),
g: Math.floor(startColor.color.g * (1 - rangePct) + endColor.color.g * rangePct),
b: Math.floor(startColor.color.b * (1 - rangePct) + endColor.color.b * rangePct)
};
} else {
color = this.percentColors[i].color;
}
break;
}
}
}
return 'rgb(' + [color.r, color.g, color.b].join(',') + ')';
};
Gauge.prototype.getColorForValue = function(val, grad) {
var pct;
pct = (val - this.minValue) / (this.maxValue - this.minValue);
return this.getColorForPercentage(pct, grad);
};
Gauge.prototype.renderStaticLabels = function(staticLabels, w, h, radius) {
var font, fontsize, j, len, match, re, ref, rest, rotationAngle, value;
this.ctx.save();
this.ctx.translate(w, h);
font = staticLabels.font || "10px Times";
re = /\d+\.?\d?/;
match = font.match(re)[0];
rest = font.slice(match.length);
fontsize = parseFloat(match) * this.displayScale;
this.ctx.font = fontsize + rest;
this.ctx.fillStyle = staticLabels.color || "#000000";
this.ctx.textBaseline = "bottom";
this.ctx.textAlign = "center";
ref = staticLabels.labels;
for (j = 0, len = ref.length; j < len; j++) {
value = ref[j];
if (value.label !== void 0) {
if ((!this.options.limitMin || value >= this.minValue) && (!this.options.limitMax || value <= this.maxValue)) {
font = value.font || staticLabels.font;
match = font.match(re)[0];
rest = font.slice(match.length);
fontsize = parseFloat(match) * this.displayScale;
this.ctx.font = fontsize + rest;
rotationAngle = this.getAngle(value.label) - 3 * Math.PI / 2;
this.ctx.rotate(rotationAngle);
this.ctx.fillText(formatNumber(value.label, staticLabels.fractionDigits), 0, -radius - this.lineWidth / 2);
this.ctx.rotate(-rotationAngle);
}
} else {
if ((!this.options.limitMin || value >= this.minValue) && (!this.options.limitMax || value <= this.maxValue)) {
rotationAngle = this.getAngle(value) - 3 * Math.PI / 2;
this.ctx.rotate(rotationAngle);
this.ctx.fillText(formatNumber(value, staticLabels.fractionDigits), 0, -radius - this.lineWidth / 2);
this.ctx.rotate(-rotationAngle);
}
}
}
return this.ctx.restore();
};
Gauge.prototype.renderTicks = function(ticksOptions, w, h, radius) {
var currentDivision, currentSubDivision, divColor, divLength, divWidth, divisionCount, j, lineWidth, range, rangeDivisions, ref, results, scaleMutate, st, subColor, subDivisions, subLength, subWidth, subdivisionCount, t, tmpRadius;
if (ticksOptions !== {}) {
divisionCount = ticksOptions.divisions || 0;
subdivisionCount = ticksOptions.subDivisions || 0;
divColor = ticksOptions.divColor || '#fff';
subColor = ticksOptions.subColor || '#fff';
divLength = ticksOptions.divLength || 0.7;
subLength = ticksOptions.subLength || 0.2;
range = parseFloat(this.maxValue) - parseFloat(this.minValue);
rangeDivisions = parseFloat(range) / parseFloat(ticksOptions.divisions);
subDivisions = parseFloat(rangeDivisions) / parseFloat(ticksOptions.subDivisions);
currentDivision = parseFloat(this.minValue);
currentSubDivision = 0.0 + subDivisions;
lineWidth = range / 400;
divWidth = lineWidth * (ticksOptions.divWidth || 1);
subWidth = lineWidth * (ticksOptions.subWidth || 1);
results = [];
for (t = j = 0, ref = divisionCount + 1; j < ref; t = j += 1) {
this.ctx.lineWidth = this.lineWidth * divLength;
scaleMutate = (this.lineWidth / 2) * (1 - divLength);
tmpRadius = (this.radius * this.options.radiusScale) + scaleMutate;
this.ctx.strokeStyle = divColor;
this.ctx.beginPath();
this.ctx.arc(0, 0, tmpRadius, this.getAngle(currentDivision - divWidth), this.getAngle(currentDivision + divWidth), false);
this.ctx.stroke();
currentSubDivision = currentDivision + subDivisions;
currentDivision += rangeDivisions;
if (t !== ticksOptions.divisions && subdivisionCount > 0) {
results.push((function() {
var k, ref1, results1;
results1 = [];
for (st = k = 0, ref1 = subdivisionCount - 1; k < ref1; st = k += 1) {
this.ctx.lineWidth = this.lineWidth * subLength;
scaleMutate = (this.lineWidth / 2) * (1 - subLength);
tmpRadius = (this.radius * this.options.radiusScale) + scaleMutate;
this.ctx.strokeStyle = subColor;
this.ctx.beginPath();
this.ctx.arc(0, 0, tmpRadius, this.getAngle(currentSubDivision - subWidth), this.getAngle(currentSubDivision + subWidth), false);
this.ctx.stroke();
results1.push(currentSubDivision += subDivisions);
}
return results1;
}).call(this));
} else {
results.push(void 0);
}
}
return results;
}
};
Gauge.prototype.render = function() {
var displayedAngle, fillStyle, gauge, h, j, k, len, len1, max, min, radius, ref, ref1, scaleMutate, tmpRadius, w, zone;
w = this.canvas.width / 2;
h = (this.canvas.height * this.paddingTop + this.availableHeight) - ((this.radius + this.lineWidth / 2) * this.extraPadding);
displayedAngle = this.getAngle(this.displayedValue);
if (this.textField) {
this.textField.render(this);
}
this.ctx.lineCap = "butt";
radius = this.radius * this.options.radiusScale;
if (this.options.staticLabels) {
this.renderStaticLabels(this.options.staticLabels, w, h, radius);
}
if (this.options.staticZones) {
this.ctx.save();
this.ctx.translate(w, h);
this.ctx.lineWidth = this.lineWidth;
ref = this.options.staticZones;
for (j = 0, len = ref.length; j < len; j++) {
zone = ref[j];
min = zone.min;
if (this.options.limitMin && min < this.minValue) {
min = this.minValue;
}
max = zone.max;
if (this.options.limitMax && max > this.maxValue) {
max = this.maxValue;
}
tmpRadius = this.radius * this.options.radiusScale;
if (zone.height) {
this.ctx.lineWidth = this.lineWidth * zone.height;
scaleMutate = (this.lineWidth / 2) * (zone.offset || 1 - zone.height);
tmpRadius = (this.radius * this.options.radiusScale) + scaleMutate;
}
this.ctx.strokeStyle = zone.strokeStyle;
this.ctx.beginPath();
this.ctx.arc(0, 0, tmpRadius, this.getAngle(min), this.getAngle(max), false);
this.ctx.stroke();
}
} else {
if (this.options.customFillStyle !== void 0) {
fillStyle = this.options.customFillStyle(this);
} else if (this.percentColors !== null) {
fillStyle = this.getColorForValue(this.displayedValue, this.options.generateGradient);
} else if (this.options.colorStop !== void 0) {
if (this.options.gradientType === 0) {
fillStyle = this.ctx.createRadialGradient(w, h, 9, w, h, 70);
} else {
fillStyle = this.ctx.createLinearGradient(0, 0, w, 0);
}
fillStyle.addColorStop(0, this.options.colorStart);
fillStyle.addColorStop(1, this.options.colorStop);
} else {
fillStyle = this.options.colorStart;
}
this.ctx.strokeStyle = fillStyle;
this.ctx.beginPath();
this.ctx.arc(w, h, radius, (1 + this.options.angle) * Math.PI, displayedAngle, false);
this.ctx.lineWidth = this.lineWidth;
this.ctx.stroke();
this.ctx.strokeStyle = this.options.strokeColor;
this.ctx.beginPath();
this.ctx.arc(w, h, radius, displayedAngle, (2 - this.options.angle) * Math.PI, false);
this.ctx.stroke();
this.ctx.save();
this.ctx.translate(w, h);
}
if (this.options.renderTicks) {
this.renderTicks(this.options.renderTicks, w, h, radius);
}
this.ctx.restore();
this.ctx.translate(w, h);
ref1 = this.gp;
for (k = 0, len1 = ref1.length; k < len1; k++) {
gauge = ref1[k];
gauge.update(true);
}
return this.ctx.translate(-w, -h);
};
return Gauge;
})(BaseGauge);
BaseDonut = (function(superClass) {
extend(BaseDonut, superClass);
BaseDonut.prototype.lineWidth = 15;
BaseDonut.prototype.displayedValue = 0;
BaseDonut.prototype.value = 33;
BaseDonut.prototype.maxValue = 80;
BaseDonut.prototype.minValue = 0;
BaseDonut.prototype.options = {
lineWidth: 0.10,
colorStart: "#6f6ea0",
colorStop: "#c0c0db",
strokeColor: "#eeeeee",
shadowColor: "#d5d5d5",
angle: 0.35,
radiusScale: 1.0
};
function BaseDonut(canvas) {
this.canvas = canvas;
BaseDonut.__super__.constructor.call(this);
if (typeof G_vmlCanvasManager !== 'undefined') {
this.canvas = window.G_vmlCanvasManager.initElement(this.canvas);
}
this.ctx = this.canvas.getContext('2d');
this.setOptions();
this.render();
}
BaseDonut.prototype.getAngle = function(value) {
return (1 - this.options.angle) * Math.PI + ((value - this.minValue) / (this.maxValue - this.minValue)) * ((2 + this.options.angle) - (1 - this.options.angle)) * Math.PI;
};
BaseDonut.prototype.setOptions = function(options) {
if (options == null) {
options = null;
}
BaseDonut.__super__.setOptions.call(this, options);
this.lineWidth = this.canvas.height * this.options.lineWidth;
this.radius = this.options.radiusScale * (this.canvas.height / 2 - this.lineWidth / 2);
return this;
};
BaseDonut.prototype.set = function(value) {
this.value = this.parseValue(value);
if (this.value > this.maxValue) {
if (this.options.limitMax) {
this.value = this.maxValue;
} else {
this.maxValue = this.value;
}
} else if (this.value < this.minValue) {
if (this.options.limitMin) {
this.value = this.minValue;
} else {
this.minValue = this.value;
}
}
AnimationUpdater.run(this.forceUpdate);
return this.forceUpdate = false;
};
BaseDonut.prototype.render = function() {
var displayedAngle, grdFill, h, start, stop, w;
displayedAngle = this.getAngle(this.displayedValue);
w = this.canvas.width / 2;
h = this.canvas.height / 2;
if (this.textField) {
this.textField.render(this);
}
grdFill = this.ctx.createRadialGradient(w, h, 39, w, h, 70);
grdFill.addColorStop(0, this.options.colorStart);
grdFill.addColorStop(1, this.options.colorStop);
start = this.radius - this.lineWidth / 2;
stop = this.radius + this.lineWidth / 2;
this.ctx.strokeStyle = this.options.strokeColor;
this.ctx.beginPath();
this.ctx.arc(w, h, this.radius, (1 - this.options.angle) * Math.PI, (2 + this.options.angle) * Math.PI, false);
this.ctx.lineWidth = this.lineWidth;
this.ctx.lineCap = "round";
this.ctx.stroke();
this.ctx.strokeStyle = grdFill;
this.ctx.beginPath();
this.ctx.arc(w, h, this.radius, (1 - this.options.angle) * Math.PI, displayedAngle, false);
return this.ctx.stroke();
};
return BaseDonut;
})(BaseGauge);
Donut = (function(superClass) {
extend(Donut, superClass);
function Donut() {
return Donut.__super__.constructor.apply(this, arguments);
}
Donut.prototype.strokeGradient = function(w, h, start, stop) {
var grd;
grd = this.ctx.createRadialGradient(w, h, start, w, h, stop);
grd.addColorStop(0, this.options.shadowColor);
grd.addColorStop(0.12, this.options._orgStrokeColor);
grd.addColorStop(0.88, this.options._orgStrokeColor);
grd.addColorStop(1, this.options.shadowColor);
return grd;
};
Donut.prototype.setOptions = function(options) {
var h, start, stop, w;
if (options == null) {
options = null;
}
Donut.__super__.setOptions.call(this, options);
w = this.canvas.width / 2;
h = this.canvas.height / 2;
start = this.radius - this.lineWidth / 2;
stop = this.radius + this.lineWidth / 2;
this.options._orgStrokeColor = this.options.strokeColor;
this.options.strokeColor = this.strokeGradient(w, h, start, stop);
return this;
};
return Donut;
})(BaseDonut);
window.AnimationUpdater = {
elements: [],
animId: null,
addAll: function(list) {
var elem, j, len, results;
results = [];
for (j = 0, len = list.length; j < len; j++) {
elem = list[j];
results.push(AnimationUpdater.elements.push(elem));
}
return results;
},
add: function(object) {
return AnimationUpdater.elements.push(object);
},
run: function(force) {
var elem, finished, isCallback, j, len, ref;
if (force == null) {
force = false;
}
isCallback = isFinite(parseFloat(force));
if (isCallback || force === true) {
finished = true;
ref = AnimationUpdater.elements;
for (j = 0, len = ref.length; j < len; j++) {
elem = ref[j];
if (elem.update(force === true)) {
finished = false;
}
}
return AnimationUpdater.animId = finished ? null : requestAnimationFrame(AnimationUpdater.run);
} else if (force === false) {
if (AnimationUpdater.animId === !null) {
cancelAnimationFrame(AnimationUpdater.animId);
}
return AnimationUpdater.animId = requestAnimationFrame(AnimationUpdater.run);
}
}
};
if (typeof window.define === 'function' && (window.define.amd != null)) {
define(function() {
return {
Gauge: Gauge,
Donut: Donut,
BaseDonut: BaseDonut,
TextRenderer: TextRenderer
};
});
} else if (typeof module !== 'undefined' && (module.exports != null)) {
module.exports = {
Gauge: Gauge,
Donut: Donut,
BaseDonut: BaseDonut,
TextRenderer: TextRenderer
};
} else {
window.Gauge = Gauge;
window.Donut = Donut;
window.BaseDonut = BaseDonut;
window.TextRenderer = TextRenderer;
}
}).call(this);

2417
static/vendor/gmaps/gmaps.js vendored Normal file

File diff suppressed because it is too large Load Diff

4152
static/vendor/hover/hover.css vendored Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

128
static/vendor/ios7-switch/ios7-switch.js vendored Normal file
View File

@@ -0,0 +1,128 @@
/**
* Accept one checkbox input field, and convert it into iOS style switch UI.
*/
function Switch(input) {
if ('checkbox' !== input.type) throw new Error('You can\'t make Switch out of non-checkbox input');
this.input = input;
this.input.style.display = 'none'; // hide the actual input
this.el = document.createElement('div');
this.el.className = 'ios-switch';
this._prepareDOM();
this.input.parentElement.insertBefore(this.el, this.input);
// read initial state and set Switch state accordingly
if (this.input.checked) this.turnOn()
}
/**
* Cross Browser add class method
*/
Switch.addClass = function( el, className) {
if (el.classList) {
el.classList.add(className);
} else {
el.className += ' ' + className;
}
};
/**
* Cross Browser remove class method
*/
Switch.removeClass = function( el, className) {
if (el.classList) {
el.classList.remove(className);
} else {
el.className = el.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' ');
}
};
/**
* Cross Browser has class method
*/
Switch.hasClass = function(el, className) {
if (el.classList) {
return el.classList.contains(className);
} else {
return new RegExp('(^| )' + className + '( |$)', 'gi').test(el.className);
}
};
/**
* Toggles on/off state
*/
Switch.prototype.toggle = function() {
if( Switch.hasClass(this.el, 'on') ){
this.turnOff();
} else {
this.turnOn();
}
this.triggerChange();
};
/**
* Turn on
*/
Switch.prototype.turnOn = function() {
Switch.addClass(this.el, 'on');
Switch.removeClass(this.el, 'off');
this.input.checked = true;
};
/**
* Turn off
*/
Switch.prototype.turnOff = function() {
Switch.removeClass(this.el, 'on');
Switch.addClass(this.el, 'off');
this.input.checked = false;
}
/**
* Triggers DOM event programatically on the real input field
*/
Switch.prototype.triggerChange = function() {
if ("fireEvent" in this.input){
this.input.fireEvent("onchange");
} else {
var evt = document.createEvent("HTMLEvents");
evt.initEvent("change", false, true);
this.input.dispatchEvent(evt);
}
};
/**
* We need to prepare some DOM elements
*/
Switch.prototype._prepareDOM = function() {
var onBackground = document.createElement('div');
onBackground.className = 'on-background background-fill';
var stateBackground = document.createElement('div');
stateBackground.className = 'state-background background-fill';
var handle = document.createElement('div');
handle.className = 'handle';
this.el.appendChild(onBackground);
this.el.appendChild(stateBackground);
this.el.appendChild(handle);
};

12
static/vendor/isotope/isotope.js vendored Normal file

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1,151 @@
/*
* jQuery.appear
* https://github.com/bas2k/jquery.appear/
* http://code.google.com/p/jquery-appear/
* http://bas2k.ru/
*
* Copyright (c) 2009 Michael Hixson
* Copyright (c) 2012-2014 Alexander Brovikov
* Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
*/
(function($) {
$.fn.appear = function(fn, options) {
var settings = $.extend({
//arbitrary data to pass to fn
data: undefined,
//call fn only on the first appear?
one: true,
// X & Y accuracy
accX: 0,
accY: 0
}, options);
return this.each(function() {
var t = $(this);
//whether the element is currently visible
t.appeared = false;
if (!fn) {
//trigger the custom event
t.trigger('appear', settings.data);
return;
}
var w = $(window);
//fires the appear event when appropriate
var check = function() {
//is the element hidden?
if (!t.is(':visible')) {
//it became hidden
t.appeared = false;
return;
}
//is the element inside the visible window?
var a = w.scrollLeft();
var b = w.scrollTop();
var o = t.offset();
var x = o.left;
var y = o.top;
var ax = settings.accX;
var ay = settings.accY;
var th = t.height();
var wh = w.height();
var tw = t.width();
var ww = w.width();
if (y + th + ay >= b &&
y <= b + wh + ay &&
x + tw + ax >= a &&
x <= a + ww + ax) {
//trigger the custom event
if (!t.appeared) t.trigger('appear', settings.data);
} else {
//it scrolled out of view
t.appeared = false;
}
};
//create a modified fn with some additional logic
var modifiedFn = function() {
//mark the element as visible
t.appeared = true;
//is this supposed to happen only once?
if (settings.one) {
//remove the check
w.unbind('scroll', check);
var i = $.inArray(check, $.fn.appear.checks);
if (i >= 0) $.fn.appear.checks.splice(i, 1);
}
//trigger the original fn
fn.apply(this, arguments);
};
//bind the modified fn to the element
if (settings.one) t.one('appear', settings.data, modifiedFn);
else t.bind('appear', settings.data, modifiedFn);
//check whenever the window scrolls
w.scroll(check);
//check whenever the dom changes
$.fn.appear.checks.push(check);
//check now
(check)();
});
};
//keep a queue of appearance checks
$.extend($.fn.appear, {
checks: [],
timeout: null,
//process the queue
checkAll: function() {
var length = $.fn.appear.checks.length;
if (length > 0) while (length--) ($.fn.appear.checks[length])();
},
//check the queue asynchronously
run: function() {
if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout);
$.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20);
}
});
//run checks when these methods are called
$.each(['append', 'prepend', 'after', 'before', 'attr',
'removeAttr', 'addClass', 'removeClass', 'toggleClass',
'remove', 'css', 'show', 'hide'], function(i, n) {
var old = $.fn[n];
if (old) {
$.fn[n] = function() {
var r = old.apply(this, arguments);
$.fn.appear.run();
return r;
}
}
});
})(jQuery);

View File

@@ -0,0 +1 @@
(function(a){(jQuery.browser=jQuery.browser||{}).mobile=/(iphone|ipad|ipod|android)/i.test(a)||/(iphone|ipad|ipod|android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i.test(a)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(a.substr(0,4))})(navigator.userAgent||navigator.vendor||window.opera);

View File

@@ -0,0 +1,117 @@
/*!
* jQuery Cookie Plugin v1.4.1
* https://github.com/carhartl/jquery-cookie
*
* Copyright 2013 Klaus Hartl
* Released under the MIT license
*/
(function (factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof exports === 'object') {
// CommonJS
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function ($) {
var pluses = /\+/g;
function encode(s) {
return config.raw ? s : encodeURIComponent(s);
}
function decode(s) {
return config.raw ? s : decodeURIComponent(s);
}
function stringifyCookieValue(value) {
return encode(config.json ? JSON.stringify(value) : String(value));
}
function parseCookieValue(s) {
if (s.indexOf('"') === 0) {
// This is a quoted cookie as according to RFC2068, unescape...
s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
}
try {
// Replace server-side written pluses with spaces.
// If we can't decode the cookie, ignore it, it's unusable.
// If we can't parse the cookie, ignore it, it's unusable.
s = decodeURIComponent(s.replace(pluses, ' '));
return config.json ? JSON.parse(s) : s;
} catch(e) {}
}
function read(s, converter) {
var value = config.raw ? s : parseCookieValue(s);
return $.isFunction(converter) ? converter(value) : value;
}
var config = $.cookie = function (key, value, options) {
// Write
if (value !== undefined && !$.isFunction(value)) {
options = $.extend({}, config.defaults, options);
if (typeof options.expires === 'number') {
var days = options.expires, t = options.expires = new Date();
t.setTime(+t + days * 864e+5);
}
return (document.cookie = [
encode(key), '=', stringifyCookieValue(value),
options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
options.path ? '; path=' + options.path : '',
options.domain ? '; domain=' + options.domain : '',
options.secure ? '; secure' : ''
].join(''));
}
// Read
var result = key ? undefined : {};
// To prevent the for loop in the first place assign an empty array
// in case there are no cookies at all. Also prevents odd result when
// calling $.cookie().
var cookies = document.cookie ? document.cookie.split('; ') : [];
for (var i = 0, l = cookies.length; i < l; i++) {
var parts = cookies[i].split('=');
var name = decode(parts.shift());
var cookie = parts.join('=');
if (key && key === name) {
// If second argument (value) is a function it's a converter...
result = read(cookie, value);
break;
}
// Prevent storing a cookie that we couldn't decode.
if (!key && (cookie = read(cookie)) !== undefined) {
result[name] = cookie;
}
}
return result;
};
config.defaults = {};
$.removeCookie = function (key, options) {
if ($.cookie(key) === undefined) {
return false;
}
// Must not alter options, thus extending a fresh object...
$.cookie(key, '', $.extend({}, options, { expires: -1 }));
return !$.cookie(key);
};
}));

View File

@@ -0,0 +1,314 @@
/*! Idle Timer - v1.1.0 - 2016-03-21
* https://github.com/thorst/jquery-idletimer
* Copyright (c) 2016 Paul Irish; Licensed MIT */
/*
mousewheel (deprecated) -> IE6.0, Chrome, Opera, Safari
DOMMouseScroll (deprecated) -> Firefox 1.0
wheel (standard) -> Chrome 31, Firefox 17, IE9, Firefox Mobile 17.0
//No need to use, use DOMMouseScroll
MozMousePixelScroll -> Firefox 3.5, Firefox Mobile 1.0
//Events
WheelEvent -> see wheel
MouseWheelEvent -> see mousewheel
MouseScrollEvent -> Firefox 3.5, Firefox Mobile 1.0
*/
(function ($) {
$.idleTimer = function (firstParam, elem) {
var opts;
if ( typeof firstParam === "object" ) {
opts = firstParam;
firstParam = null;
} else if (typeof firstParam === "number") {
opts = { timeout: firstParam };
firstParam = null;
}
// element to watch
elem = elem || document;
// defaults that are to be stored as instance props on the elem
opts = $.extend({
idle: false, // indicates if the user is idle
timeout: 30000, // the amount of time (ms) before the user is considered idle
events: "mousemove keydown wheel DOMMouseScroll mousewheel mousedown touchstart touchmove MSPointerDown MSPointerMove" // define active events
}, opts);
var jqElem = $(elem),
obj = jqElem.data("idleTimerObj") || {},
/* (intentionally not documented)
* Toggles the idle state and fires an appropriate event.
* @return {void}
*/
toggleIdleState = function (e) {
var obj = $.data(elem, "idleTimerObj") || {};
// toggle the state
obj.idle = !obj.idle;
// store toggle state date time
obj.olddate = +new Date();
// create a custom event, with state and name space
var event = $.Event((obj.idle ? "idle" : "active") + ".idleTimer");
// trigger event on object with elem and copy of obj
$(elem).trigger(event, [elem, $.extend({}, obj), e]);
},
/**
* Handle event triggers
* @return {void}
* @method event
* @static
*/
handleEvent = function (e) {
var obj = $.data(elem, "idleTimerObj") || {};
if (e.type === "storage" && e.originalEvent.key !== obj.timerSyncId) {
return;
}
// this is already paused, ignore events for now
if (obj.remaining != null) { return; }
/*
mousemove is kinda buggy, it can be triggered when it should be idle.
Typically is happening between 115 - 150 milliseconds after idle triggered.
@psyafter & @kaellis report "always triggered if using modal (jQuery ui, with overlay)"
@thorst has similar issues on ios7 "after $.scrollTop() on text area"
*/
if (e.type === "mousemove") {
// if coord are same, it didn't move
if (e.pageX === obj.pageX && e.pageY === obj.pageY) {
return;
}
// if coord don't exist how could it move
if (typeof e.pageX === "undefined" && typeof e.pageY === "undefined") {
return;
}
// under 200 ms is hard to do, and you would have to stop, as continuous activity will bypass this
var elapsed = (+new Date()) - obj.olddate;
if (elapsed < 200) {
return;
}
}
// clear any existing timeout
clearTimeout(obj.tId);
// if the idle timer is enabled, flip
if (obj.idle) {
toggleIdleState(e);
}
// store when user was last active
obj.lastActive = +new Date();
// update mouse coord
obj.pageX = e.pageX;
obj.pageY = e.pageY;
// sync lastActive
if (e.type !== "storage" && obj.timerSyncId) {
if (typeof(localStorage) !== "undefined") {
localStorage.setItem(obj.timerSyncId, obj.lastActive);
}
}
// set a new timeout
obj.tId = setTimeout(toggleIdleState, obj.timeout);
},
/**
* Restore initial settings and restart timer
* @return {void}
* @method reset
* @static
*/
reset = function () {
var obj = $.data(elem, "idleTimerObj") || {};
// reset settings
obj.idle = obj.idleBackup;
obj.olddate = +new Date();
obj.lastActive = obj.olddate;
obj.remaining = null;
// reset Timers
clearTimeout(obj.tId);
if (!obj.idle) {
obj.tId = setTimeout(toggleIdleState, obj.timeout);
}
},
/**
* Store remaining time, stop timer
* You can pause from an idle OR active state
* @return {void}
* @method pause
* @static
*/
pause = function () {
var obj = $.data(elem, "idleTimerObj") || {};
// this is already paused
if ( obj.remaining != null ) { return; }
// define how much is left on the timer
obj.remaining = obj.timeout - ((+new Date()) - obj.olddate);
// clear any existing timeout
clearTimeout(obj.tId);
},
/**
* Start timer with remaining value
* @return {void}
* @method resume
* @static
*/
resume = function () {
var obj = $.data(elem, "idleTimerObj") || {};
// this isn't paused yet
if ( obj.remaining == null ) { return; }
// start timer
if ( !obj.idle ) {
obj.tId = setTimeout(toggleIdleState, obj.remaining);
}
// clear remaining
obj.remaining = null;
},
/**
* Stops the idle timer. This removes appropriate event handlers
* and cancels any pending timeouts.
* @return {void}
* @method destroy
* @static
*/
destroy = function () {
var obj = $.data(elem, "idleTimerObj") || {};
//clear any pending timeouts
clearTimeout(obj.tId);
//Remove data
jqElem.removeData("idleTimerObj");
//detach the event handlers
jqElem.off("._idleTimer");
},
/**
* Returns the time until becoming idle
* @return {number}
* @method remainingtime
* @static
*/
remainingtime = function () {
var obj = $.data(elem, "idleTimerObj") || {};
//If idle there is no time remaining
if ( obj.idle ) { return 0; }
//If its paused just return that
if ( obj.remaining != null ) { return obj.remaining; }
//Determine remaining, if negative idle didn't finish flipping, just return 0
var remaining = obj.timeout - ((+new Date()) - obj.lastActive);
if (remaining < 0) { remaining = 0; }
//If this is paused return that number, else return current remaining
return remaining;
};
// determine which function to call
if (firstParam === null && typeof obj.idle !== "undefined") {
// they think they want to init, but it already is, just reset
reset();
return jqElem;
} else if (firstParam === null) {
// they want to init
} else if (firstParam !== null && typeof obj.idle === "undefined") {
// they want to do something, but it isnt init
// not sure the best way to handle this
return false;
} else if (firstParam === "destroy") {
destroy();
return jqElem;
} else if (firstParam === "pause") {
pause();
return jqElem;
} else if (firstParam === "resume") {
resume();
return jqElem;
} else if (firstParam === "reset") {
reset();
return jqElem;
} else if (firstParam === "getRemainingTime") {
return remainingtime();
} else if (firstParam === "getElapsedTime") {
return (+new Date()) - obj.olddate;
} else if (firstParam === "getLastActiveTime") {
return obj.lastActive;
} else if (firstParam === "isIdle") {
return obj.idle;
}
/* (intentionally not documented)
* Handles a user event indicating that the user isn't idle. namespaced with internal idleTimer
* @param {Event} event A DOM2-normalized event object.
* @return {void}
*/
jqElem.on($.trim((opts.events + " ").split(" ").join("._idleTimer ")), function (e) {
handleEvent(e);
});
if (opts.timerSyncId) {
$(window).bind("storage", handleEvent);
}
// Internal Object Properties, This isn't all necessary, but we
// explicitly define all keys here so we know what we are working with
obj = $.extend({}, {
olddate : +new Date(), // the last time state changed
lastActive: +new Date(), // the last time timer was active
idle : opts.idle, // current state
idleBackup : opts.idle, // backup of idle parameter since it gets modified
timeout : opts.timeout, // the interval to change state
remaining : null, // how long until state changes
timerSyncId : opts.timerSyncId, // localStorage key to use for syncing this timer
tId : null, // the idle timer setTimeout
pageX : null, // used to store the mouse coord
pageY : null
});
// set a timeout to toggle state. May wish to omit this in some situations
if (!obj.idle) {
obj.tId = setTimeout(toggleIdleState, obj.timeout);
}
// store our instance on the object
$.data(elem, "idleTimerObj", obj);
return jqElem;
};
// This allows binding to element
$.fn.idleTimer = function (firstParam) {
if (this[0]) {
return $.idleTimer(firstParam, this[0]);
}
return this;
};
})(jQuery);

View File

@@ -0,0 +1,182 @@
/*
jQuery Masked Input Plugin
Copyright (c) 2007 - 2015 Josh Bush (digitalbush.com)
Licensed under the MIT license (http://digitalbush.com/projects/masked-input-plugin/#license)
Version: 1.4.1
*/
!function(factory) {
"function" == typeof define && define.amd ? define([ "jquery" ], factory) : factory("object" == typeof exports ? require("jquery") : jQuery);
}(function($) {
var caretTimeoutId, ua = navigator.userAgent, iPhone = /iphone/i.test(ua), chrome = /chrome/i.test(ua), android = /android/i.test(ua);
$.mask = {
definitions: {
"9": "[0-9]",
a: "[A-Za-z]",
"*": "[A-Za-z0-9]"
},
autoclear: !0,
dataName: "rawMaskFn",
placeholder: "_"
}, $.fn.extend({
caret: function(begin, end) {
var range;
if (0 !== this.length && !this.is(":hidden")) return "number" == typeof begin ? (end = "number" == typeof end ? end : begin,
this.each(function() {
this.setSelectionRange ? this.setSelectionRange(begin, end) : this.createTextRange && (range = this.createTextRange(),
range.collapse(!0), range.moveEnd("character", end), range.moveStart("character", begin),
range.select());
})) : (this[0].setSelectionRange ? (begin = this[0].selectionStart, end = this[0].selectionEnd) : document.selection && document.selection.createRange && (range = document.selection.createRange(),
begin = 0 - range.duplicate().moveStart("character", -1e5), end = begin + range.text.length),
{
begin: begin,
end: end
});
},
unmask: function() {
return this.trigger("unmask");
},
mask: function(mask, settings) {
var input, defs, tests, partialPosition, firstNonMaskPos, lastRequiredNonMaskPos, len, oldVal;
if (!mask && this.length > 0) {
input = $(this[0]);
var fn = input.data($.mask.dataName);
return fn ? fn() : void 0;
}
return settings = $.extend({
autoclear: $.mask.autoclear,
placeholder: $.mask.placeholder,
completed: null
}, settings), defs = $.mask.definitions, tests = [], partialPosition = len = mask.length,
firstNonMaskPos = null, $.each(mask.split(""), function(i, c) {
"?" == c ? (len--, partialPosition = i) : defs[c] ? (tests.push(new RegExp(defs[c])),
null === firstNonMaskPos && (firstNonMaskPos = tests.length - 1), partialPosition > i && (lastRequiredNonMaskPos = tests.length - 1)) : tests.push(null);
}), this.trigger("unmask").each(function() {
function tryFireCompleted() {
if (settings.completed) {
for (var i = firstNonMaskPos; lastRequiredNonMaskPos >= i; i++) if (tests[i] && buffer[i] === getPlaceholder(i)) return;
settings.completed.call(input);
}
}
function getPlaceholder(i) {
return settings.placeholder.charAt(i < settings.placeholder.length ? i : 0);
}
function seekNext(pos) {
for (;++pos < len && !tests[pos]; ) ;
return pos;
}
function seekPrev(pos) {
for (;--pos >= 0 && !tests[pos]; ) ;
return pos;
}
function shiftL(begin, end) {
var i, j;
if (!(0 > begin)) {
for (i = begin, j = seekNext(end); len > i; i++) if (tests[i]) {
if (!(len > j && tests[i].test(buffer[j]))) break;
buffer[i] = buffer[j], buffer[j] = getPlaceholder(j), j = seekNext(j);
}
writeBuffer(), input.caret(Math.max(firstNonMaskPos, begin));
}
}
function shiftR(pos) {
var i, c, j, t;
for (i = pos, c = getPlaceholder(pos); len > i; i++) if (tests[i]) {
if (j = seekNext(i), t = buffer[i], buffer[i] = c, !(len > j && tests[j].test(t))) break;
c = t;
}
}
function androidInputEvent() {
var curVal = input.val(), pos = input.caret();
if (oldVal && oldVal.length && oldVal.length > curVal.length) {
for (checkVal(!0); pos.begin > 0 && !tests[pos.begin - 1]; ) pos.begin--;
if (0 === pos.begin) for (;pos.begin < firstNonMaskPos && !tests[pos.begin]; ) pos.begin++;
input.caret(pos.begin, pos.begin);
} else {
for (checkVal(!0); pos.begin < len && !tests[pos.begin]; ) pos.begin++;
input.caret(pos.begin, pos.begin);
}
tryFireCompleted();
}
function blurEvent() {
checkVal(), input.val() != focusText && input.change();
}
function keydownEvent(e) {
if (!input.prop("readonly")) {
var pos, begin, end, k = e.which || e.keyCode;
oldVal = input.val(), 8 === k || 46 === k || iPhone && 127 === k ? (pos = input.caret(),
begin = pos.begin, end = pos.end, end - begin === 0 && (begin = 46 !== k ? seekPrev(begin) : end = seekNext(begin - 1),
end = 46 === k ? seekNext(end) : end), clearBuffer(begin, end), shiftL(begin, end - 1),
e.preventDefault()) : 13 === k ? blurEvent.call(this, e) : 27 === k && (input.val(focusText),
input.caret(0, checkVal()), e.preventDefault());
}
}
function keypressEvent(e) {
if (!input.prop("readonly")) {
var p, c, next, k = e.which || e.keyCode, pos = input.caret();
if (!(e.ctrlKey || e.altKey || e.metaKey || 32 > k) && k && 13 !== k) {
if (pos.end - pos.begin !== 0 && (clearBuffer(pos.begin, pos.end), shiftL(pos.begin, pos.end - 1)),
p = seekNext(pos.begin - 1), len > p && (c = String.fromCharCode(k), tests[p].test(c))) {
if (shiftR(p), buffer[p] = c, writeBuffer(), next = seekNext(p), android) {
var proxy = function() {
$.proxy($.fn.caret, input, next)();
};
setTimeout(proxy, 0);
} else input.caret(next);
pos.begin <= lastRequiredNonMaskPos && tryFireCompleted();
}
e.preventDefault();
}
}
}
function clearBuffer(start, end) {
var i;
for (i = start; end > i && len > i; i++) tests[i] && (buffer[i] = getPlaceholder(i));
}
function writeBuffer() {
input.val(buffer.join(""));
}
function checkVal(allow) {
var i, c, pos, test = input.val(), lastMatch = -1;
for (i = 0, pos = 0; len > i; i++) if (tests[i]) {
for (buffer[i] = getPlaceholder(i); pos++ < test.length; ) if (c = test.charAt(pos - 1),
tests[i].test(c)) {
buffer[i] = c, lastMatch = i;
break;
}
if (pos > test.length) {
clearBuffer(i + 1, len);
break;
}
} else buffer[i] === test.charAt(pos) && pos++, partialPosition > i && (lastMatch = i);
return allow ? writeBuffer() : partialPosition > lastMatch + 1 ? settings.autoclear || buffer.join("") === defaultBuffer ? (input.val() && input.val(""),
clearBuffer(0, len)) : writeBuffer() : (writeBuffer(), input.val(input.val().substring(0, lastMatch + 1))),
partialPosition ? i : firstNonMaskPos;
}
var input = $(this), buffer = $.map(mask.split(""), function(c, i) {
return "?" != c ? defs[c] ? getPlaceholder(i) : c : void 0;
}), defaultBuffer = buffer.join(""), focusText = input.val();
input.data($.mask.dataName, function() {
return $.map(buffer, function(c, i) {
return tests[i] && c != getPlaceholder(i) ? c : null;
}).join("");
}), input.one("unmask", function() {
input.off(".mask").removeData($.mask.dataName);
}).on("focus.mask", function() {
if (!input.prop("readonly")) {
clearTimeout(caretTimeoutId);
var pos;
focusText = input.val(), pos = checkVal(), caretTimeoutId = setTimeout(function() {
input.get(0) === document.activeElement && (writeBuffer(), pos == mask.replace("?", "").length ? input.caret(0, pos) : input.caret(pos));
}, 10);
}
}).on("blur.mask", blurEvent).on("keydown.mask", keydownEvent).on("keypress.mask", keypressEvent).on("input.mask paste.mask", function() {
input.prop("readonly") || setTimeout(function() {
var pos = checkVal(!0);
input.caret(pos), tryFireCompleted();
}, 0);
}), chrome && android && input.off("input.mask").on("input.mask", androidInputEvent),
checkVal();
});
}
});
});

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,484 @@
/*!
* Nestable jQuery Plugin - Copyright (c) 2012 David Bushell - http://dbushell.com/
* Dual-licensed under the BSD or MIT licenses
*/
;(function($, window, document, undefined)
{
var hasTouch = 'ontouchstart' in document;
/**
* Detect CSS pointer-events property
* events are normally disabled on the dragging element to avoid conflicts
* https://github.com/ausi/Feature-detection-technique-for-pointer-events/blob/master/modernizr-pointerevents.js
*/
var hasPointerEvents = (function()
{
var el = document.createElement('div'),
docEl = document.documentElement;
if (!('pointerEvents' in el.style)) {
return false;
}
el.style.pointerEvents = 'auto';
el.style.pointerEvents = 'x';
docEl.appendChild(el);
var supports = window.getComputedStyle && window.getComputedStyle(el, '').pointerEvents === 'auto';
docEl.removeChild(el);
return !!supports;
})();
var defaults = {
listNodeName : 'ol',
itemNodeName : 'li',
rootClass : 'dd',
listClass : 'dd-list',
itemClass : 'dd-item',
dragClass : 'dd-dragel',
handleClass : 'dd-handle',
collapsedClass : 'dd-collapsed',
placeClass : 'dd-placeholder',
noDragClass : 'dd-nodrag',
emptyClass : 'dd-empty',
expandBtnHTML : '<button data-action="expand" type="button">Expand</button>',
collapseBtnHTML : '<button data-action="collapse" type="button">Collapse</button>',
group : 0,
maxDepth : 5,
threshold : 20
};
function Plugin(element, options)
{
this.w = $(document);
this.el = $(element);
this.options = $.extend({}, defaults, options);
this.init();
}
Plugin.prototype = {
init: function()
{
var list = this;
list.reset();
list.el.data('nestable-group', this.options.group);
list.placeEl = $('<div class="' + list.options.placeClass + '"/>');
$.each(this.el.find(list.options.itemNodeName), function(k, el) {
list.setParent($(el));
});
list.el.on('click', 'button', function(e) {
if (list.dragEl) {
return;
}
var target = $(e.currentTarget),
action = target.data('action'),
item = target.parent(list.options.itemNodeName);
if (action === 'collapse') {
list.collapseItem(item);
}
if (action === 'expand') {
list.expandItem(item);
}
});
var onStartEvent = function(e)
{
var handle = $(e.target);
if (!handle.hasClass(list.options.handleClass)) {
if (handle.closest('.' + list.options.noDragClass).length) {
return;
}
handle = handle.closest('.' + list.options.handleClass);
}
if (!handle.length || list.dragEl) {
return;
}
list.isTouch = /^touch/.test(e.type);
if (list.isTouch && e.touches.length !== 1) {
return;
}
e.preventDefault();
list.dragStart(e.touches ? e.touches[0] : e);
};
var onMoveEvent = function(e)
{
if (list.dragEl) {
e.preventDefault();
list.dragMove(e.touches ? e.touches[0] : e);
}
};
var onEndEvent = function(e)
{
if (list.dragEl) {
e.preventDefault();
list.dragStop(e.touches ? e.touches[0] : e);
}
};
if (hasTouch) {
list.el[0].addEventListener('touchstart', onStartEvent, false);
window.addEventListener('touchmove', onMoveEvent, false);
window.addEventListener('touchend', onEndEvent, false);
window.addEventListener('touchcancel', onEndEvent, false);
}
list.el.on('mousedown', onStartEvent);
list.w.on('mousemove', onMoveEvent);
list.w.on('mouseup', onEndEvent);
},
serialize: function()
{
var data,
depth = 0,
list = this;
step = function(level, depth)
{
var array = [ ],
items = level.children(list.options.itemNodeName);
items.each(function()
{
var li = $(this),
item = $.extend({}, li.data()),
sub = li.children(list.options.listNodeName);
if (sub.length) {
item.children = step(sub, depth + 1);
}
array.push(item);
});
return array;
};
data = step(list.el.find(list.options.listNodeName).first(), depth);
return data;
},
serialise: function()
{
return this.serialize();
},
reset: function()
{
this.mouse = {
offsetX : 0,
offsetY : 0,
startX : 0,
startY : 0,
lastX : 0,
lastY : 0,
nowX : 0,
nowY : 0,
distX : 0,
distY : 0,
dirAx : 0,
dirX : 0,
dirY : 0,
lastDirX : 0,
lastDirY : 0,
distAxX : 0,
distAxY : 0
};
this.isTouch = false;
this.moving = false;
this.dragEl = null;
this.dragRootEl = null;
this.dragDepth = 0;
this.hasNewRoot = false;
this.pointEl = null;
},
expandItem: function(li)
{
li.removeClass(this.options.collapsedClass);
li.children('[data-action="expand"]').hide();
li.children('[data-action="collapse"]').show();
li.children(this.options.listNodeName).show();
},
collapseItem: function(li)
{
var lists = li.children(this.options.listNodeName);
if (lists.length) {
li.addClass(this.options.collapsedClass);
li.children('[data-action="collapse"]').hide();
li.children('[data-action="expand"]').show();
li.children(this.options.listNodeName).hide();
}
},
expandAll: function()
{
var list = this;
list.el.find(list.options.itemNodeName).each(function() {
list.expandItem($(this));
});
},
collapseAll: function()
{
var list = this;
list.el.find(list.options.itemNodeName).each(function() {
list.collapseItem($(this));
});
},
setParent: function(li)
{
if (li.children(this.options.listNodeName).length) {
li.prepend($(this.options.expandBtnHTML));
li.prepend($(this.options.collapseBtnHTML));
}
li.children('[data-action="expand"]').hide();
},
unsetParent: function(li)
{
li.removeClass(this.options.collapsedClass);
li.children('[data-action]').remove();
li.children(this.options.listNodeName).remove();
},
dragStart: function(e)
{
var mouse = this.mouse,
target = $(e.target),
dragItem = target.closest(this.options.itemNodeName);
this.placeEl.css('height', dragItem.height());
mouse.offsetX = e.offsetX !== undefined ? e.offsetX : e.pageX - target.offset().left;
mouse.offsetY = e.offsetY !== undefined ? e.offsetY : e.pageY - target.offset().top;
mouse.startX = mouse.lastX = e.pageX;
mouse.startY = mouse.lastY = e.pageY;
this.dragRootEl = this.el;
this.dragEl = $(document.createElement(this.options.listNodeName)).addClass(this.options.listClass + ' ' + this.options.dragClass);
this.dragEl.css('width', dragItem.width());
dragItem.after(this.placeEl);
dragItem[0].parentNode.removeChild(dragItem[0]);
dragItem.appendTo(this.dragEl);
$(document.body).append(this.dragEl);
this.dragEl.css({
'left' : e.pageX - mouse.offsetX,
'top' : e.pageY - mouse.offsetY
});
// total depth of dragging item
var i, depth,
items = this.dragEl.find(this.options.itemNodeName);
for (i = 0; i < items.length; i++) {
depth = $(items[i]).parents(this.options.listNodeName).length;
if (depth > this.dragDepth) {
this.dragDepth = depth;
}
}
},
dragStop: function(e)
{
var el = this.dragEl.children(this.options.itemNodeName).first();
el[0].parentNode.removeChild(el[0]);
this.placeEl.replaceWith(el);
this.dragEl.remove();
this.el.trigger('change');
if (this.hasNewRoot) {
this.dragRootEl.trigger('change');
}
this.reset();
},
dragMove: function(e)
{
var list, parent, prev, next, depth,
opt = this.options,
mouse = this.mouse;
this.dragEl.css({
'left' : e.pageX - mouse.offsetX,
'top' : e.pageY - mouse.offsetY
});
// mouse position last events
mouse.lastX = mouse.nowX;
mouse.lastY = mouse.nowY;
// mouse position this events
mouse.nowX = e.pageX;
mouse.nowY = e.pageY;
// distance mouse moved between events
mouse.distX = mouse.nowX - mouse.lastX;
mouse.distY = mouse.nowY - mouse.lastY;
// direction mouse was moving
mouse.lastDirX = mouse.dirX;
mouse.lastDirY = mouse.dirY;
// direction mouse is now moving (on both axis)
mouse.dirX = mouse.distX === 0 ? 0 : mouse.distX > 0 ? 1 : -1;
mouse.dirY = mouse.distY === 0 ? 0 : mouse.distY > 0 ? 1 : -1;
// axis mouse is now moving on
var newAx = Math.abs(mouse.distX) > Math.abs(mouse.distY) ? 1 : 0;
// do nothing on first move
if (!mouse.moving) {
mouse.dirAx = newAx;
mouse.moving = true;
return;
}
// calc distance moved on this axis (and direction)
if (mouse.dirAx !== newAx) {
mouse.distAxX = 0;
mouse.distAxY = 0;
} else {
mouse.distAxX += Math.abs(mouse.distX);
if (mouse.dirX !== 0 && mouse.dirX !== mouse.lastDirX) {
mouse.distAxX = 0;
}
mouse.distAxY += Math.abs(mouse.distY);
if (mouse.dirY !== 0 && mouse.dirY !== mouse.lastDirY) {
mouse.distAxY = 0;
}
}
mouse.dirAx = newAx;
/**
* move horizontal
*/
if (mouse.dirAx && mouse.distAxX >= opt.threshold) {
// reset move distance on x-axis for new phase
mouse.distAxX = 0;
prev = this.placeEl.prev(opt.itemNodeName);
// increase horizontal level if previous sibling exists and is not collapsed
if (mouse.distX > 0 && prev.length && !prev.hasClass(opt.collapsedClass)) {
// cannot increase level when item above is collapsed
list = prev.find(opt.listNodeName).last();
// check if depth limit has reached
depth = this.placeEl.parents(opt.listNodeName).length;
if (depth + this.dragDepth <= opt.maxDepth) {
// create new sub-level if one doesn't exist
if (!list.length) {
list = $('<' + opt.listNodeName + '/>').addClass(opt.listClass);
list.append(this.placeEl);
prev.append(list);
this.setParent(prev);
} else {
// else append to next level up
list = prev.children(opt.listNodeName).last();
list.append(this.placeEl);
}
}
}
// decrease horizontal level
if (mouse.distX < 0) {
// we can't decrease a level if an item preceeds the current one
next = this.placeEl.next(opt.itemNodeName);
if (!next.length) {
parent = this.placeEl.parent();
this.placeEl.closest(opt.itemNodeName).after(this.placeEl);
if (!parent.children().length) {
this.unsetParent(parent.parent());
}
}
}
}
var isEmpty = false;
// find list item under cursor
if (!hasPointerEvents) {
this.dragEl[0].style.visibility = 'hidden';
}
this.pointEl = $(document.elementFromPoint(e.pageX - document.body.scrollLeft, e.pageY - (window.pageYOffset || document.documentElement.scrollTop)));
if (!hasPointerEvents) {
this.dragEl[0].style.visibility = 'visible';
}
if (this.pointEl.hasClass(opt.handleClass)) {
this.pointEl = this.pointEl.parent(opt.itemNodeName);
}
if (this.pointEl.hasClass(opt.emptyClass)) {
isEmpty = true;
}
else if (!this.pointEl.length || !this.pointEl.hasClass(opt.itemClass)) {
return;
}
// find parent list of item under cursor
var pointElRoot = this.pointEl.closest('.' + opt.rootClass),
isNewRoot = this.dragRootEl.data('nestable-id') !== pointElRoot.data('nestable-id');
/**
* move vertical
*/
if (!mouse.dirAx || isNewRoot || isEmpty) {
// check if groups match if dragging over new root
if (isNewRoot && opt.group !== pointElRoot.data('nestable-group')) {
return;
}
// check depth limit
depth = this.dragDepth - 1 + this.pointEl.parents(opt.listNodeName).length;
if (depth > opt.maxDepth) {
return;
}
var before = e.pageY < (this.pointEl.offset().top + this.pointEl.height() / 2);
parent = this.placeEl.parent();
// if empty create new list to replace empty placeholder
if (isEmpty) {
list = $(document.createElement(opt.listNodeName)).addClass(opt.listClass);
list.append(this.placeEl);
this.pointEl.replaceWith(list);
}
else if (before) {
this.pointEl.before(this.placeEl);
}
else {
this.pointEl.after(this.placeEl);
}
if (!parent.children().length) {
this.unsetParent(parent.parent());
}
if (!this.dragRootEl.find(opt.itemNodeName).length) {
this.dragRootEl.append('<div class="' + opt.emptyClass + '"/>');
}
// parent root list has changed
if (isNewRoot) {
this.dragRootEl = pointElRoot;
this.hasNewRoot = this.el[0] !== this.dragRootEl[0];
}
}
}
};
$.fn.nestable = function(params)
{
var lists = this,
retval = this;
lists.each(function()
{
var plugin = $(this).data("nestable");
if (!plugin) {
$(this).data("nestable", new Plugin(this, params));
$(this).data("nestable-id", new Date().getTime());
} else {
if (typeof params === 'string' && typeof plugin[params] === 'function') {
retval = plugin[params]();
}
}
});
return retval || lists;
};
})(window.jQuery || window.Zepto, window, document);

View File

@@ -0,0 +1,281 @@
/*!
* jQuery Placeholder Plugin v2.3.1
* https://github.com/mathiasbynens/jquery-placeholder
*
* Copyright 2011, 2015 Mathias Bynens
* Released under the MIT license
*/
(function(factory) {
if (typeof define === 'function' && define.amd) {
// AMD
define(['jquery'], factory);
} else if (typeof module === 'object' && module.exports) {
factory(require('jquery'));
} else {
// Browser globals
factory(jQuery);
}
}(function($) {
/****
* Allows plugin behavior simulation in modern browsers for easier debugging.
* When setting to true, use attribute "placeholder-x" rather than the usual "placeholder" in your inputs/textareas
* i.e. <input type="text" placeholder-x="my placeholder text" />
*/
var debugMode = false;
// Opera Mini v7 doesn't support placeholder although its DOM seems to indicate so
var isOperaMini = Object.prototype.toString.call(window.operamini) === '[object OperaMini]';
var isInputSupported = 'placeholder' in document.createElement('input') && !isOperaMini && !debugMode;
var isTextareaSupported = 'placeholder' in document.createElement('textarea') && !isOperaMini && !debugMode;
var valHooks = $.valHooks;
var propHooks = $.propHooks;
var hooks;
var placeholder;
var settings = {};
if (isInputSupported && isTextareaSupported) {
placeholder = $.fn.placeholder = function() {
return this;
};
placeholder.input = true;
placeholder.textarea = true;
} else {
placeholder = $.fn.placeholder = function(options) {
var defaults = {customClass: 'placeholder'};
settings = $.extend({}, defaults, options);
return this.filter((isInputSupported ? 'textarea' : ':input') + '[' + (debugMode ? 'placeholder-x' : 'placeholder') + ']')
.not('.'+settings.customClass)
.not(':radio, :checkbox, [type=hidden]')
.bind({
'focus.placeholder': clearPlaceholder,
'blur.placeholder': setPlaceholder
})
.data('placeholder-enabled', true)
.trigger('blur.placeholder');
};
placeholder.input = isInputSupported;
placeholder.textarea = isTextareaSupported;
hooks = {
'get': function(element) {
var $element = $(element);
var $passwordInput = $element.data('placeholder-password');
if ($passwordInput) {
return $passwordInput[0].value;
}
return $element.data('placeholder-enabled') && $element.hasClass(settings.customClass) ? '' : element.value;
},
'set': function(element, value) {
var $element = $(element);
var $replacement;
var $passwordInput;
if (value !== '') {
$replacement = $element.data('placeholder-textinput');
$passwordInput = $element.data('placeholder-password');
if ($replacement) {
clearPlaceholder.call($replacement[0], true, value) || (element.value = value);
$replacement[0].value = value;
} else if ($passwordInput) {
clearPlaceholder.call(element, true, value) || ($passwordInput[0].value = value);
element.value = value;
}
}
if (!$element.data('placeholder-enabled')) {
element.value = value;
return $element;
}
if (value === '') {
element.value = value;
// Setting the placeholder causes problems if the element continues to have focus.
if (element != safeActiveElement()) {
// We can't use `triggerHandler` here because of dummy text/password inputs :(
setPlaceholder.call(element);
}
} else {
if ($element.hasClass(settings.customClass)) {
clearPlaceholder.call(element);
}
element.value = value;
}
// `set` can not return `undefined`; see http://jsapi.info/jquery/1.7.1/val#L2363
return $element;
}
};
if (!isInputSupported) {
valHooks.input = hooks;
propHooks.value = hooks;
}
if (!isTextareaSupported) {
valHooks.textarea = hooks;
propHooks.value = hooks;
}
$(function() {
// Look for forms
$(document).delegate('form', 'submit.placeholder', function() {
// Clear the placeholder values so they don't get submitted
var $inputs = $('.'+settings.customClass, this).each(function() {
clearPlaceholder.call(this, true, '');
});
setTimeout(function() {
$inputs.each(setPlaceholder);
}, 10);
});
});
// Clear placeholder values upon page reload
$(window).bind('beforeunload.placeholder', function() {
var clearPlaceholders = true;
try {
// Prevent IE javascript:void(0) anchors from causing cleared values
if (document.activeElement.toString() === 'javascript:void(0)') {
clearPlaceholders = false;
}
} catch (exception) { }
if (clearPlaceholders) {
$('.'+settings.customClass).each(function() {
this.value = '';
});
}
});
}
function args(elem) {
// Return an object of element attributes
var newAttrs = {};
var rinlinejQuery = /^jQuery\d+$/;
$.each(elem.attributes, function(i, attr) {
if (attr.specified && !rinlinejQuery.test(attr.name)) {
newAttrs[attr.name] = attr.value;
}
});
return newAttrs;
}
function clearPlaceholder(event, value) {
var input = this;
var $input = $(this);
if (input.value === $input.attr((debugMode ? 'placeholder-x' : 'placeholder')) && $input.hasClass(settings.customClass)) {
input.value = '';
$input.removeClass(settings.customClass);
if ($input.data('placeholder-password')) {
$input = $input.hide().nextAll('input[type="password"]:first').show().attr('id', $input.removeAttr('id').data('placeholder-id'));
// If `clearPlaceholder` was called from `$.valHooks.input.set`
if (event === true) {
$input[0].value = value;
return value;
}
$input.focus();
} else {
input == safeActiveElement() && input.select();
}
}
}
function setPlaceholder(event) {
var $replacement;
var input = this;
var $input = $(this);
var id = input.id;
// If the placeholder is activated, triggering blur event (`$input.trigger('blur')`) should do nothing.
if (event && event.type === 'blur' && $input.hasClass(settings.customClass)) {
return;
}
if (input.value === '') {
if (input.type === 'password') {
if (!$input.data('placeholder-textinput')) {
try {
$replacement = $input.clone().prop({ 'type': 'text' });
} catch(e) {
$replacement = $('<input>').attr($.extend(args(this), { 'type': 'text' }));
}
$replacement
.removeAttr('name')
.data({
'placeholder-enabled': true,
'placeholder-password': $input,
'placeholder-id': id
})
.bind('focus.placeholder', clearPlaceholder);
$input
.data({
'placeholder-textinput': $replacement,
'placeholder-id': id
})
.before($replacement);
}
input.value = '';
$input = $input.removeAttr('id').hide().prevAll('input[type="text"]:first').attr('id', $input.data('placeholder-id')).show();
} else {
var $passwordInput = $input.data('placeholder-password');
if ($passwordInput) {
$passwordInput[0].value = '';
$input.attr('id', $input.data('placeholder-id')).show().nextAll('input[type="password"]:last').hide().removeAttr('id');
}
}
$input.addClass(settings.customClass);
$input[0].value = $input.attr((debugMode ? 'placeholder-x' : 'placeholder'));
} else {
$input.removeClass(settings.customClass);
}
}
function safeActiveElement() {
// Avoid IE9 `document.activeElement` of death
try {
return document.activeElement;
} catch (exception) {}
}
}));

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Some files were not shown because too many files have changed in this diff Show More