/*
THIS IS A GENERATED/BUNDLED FILE BY ROLLUP
if you want to view the source visit the plugins github repository
*/
'use strict';
var obsidian = require('obsidian');
/******************************************************************************
Copyright (c) Microsoft Corporation.
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
***************************************************************************** */
function __awaiter(thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
}
var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
function createCommonjsModule(fn) {
var module = { exports: {} };
return fn(module, module.exports), module.exports;
}
createCommonjsModule(function (module, exports) {
(function webpackUniversalModuleDefinition(root, factory) {
module.exports = factory();
})(typeof self !== 'undefined' ? self : commonjsGlobal, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // define __esModule on exports
/******/ __webpack_require__.r = function(exports) {
/******/ Object.defineProperty(exports, '__esModule', { value: true });
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ({
/***/ "./dist/icons.json":
/*!*************************!*\
!*** ./dist/icons.json ***!
\*************************/
/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, aperture, archive, arrow-down-circle, arrow-down-left, arrow-down-right, arrow-down, arrow-left-circle, arrow-left, arrow-right-circle, arrow-right, arrow-up-circle, arrow-up-left, arrow-up-right, arrow-up, at-sign, award, bar-chart-2, bar-chart, battery-charging, battery, bell-off, bell, bluetooth, bold, book-open, book, bookmark, box, briefcase, calendar, camera-off, camera, cast, check-circle, check-square, check, chevron-down, chevron-left, chevron-right, chevron-up, chevrons-down, chevrons-left, chevrons-right, chevrons-up, chrome, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-off, cloud-rain, cloud-snow, cloud, code, codepen, codesandbox, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, divide-circle, divide-square, divide, dollar-sign, download-cloud, download, dribbble, droplet, edit-2, edit-3, edit, external-link, eye-off, eye, facebook, fast-forward, feather, figma, file-minus, file-plus, file-text, file, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, grid, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, info, instagram, italic, key, layers, layout, life-buoy, link-2, link, linkedin, list, loader, lock, log-in, log-out, mail, map-pin, map, maximize-2, maximize, meh, menu, message-circle, message-square, mic-off, mic, minimize-2, minimize, minus-circle, minus-square, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation-2, navigation, octagon, package, paperclip, pause-circle, pause, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, pie-chart, play-circle, play, plus-circle, plus-square, plus, pocket, power, printer, radio, refresh-ccw, refresh-cw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, server, settings, share-2, share, shield-off, shield, shopping-bag, shopping-cart, shuffle, sidebar, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, square, star, stop-circle, sun, sunrise, sunset, table, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash-2, trash, trello, trending-down, trending-up, triangle, truck, tv, twitch, twitter, type, umbrella, underline, unlock, upload-cloud, upload, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume-1, volume-2, volume-x, volume, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */
/***/ (function(module) {
module.exports = {"activity":"","airplay":"","alert-circle":"","alert-octagon":"","alert-triangle":"","align-center":"","align-justify":"","align-left":"","align-right":"","anchor":"","aperture":"","archive":"","arrow-down-circle":"","arrow-down-left":"","arrow-down-right":"","arrow-down":"","arrow-left-circle":"","arrow-left":"","arrow-right-circle":"","arrow-right":"","arrow-up-circle":"","arrow-up-left":"","arrow-up-right":"","arrow-up":"","at-sign":"","award":"","bar-chart-2":"","bar-chart":"","battery-charging":"","battery":"","bell-off":"","bell":"","bluetooth":"","bold":"","book-open":"","book":"","bookmark":"","box":"","briefcase":"","calendar":"","camera-off":"","camera":"","cast":"","check-circle":"","check-square":"","check":"","chevron-down":"","chevron-left":"","chevron-right":"","chevron-up":"","chevrons-down":"","chevrons-left":"","chevrons-right":"","chevrons-up":"","chrome":"","circle":"","clipboard":"","clock":"","cloud-drizzle":"","cloud-lightning":"","cloud-off":"","cloud-rain":"","cloud-snow":"","cloud":"","code":"","codepen":"","codesandbox":"","coffee":"","columns":"","command":"","compass":"","copy":"","corner-down-left":"","corner-down-right":"","corner-left-down":"","corner-left-up":"","corner-right-down":"","corner-right-up":"","corner-up-left":"","corner-up-right":"","cpu":"","credit-card":"","crop":"","crosshair":"","database":"","delete":"","disc":"","divide-circle":"","divide-square":"","divide":"","dollar-sign":"","download-cloud":"","download":"","dribbble":"","droplet":"","edit-2":"","edit-3":"","edit":"","external-link":"","eye-off":"","eye":"","facebook":"","fast-forward":"","feather":"","figma":"","file-minus":"","file-plus":"","file-text":"","file":"","film":"","filter":"","flag":"","folder-minus":"","folder-plus":"","folder":"","framer":"","frown":"","gift":"","git-branch":"","git-commit":"","git-merge":"","git-pull-request":"","github":"","gitlab":"","globe":"","grid":"","hard-drive":"","hash":"","headphones":"","heart":"","help-circle":"","hexagon":"","home":"","image":"","inbox":"","info":"","instagram":"","italic":"","key":"","layers":"","layout":"","life-buoy":"","link-2":"","link":"","linkedin":"","list":"","loader":"","lock":"","log-in":"","log-out":"","mail":"","map-pin":"","map":"","maximize-2":"","maximize":"","meh":"","menu":"","message-circle":"","message-square":"","mic-off":"","mic":"","minimize-2":"","minimize":"","minus-circle":"","minus-square":"","minus":"","monitor":"","moon":"","more-horizontal":"","more-vertical":"","mouse-pointer":"","move":"","music":"","navigation-2":"","navigation":"","octagon":"","package":"","paperclip":"","pause-circle":"","pause":"","pen-tool":"","percent":"","phone-call":"","phone-forwarded":"","phone-incoming":"","phone-missed":"","phone-off":"","phone-outgoing":"","phone":"","pie-chart":"","play-circle":"","play":"","plus-circle":"","plus-square":"","plus":"","pocket":"","power":"","printer":"","radio":"","refresh-ccw":"","refresh-cw":"","repeat":"","rewind":"","rotate-ccw":"","rotate-cw":"","rss":"","save":"","scissors":"","search":"","send":"","server":"","settings":"","share-2":"","share":"","shield-off":"","shield":"","shopping-bag":"","shopping-cart":"","shuffle":"","sidebar":"","skip-back":"","skip-forward":"","slack":"","slash":"","sliders":"","smartphone":"","smile":"","speaker":"","square":"","star":"","stop-circle":"","sun":"","sunrise":"","sunset":"","table":"","tablet":"","tag":"","target":"","terminal":"","thermometer":"","thumbs-down":"","thumbs-up":"","toggle-left":"","toggle-right":"","tool":"","trash-2":"","trash":"","trello":"","trending-down":"","trending-up":"","triangle":"","truck":"","tv":"","twitch":"","twitter":"","type":"","umbrella":"","underline":"","unlock":"","upload-cloud":"","upload":"","user-check":"","user-minus":"","user-plus":"","user-x":"","user":"","users":"","video-off":"","video":"","voicemail":"","volume-1":"","volume-2":"","volume-x":"","volume":"","watch":"","wifi-off":"","wifi":"","wind":"","x-circle":"","x-octagon":"","x-square":"","x":"","youtube":"","zap-off":"","zap":"","zoom-in":"","zoom-out":""};
/***/ }),
/***/ "./node_modules/classnames/dedupe.js":
/*!*******************************************!*\
!*** ./node_modules/classnames/dedupe.js ***!
\*******************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
Copyright (c) 2016 Jed Watson.
Licensed under the MIT License (MIT), see
http://jedwatson.github.io/classnames
*/
/* global define */
(function () {
var classNames = (function () {
// don't inherit from Object so we can skip hasOwnProperty check later
// http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232
function StorageObject() {}
StorageObject.prototype = Object.create(null);
function _parseArray (resultSet, array) {
var length = array.length;
for (var i = 0; i < length; ++i) {
_parse(resultSet, array[i]);
}
}
var hasOwn = {}.hasOwnProperty;
function _parseNumber (resultSet, num) {
resultSet[num] = true;
}
function _parseObject (resultSet, object) {
for (var k in object) {
if (hasOwn.call(object, k)) {
// set value to false instead of deleting it to avoid changing object structure
// https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions
resultSet[k] = !!object[k];
}
}
}
var SPACE = /\s+/;
function _parseString (resultSet, str) {
var array = str.split(SPACE);
var length = array.length;
for (var i = 0; i < length; ++i) {
resultSet[array[i]] = true;
}
}
function _parse (resultSet, arg) {
if (!arg) return;
var argType = typeof arg;
// 'foo bar'
if (argType === 'string') {
_parseString(resultSet, arg);
// ['foo', 'bar', ...]
} else if (Array.isArray(arg)) {
_parseArray(resultSet, arg);
// { 'foo': true, ... }
} else if (argType === 'object') {
_parseObject(resultSet, arg);
// '130'
} else if (argType === 'number') {
_parseNumber(resultSet, arg);
}
}
function _classNames () {
// don't leak arguments
// https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments
var len = arguments.length;
var args = Array(len);
for (var i = 0; i < len; i++) {
args[i] = arguments[i];
}
var classSet = new StorageObject();
_parseArray(classSet, args);
var list = [];
for (var k in classSet) {
if (classSet[k]) {
list.push(k);
}
}
return list.join(' ');
}
return _classNames;
})();
if (typeof module !== 'undefined' && module.exports) {
module.exports = classNames;
} else {
// register as 'classnames', consistent with npm package name
!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
return classNames;
}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
}
}());
/***/ }),
/***/ "./node_modules/core-js/es/array/from.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/es/array/from.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! ../../modules/es.string.iterator */ "./node_modules/core-js/modules/es.string.iterator.js");
__webpack_require__(/*! ../../modules/es.array.from */ "./node_modules/core-js/modules/es.array.from.js");
var path = __webpack_require__(/*! ../../internals/path */ "./node_modules/core-js/internals/path.js");
module.exports = path.Array.from;
/***/ }),
/***/ "./node_modules/core-js/internals/a-function.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/a-function.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (it) {
if (typeof it != 'function') {
throw TypeError(String(it) + ' is not a function');
} return it;
};
/***/ }),
/***/ "./node_modules/core-js/internals/an-object.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/an-object.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
module.exports = function (it) {
if (!isObject(it)) {
throw TypeError(String(it) + ' is not an object');
} return it;
};
/***/ }),
/***/ "./node_modules/core-js/internals/array-from.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/array-from.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var bind = __webpack_require__(/*! ../internals/bind-context */ "./node_modules/core-js/internals/bind-context.js");
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
var callWithSafeIterationClosing = __webpack_require__(/*! ../internals/call-with-safe-iteration-closing */ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js");
var isArrayIteratorMethod = __webpack_require__(/*! ../internals/is-array-iterator-method */ "./node_modules/core-js/internals/is-array-iterator-method.js");
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
var createProperty = __webpack_require__(/*! ../internals/create-property */ "./node_modules/core-js/internals/create-property.js");
var getIteratorMethod = __webpack_require__(/*! ../internals/get-iterator-method */ "./node_modules/core-js/internals/get-iterator-method.js");
// `Array.from` method
// https://tc39.github.io/ecma262/#sec-array.from
module.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {
var O = toObject(arrayLike);
var C = typeof this == 'function' ? this : Array;
var argumentsLength = arguments.length;
var mapfn = argumentsLength > 1 ? arguments[1] : undefined;
var mapping = mapfn !== undefined;
var index = 0;
var iteratorMethod = getIteratorMethod(O);
var length, result, step, iterator;
if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);
// if the target is not iterable or it's an array with the default iterator - use a simple case
if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {
iterator = iteratorMethod.call(O);
result = new C();
for (;!(step = iterator.next()).done; index++) {
createProperty(result, index, mapping
? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true)
: step.value
);
}
} else {
length = toLength(O.length);
result = new C(length);
for (;length > index; index++) {
createProperty(result, index, mapping ? mapfn(O[index], index) : O[index]);
}
}
result.length = index;
return result;
};
/***/ }),
/***/ "./node_modules/core-js/internals/array-includes.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/array-includes.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
var toLength = __webpack_require__(/*! ../internals/to-length */ "./node_modules/core-js/internals/to-length.js");
var toAbsoluteIndex = __webpack_require__(/*! ../internals/to-absolute-index */ "./node_modules/core-js/internals/to-absolute-index.js");
// `Array.prototype.{ indexOf, includes }` methods implementation
// false -> Array#indexOf
// https://tc39.github.io/ecma262/#sec-array.prototype.indexof
// true -> Array#includes
// https://tc39.github.io/ecma262/#sec-array.prototype.includes
module.exports = function (IS_INCLUDES) {
return function ($this, el, fromIndex) {
var O = toIndexedObject($this);
var length = toLength(O.length);
var index = toAbsoluteIndex(fromIndex, length);
var value;
// Array#includes uses SameValueZero equality algorithm
// eslint-disable-next-line no-self-compare
if (IS_INCLUDES && el != el) while (length > index) {
value = O[index++];
// eslint-disable-next-line no-self-compare
if (value != value) return true;
// Array#indexOf ignores holes, Array#includes - not
} else for (;length > index; index++) if (IS_INCLUDES || index in O) {
if (O[index] === el) return IS_INCLUDES || index || 0;
} return !IS_INCLUDES && -1;
};
};
/***/ }),
/***/ "./node_modules/core-js/internals/bind-context.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/bind-context.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var aFunction = __webpack_require__(/*! ../internals/a-function */ "./node_modules/core-js/internals/a-function.js");
// optional / simple context binding
module.exports = function (fn, that, length) {
aFunction(fn);
if (that === undefined) return fn;
switch (length) {
case 0: return function () {
return fn.call(that);
};
case 1: return function (a) {
return fn.call(that, a);
};
case 2: return function (a, b) {
return fn.call(that, a, b);
};
case 3: return function (a, b, c) {
return fn.call(that, a, b, c);
};
}
return function (/* ...args */) {
return fn.apply(that, arguments);
};
};
/***/ }),
/***/ "./node_modules/core-js/internals/call-with-safe-iteration-closing.js":
/*!****************************************************************************!*\
!*** ./node_modules/core-js/internals/call-with-safe-iteration-closing.js ***!
\****************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
// call something on iterator step with safe closing on error
module.exports = function (iterator, fn, value, ENTRIES) {
try {
return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);
// 7.4.6 IteratorClose(iterator, completion)
} catch (error) {
var returnMethod = iterator['return'];
if (returnMethod !== undefined) anObject(returnMethod.call(iterator));
throw error;
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/check-correctness-of-iteration.js":
/*!**************************************************************************!*\
!*** ./node_modules/core-js/internals/check-correctness-of-iteration.js ***!
\**************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var ITERATOR = wellKnownSymbol('iterator');
var SAFE_CLOSING = false;
try {
var called = 0;
var iteratorWithReturn = {
next: function () {
return { done: !!called++ };
},
'return': function () {
SAFE_CLOSING = true;
}
};
iteratorWithReturn[ITERATOR] = function () {
return this;
};
// eslint-disable-next-line no-throw-literal
Array.from(iteratorWithReturn, function () { throw 2; });
} catch (error) { /* empty */ }
module.exports = function (exec, SKIP_CLOSING) {
if (!SKIP_CLOSING && !SAFE_CLOSING) return false;
var ITERATION_SUPPORT = false;
try {
var object = {};
object[ITERATOR] = function () {
return {
next: function () {
return { done: ITERATION_SUPPORT = true };
}
};
};
exec(object);
} catch (error) { /* empty */ }
return ITERATION_SUPPORT;
};
/***/ }),
/***/ "./node_modules/core-js/internals/classof-raw.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/classof-raw.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var toString = {}.toString;
module.exports = function (it) {
return toString.call(it).slice(8, -1);
};
/***/ }),
/***/ "./node_modules/core-js/internals/classof.js":
/*!***************************************************!*\
!*** ./node_modules/core-js/internals/classof.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var classofRaw = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
// ES3 wrong here
var CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';
// fallback for IE11 Script Access Denied error
var tryGet = function (it, key) {
try {
return it[key];
} catch (error) { /* empty */ }
};
// getting tag from ES6+ `Object.prototype.toString`
module.exports = function (it) {
var O, tag, result;
return it === undefined ? 'Undefined' : it === null ? 'Null'
// @@toStringTag case
: typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag
// builtinTag case
: CORRECT_ARGUMENTS ? classofRaw(O)
// ES3 arguments fallback
: (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;
};
/***/ }),
/***/ "./node_modules/core-js/internals/copy-constructor-properties.js":
/*!***********************************************************************!*\
!*** ./node_modules/core-js/internals/copy-constructor-properties.js ***!
\***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var ownKeys = __webpack_require__(/*! ../internals/own-keys */ "./node_modules/core-js/internals/own-keys.js");
var getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
module.exports = function (target, source) {
var keys = ownKeys(source);
var defineProperty = definePropertyModule.f;
var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;
for (var i = 0; i < keys.length; i++) {
var key = keys[i];
if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/correct-prototype-getter.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/correct-prototype-getter.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
module.exports = !fails(function () {
function F() { /* empty */ }
F.prototype.constructor = null;
return Object.getPrototypeOf(new F()) !== F.prototype;
});
/***/ }),
/***/ "./node_modules/core-js/internals/create-iterator-constructor.js":
/*!***********************************************************************!*\
!*** ./node_modules/core-js/internals/create-iterator-constructor.js ***!
\***********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var IteratorPrototype = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js").IteratorPrototype;
var create = __webpack_require__(/*! ../internals/object-create */ "./node_modules/core-js/internals/object-create.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var returnThis = function () { return this; };
module.exports = function (IteratorConstructor, NAME, next) {
var TO_STRING_TAG = NAME + ' Iterator';
IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });
setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);
Iterators[TO_STRING_TAG] = returnThis;
return IteratorConstructor;
};
/***/ }),
/***/ "./node_modules/core-js/internals/create-property-descriptor.js":
/*!**********************************************************************!*\
!*** ./node_modules/core-js/internals/create-property-descriptor.js ***!
\**********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (bitmap, value) {
return {
enumerable: !(bitmap & 1),
configurable: !(bitmap & 2),
writable: !(bitmap & 4),
value: value
};
};
/***/ }),
/***/ "./node_modules/core-js/internals/create-property.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/create-property.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
module.exports = function (object, key, value) {
var propertyKey = toPrimitive(key);
if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));
else object[propertyKey] = value;
};
/***/ }),
/***/ "./node_modules/core-js/internals/define-iterator.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/define-iterator.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
var createIteratorConstructor = __webpack_require__(/*! ../internals/create-iterator-constructor */ "./node_modules/core-js/internals/create-iterator-constructor.js");
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");
var setPrototypeOf = __webpack_require__(/*! ../internals/object-set-prototype-of */ "./node_modules/core-js/internals/object-set-prototype-of.js");
var setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ "./node_modules/core-js/internals/set-to-string-tag.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var IteratorsCore = __webpack_require__(/*! ../internals/iterators-core */ "./node_modules/core-js/internals/iterators-core.js");
var IteratorPrototype = IteratorsCore.IteratorPrototype;
var BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;
var ITERATOR = wellKnownSymbol('iterator');
var KEYS = 'keys';
var VALUES = 'values';
var ENTRIES = 'entries';
var returnThis = function () { return this; };
module.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {
createIteratorConstructor(IteratorConstructor, NAME, next);
var getIterationMethod = function (KIND) {
if (KIND === DEFAULT && defaultIterator) return defaultIterator;
if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];
switch (KIND) {
case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };
case VALUES: return function values() { return new IteratorConstructor(this, KIND); };
case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };
} return function () { return new IteratorConstructor(this); };
};
var TO_STRING_TAG = NAME + ' Iterator';
var INCORRECT_VALUES_NAME = false;
var IterablePrototype = Iterable.prototype;
var nativeIterator = IterablePrototype[ITERATOR]
|| IterablePrototype['@@iterator']
|| DEFAULT && IterablePrototype[DEFAULT];
var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);
var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;
var CurrentIteratorPrototype, methods, KEY;
// fix native
if (anyNativeIterator) {
CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));
if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {
if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {
if (setPrototypeOf) {
setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);
} else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {
hide(CurrentIteratorPrototype, ITERATOR, returnThis);
}
}
// Set @@toStringTag to native iterators
setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);
if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;
}
}
// fix Array#{values, @@iterator}.name in V8 / FF
if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {
INCORRECT_VALUES_NAME = true;
defaultIterator = function values() { return nativeIterator.call(this); };
}
// define iterator
if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {
hide(IterablePrototype, ITERATOR, defaultIterator);
}
Iterators[NAME] = defaultIterator;
// export additional methods
if (DEFAULT) {
methods = {
values: getIterationMethod(VALUES),
keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),
entries: getIterationMethod(ENTRIES)
};
if (FORCED) for (KEY in methods) {
if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {
redefine(IterablePrototype, KEY, methods[KEY]);
}
} else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);
}
return methods;
};
/***/ }),
/***/ "./node_modules/core-js/internals/descriptors.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/descriptors.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
// Thank's IE8 for his funny defineProperty
module.exports = !fails(function () {
return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;
});
/***/ }),
/***/ "./node_modules/core-js/internals/document-create-element.js":
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/document-create-element.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var document = global.document;
// typeof document.createElement is 'object' in old IE
var exist = isObject(document) && isObject(document.createElement);
module.exports = function (it) {
return exist ? document.createElement(it) : {};
};
/***/ }),
/***/ "./node_modules/core-js/internals/enum-bug-keys.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/enum-bug-keys.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
// IE8- don't enum bug keys
module.exports = [
'constructor',
'hasOwnProperty',
'isPrototypeOf',
'propertyIsEnumerable',
'toLocaleString',
'toString',
'valueOf'
];
/***/ }),
/***/ "./node_modules/core-js/internals/export.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/export.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var getOwnPropertyDescriptor = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ "./node_modules/core-js/internals/object-get-own-property-descriptor.js").f;
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var redefine = __webpack_require__(/*! ../internals/redefine */ "./node_modules/core-js/internals/redefine.js");
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
var copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ "./node_modules/core-js/internals/copy-constructor-properties.js");
var isForced = __webpack_require__(/*! ../internals/is-forced */ "./node_modules/core-js/internals/is-forced.js");
/*
options.target - name of the target object
options.global - target is the global object
options.stat - export as static methods of target
options.proto - export as prototype methods of target
options.real - real prototype method for the `pure` version
options.forced - export even if the native feature is available
options.bind - bind methods to the target, required for the `pure` version
options.wrap - wrap constructors to preventing global pollution, required for the `pure` version
options.unsafe - use the simple assignment of property instead of delete + defineProperty
options.sham - add a flag to not completely full polyfills
options.enumerable - export as enumerable property
options.noTargetGet - prevent calling a getter on target
*/
module.exports = function (options, source) {
var TARGET = options.target;
var GLOBAL = options.global;
var STATIC = options.stat;
var FORCED, target, key, targetProperty, sourceProperty, descriptor;
if (GLOBAL) {
target = global;
} else if (STATIC) {
target = global[TARGET] || setGlobal(TARGET, {});
} else {
target = (global[TARGET] || {}).prototype;
}
if (target) for (key in source) {
sourceProperty = source[key];
if (options.noTargetGet) {
descriptor = getOwnPropertyDescriptor(target, key);
targetProperty = descriptor && descriptor.value;
} else targetProperty = target[key];
FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
// contained in target
if (!FORCED && targetProperty !== undefined) {
if (typeof sourceProperty === typeof targetProperty) continue;
copyConstructorProperties(sourceProperty, targetProperty);
}
// add a flag to not completely full polyfills
if (options.sham || (targetProperty && targetProperty.sham)) {
hide(sourceProperty, 'sham', true);
}
// extend global
redefine(target, key, sourceProperty, options);
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/fails.js":
/*!*************************************************!*\
!*** ./node_modules/core-js/internals/fails.js ***!
\*************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (exec) {
try {
return !!exec();
} catch (error) {
return true;
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/function-to-string.js":
/*!**************************************************************!*\
!*** ./node_modules/core-js/internals/function-to-string.js ***!
\**************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
module.exports = shared('native-function-to-string', Function.toString);
/***/ }),
/***/ "./node_modules/core-js/internals/get-iterator-method.js":
/*!***************************************************************!*\
!*** ./node_modules/core-js/internals/get-iterator-method.js ***!
\***************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var classof = __webpack_require__(/*! ../internals/classof */ "./node_modules/core-js/internals/classof.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var ITERATOR = wellKnownSymbol('iterator');
module.exports = function (it) {
if (it != undefined) return it[ITERATOR]
|| it['@@iterator']
|| Iterators[classof(it)];
};
/***/ }),
/***/ "./node_modules/core-js/internals/global.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/global.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';
var check = function (it) {
return it && it.Math == Math && it;
};
// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
module.exports =
// eslint-disable-next-line no-undef
check(typeof globalThis == O && globalThis) ||
check(typeof window == O && window) ||
check(typeof self == O && self) ||
check(typeof global == O && global) ||
// eslint-disable-next-line no-new-func
Function('return this')();
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js")));
/***/ }),
/***/ "./node_modules/core-js/internals/has.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/internals/has.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var hasOwnProperty = {}.hasOwnProperty;
module.exports = function (it, key) {
return hasOwnProperty.call(it, key);
};
/***/ }),
/***/ "./node_modules/core-js/internals/hidden-keys.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/hidden-keys.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/***/ "./node_modules/core-js/internals/hide.js":
/*!************************************************!*\
!*** ./node_modules/core-js/internals/hide.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
module.exports = DESCRIPTORS ? function (object, key, value) {
return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));
} : function (object, key, value) {
object[key] = value;
return object;
};
/***/ }),
/***/ "./node_modules/core-js/internals/html.js":
/*!************************************************!*\
!*** ./node_modules/core-js/internals/html.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var document = global.document;
module.exports = document && document.documentElement;
/***/ }),
/***/ "./node_modules/core-js/internals/ie8-dom-define.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/ie8-dom-define.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var createElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
// Thank's IE8 for his funny defineProperty
module.exports = !DESCRIPTORS && !fails(function () {
return Object.defineProperty(createElement('div'), 'a', {
get: function () { return 7; }
}).a != 7;
});
/***/ }),
/***/ "./node_modules/core-js/internals/indexed-object.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/indexed-object.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// fallback for non-array-like ES3 and non-enumerable old V8 strings
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var classof = __webpack_require__(/*! ../internals/classof-raw */ "./node_modules/core-js/internals/classof-raw.js");
var split = ''.split;
module.exports = fails(function () {
// throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
// eslint-disable-next-line no-prototype-builtins
return !Object('z').propertyIsEnumerable(0);
}) ? function (it) {
return classof(it) == 'String' ? split.call(it, '') : Object(it);
} : Object;
/***/ }),
/***/ "./node_modules/core-js/internals/internal-state.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/internal-state.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var NATIVE_WEAK_MAP = __webpack_require__(/*! ../internals/native-weak-map */ "./node_modules/core-js/internals/native-weak-map.js");
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var objectHas = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
var WeakMap = global.WeakMap;
var set, get, has;
var enforce = function (it) {
return has(it) ? get(it) : set(it, {});
};
var getterFor = function (TYPE) {
return function (it) {
var state;
if (!isObject(it) || (state = get(it)).type !== TYPE) {
throw TypeError('Incompatible receiver, ' + TYPE + ' required');
} return state;
};
};
if (NATIVE_WEAK_MAP) {
var store = new WeakMap();
var wmget = store.get;
var wmhas = store.has;
var wmset = store.set;
set = function (it, metadata) {
wmset.call(store, it, metadata);
return metadata;
};
get = function (it) {
return wmget.call(store, it) || {};
};
has = function (it) {
return wmhas.call(store, it);
};
} else {
var STATE = sharedKey('state');
hiddenKeys[STATE] = true;
set = function (it, metadata) {
hide(it, STATE, metadata);
return metadata;
};
get = function (it) {
return objectHas(it, STATE) ? it[STATE] : {};
};
has = function (it) {
return objectHas(it, STATE);
};
}
module.exports = {
set: set,
get: get,
has: has,
enforce: enforce,
getterFor: getterFor
};
/***/ }),
/***/ "./node_modules/core-js/internals/is-array-iterator-method.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/is-array-iterator-method.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var Iterators = __webpack_require__(/*! ../internals/iterators */ "./node_modules/core-js/internals/iterators.js");
var ITERATOR = wellKnownSymbol('iterator');
var ArrayPrototype = Array.prototype;
// check on default Array iterator
module.exports = function (it) {
return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);
};
/***/ }),
/***/ "./node_modules/core-js/internals/is-forced.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-forced.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
var replacement = /#|\.prototype\./;
var isForced = function (feature, detection) {
var value = data[normalize(feature)];
return value == POLYFILL ? true
: value == NATIVE ? false
: typeof detection == 'function' ? fails(detection)
: !!detection;
};
var normalize = isForced.normalize = function (string) {
return String(string).replace(replacement, '.').toLowerCase();
};
var data = isForced.data = {};
var NATIVE = isForced.NATIVE = 'N';
var POLYFILL = isForced.POLYFILL = 'P';
module.exports = isForced;
/***/ }),
/***/ "./node_modules/core-js/internals/is-object.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/is-object.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = function (it) {
return typeof it === 'object' ? it !== null : typeof it === 'function';
};
/***/ }),
/***/ "./node_modules/core-js/internals/is-pure.js":
/*!***************************************************!*\
!*** ./node_modules/core-js/internals/is-pure.js ***!
\***************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = false;
/***/ }),
/***/ "./node_modules/core-js/internals/iterators-core.js":
/*!**********************************************************!*\
!*** ./node_modules/core-js/internals/iterators-core.js ***!
\**********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var getPrototypeOf = __webpack_require__(/*! ../internals/object-get-prototype-of */ "./node_modules/core-js/internals/object-get-prototype-of.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
var ITERATOR = wellKnownSymbol('iterator');
var BUGGY_SAFARI_ITERATORS = false;
var returnThis = function () { return this; };
// `%IteratorPrototype%` object
// https://tc39.github.io/ecma262/#sec-%iteratorprototype%-object
var IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;
if ([].keys) {
arrayIterator = [].keys();
// Safari 8 has buggy iterators w/o `next`
if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;
else {
PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));
if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;
}
}
if (IteratorPrototype == undefined) IteratorPrototype = {};
// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()
if (!IS_PURE && !has(IteratorPrototype, ITERATOR)) hide(IteratorPrototype, ITERATOR, returnThis);
module.exports = {
IteratorPrototype: IteratorPrototype,
BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS
};
/***/ }),
/***/ "./node_modules/core-js/internals/iterators.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/iterators.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
module.exports = {};
/***/ }),
/***/ "./node_modules/core-js/internals/native-symbol.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/native-symbol.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var fails = __webpack_require__(/*! ../internals/fails */ "./node_modules/core-js/internals/fails.js");
module.exports = !!Object.getOwnPropertySymbols && !fails(function () {
// Chrome 38 Symbol has incorrect toString conversion
// eslint-disable-next-line no-undef
return !String(Symbol());
});
/***/ }),
/***/ "./node_modules/core-js/internals/native-weak-map.js":
/*!***********************************************************!*\
!*** ./node_modules/core-js/internals/native-weak-map.js ***!
\***********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
var WeakMap = global.WeakMap;
module.exports = typeof WeakMap === 'function' && /native code/.test(nativeFunctionToString.call(WeakMap));
/***/ }),
/***/ "./node_modules/core-js/internals/object-create.js":
/*!*********************************************************!*\
!*** ./node_modules/core-js/internals/object-create.js ***!
\*********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ "./node_modules/core-js/internals/object-define-properties.js");
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
var html = __webpack_require__(/*! ../internals/html */ "./node_modules/core-js/internals/html.js");
var documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ "./node_modules/core-js/internals/document-create-element.js");
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
var IE_PROTO = sharedKey('IE_PROTO');
var PROTOTYPE = 'prototype';
var Empty = function () { /* empty */ };
// Create object with fake `null` prototype: use iframe Object with cleared prototype
var createDict = function () {
// Thrash, waste and sodomy: IE GC bug
var iframe = documentCreateElement('iframe');
var length = enumBugKeys.length;
var lt = '<';
var script = 'script';
var gt = '>';
var js = 'java' + script + ':';
var iframeDocument;
iframe.style.display = 'none';
html.appendChild(iframe);
iframe.src = String(js);
iframeDocument = iframe.contentWindow.document;
iframeDocument.open();
iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);
iframeDocument.close();
createDict = iframeDocument.F;
while (length--) delete createDict[PROTOTYPE][enumBugKeys[length]];
return createDict();
};
// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])
module.exports = Object.create || function create(O, Properties) {
var result;
if (O !== null) {
Empty[PROTOTYPE] = anObject(O);
result = new Empty();
Empty[PROTOTYPE] = null;
// add "__proto__" for Object.getPrototypeOf polyfill
result[IE_PROTO] = O;
} else result = createDict();
return Properties === undefined ? result : defineProperties(result, Properties);
};
hiddenKeys[IE_PROTO] = true;
/***/ }),
/***/ "./node_modules/core-js/internals/object-define-properties.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/object-define-properties.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var objectKeys = __webpack_require__(/*! ../internals/object-keys */ "./node_modules/core-js/internals/object-keys.js");
module.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {
anObject(O);
var keys = objectKeys(Properties);
var length = keys.length;
var i = 0;
var key;
while (length > i) definePropertyModule.f(O, key = keys[i++], Properties[key]);
return O;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-define-property.js":
/*!******************************************************************!*\
!*** ./node_modules/core-js/internals/object-define-property.js ***!
\******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
var nativeDefineProperty = Object.defineProperty;
exports.f = DESCRIPTORS ? nativeDefineProperty : function defineProperty(O, P, Attributes) {
anObject(O);
P = toPrimitive(P, true);
anObject(Attributes);
if (IE8_DOM_DEFINE) try {
return nativeDefineProperty(O, P, Attributes);
} catch (error) { /* empty */ }
if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
if ('value' in Attributes) O[P] = Attributes.value;
return O;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-own-property-descriptor.js":
/*!******************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-descriptor.js ***!
\******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js");
var propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ "./node_modules/core-js/internals/object-property-is-enumerable.js");
var createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ "./node_modules/core-js/internals/create-property-descriptor.js");
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
var toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ "./node_modules/core-js/internals/to-primitive.js");
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var IE8_DOM_DEFINE = __webpack_require__(/*! ../internals/ie8-dom-define */ "./node_modules/core-js/internals/ie8-dom-define.js");
var nativeGetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
exports.f = DESCRIPTORS ? nativeGetOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
O = toIndexedObject(O);
P = toPrimitive(P, true);
if (IE8_DOM_DEFINE) try {
return nativeGetOwnPropertyDescriptor(O, P);
} catch (error) { /* empty */ }
if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-own-property-names.js":
/*!*************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-names.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// 19.1.2.7 / 15.2.3.4 Object.getOwnPropertyNames(O)
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
var hiddenKeys = enumBugKeys.concat('length', 'prototype');
exports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
return internalObjectKeys(O, hiddenKeys);
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-own-property-symbols.js":
/*!***************************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-own-property-symbols.js ***!
\***************************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
exports.f = Object.getOwnPropertySymbols;
/***/ }),
/***/ "./node_modules/core-js/internals/object-get-prototype-of.js":
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/object-get-prototype-of.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var toObject = __webpack_require__(/*! ../internals/to-object */ "./node_modules/core-js/internals/to-object.js");
var sharedKey = __webpack_require__(/*! ../internals/shared-key */ "./node_modules/core-js/internals/shared-key.js");
var CORRECT_PROTOTYPE_GETTER = __webpack_require__(/*! ../internals/correct-prototype-getter */ "./node_modules/core-js/internals/correct-prototype-getter.js");
var IE_PROTO = sharedKey('IE_PROTO');
var ObjectPrototype = Object.prototype;
// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)
module.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {
O = toObject(O);
if (has(O, IE_PROTO)) return O[IE_PROTO];
if (typeof O.constructor == 'function' && O instanceof O.constructor) {
return O.constructor.prototype;
} return O instanceof Object ? ObjectPrototype : null;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-keys-internal.js":
/*!****************************************************************!*\
!*** ./node_modules/core-js/internals/object-keys-internal.js ***!
\****************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ "./node_modules/core-js/internals/to-indexed-object.js");
var arrayIncludes = __webpack_require__(/*! ../internals/array-includes */ "./node_modules/core-js/internals/array-includes.js");
var hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ "./node_modules/core-js/internals/hidden-keys.js");
var arrayIndexOf = arrayIncludes(false);
module.exports = function (object, names) {
var O = toIndexedObject(object);
var i = 0;
var result = [];
var key;
for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);
// Don't enum bug & hidden keys
while (names.length > i) if (has(O, key = names[i++])) {
~arrayIndexOf(result, key) || result.push(key);
}
return result;
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-keys.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/internals/object-keys.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var internalObjectKeys = __webpack_require__(/*! ../internals/object-keys-internal */ "./node_modules/core-js/internals/object-keys-internal.js");
var enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ "./node_modules/core-js/internals/enum-bug-keys.js");
// 19.1.2.14 / 15.2.3.14 Object.keys(O)
module.exports = Object.keys || function keys(O) {
return internalObjectKeys(O, enumBugKeys);
};
/***/ }),
/***/ "./node_modules/core-js/internals/object-property-is-enumerable.js":
/*!*************************************************************************!*\
!*** ./node_modules/core-js/internals/object-property-is-enumerable.js ***!
\*************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var nativePropertyIsEnumerable = {}.propertyIsEnumerable;
var getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;
// Nashorn ~ JDK8 bug
var NASHORN_BUG = getOwnPropertyDescriptor && !nativePropertyIsEnumerable.call({ 1: 2 }, 1);
exports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {
var descriptor = getOwnPropertyDescriptor(this, V);
return !!descriptor && descriptor.enumerable;
} : nativePropertyIsEnumerable;
/***/ }),
/***/ "./node_modules/core-js/internals/object-set-prototype-of.js":
/*!*******************************************************************!*\
!*** ./node_modules/core-js/internals/object-set-prototype-of.js ***!
\*******************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var validateSetPrototypeOfArguments = __webpack_require__(/*! ../internals/validate-set-prototype-of-arguments */ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js");
// Works with __proto__ only. Old v8 can't work with null proto objects.
/* eslint-disable no-proto */
module.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {
var correctSetter = false;
var test = {};
var setter;
try {
setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
setter.call(test, []);
correctSetter = test instanceof Array;
} catch (error) { /* empty */ }
return function setPrototypeOf(O, proto) {
validateSetPrototypeOfArguments(O, proto);
if (correctSetter) setter.call(O, proto);
else O.__proto__ = proto;
return O;
};
}() : undefined);
/***/ }),
/***/ "./node_modules/core-js/internals/own-keys.js":
/*!****************************************************!*\
!*** ./node_modules/core-js/internals/own-keys.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var getOwnPropertyNamesModule = __webpack_require__(/*! ../internals/object-get-own-property-names */ "./node_modules/core-js/internals/object-get-own-property-names.js");
var getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ "./node_modules/core-js/internals/object-get-own-property-symbols.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
var Reflect = global.Reflect;
// all object keys, includes non-enumerable and symbols
module.exports = Reflect && Reflect.ownKeys || function ownKeys(it) {
var keys = getOwnPropertyNamesModule.f(anObject(it));
var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;
return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
};
/***/ }),
/***/ "./node_modules/core-js/internals/path.js":
/*!************************************************!*\
!*** ./node_modules/core-js/internals/path.js ***!
\************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
/***/ }),
/***/ "./node_modules/core-js/internals/redefine.js":
/*!****************************************************!*\
!*** ./node_modules/core-js/internals/redefine.js ***!
\****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
var nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ "./node_modules/core-js/internals/function-to-string.js");
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
var getInternalState = InternalStateModule.get;
var enforceInternalState = InternalStateModule.enforce;
var TEMPLATE = String(nativeFunctionToString).split('toString');
shared('inspectSource', function (it) {
return nativeFunctionToString.call(it);
});
(module.exports = function (O, key, value, options) {
var unsafe = options ? !!options.unsafe : false;
var simple = options ? !!options.enumerable : false;
var noTargetGet = options ? !!options.noTargetGet : false;
if (typeof value == 'function') {
if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);
enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');
}
if (O === global) {
if (simple) O[key] = value;
else setGlobal(key, value);
return;
} else if (!unsafe) {
delete O[key];
} else if (!noTargetGet && O[key]) {
simple = true;
}
if (simple) O[key] = value;
else hide(O, key, value);
// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
})(Function.prototype, 'toString', function toString() {
return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);
});
/***/ }),
/***/ "./node_modules/core-js/internals/require-object-coercible.js":
/*!********************************************************************!*\
!*** ./node_modules/core-js/internals/require-object-coercible.js ***!
\********************************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
// `RequireObjectCoercible` abstract operation
// https://tc39.github.io/ecma262/#sec-requireobjectcoercible
module.exports = function (it) {
if (it == undefined) throw TypeError("Can't call method on " + it);
return it;
};
/***/ }),
/***/ "./node_modules/core-js/internals/set-global.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/set-global.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var hide = __webpack_require__(/*! ../internals/hide */ "./node_modules/core-js/internals/hide.js");
module.exports = function (key, value) {
try {
hide(global, key, value);
} catch (error) {
global[key] = value;
} return value;
};
/***/ }),
/***/ "./node_modules/core-js/internals/set-to-string-tag.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/set-to-string-tag.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var defineProperty = __webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f;
var has = __webpack_require__(/*! ../internals/has */ "./node_modules/core-js/internals/has.js");
var wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ "./node_modules/core-js/internals/well-known-symbol.js");
var TO_STRING_TAG = wellKnownSymbol('toStringTag');
module.exports = function (it, TAG, STATIC) {
if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {
defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/shared-key.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/shared-key.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
var keys = shared('keys');
module.exports = function (key) {
return keys[key] || (keys[key] = uid(key));
};
/***/ }),
/***/ "./node_modules/core-js/internals/shared.js":
/*!**************************************************!*\
!*** ./node_modules/core-js/internals/shared.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var setGlobal = __webpack_require__(/*! ../internals/set-global */ "./node_modules/core-js/internals/set-global.js");
var IS_PURE = __webpack_require__(/*! ../internals/is-pure */ "./node_modules/core-js/internals/is-pure.js");
var SHARED = '__core-js_shared__';
var store = global[SHARED] || setGlobal(SHARED, {});
(module.exports = function (key, value) {
return store[key] || (store[key] = value !== undefined ? value : {});
})('versions', []).push({
version: '3.1.3',
mode: IS_PURE ? 'pure' : 'global',
copyright: '© 2019 Denis Pushkarev (zloirock.ru)'
});
/***/ }),
/***/ "./node_modules/core-js/internals/string-at.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/string-at.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
// CONVERT_TO_STRING: true -> String#at
// CONVERT_TO_STRING: false -> String#codePointAt
module.exports = function (that, pos, CONVERT_TO_STRING) {
var S = String(requireObjectCoercible(that));
var position = toInteger(pos);
var size = S.length;
var first, second;
if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
first = S.charCodeAt(position);
return first < 0xD800 || first > 0xDBFF || position + 1 === size
|| (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
? CONVERT_TO_STRING ? S.charAt(position) : first
: CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-absolute-index.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/to-absolute-index.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
var max = Math.max;
var min = Math.min;
// Helper for a popular repeating case of the spec:
// Let integer be ? ToInteger(index).
// If integer < 0, let result be max((length + integer), 0); else let result be min(length, length).
module.exports = function (index, length) {
var integer = toInteger(index);
return integer < 0 ? max(integer + length, 0) : min(integer, length);
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-indexed-object.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/to-indexed-object.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
// toObject with fallback for non-array-like ES3 strings
var IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ "./node_modules/core-js/internals/indexed-object.js");
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
module.exports = function (it) {
return IndexedObject(requireObjectCoercible(it));
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-integer.js":
/*!******************************************************!*\
!*** ./node_modules/core-js/internals/to-integer.js ***!
\******************************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var ceil = Math.ceil;
var floor = Math.floor;
// `ToInteger` abstract operation
// https://tc39.github.io/ecma262/#sec-tointeger
module.exports = function (argument) {
return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-length.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/to-length.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var toInteger = __webpack_require__(/*! ../internals/to-integer */ "./node_modules/core-js/internals/to-integer.js");
var min = Math.min;
// `ToLength` abstract operation
// https://tc39.github.io/ecma262/#sec-tolength
module.exports = function (argument) {
return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-object.js":
/*!*****************************************************!*\
!*** ./node_modules/core-js/internals/to-object.js ***!
\*****************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ "./node_modules/core-js/internals/require-object-coercible.js");
// `ToObject` abstract operation
// https://tc39.github.io/ecma262/#sec-toobject
module.exports = function (argument) {
return Object(requireObjectCoercible(argument));
};
/***/ }),
/***/ "./node_modules/core-js/internals/to-primitive.js":
/*!********************************************************!*\
!*** ./node_modules/core-js/internals/to-primitive.js ***!
\********************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
// 7.1.1 ToPrimitive(input [, PreferredType])
// instead of the ES6 spec version, we didn't implement @@toPrimitive case
// and the second argument - flag - preferred type is a string
module.exports = function (it, S) {
if (!isObject(it)) return it;
var fn, val;
if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;
if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;
throw TypeError("Can't convert object to primitive value");
};
/***/ }),
/***/ "./node_modules/core-js/internals/uid.js":
/*!***********************************************!*\
!*** ./node_modules/core-js/internals/uid.js ***!
\***********************************************/
/*! no static exports found */
/***/ (function(module, exports) {
var id = 0;
var postfix = Math.random();
module.exports = function (key) {
return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + postfix).toString(36));
};
/***/ }),
/***/ "./node_modules/core-js/internals/validate-set-prototype-of-arguments.js":
/*!*******************************************************************************!*\
!*** ./node_modules/core-js/internals/validate-set-prototype-of-arguments.js ***!
\*******************************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var isObject = __webpack_require__(/*! ../internals/is-object */ "./node_modules/core-js/internals/is-object.js");
var anObject = __webpack_require__(/*! ../internals/an-object */ "./node_modules/core-js/internals/an-object.js");
module.exports = function (O, proto) {
anObject(O);
if (!isObject(proto) && proto !== null) {
throw TypeError("Can't set " + String(proto) + ' as a prototype');
}
};
/***/ }),
/***/ "./node_modules/core-js/internals/well-known-symbol.js":
/*!*************************************************************!*\
!*** ./node_modules/core-js/internals/well-known-symbol.js ***!
\*************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var global = __webpack_require__(/*! ../internals/global */ "./node_modules/core-js/internals/global.js");
var shared = __webpack_require__(/*! ../internals/shared */ "./node_modules/core-js/internals/shared.js");
var uid = __webpack_require__(/*! ../internals/uid */ "./node_modules/core-js/internals/uid.js");
var NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ "./node_modules/core-js/internals/native-symbol.js");
var Symbol = global.Symbol;
var store = shared('wks');
module.exports = function (name) {
return store[name] || (store[name] = NATIVE_SYMBOL && Symbol[name]
|| (NATIVE_SYMBOL ? Symbol : uid)('Symbol.' + name));
};
/***/ }),
/***/ "./node_modules/core-js/modules/es.array.from.js":
/*!*******************************************************!*\
!*** ./node_modules/core-js/modules/es.array.from.js ***!
\*******************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var $ = __webpack_require__(/*! ../internals/export */ "./node_modules/core-js/internals/export.js");
var from = __webpack_require__(/*! ../internals/array-from */ "./node_modules/core-js/internals/array-from.js");
var checkCorrectnessOfIteration = __webpack_require__(/*! ../internals/check-correctness-of-iteration */ "./node_modules/core-js/internals/check-correctness-of-iteration.js");
var INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {
Array.from(iterable);
});
// `Array.from` method
// https://tc39.github.io/ecma262/#sec-array.from
$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {
from: from
});
/***/ }),
/***/ "./node_modules/core-js/modules/es.string.iterator.js":
/*!************************************************************!*\
!*** ./node_modules/core-js/modules/es.string.iterator.js ***!
\************************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var codePointAt = __webpack_require__(/*! ../internals/string-at */ "./node_modules/core-js/internals/string-at.js");
var InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ "./node_modules/core-js/internals/internal-state.js");
var defineIterator = __webpack_require__(/*! ../internals/define-iterator */ "./node_modules/core-js/internals/define-iterator.js");
var STRING_ITERATOR = 'String Iterator';
var setInternalState = InternalStateModule.set;
var getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);
// `String.prototype[@@iterator]` method
// https://tc39.github.io/ecma262/#sec-string.prototype-@@iterator
defineIterator(String, 'String', function (iterated) {
setInternalState(this, {
type: STRING_ITERATOR,
string: String(iterated),
index: 0
});
// `%StringIteratorPrototype%.next` method
// https://tc39.github.io/ecma262/#sec-%stringiteratorprototype%.next
}, function next() {
var state = getInternalState(this);
var string = state.string;
var index = state.index;
var point;
if (index >= string.length) return { value: undefined, done: true };
point = codePointAt(string, index, true);
state.index += point.length;
return { value: point, done: false };
});
/***/ }),
/***/ "./node_modules/webpack/buildin/global.js":
/*!***********************************!*\
!*** (webpack)/buildin/global.js ***!
\***********************************/
/*! no static exports found */
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || Function("return this")() || (1, eval)("this");
} catch (e) {
// This works if the window reference is available
if (typeof window === "object") g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/***/ "./src/default-attrs.json":
/*!********************************!*\
!*** ./src/default-attrs.json ***!
\********************************/
/*! exports provided: xmlns, width, height, viewBox, fill, stroke, stroke-width, stroke-linecap, stroke-linejoin, default */
/***/ (function(module) {
module.exports = {"xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"};
/***/ }),
/***/ "./src/icon.js":
/*!*********************!*\
!*** ./src/icon.js ***!
\*********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js");
var _dedupe2 = _interopRequireDefault(_dedupe);
var _defaultAttrs = __webpack_require__(/*! ./default-attrs.json */ "./src/default-attrs.json");
var _defaultAttrs2 = _interopRequireDefault(_defaultAttrs);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var Icon = function () {
function Icon(name, contents) {
var tags = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
_classCallCheck(this, Icon);
this.name = name;
this.contents = contents;
this.tags = tags;
this.attrs = _extends({}, _defaultAttrs2.default, { class: 'feather feather-' + name });
}
/**
* Create an SVG string.
* @param {Object} attrs
* @returns {string}
*/
_createClass(Icon, [{
key: 'toSvg',
value: function toSvg() {
var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var combinedAttrs = _extends({}, this.attrs, attrs, { class: (0, _dedupe2.default)(this.attrs.class, attrs.class) });
return '';
}
/**
* Return string representation of an `Icon`.
*
* Added for backward compatibility. If old code expects `feather.icons.`
* to be a string, `toString()` will get implicitly called.
*
* @returns {string}
*/
}, {
key: 'toString',
value: function toString() {
return this.contents;
}
}]);
return Icon;
}();
/**
* Convert attributes object to string of HTML attributes.
* @param {Object} attrs
* @returns {string}
*/
function attrsToString(attrs) {
return Object.keys(attrs).map(function (key) {
return key + '="' + attrs[key] + '"';
}).join(' ');
}
exports.default = Icon;
/***/ }),
/***/ "./src/icons.js":
/*!**********************!*\
!*** ./src/icons.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _icon = __webpack_require__(/*! ./icon */ "./src/icon.js");
var _icon2 = _interopRequireDefault(_icon);
var _icons = __webpack_require__(/*! ../dist/icons.json */ "./dist/icons.json");
var _icons2 = _interopRequireDefault(_icons);
var _tags = __webpack_require__(/*! ./tags.json */ "./src/tags.json");
var _tags2 = _interopRequireDefault(_tags);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = Object.keys(_icons2.default).map(function (key) {
return new _icon2.default(key, _icons2.default[key], _tags2.default[key]);
}).reduce(function (object, icon) {
object[icon.name] = icon;
return object;
}, {});
/***/ }),
/***/ "./src/index.js":
/*!**********************!*\
!*** ./src/index.js ***!
\**********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
var _icons2 = _interopRequireDefault(_icons);
var _toSvg = __webpack_require__(/*! ./to-svg */ "./src/to-svg.js");
var _toSvg2 = _interopRequireDefault(_toSvg);
var _replace = __webpack_require__(/*! ./replace */ "./src/replace.js");
var _replace2 = _interopRequireDefault(_replace);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
module.exports = { icons: _icons2.default, toSvg: _toSvg2.default, replace: _replace2.default };
/***/ }),
/***/ "./src/replace.js":
/*!************************!*\
!*** ./src/replace.js ***!
\************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; /* eslint-env browser */
var _dedupe = __webpack_require__(/*! classnames/dedupe */ "./node_modules/classnames/dedupe.js");
var _dedupe2 = _interopRequireDefault(_dedupe);
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
var _icons2 = _interopRequireDefault(_icons);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Replace all HTML elements that have a `data-feather` attribute with SVG markup
* corresponding to the element's `data-feather` attribute value.
* @param {Object} attrs
*/
function replace() {
var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
if (typeof document === 'undefined') {
throw new Error('`feather.replace()` only works in a browser environment.');
}
var elementsToReplace = document.querySelectorAll('[data-feather]');
Array.from(elementsToReplace).forEach(function (element) {
return replaceElement(element, attrs);
});
}
/**
* Replace a single HTML element with SVG markup
* corresponding to the element's `data-feather` attribute value.
* @param {HTMLElement} element
* @param {Object} attrs
*/
function replaceElement(element) {
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var elementAttrs = getAttrs(element);
var name = elementAttrs['data-feather'];
delete elementAttrs['data-feather'];
var svgString = _icons2.default[name].toSvg(_extends({}, attrs, elementAttrs, { class: (0, _dedupe2.default)(attrs.class, elementAttrs.class) }));
var svgDocument = new DOMParser().parseFromString(svgString, 'image/svg+xml');
var svgElement = svgDocument.querySelector('svg');
element.parentNode.replaceChild(svgElement, element);
}
/**
* Get the attributes of an HTML element.
* @param {HTMLElement} element
* @returns {Object}
*/
function getAttrs(element) {
return Array.from(element.attributes).reduce(function (attrs, attr) {
attrs[attr.name] = attr.value;
return attrs;
}, {});
}
exports.default = replace;
/***/ }),
/***/ "./src/tags.json":
/*!***********************!*\
!*** ./src/tags.json ***!
\***********************/
/*! exports provided: activity, airplay, alert-circle, alert-octagon, alert-triangle, align-center, align-justify, align-left, align-right, anchor, archive, at-sign, award, aperture, bar-chart, bar-chart-2, battery, battery-charging, bell, bell-off, bluetooth, book-open, book, bookmark, box, briefcase, calendar, camera, cast, chevron-down, chevron-up, circle, clipboard, clock, cloud-drizzle, cloud-lightning, cloud-rain, cloud-snow, cloud, codepen, codesandbox, code, coffee, columns, command, compass, copy, corner-down-left, corner-down-right, corner-left-down, corner-left-up, corner-right-down, corner-right-up, corner-up-left, corner-up-right, cpu, credit-card, crop, crosshair, database, delete, disc, dollar-sign, droplet, edit, edit-2, edit-3, eye, eye-off, external-link, facebook, fast-forward, figma, file-minus, file-plus, file-text, film, filter, flag, folder-minus, folder-plus, folder, framer, frown, gift, git-branch, git-commit, git-merge, git-pull-request, github, gitlab, globe, hard-drive, hash, headphones, heart, help-circle, hexagon, home, image, inbox, instagram, key, layers, layout, life-bouy, link, link-2, linkedin, list, lock, log-in, log-out, mail, map-pin, map, maximize, maximize-2, meh, menu, message-circle, message-square, mic-off, mic, minimize, minimize-2, minus, monitor, moon, more-horizontal, more-vertical, mouse-pointer, move, music, navigation, navigation-2, octagon, package, paperclip, pause, pause-circle, pen-tool, percent, phone-call, phone-forwarded, phone-incoming, phone-missed, phone-off, phone-outgoing, phone, play, pie-chart, play-circle, plus, plus-circle, plus-square, pocket, power, printer, radio, refresh-cw, refresh-ccw, repeat, rewind, rotate-ccw, rotate-cw, rss, save, scissors, search, send, settings, share-2, shield, shield-off, shopping-bag, shopping-cart, shuffle, skip-back, skip-forward, slack, slash, sliders, smartphone, smile, speaker, star, stop-circle, sun, sunrise, sunset, tablet, tag, target, terminal, thermometer, thumbs-down, thumbs-up, toggle-left, toggle-right, tool, trash, trash-2, triangle, truck, tv, twitch, twitter, type, umbrella, unlock, user-check, user-minus, user-plus, user-x, user, users, video-off, video, voicemail, volume, volume-1, volume-2, volume-x, watch, wifi-off, wifi, wind, x-circle, x-octagon, x-square, x, youtube, zap-off, zap, zoom-in, zoom-out, default */
/***/ (function(module) {
module.exports = {"activity":["pulse","health","action","motion"],"airplay":["stream","cast","mirroring"],"alert-circle":["warning","alert","danger"],"alert-octagon":["warning","alert","danger"],"alert-triangle":["warning","alert","danger"],"align-center":["text alignment","center"],"align-justify":["text alignment","justified"],"align-left":["text alignment","left"],"align-right":["text alignment","right"],"anchor":[],"archive":["index","box"],"at-sign":["mention","at","email","message"],"award":["achievement","badge"],"aperture":["camera","photo"],"bar-chart":["statistics","diagram","graph"],"bar-chart-2":["statistics","diagram","graph"],"battery":["power","electricity"],"battery-charging":["power","electricity"],"bell":["alarm","notification","sound"],"bell-off":["alarm","notification","silent"],"bluetooth":["wireless"],"book-open":["read","library"],"book":["read","dictionary","booklet","magazine","library"],"bookmark":["read","clip","marker","tag"],"box":["cube"],"briefcase":["work","bag","baggage","folder"],"calendar":["date"],"camera":["photo"],"cast":["chromecast","airplay"],"chevron-down":["expand"],"chevron-up":["collapse"],"circle":["off","zero","record"],"clipboard":["copy"],"clock":["time","watch","alarm"],"cloud-drizzle":["weather","shower"],"cloud-lightning":["weather","bolt"],"cloud-rain":["weather"],"cloud-snow":["weather","blizzard"],"cloud":["weather"],"codepen":["logo"],"codesandbox":["logo"],"code":["source","programming"],"coffee":["drink","cup","mug","tea","cafe","hot","beverage"],"columns":["layout"],"command":["keyboard","cmd","terminal","prompt"],"compass":["navigation","safari","travel","direction"],"copy":["clone","duplicate"],"corner-down-left":["arrow","return"],"corner-down-right":["arrow"],"corner-left-down":["arrow"],"corner-left-up":["arrow"],"corner-right-down":["arrow"],"corner-right-up":["arrow"],"corner-up-left":["arrow"],"corner-up-right":["arrow"],"cpu":["processor","technology"],"credit-card":["purchase","payment","cc"],"crop":["photo","image"],"crosshair":["aim","target"],"database":["storage","memory"],"delete":["remove"],"disc":["album","cd","dvd","music"],"dollar-sign":["currency","money","payment"],"droplet":["water"],"edit":["pencil","change"],"edit-2":["pencil","change"],"edit-3":["pencil","change"],"eye":["view","watch"],"eye-off":["view","watch","hide","hidden"],"external-link":["outbound"],"facebook":["logo","social"],"fast-forward":["music"],"figma":["logo","design","tool"],"file-minus":["delete","remove","erase"],"file-plus":["add","create","new"],"file-text":["data","txt","pdf"],"film":["movie","video"],"filter":["funnel","hopper"],"flag":["report"],"folder-minus":["directory"],"folder-plus":["directory"],"folder":["directory"],"framer":["logo","design","tool"],"frown":["emoji","face","bad","sad","emotion"],"gift":["present","box","birthday","party"],"git-branch":["code","version control"],"git-commit":["code","version control"],"git-merge":["code","version control"],"git-pull-request":["code","version control"],"github":["logo","version control"],"gitlab":["logo","version control"],"globe":["world","browser","language","translate"],"hard-drive":["computer","server","memory","data"],"hash":["hashtag","number","pound"],"headphones":["music","audio","sound"],"heart":["like","love","emotion"],"help-circle":["question mark"],"hexagon":["shape","node.js","logo"],"home":["house","living"],"image":["picture"],"inbox":["email"],"instagram":["logo","camera"],"key":["password","login","authentication","secure"],"layers":["stack"],"layout":["window","webpage"],"life-bouy":["help","life ring","support"],"link":["chain","url"],"link-2":["chain","url"],"linkedin":["logo","social media"],"list":["options"],"lock":["security","password","secure"],"log-in":["sign in","arrow","enter"],"log-out":["sign out","arrow","exit"],"mail":["email","message"],"map-pin":["location","navigation","travel","marker"],"map":["location","navigation","travel"],"maximize":["fullscreen"],"maximize-2":["fullscreen","arrows","expand"],"meh":["emoji","face","neutral","emotion"],"menu":["bars","navigation","hamburger"],"message-circle":["comment","chat"],"message-square":["comment","chat"],"mic-off":["record","sound","mute"],"mic":["record","sound","listen"],"minimize":["exit fullscreen","close"],"minimize-2":["exit fullscreen","arrows","close"],"minus":["subtract"],"monitor":["tv","screen","display"],"moon":["dark","night"],"more-horizontal":["ellipsis"],"more-vertical":["ellipsis"],"mouse-pointer":["arrow","cursor"],"move":["arrows"],"music":["note"],"navigation":["location","travel"],"navigation-2":["location","travel"],"octagon":["stop"],"package":["box","container"],"paperclip":["attachment"],"pause":["music","stop"],"pause-circle":["music","audio","stop"],"pen-tool":["vector","drawing"],"percent":["discount"],"phone-call":["ring"],"phone-forwarded":["call"],"phone-incoming":["call"],"phone-missed":["call"],"phone-off":["call","mute"],"phone-outgoing":["call"],"phone":["call"],"play":["music","start"],"pie-chart":["statistics","diagram"],"play-circle":["music","start"],"plus":["add","new"],"plus-circle":["add","new"],"plus-square":["add","new"],"pocket":["logo","save"],"power":["on","off"],"printer":["fax","office","device"],"radio":["signal"],"refresh-cw":["synchronise","arrows"],"refresh-ccw":["arrows"],"repeat":["loop","arrows"],"rewind":["music"],"rotate-ccw":["arrow"],"rotate-cw":["arrow"],"rss":["feed","subscribe"],"save":["floppy disk"],"scissors":["cut"],"search":["find","magnifier","magnifying glass"],"send":["message","mail","email","paper airplane","paper aeroplane"],"settings":["cog","edit","gear","preferences"],"share-2":["network","connections"],"shield":["security","secure"],"shield-off":["security","insecure"],"shopping-bag":["ecommerce","cart","purchase","store"],"shopping-cart":["ecommerce","cart","purchase","store"],"shuffle":["music"],"skip-back":["music"],"skip-forward":["music"],"slack":["logo"],"slash":["ban","no"],"sliders":["settings","controls"],"smartphone":["cellphone","device"],"smile":["emoji","face","happy","good","emotion"],"speaker":["audio","music"],"star":["bookmark","favorite","like"],"stop-circle":["media","music"],"sun":["brightness","weather","light"],"sunrise":["weather","time","morning","day"],"sunset":["weather","time","evening","night"],"tablet":["device"],"tag":["label"],"target":["logo","bullseye"],"terminal":["code","command line","prompt"],"thermometer":["temperature","celsius","fahrenheit","weather"],"thumbs-down":["dislike","bad","emotion"],"thumbs-up":["like","good","emotion"],"toggle-left":["on","off","switch"],"toggle-right":["on","off","switch"],"tool":["settings","spanner"],"trash":["garbage","delete","remove","bin"],"trash-2":["garbage","delete","remove","bin"],"triangle":["delta"],"truck":["delivery","van","shipping","transport","lorry"],"tv":["television","stream"],"twitch":["logo"],"twitter":["logo","social"],"type":["text"],"umbrella":["rain","weather"],"unlock":["security"],"user-check":["followed","subscribed"],"user-minus":["delete","remove","unfollow","unsubscribe"],"user-plus":["new","add","create","follow","subscribe"],"user-x":["delete","remove","unfollow","unsubscribe","unavailable"],"user":["person","account"],"users":["group"],"video-off":["camera","movie","film"],"video":["camera","movie","film"],"voicemail":["phone"],"volume":["music","sound","mute"],"volume-1":["music","sound"],"volume-2":["music","sound"],"volume-x":["music","sound","mute"],"watch":["clock","time"],"wifi-off":["disabled"],"wifi":["connection","signal","wireless"],"wind":["weather","air"],"x-circle":["cancel","close","delete","remove","times","clear"],"x-octagon":["delete","stop","alert","warning","times","clear"],"x-square":["cancel","close","delete","remove","times","clear"],"x":["cancel","close","delete","remove","times","clear"],"youtube":["logo","video","play"],"zap-off":["flash","camera","lightning"],"zap":["flash","camera","lightning"],"zoom-in":["magnifying glass"],"zoom-out":["magnifying glass"]};
/***/ }),
/***/ "./src/to-svg.js":
/*!***********************!*\
!*** ./src/to-svg.js ***!
\***********************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
Object.defineProperty(exports, "__esModule", {
value: true
});
var _icons = __webpack_require__(/*! ./icons */ "./src/icons.js");
var _icons2 = _interopRequireDefault(_icons);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Create an SVG string.
* @deprecated
* @param {string} name
* @param {Object} attrs
* @returns {string}
*/
function toSvg(name) {
var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
console.warn('feather.toSvg() is deprecated. Please use feather.icons[name].toSvg() instead.');
if (!name) {
throw new Error('The required `key` (icon name) parameter is missing.');
}
if (!_icons2.default[name]) {
throw new Error('No icon matching \'' + name + '\'. See the complete list of icons at https://feathericons.com');
}
return _icons2.default[name].toSvg(attrs);
}
exports.default = toSvg;
/***/ }),
/***/ 0:
/*!**************************************************!*\
!*** multi core-js/es/array/from ./src/index.js ***!
\**************************************************/
/*! no static exports found */
/***/ (function(module, exports, __webpack_require__) {
__webpack_require__(/*! core-js/es/array/from */"./node_modules/core-js/es/array/from.js");
module.exports = __webpack_require__(/*! /home/runner/work/feather/feather/src/index.js */"./src/index.js");
/***/ })
/******/ });
});
});
const VIEW_TYPE_SHORTCUTS_ANALYZER = 'keyboard-shortcuts-visualization';
const DEFAULT_FILTER_SETTINGS = {
FeaturedFirst: false,
StrictSearch: false,
HighlightCustom: false,
HighlightDuplicates: false,
DisplayWOhotkeys: false,
DisplayIDs: false,
};
const DEFAULT_PLUGIN_SETTINGS = {
showStatusBarItem: true,
filterSettings: DEFAULT_FILTER_SETTINGS,
featuredCommandIDs: [],
};
const mainSectionQwerty = {
name: 'main',
gridRatio: 3.75,
rows: [
[
{
label: 'Escape',
tryUnicode: true,
},
{
label: 'empty',
width: 1,
},
{
label: 'F1',
},
{
label: 'F2',
},
{
label: 'F3',
},
{
label: 'F4',
},
{
label: 'empty',
width: 0.5,
},
{
label: 'F5',
},
{
label: 'F6',
},
{
label: 'F7',
},
{
label: 'empty',
width: 0.5,
},
{
label: 'F8',
},
{
label: 'F9',
},
{
label: 'F10',
},
{
label: 'F11',
},
{
label: 'F12',
},
],
[
{
label: '`',
},
{
label: '1',
},
{
label: '2',
},
{
label: '3',
},
{
label: '4',
},
{
label: '5',
},
{
label: '6',
},
{
label: '7',
},
{
label: '8',
},
{
label: '9',
},
{
label: '0',
},
{
label: '-',
},
{
label: '=',
},
{
label: 'Backspace',
fontSize: 'small',
caps: 'all-small-caps',
width: 2,
},
],
[
{
label: 'Tab',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Q',
},
{
label: 'W',
},
{
label: 'E',
},
{
label: 'R',
},
{
label: 'T',
},
{
label: 'Y',
},
{
label: 'U',
},
{
label: 'I',
},
{
label: 'O',
},
{
label: 'P',
},
{
label: '[',
},
{
label: ']',
},
{
label: '\\',
width: 1.5,
},
],
[
{
label: 'CapsLock',
fontSize: 'small',
caps: 'all-small-caps',
tryUnicode: true,
width: 1.75,
},
{
label: 'A',
},
{
label: 'S',
},
{
label: 'D',
},
{
label: 'F',
},
{
label: 'G',
},
{
label: 'H',
},
{
label: 'J',
},
{
label: 'K',
},
{
label: 'L',
},
{
label: ';',
},
{
label: "'",
},
{
label: 'Enter',
fontSize: 'small',
caps: 'all-small-caps',
width: 2.25,
},
],
[
{
label: 'Shift',
fontSize: 'small',
caps: 'all-small-caps',
tryUnicode: true,
width: 2,
},
{
label: 'Z',
},
{
label: 'X',
},
{
label: 'C',
},
{
label: 'V',
},
{
label: 'B',
},
{
label: 'N',
},
{
label: 'M',
},
{
label: ',',
},
{
label: '.',
},
{
label: '/',
},
{
label: 'Shift',
fontSize: 'small',
caps: 'all-small-caps',
width: 3,
tryUnicode: true,
},
],
[
{
label: 'Control',
fontSize: 'small',
tryUnicode: true,
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Meta',
tryUnicode: true,
fontSize: 'small',
width: 1.5,
},
{
label: 'Alt',
tryUnicode: true,
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: ' ',
width: 6,
tryUnicode: true,
},
{
label: 'Alt',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Meta',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
{
label: 'Control',
fontSize: 'small',
caps: 'all-small-caps',
width: 1.5,
},
],
],
};
// keyboard layout for other keys and cursor keys
const keyboardOther = {
name: 'other',
gridRatio: 0.75,
rows: [
[
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
],
[
{
label: 'Insert',
smallText: true,
tryUnicode: true,
},
{
label: 'Home',
smallText: true,
},
{
label: 'PageUp',
smallText: true,
tryUnicode: true,
},
],
[
{
label: 'Delete',
tryUnicode: true,
smallText: true,
},
{
label: 'End',
smallText: true,
},
{
label: 'PageDown',
tryUnicode: true,
smallText: true,
},
],
[
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
],
[
{
label: 'empty',
},
{
label: 'ArrowUp',
tryUnicode: true,
},
{
label: 'empty',
},
],
[
{
label: 'ArrowLeft',
tryUnicode: true,
},
{
label: 'ArrowDown',
tryUnicode: true,
},
{
label: 'ArrowRight',
tryUnicode: true,
},
],
],
};
// keyboard layout in rows for number pad
const keyboardNum = {
name: 'num',
gridRatio: 1,
rows: [
[
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
{
label: 'empty',
},
],
[
{
label: 'NumLock',
tryUnicode: true,
},
{
label: '/',
},
{
label: '*',
},
{
label: '-',
},
{
label: 'Numpad7',
strictCode: true,
tryUnicode: true,
},
],
[
{
label: 'Numpad8',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad9',
strictCode: true,
tryUnicode: true,
},
{
label: '+',
height: 2,
},
],
[
{
label: 'Numpad4',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad5',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad6',
strictCode: true,
tryUnicode: true,
},
],
[
{
label: 'Numpad1',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad2',
strictCode: true,
tryUnicode: true,
},
{
label: 'Numpad3',
strictCode: true,
tryUnicode: true,
},
{
label: 'Enter',
height: 2,
// tryUnicode: true,
},
],
[
{
label: 'Numpad0',
strictCode: true,
tryUnicode: true,
width: 2,
},
{
label: '.',
},
],
],
};
const SpecialSymbols = {
Command: '⌘',
Option: '⌥',
ArrowLeft: '←',
ArrowUp: '↑',
ArrowRight: '→',
ArrowDown: '↓',
Space: '⎵',
' ': '⎵',
};
// https://www.toptal.com/developers/keycode/table-of-all-keycodes
const JavaSciptKeyCodes = {
3: {
Key: 'Cancel',
Code: 'Pause',
},
8: {
Key: 'Backspace',
Code: 'Backspace',
Unicode: '⌫',
},
9: {
Key: 'Tab',
Code: 'Tab',
Unicode: '⇥',
},
12: {
Key: 'Clear',
Code: 'NumLock',
Unicode: '⌧',
},
13: {
Key: 'Enter',
Code: 'Enter',
Unicode: '⏎',
},
16: {
Key: 'Shift',
Code: 'ShiftLeft',
Unicode: '⇧',
},
17: {
Key: 'Control',
Code: 'ControlLeft',
Unicode: 'Ctrl',
},
18: {
Key: 'Alt',
Code: 'AltLeft',
},
19: {
Key: 'Pause',
Code: 'Pause',
},
20: {
Key: 'CapsLock',
Code: 'CapsLock',
Unicode: '⇪',
},
27: {
Key: 'Escape',
Code: 'Escape',
Unicode: 'Esc',
},
32: {
Key: ' ',
Code: 'Space',
Unicode: '⎵',
},
33: {
Key: 'PageUp',
Code: 'Numpad9',
Unicode: 'Page
Up',
},
34: {
Key: 'PageDown',
Code: 'Numpad3',
Unicode: 'Page
Down',
},
35: {
Key: 'End',
Code: 'Numpad1',
Unicode: '⇢',
},
36: {
Key: 'Home',
Code: 'Numpad7',
Unicode: '⌂',
},
37: {
Key: 'ArrowLeft',
Code: 'ArrowLeft',
Unicode: '←',
},
38: {
Key: 'ArrowUp',
Code: 'ArrowUp',
Unicode: '↑',
},
39: {
Key: 'ArrowRight',
Code: 'ArrowRight',
Unicode: '→',
},
40: {
Key: 'ArrowDown',
Code: 'ArrowDown',
Unicode: '↓',
},
44: {
Key: 'F13',
Code: 'F13',
Unicode: '⎙',
},
45: {
Key: 'Insert',
Code: 'Numpad0',
Unicode: 'Ins',
},
46: {
Key: 'Delete',
Code: 'NumpadDecimal',
Unicode: 'Del',
},
48: {
Key: '0',
Code: 'Digit0',
Unicode: '0',
},
49: {
Key: '1',
Code: 'Digit1',
Unicode: '1',
},
50: {
Key: '2',
Code: 'Digit2',
Unicode: '2',
},
51: {
Key: '3',
Code: 'Digit3',
Unicode: '3',
},
52: {
Key: '4',
Code: 'Digit4',
Unicode: '4',
},
53: {
Key: '5',
Code: 'Digit5',
Unicode: '5',
},
54: {
Key: '6',
Code: 'Digit6',
Unicode: '6',
},
55: {
Key: '7',
Code: 'Digit7',
Unicode: '7',
},
56: {
Key: '8',
Code: 'Digit8',
Unicode: '8',
},
57: {
Key: '9',
Code: 'Digit9',
Unicode: '9',
},
58: {
Key: ':',
Code: 'Period',
},
59: {
Key: ';',
Code: 'Semicolon',
},
60: {
Key: '<',
Code: 'Backquote',
},
// 61: {
// Key: '=',
// Code: 'Equal',
// }, // firefox
63: {
Key: 'ß',
Code: 'Minus',
},
65: {
Key: 'a',
Code: 'KeyA',
},
66: {
Key: 'b',
Code: 'KeyB',
},
67: {
Key: 'c',
Code: 'KeyC',
},
68: {
Key: 'd',
Code: 'KeyD',
},
69: {
Key: 'e',
Code: 'KeyE',
},
70: {
Key: 'f',
Code: 'KeyF',
},
71: {
Key: 'g',
Code: 'KeyG',
},
72: {
Key: 'h',
Code: 'KeyH',
},
73: {
Key: 'i',
Code: 'KeyI',
},
74: {
Key: 'j',
Code: 'KeyJ',
},
75: {
Key: 'k',
Code: 'KeyK',
},
76: {
Key: 'l',
Code: 'KeyL',
},
77: {
Key: 'm',
Code: 'KeyM',
},
78: {
Key: 'n',
Code: 'KeyN',
},
79: {
Key: 'o',
Code: 'KeyO',
},
80: {
Key: 'p',
Code: 'KeyP',
},
81: {
Key: 'q',
Code: 'KeyQ',
},
82: {
Key: 'r',
Code: 'KeyR',
},
83: {
Key: 's',
Code: 'KeyS',
},
84: {
Key: 't',
Code: 'KeyT',
},
85: {
Key: 'u',
Code: 'KeyU',
},
86: {
Key: 'v',
Code: 'KeyV',
},
87: {
Key: 'w',
Code: 'KeyW',
},
88: {
Key: 'x',
Code: 'KeyX',
},
89: {
Key: 'y',
Code: 'KeyY',
},
90: {
Key: 'z',
Code: 'KeyZ',
},
91: {
Key: 'Meta',
Code: 'MetaLeft',
},
92: {
Key: 'Meta',
Code: 'MetaRight',
},
93: {
Key: 'ContextMenu',
Code: 'ContextMenu',
},
96: {
Key: '0',
Code: 'Numpad0',
Unicode: '0',
},
97: {
Key: '1',
Code: 'Numpad1',
Unicode: '1',
},
98: {
Key: '2',
Code: 'Numpad2',
Unicode: '2',
},
99: {
Key: '3',
Code: 'Numpad3',
Unicode: '3',
},
100: {
Key: '4',
Code: 'Numpad4',
Unicode: '4',
},
101: {
Key: '5',
Code: 'Numpad5',
Unicode: '5',
},
102: {
Key: '6',
Code: 'Numpad6',
Unicode: '6',
},
103: {
Key: '7',
Code: 'Numpad7',
Unicode: '8',
},
104: {
Key: '8',
Code: 'Numpad8',
Unicode: '8',
},
105: {
Key: '9',
Code: 'Numpad9',
Unicode: '9',
},
106: {
Key: '*',
Code: 'NumpadMultiply',
Unicode: '×',
},
107: {
Key: '+',
Code: 'NumpadAdd',
},
108: {
Key: ',',
Code: 'NumpadDecimal',
},
109: {
Key: '-',
Code: 'NumpadSubtract',
},
110: {
Key: '.',
Code: 'NumpadDecimal',
},
111: {
Key: '/',
Code: 'NumpadDivide',
},
112: {
Key: 'F1',
Code: 'F1',
},
113: {
Key: 'F2',
Code: 'F2',
},
114: {
Key: 'F3',
Code: 'F3',
},
115: {
Key: 'F4',
Code: 'F4',
},
116: {
Key: 'F5',
Code: 'F5',
},
117: {
Key: 'F6',
Code: 'F6',
},
118: {
Key: 'F7',
Code: 'F7',
},
119: {
Key: 'F8',
Code: 'F8',
},
120: {
Key: 'F9',
Code: 'F9',
},
121: {
Key: 'F10',
Code: 'F10',
},
122: {
Key: 'F11',
Code: 'F11',
},
123: {
Key: 'F12',
Code: 'F12',
},
124: {
Key: 'F13',
Code: 'F13',
},
125: {
Key: 'F14',
Code: 'F14',
},
126: {
Key: 'F15',
Code: 'F15',
},
127: {
Key: 'F16',
Code: 'F16',
},
128: {
Key: 'F17',
Code: 'F17',
},
129: {
Key: 'F18',
Code: 'F18',
},
130: {
Key: 'F19',
Code: 'F19',
},
131: {
Key: 'F20',
Code: 'F20',
},
132: {
Key: 'F21',
Code: 'F21',
},
133: {
Key: 'F22',
Code: 'F22',
},
134: {
Key: 'F23',
Code: 'F23',
},
135: {
Key: 'F24',
Code: 'F24',
},
136: {
Key: 'F25',
Code: 'F25',
},
137: {
Key: 'F26',
Code: 'F26',
},
138: {
Key: 'F27',
Code: 'F27',
},
139: {
Key: 'F28',
Code: 'F28',
},
140: {
Key: 'F29',
Code: 'F29',
},
141: {
Key: 'F30',
Code: 'F30',
},
142: {
Key: 'F31',
Code: 'F31',
},
143: {
Key: 'F32',
Code: 'F32',
},
144: {
Key: 'NumLock',
Code: 'NumLock',
Unicode: '⇭',
},
145: {
Key: 'ScrollLock',
Code: 'ScrollLock',
Unicode: '⤓',
},
160: {
Key: '[',
Code: 'BracketLeft',
},
161: {
Key: 'Dead',
Code: 'BracketRight',
},
163: {
Key: `\\`,
Code: 'Backquote',
},
164: {
Key: '$',
Code: 'Backslash',
},
165: {
Key: '^ù',
Code: 'Quote',
},
169: {
Key: ')',
Code: 'Minus',
},
170: {
Key: '*',
Code: 'BackSlash',
},
171: {
Key: '+',
Code: 'BracketRight',
},
173: {
Key: '-',
Code: 'Minus',
},
174: {
Key: 'AudioVolumeDown',
Code: 'AudioVolumeDown',
},
176: {
Key: 'MediaTractNext',
Code: 'MediaTrackNext',
},
177: {
Key: 'MediaTractPrevious',
Code: 'MediaTrackPrevious',
},
179: {
Key: 'MediaPlayPause',
Code: 'MediaPlayPause',
},
180: {
Key: 'LaunchMail',
Code: 'LaunchMail',
Unicode: '✉',
},
181: {
Key: 'AudioVolumeMute',
Code: 'VolumeMute',
},
182: {
Key: 'AudioVolumeDown',
Code: 'VolumeDown',
},
183: {
Key: 'AudioVolumeUp',
Code: 'VolumeUp',
},
186: {
Key: ';',
Code: 'Semicolon',
},
187: {
Key: '=',
Code: 'Equal',
},
188: {
Key: ',',
Code: 'Comma',
},
189: {
Key: '-',
Code: 'Minus',
},
190: {
Key: '.',
Code: 'Period',
},
191: {
Key: '/',
Code: 'Slash',
},
192: {
Key: '`',
Code: 'Backquote',
},
193: {
Key: '/',
Code: 'IntlRo',
},
194: {
Key: '.',
Code: 'NumpadComma',
},
219: {
Key: '[',
Code: 'BracketLeft',
},
220: {
Key: '\\',
Code: 'Backslash',
},
221: {
Key: ']',
Code: 'BracketRight',
},
222: {
Key: "'",
Code: 'Quote',
},
223: {
Key: '`',
Code: 'Backquote',
},
224: {
Key: 'Meta',
Code: 'Meta',
Unicode: '⌘',
},
225: {
Key: 'AltGraph',
Code: 'AltRight',
Unicode: '⌥',
},
226: {
Key: '\\',
Code: 'IntlBackslash',
},
};
function noop() { }
const identity = x => x;
function assign(tar, src) {
// @ts-ignore
for (const k in src)
tar[k] = src[k];
return tar;
}
function run(fn) {
return fn();
}
function blank_object() {
return Object.create(null);
}
function run_all(fns) {
fns.forEach(run);
}
function is_function(thing) {
return typeof thing === 'function';
}
function safe_not_equal(a, b) {
return a != a ? b == b : a !== b || ((a && typeof a === 'object') || typeof a === 'function');
}
function is_empty(obj) {
return Object.keys(obj).length === 0;
}
function subscribe(store, ...callbacks) {
if (store == null) {
return noop;
}
const unsub = store.subscribe(...callbacks);
return unsub.unsubscribe ? () => unsub.unsubscribe() : unsub;
}
function component_subscribe(component, store, callback) {
component.$$.on_destroy.push(subscribe(store, callback));
}
function create_slot(definition, ctx, $$scope, fn) {
if (definition) {
const slot_ctx = get_slot_context(definition, ctx, $$scope, fn);
return definition[0](slot_ctx);
}
}
function get_slot_context(definition, ctx, $$scope, fn) {
return definition[1] && fn
? assign($$scope.ctx.slice(), definition[1](fn(ctx)))
: $$scope.ctx;
}
function get_slot_changes(definition, $$scope, dirty, fn) {
if (definition[2] && fn) {
const lets = definition[2](fn(dirty));
if ($$scope.dirty === undefined) {
return lets;
}
if (typeof lets === 'object') {
const merged = [];
const len = Math.max($$scope.dirty.length, lets.length);
for (let i = 0; i < len; i += 1) {
merged[i] = $$scope.dirty[i] | lets[i];
}
return merged;
}
return $$scope.dirty | lets;
}
return $$scope.dirty;
}
function update_slot_base(slot, slot_definition, ctx, $$scope, slot_changes, get_slot_context_fn) {
if (slot_changes) {
const slot_context = get_slot_context(slot_definition, ctx, $$scope, get_slot_context_fn);
slot.p(slot_context, slot_changes);
}
}
function get_all_dirty_from_scope($$scope) {
if ($$scope.ctx.length > 32) {
const dirty = [];
const length = $$scope.ctx.length / 32;
for (let i = 0; i < length; i++) {
dirty[i] = -1;
}
return dirty;
}
return -1;
}
function exclude_internal_props(props) {
const result = {};
for (const k in props)
if (k[0] !== '$')
result[k] = props[k];
return result;
}
function compute_rest_props(props, keys) {
const rest = {};
keys = new Set(keys);
for (const k in props)
if (!keys.has(k) && k[0] !== '$')
rest[k] = props[k];
return rest;
}
function null_to_empty(value) {
return value == null ? '' : value;
}
function set_store_value(store, ret, value) {
store.set(value);
return ret;
}
function action_destroyer(action_result) {
return action_result && is_function(action_result.destroy) ? action_result.destroy : noop;
}
const is_client = typeof window !== 'undefined';
let now = is_client
? () => window.performance.now()
: () => Date.now();
let raf = is_client ? cb => requestAnimationFrame(cb) : noop;
const tasks = new Set();
function run_tasks(now) {
tasks.forEach(task => {
if (!task.c(now)) {
tasks.delete(task);
task.f();
}
});
if (tasks.size !== 0)
raf(run_tasks);
}
/**
* Creates a new task that runs on each raf frame
* until it returns a falsy value or is aborted
*/
function loop(callback) {
let task;
if (tasks.size === 0)
raf(run_tasks);
return {
promise: new Promise(fulfill => {
tasks.add(task = { c: callback, f: fulfill });
}),
abort() {
tasks.delete(task);
}
};
}
function append(target, node) {
target.appendChild(node);
}
function append_styles(target, style_sheet_id, styles) {
const append_styles_to = get_root_for_style(target);
if (!append_styles_to.getElementById(style_sheet_id)) {
const style = element('style');
style.id = style_sheet_id;
style.textContent = styles;
append_stylesheet(append_styles_to, style);
}
}
function get_root_for_style(node) {
if (!node)
return document;
const root = node.getRootNode ? node.getRootNode() : node.ownerDocument;
if (root && root.host) {
return root;
}
return node.ownerDocument;
}
function append_empty_stylesheet(node) {
const style_element = element('style');
append_stylesheet(get_root_for_style(node), style_element);
return style_element.sheet;
}
function append_stylesheet(node, style) {
append(node.head || node, style);
}
function insert(target, node, anchor) {
target.insertBefore(node, anchor || null);
}
function detach(node) {
node.parentNode.removeChild(node);
}
function destroy_each(iterations, detaching) {
for (let i = 0; i < iterations.length; i += 1) {
if (iterations[i])
iterations[i].d(detaching);
}
}
function element(name) {
return document.createElement(name);
}
function svg_element(name) {
return document.createElementNS('http://www.w3.org/2000/svg', name);
}
function text(data) {
return document.createTextNode(data);
}
function space() {
return text(' ');
}
function empty() {
return text('');
}
function listen(node, event, handler, options) {
node.addEventListener(event, handler, options);
return () => node.removeEventListener(event, handler, options);
}
function attr(node, attribute, value) {
if (value == null)
node.removeAttribute(attribute);
else if (node.getAttribute(attribute) !== value)
node.setAttribute(attribute, value);
}
function set_svg_attributes(node, attributes) {
for (const key in attributes) {
attr(node, key, attributes[key]);
}
}
function children(element) {
return Array.from(element.childNodes);
}
function set_data(text, data) {
data = '' + data;
if (text.wholeText !== data)
text.data = data;
}
function set_input_value(input, value) {
input.value = value == null ? '' : value;
}
function set_style(node, key, value, important) {
if (value === null) {
node.style.removeProperty(key);
}
else {
node.style.setProperty(key, value, important ? 'important' : '');
}
}
// unfortunately this can't be a constant as that wouldn't be tree-shakeable
// so we cache the result instead
let crossorigin;
function is_crossorigin() {
if (crossorigin === undefined) {
crossorigin = false;
try {
if (typeof window !== 'undefined' && window.parent) {
void window.parent.document;
}
}
catch (error) {
crossorigin = true;
}
}
return crossorigin;
}
function add_resize_listener(node, fn) {
const computed_style = getComputedStyle(node);
if (computed_style.position === 'static') {
node.style.position = 'relative';
}
const iframe = element('iframe');
iframe.setAttribute('style', 'display: block; position: absolute; top: 0; left: 0; width: 100%; height: 100%; ' +
'overflow: hidden; border: 0; opacity: 0; pointer-events: none; z-index: -1;');
iframe.setAttribute('aria-hidden', 'true');
iframe.tabIndex = -1;
const crossorigin = is_crossorigin();
let unsubscribe;
if (crossorigin) {
iframe.src = "data:text/html,";
unsubscribe = listen(window, 'message', (event) => {
if (event.source === iframe.contentWindow)
fn();
});
}
else {
iframe.src = 'about:blank';
iframe.onload = () => {
unsubscribe = listen(iframe.contentWindow, 'resize', fn);
};
}
append(node, iframe);
return () => {
if (crossorigin) {
unsubscribe();
}
else if (unsubscribe && iframe.contentWindow) {
unsubscribe();
}
detach(iframe);
};
}
function toggle_class(element, name, toggle) {
element.classList[toggle ? 'add' : 'remove'](name);
}
function custom_event(type, detail, { bubbles = false, cancelable = false } = {}) {
const e = document.createEvent('CustomEvent');
e.initCustomEvent(type, bubbles, cancelable, detail);
return e;
}
// we need to store the information for multiple documents because a Svelte application could also contain iframes
// https://github.com/sveltejs/svelte/issues/3624
const managed_styles = new Map();
let active = 0;
// https://github.com/darkskyapp/string-hash/blob/master/index.js
function hash(str) {
let hash = 5381;
let i = str.length;
while (i--)
hash = ((hash << 5) - hash) ^ str.charCodeAt(i);
return hash >>> 0;
}
function create_style_information(doc, node) {
const info = { stylesheet: append_empty_stylesheet(node), rules: {} };
managed_styles.set(doc, info);
return info;
}
function create_rule(node, a, b, duration, delay, ease, fn, uid = 0) {
const step = 16.666 / duration;
let keyframes = '{\n';
for (let p = 0; p <= 1; p += step) {
const t = a + (b - a) * ease(p);
keyframes += p * 100 + `%{${fn(t, 1 - t)}}\n`;
}
const rule = keyframes + `100% {${fn(b, 1 - b)}}\n}`;
const name = `__svelte_${hash(rule)}_${uid}`;
const doc = get_root_for_style(node);
const { stylesheet, rules } = managed_styles.get(doc) || create_style_information(doc, node);
if (!rules[name]) {
rules[name] = true;
stylesheet.insertRule(`@keyframes ${name} ${rule}`, stylesheet.cssRules.length);
}
const animation = node.style.animation || '';
node.style.animation = `${animation ? `${animation}, ` : ''}${name} ${duration}ms linear ${delay}ms 1 both`;
active += 1;
return name;
}
function delete_rule(node, name) {
const previous = (node.style.animation || '').split(', ');
const next = previous.filter(name
? anim => anim.indexOf(name) < 0 // remove specific animation
: anim => anim.indexOf('__svelte') === -1 // remove all Svelte animations
);
const deleted = previous.length - next.length;
if (deleted) {
node.style.animation = next.join(', ');
active -= deleted;
if (!active)
clear_rules();
}
}
function clear_rules() {
raf(() => {
if (active)
return;
managed_styles.forEach(info => {
const { stylesheet } = info;
let i = stylesheet.cssRules.length;
while (i--)
stylesheet.deleteRule(i);
info.rules = {};
});
managed_styles.clear();
});
}
let current_component;
function set_current_component(component) {
current_component = component;
}
function get_current_component() {
if (!current_component)
throw new Error('Function called outside component initialization');
return current_component;
}
function onMount(fn) {
get_current_component().$$.on_mount.push(fn);
}
function onDestroy(fn) {
get_current_component().$$.on_destroy.push(fn);
}
function createEventDispatcher() {
const component = get_current_component();
return (type, detail, { cancelable = false } = {}) => {
const callbacks = component.$$.callbacks[type];
if (callbacks) {
// TODO are there situations where events could be dispatched
// in a server (non-DOM) environment?
const event = custom_event(type, detail, { cancelable });
callbacks.slice().forEach(fn => {
fn.call(component, event);
});
return !event.defaultPrevented;
}
return true;
};
}
const dirty_components = [];
const binding_callbacks = [];
const render_callbacks = [];
const flush_callbacks = [];
const resolved_promise = Promise.resolve();
let update_scheduled = false;
function schedule_update() {
if (!update_scheduled) {
update_scheduled = true;
resolved_promise.then(flush);
}
}
function add_render_callback(fn) {
render_callbacks.push(fn);
}
function add_flush_callback(fn) {
flush_callbacks.push(fn);
}
// flush() calls callbacks in this order:
// 1. All beforeUpdate callbacks, in order: parents before children
// 2. All bind:this callbacks, in reverse order: children before parents.
// 3. All afterUpdate callbacks, in order: parents before children. EXCEPT
// for afterUpdates called during the initial onMount, which are called in
// reverse order: children before parents.
// Since callbacks might update component values, which could trigger another
// call to flush(), the following steps guard against this:
// 1. During beforeUpdate, any updated components will be added to the
// dirty_components array and will cause a reentrant call to flush(). Because
// the flush index is kept outside the function, the reentrant call will pick
// up where the earlier call left off and go through all dirty components. The
// current_component value is saved and restored so that the reentrant call will
// not interfere with the "parent" flush() call.
// 2. bind:this callbacks cannot trigger new flush() calls.
// 3. During afterUpdate, any updated components will NOT have their afterUpdate
// callback called a second time; the seen_callbacks set, outside the flush()
// function, guarantees this behavior.
const seen_callbacks = new Set();
let flushidx = 0; // Do *not* move this inside the flush() function
function flush() {
const saved_component = current_component;
do {
// first, call beforeUpdate functions
// and update components
while (flushidx < dirty_components.length) {
const component = dirty_components[flushidx];
flushidx++;
set_current_component(component);
update(component.$$);
}
set_current_component(null);
dirty_components.length = 0;
flushidx = 0;
while (binding_callbacks.length)
binding_callbacks.pop()();
// then, once components are updated, call
// afterUpdate functions. This may cause
// subsequent updates...
for (let i = 0; i < render_callbacks.length; i += 1) {
const callback = render_callbacks[i];
if (!seen_callbacks.has(callback)) {
// ...so guard against infinite loops
seen_callbacks.add(callback);
callback();
}
}
render_callbacks.length = 0;
} while (dirty_components.length);
while (flush_callbacks.length) {
flush_callbacks.pop()();
}
update_scheduled = false;
seen_callbacks.clear();
set_current_component(saved_component);
}
function update($$) {
if ($$.fragment !== null) {
$$.update();
run_all($$.before_update);
const dirty = $$.dirty;
$$.dirty = [-1];
$$.fragment && $$.fragment.p($$.ctx, dirty);
$$.after_update.forEach(add_render_callback);
}
}
let promise;
function wait() {
if (!promise) {
promise = Promise.resolve();
promise.then(() => {
promise = null;
});
}
return promise;
}
function dispatch(node, direction, kind) {
node.dispatchEvent(custom_event(`${direction ? 'intro' : 'outro'}${kind}`));
}
const outroing = new Set();
let outros;
function group_outros() {
outros = {
r: 0,
c: [],
p: outros // parent group
};
}
function check_outros() {
if (!outros.r) {
run_all(outros.c);
}
outros = outros.p;
}
function transition_in(block, local) {
if (block && block.i) {
outroing.delete(block);
block.i(local);
}
}
function transition_out(block, local, detach, callback) {
if (block && block.o) {
if (outroing.has(block))
return;
outroing.add(block);
outros.c.push(() => {
outroing.delete(block);
if (callback) {
if (detach)
block.d(1);
callback();
}
});
block.o(local);
}
else if (callback) {
callback();
}
}
const null_transition = { duration: 0 };
function create_in_transition(node, fn, params) {
let config = fn(node, params);
let running = false;
let animation_name;
let task;
let uid = 0;
function cleanup() {
if (animation_name)
delete_rule(node, animation_name);
}
function go() {
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
if (css)
animation_name = create_rule(node, 0, 1, duration, delay, easing, css, uid++);
tick(0, 1);
const start_time = now() + delay;
const end_time = start_time + duration;
if (task)
task.abort();
running = true;
add_render_callback(() => dispatch(node, true, 'start'));
task = loop(now => {
if (running) {
if (now >= end_time) {
tick(1, 0);
dispatch(node, true, 'end');
cleanup();
return running = false;
}
if (now >= start_time) {
const t = easing((now - start_time) / duration);
tick(t, 1 - t);
}
}
return running;
});
}
let started = false;
return {
start() {
if (started)
return;
started = true;
delete_rule(node);
if (is_function(config)) {
config = config();
wait().then(go);
}
else {
go();
}
},
invalidate() {
started = false;
},
end() {
if (running) {
cleanup();
running = false;
}
}
};
}
function create_out_transition(node, fn, params) {
let config = fn(node, params);
let running = true;
let animation_name;
const group = outros;
group.r += 1;
function go() {
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
if (css)
animation_name = create_rule(node, 1, 0, duration, delay, easing, css);
const start_time = now() + delay;
const end_time = start_time + duration;
add_render_callback(() => dispatch(node, false, 'start'));
loop(now => {
if (running) {
if (now >= end_time) {
tick(0, 1);
dispatch(node, false, 'end');
if (!--group.r) {
// this will result in `end()` being called,
// so we don't need to clean up here
run_all(group.c);
}
return false;
}
if (now >= start_time) {
const t = easing((now - start_time) / duration);
tick(1 - t, t);
}
}
return running;
});
}
if (is_function(config)) {
wait().then(() => {
// @ts-ignore
config = config();
go();
});
}
else {
go();
}
return {
end(reset) {
if (reset && config.tick) {
config.tick(1, 0);
}
if (running) {
if (animation_name)
delete_rule(node, animation_name);
running = false;
}
}
};
}
function create_bidirectional_transition(node, fn, params, intro) {
let config = fn(node, params);
let t = intro ? 0 : 1;
let running_program = null;
let pending_program = null;
let animation_name = null;
function clear_animation() {
if (animation_name)
delete_rule(node, animation_name);
}
function init(program, duration) {
const d = (program.b - t);
duration *= Math.abs(d);
return {
a: t,
b: program.b,
d,
duration,
start: program.start,
end: program.start + duration,
group: program.group
};
}
function go(b) {
const { delay = 0, duration = 300, easing = identity, tick = noop, css } = config || null_transition;
const program = {
start: now() + delay,
b
};
if (!b) {
// @ts-ignore todo: improve typings
program.group = outros;
outros.r += 1;
}
if (running_program || pending_program) {
pending_program = program;
}
else {
// if this is an intro, and there's a delay, we need to do
// an initial tick and/or apply CSS animation immediately
if (css) {
clear_animation();
animation_name = create_rule(node, t, b, duration, delay, easing, css);
}
if (b)
tick(0, 1);
running_program = init(program, duration);
add_render_callback(() => dispatch(node, b, 'start'));
loop(now => {
if (pending_program && now > pending_program.start) {
running_program = init(pending_program, duration);
pending_program = null;
dispatch(node, running_program.b, 'start');
if (css) {
clear_animation();
animation_name = create_rule(node, t, running_program.b, running_program.duration, 0, easing, config.css);
}
}
if (running_program) {
if (now >= running_program.end) {
tick(t = running_program.b, 1 - t);
dispatch(node, running_program.b, 'end');
if (!pending_program) {
// we're done
if (running_program.b) {
// intro — we can tidy up immediately
clear_animation();
}
else {
// outro — needs to be coordinated
if (!--running_program.group.r)
run_all(running_program.group.c);
}
}
running_program = null;
}
else if (now >= running_program.start) {
const p = now - running_program.start;
t = running_program.a + running_program.d * easing(p / running_program.duration);
tick(t, 1 - t);
}
}
return !!(running_program || pending_program);
});
}
}
return {
run(b) {
if (is_function(config)) {
wait().then(() => {
// @ts-ignore
config = config();
go(b);
});
}
else {
go(b);
}
},
end() {
clear_animation();
running_program = pending_program = null;
}
};
}
function outro_and_destroy_block(block, lookup) {
transition_out(block, 1, 1, () => {
lookup.delete(block.key);
});
}
function update_keyed_each(old_blocks, dirty, get_key, dynamic, ctx, list, lookup, node, destroy, create_each_block, next, get_context) {
let o = old_blocks.length;
let n = list.length;
let i = o;
const old_indexes = {};
while (i--)
old_indexes[old_blocks[i].key] = i;
const new_blocks = [];
const new_lookup = new Map();
const deltas = new Map();
i = n;
while (i--) {
const child_ctx = get_context(ctx, list, i);
const key = get_key(child_ctx);
let block = lookup.get(key);
if (!block) {
block = create_each_block(key, child_ctx);
block.c();
}
else if (dynamic) {
block.p(child_ctx, dirty);
}
new_lookup.set(key, new_blocks[i] = block);
if (key in old_indexes)
deltas.set(key, Math.abs(i - old_indexes[key]));
}
const will_move = new Set();
const did_move = new Set();
function insert(block) {
transition_in(block, 1);
block.m(node, next);
lookup.set(block.key, block);
next = block.first;
n--;
}
while (o && n) {
const new_block = new_blocks[n - 1];
const old_block = old_blocks[o - 1];
const new_key = new_block.key;
const old_key = old_block.key;
if (new_block === old_block) {
// do nothing
next = new_block.first;
o--;
n--;
}
else if (!new_lookup.has(old_key)) {
// remove old block
destroy(old_block, lookup);
o--;
}
else if (!lookup.has(new_key) || will_move.has(new_key)) {
insert(new_block);
}
else if (did_move.has(old_key)) {
o--;
}
else if (deltas.get(new_key) > deltas.get(old_key)) {
did_move.add(new_key);
insert(new_block);
}
else {
will_move.add(old_key);
o--;
}
}
while (o--) {
const old_block = old_blocks[o];
if (!new_lookup.has(old_block.key))
destroy(old_block, lookup);
}
while (n)
insert(new_blocks[n - 1]);
return new_blocks;
}
function get_spread_update(levels, updates) {
const update = {};
const to_null_out = {};
const accounted_for = { $$scope: 1 };
let i = levels.length;
while (i--) {
const o = levels[i];
const n = updates[i];
if (n) {
for (const key in o) {
if (!(key in n))
to_null_out[key] = 1;
}
for (const key in n) {
if (!accounted_for[key]) {
update[key] = n[key];
accounted_for[key] = 1;
}
}
levels[i] = n;
}
else {
for (const key in o) {
accounted_for[key] = 1;
}
}
}
for (const key in to_null_out) {
if (!(key in update))
update[key] = undefined;
}
return update;
}
function get_spread_object(spread_props) {
return typeof spread_props === 'object' && spread_props !== null ? spread_props : {};
}
function bind(component, name, callback) {
const index = component.$$.props[name];
if (index !== undefined) {
component.$$.bound[index] = callback;
callback(component.$$.ctx[index]);
}
}
function create_component(block) {
block && block.c();
}
function mount_component(component, target, anchor, customElement) {
const { fragment, on_mount, on_destroy, after_update } = component.$$;
fragment && fragment.m(target, anchor);
if (!customElement) {
// onMount happens before the initial afterUpdate
add_render_callback(() => {
const new_on_destroy = on_mount.map(run).filter(is_function);
if (on_destroy) {
on_destroy.push(...new_on_destroy);
}
else {
// Edge case - component was destroyed immediately,
// most likely as a result of a binding initialising
run_all(new_on_destroy);
}
component.$$.on_mount = [];
});
}
after_update.forEach(add_render_callback);
}
function destroy_component(component, detaching) {
const $$ = component.$$;
if ($$.fragment !== null) {
run_all($$.on_destroy);
$$.fragment && $$.fragment.d(detaching);
// TODO null out other refs, including component.$$ (but need to
// preserve final state?)
$$.on_destroy = $$.fragment = null;
$$.ctx = [];
}
}
function make_dirty(component, i) {
if (component.$$.dirty[0] === -1) {
dirty_components.push(component);
schedule_update();
component.$$.dirty.fill(0);
}
component.$$.dirty[(i / 31) | 0] |= (1 << (i % 31));
}
function init(component, options, instance, create_fragment, not_equal, props, append_styles, dirty = [-1]) {
const parent_component = current_component;
set_current_component(component);
const $$ = component.$$ = {
fragment: null,
ctx: null,
// state
props,
update: noop,
not_equal,
bound: blank_object(),
// lifecycle
on_mount: [],
on_destroy: [],
on_disconnect: [],
before_update: [],
after_update: [],
context: new Map(options.context || (parent_component ? parent_component.$$.context : [])),
// everything else
callbacks: blank_object(),
dirty,
skip_bound: false,
root: options.target || parent_component.$$.root
};
append_styles && append_styles($$.root);
let ready = false;
$$.ctx = instance
? instance(component, options.props || {}, (i, ret, ...rest) => {
const value = rest.length ? rest[0] : ret;
if ($$.ctx && not_equal($$.ctx[i], $$.ctx[i] = value)) {
if (!$$.skip_bound && $$.bound[i])
$$.bound[i](value);
if (ready)
make_dirty(component, i);
}
return ret;
})
: [];
$$.update();
ready = true;
run_all($$.before_update);
// `false` as a special case of no DOM component
$$.fragment = create_fragment ? create_fragment($$.ctx) : false;
if (options.target) {
if (options.hydrate) {
const nodes = children(options.target);
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.l(nodes);
nodes.forEach(detach);
}
else {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
$$.fragment && $$.fragment.c();
}
if (options.intro)
transition_in(component.$$.fragment);
mount_component(component, options.target, options.anchor, options.customElement);
flush();
}
set_current_component(parent_component);
}
/**
* Base class for Svelte components. Used when dev=false.
*/
class SvelteComponent {
$destroy() {
destroy_component(this, 1);
this.$destroy = noop;
}
$on(type, callback) {
const callbacks = (this.$$.callbacks[type] || (this.$$.callbacks[type] = []));
callbacks.push(callback);
return () => {
const index = callbacks.indexOf(callback);
if (index !== -1)
callbacks.splice(index, 1);
};
}
$set($$props) {
if (this.$$set && !is_empty($$props)) {
this.$$.skip_bound = true;
this.$$set($$props);
this.$$.skip_bound = false;
}
}
}
var collectionUtils = createCommonjsModule(function (module) {
var utils = module.exports = {};
/**
* Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.
* @public
* @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.
* @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.
* @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.
*/
utils.forEach = function(collection, callback) {
for(var i = 0; i < collection.length; i++) {
var result = callback(collection[i]);
if(result) {
return result;
}
}
};
});
var elementUtils = function(options) {
var getState = options.stateHandler.getState;
/**
* Tells if the element has been made detectable and ready to be listened for resize events.
* @public
* @param {element} The element to check.
* @returns {boolean} True or false depending on if the element is detectable or not.
*/
function isDetectable(element) {
var state = getState(element);
return state && !!state.isDetectable;
}
/**
* Marks the element that it has been made detectable and ready to be listened for resize events.
* @public
* @param {element} The element to mark.
*/
function markAsDetectable(element) {
getState(element).isDetectable = true;
}
/**
* Tells if the element is busy or not.
* @public
* @param {element} The element to check.
* @returns {boolean} True or false depending on if the element is busy or not.
*/
function isBusy(element) {
return !!getState(element).busy;
}
/**
* Marks the object is busy and should not be made detectable.
* @public
* @param {element} element The element to mark.
* @param {boolean} busy If the element is busy or not.
*/
function markBusy(element, busy) {
getState(element).busy = !!busy;
}
return {
isDetectable: isDetectable,
markAsDetectable: markAsDetectable,
isBusy: isBusy,
markBusy: markBusy
};
};
var listenerHandler = function(idHandler) {
var eventListeners = {};
/**
* Gets all listeners for the given element.
* @public
* @param {element} element The element to get all listeners for.
* @returns All listeners for the given element.
*/
function getListeners(element) {
var id = idHandler.get(element);
if (id === undefined) {
return [];
}
return eventListeners[id] || [];
}
/**
* Stores the given listener for the given element. Will not actually add the listener to the element.
* @public
* @param {element} element The element that should have the listener added.
* @param {function} listener The callback that the element has added.
*/
function addListener(element, listener) {
var id = idHandler.get(element);
if(!eventListeners[id]) {
eventListeners[id] = [];
}
eventListeners[id].push(listener);
}
function removeListener(element, listener) {
var listeners = getListeners(element);
for (var i = 0, len = listeners.length; i < len; ++i) {
if (listeners[i] === listener) {
listeners.splice(i, 1);
break;
}
}
}
function removeAllListeners(element) {
var listeners = getListeners(element);
if (!listeners) { return; }
listeners.length = 0;
}
return {
get: getListeners,
add: addListener,
removeListener: removeListener,
removeAllListeners: removeAllListeners
};
};
var idGenerator = function() {
var idCount = 1;
/**
* Generates a new unique id in the context.
* @public
* @returns {number} A unique id in the context.
*/
function generate() {
return idCount++;
}
return {
generate: generate
};
};
var idHandler = function(options) {
var idGenerator = options.idGenerator;
var getState = options.stateHandler.getState;
/**
* Gets the resize detector id of the element.
* @public
* @param {element} element The target element to get the id of.
* @returns {string|number|null} The id of the element. Null if it has no id.
*/
function getId(element) {
var state = getState(element);
if (state && state.id !== undefined) {
return state.id;
}
return null;
}
/**
* Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.
* @public
* @param {element} element The target element to set the id of.
* @returns {string|number|null} The id of the element.
*/
function setId(element) {
var state = getState(element);
if (!state) {
throw new Error("setId required the element to have a resize detection state.");
}
var id = idGenerator.generate();
state.id = id;
return id;
}
return {
get: getId,
set: setId
};
};
/* global console: false */
/**
* Reporter that handles the reporting of logs, warnings and errors.
* @public
* @param {boolean} quiet Tells if the reporter should be quiet or not.
*/
var reporter = function(quiet) {
function noop() {
//Does nothing.
}
var reporter = {
log: noop,
warn: noop,
error: noop
};
if(!quiet && window.console) {
var attachFunction = function(reporter, name) {
//The proxy is needed to be able to call the method with the console context,
//since we cannot use bind.
reporter[name] = function reporterProxy() {
var f = console[name];
if (f.apply) { //IE9 does not support console.log.apply :)
f.apply(console, arguments);
} else {
for (var i = 0; i < arguments.length; i++) {
f(arguments[i]);
}
}
};
};
attachFunction(reporter, "log");
attachFunction(reporter, "warn");
attachFunction(reporter, "error");
}
return reporter;
};
var browserDetector = createCommonjsModule(function (module) {
var detector = module.exports = {};
detector.isIE = function(version) {
function isAnyIeVersion() {
var agent = navigator.userAgent.toLowerCase();
return agent.indexOf("msie") !== -1 || agent.indexOf("trident") !== -1 || agent.indexOf(" edge/") !== -1;
}
if(!isAnyIeVersion()) {
return false;
}
if(!version) {
return true;
}
//Shamelessly stolen from https://gist.github.com/padolsey/527683
var ieVersion = (function(){
var undef,
v = 3,
div = document.createElement("div"),
all = div.getElementsByTagName("i");
do {
div.innerHTML = "";
}
while (all[0]);
return v > 4 ? v : undef;
}());
return version === ieVersion;
};
detector.isLegacyOpera = function() {
return !!window.opera;
};
});
var utils_1 = createCommonjsModule(function (module) {
var utils = module.exports = {};
utils.getOption = getOption;
function getOption(options, name, defaultValue) {
var value = options[name];
if((value === undefined || value === null) && defaultValue !== undefined) {
return defaultValue;
}
return value;
}
});
var batchProcessor = function batchProcessorMaker(options) {
options = options || {};
var reporter = options.reporter;
var asyncProcess = utils_1.getOption(options, "async", true);
var autoProcess = utils_1.getOption(options, "auto", true);
if(autoProcess && !asyncProcess) {
reporter && reporter.warn("Invalid options combination. auto=true and async=false is invalid. Setting async=true.");
asyncProcess = true;
}
var batch = Batch();
var asyncFrameHandler;
var isProcessing = false;
function addFunction(level, fn) {
if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {
// Since this is async, it is guaranteed to be executed after that the fn is added to the batch.
// This needs to be done before, since we're checking the size of the batch to be 0.
processBatchAsync();
}
batch.add(level, fn);
}
function processBatch() {
// Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.
// Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).
isProcessing = true;
while (batch.size()) {
var processingBatch = batch;
batch = Batch();
processingBatch.process();
}
isProcessing = false;
}
function forceProcessBatch(localAsyncProcess) {
if (isProcessing) {
return;
}
if(localAsyncProcess === undefined) {
localAsyncProcess = asyncProcess;
}
if(asyncFrameHandler) {
cancelFrame(asyncFrameHandler);
asyncFrameHandler = null;
}
if(localAsyncProcess) {
processBatchAsync();
} else {
processBatch();
}
}
function processBatchAsync() {
asyncFrameHandler = requestFrame(processBatch);
}
function cancelFrame(listener) {
// var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;
var cancel = clearTimeout;
return cancel(listener);
}
function requestFrame(callback) {
// var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };
var raf = function(fn) { return setTimeout(fn, 0); };
return raf(callback);
}
return {
add: addFunction,
force: forceProcessBatch
};
};
function Batch() {
var batch = {};
var size = 0;
var topLevel = 0;
var bottomLevel = 0;
function add(level, fn) {
if(!fn) {
fn = level;
level = 0;
}
if(level > topLevel) {
topLevel = level;
} else if(level < bottomLevel) {
bottomLevel = level;
}
if(!batch[level]) {
batch[level] = [];
}
batch[level].push(fn);
size++;
}
function process() {
for(var level = bottomLevel; level <= topLevel; level++) {
var fns = batch[level];
for(var i = 0; i < fns.length; i++) {
var fn = fns[i];
fn();
}
}
}
function getSize() {
return size;
}
return {
add: add,
process: process,
size: getSize
};
}
var prop = "_erd";
function initState(element) {
element[prop] = {};
return getState(element);
}
function getState(element) {
return element[prop];
}
function cleanState(element) {
delete element[prop];
}
var stateHandler = {
initState: initState,
getState: getState,
cleanState: cleanState
};
/**
* Resize detection strategy that injects objects to elements in order to detect resize events.
* Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/
*/
var object = function(options) {
options = options || {};
var reporter = options.reporter;
var batchProcessor = options.batchProcessor;
var getState = options.stateHandler.getState;
if(!reporter) {
throw new Error("Missing required dependency: reporter.");
}
/**
* Adds a resize event listener to the element.
* @public
* @param {element} element The element that should have the listener added.
* @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
*/
function addListener(element, listener) {
function listenerProxy() {
listener(element);
}
if(browserDetector.isIE(8)) {
//IE 8 does not support object, but supports the resize event directly on elements.
getState(element).object = {
proxy: listenerProxy
};
element.attachEvent("onresize", listenerProxy);
} else {
var object = getObject(element);
if(!object) {
throw new Error("Element is not detectable by this strategy.");
}
object.contentDocument.defaultView.addEventListener("resize", listenerProxy);
}
}
function buildCssTextString(rules) {
var seperator = options.important ? " !important; " : "; ";
return (rules.join(seperator) + seperator).trim();
}
/**
* Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
* @private
* @param {object} options Optional options object.
* @param {element} element The element to make detectable
* @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
*/
function makeDetectable(options, element, callback) {
if (!callback) {
callback = element;
element = options;
options = null;
}
options = options || {};
options.debug;
function injectObject(element, callback) {
var OBJECT_STYLE = buildCssTextString(["display: block", "position: absolute", "top: 0", "left: 0", "width: 100%", "height: 100%", "border: none", "padding: 0", "margin: 0", "opacity: 0", "z-index: -1000", "pointer-events: none"]);
//The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.
// Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.
var positionCheckPerformed = false;
// The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.
// Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.
var style = window.getComputedStyle(element);
var width = element.offsetWidth;
var height = element.offsetHeight;
getState(element).startSize = {
width: width,
height: height
};
function mutateDom() {
function alterPositionStyles() {
if(style.position === "static") {
element.style.setProperty("position", "relative", options.important ? "important" : "");
var removeRelativeStyles = function(reporter, element, style, property) {
function getNumericalValue(value) {
return value.replace(/[^-\d\.]/g, "");
}
var value = style[property];
if(value !== "auto" && getNumericalValue(value) !== "0") {
reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
element.style.setProperty(property, "0", options.important ? "important" : "");
}
};
//Check so that there are no accidental styles that will make the element styled differently now that is is relative.
//If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
removeRelativeStyles(reporter, element, style, "top");
removeRelativeStyles(reporter, element, style, "right");
removeRelativeStyles(reporter, element, style, "bottom");
removeRelativeStyles(reporter, element, style, "left");
}
}
function onObjectLoad() {
// The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.
if (!positionCheckPerformed) {
alterPositionStyles();
}
/*jshint validthis: true */
function getDocument(element, callback) {
//Opera 12 seem to call the object.onload before the actual document has been created.
//So if it is not present, poll it with an timeout until it is present.
//TODO: Could maybe be handled better with object.onreadystatechange or similar.
if(!element.contentDocument) {
var state = getState(element);
if (state.checkForObjectDocumentTimeoutId) {
window.clearTimeout(state.checkForObjectDocumentTimeoutId);
}
state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {
state.checkForObjectDocumentTimeoutId = 0;
getDocument(element, callback);
}, 100);
return;
}
callback(element.contentDocument);
}
//Mutating the object element here seems to fire another load event.
//Mutating the inner document of the object element is fine though.
var objectElement = this;
//Create the style element to be added to the object.
getDocument(objectElement, function onObjectDocumentReady(objectDocument) {
//Notify that the element is ready to be listened to.
callback(element);
});
}
// The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.
// The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.
if (style.position !== "") {
alterPositionStyles();
positionCheckPerformed = true;
}
//Add an object element as a child to the target element that will be listened to for resize events.
var object = document.createElement("object");
object.style.cssText = OBJECT_STYLE;
object.tabIndex = -1;
object.type = "text/html";
object.setAttribute("aria-hidden", "true");
object.onload = onObjectLoad;
//Safari: This must occur before adding the object to the DOM.
//IE: Does not like that this happens before, even if it is also added after.
if(!browserDetector.isIE()) {
object.data = "about:blank";
}
if (!getState(element)) {
// The element has been uninstalled before the actual loading happened.
return;
}
element.appendChild(object);
getState(element).object = object;
//IE: This must occur after adding the object to the DOM.
if(browserDetector.isIE()) {
object.data = "about:blank";
}
}
if(batchProcessor) {
batchProcessor.add(mutateDom);
} else {
mutateDom();
}
}
if(browserDetector.isIE(8)) {
//IE 8 does not support objects properly. Luckily they do support the resize event.
//So do not inject the object and notify that the element is already ready to be listened to.
//The event handler for the resize event is attached in the utils.addListener instead.
callback(element);
} else {
injectObject(element, callback);
}
}
/**
* Returns the child object of the target element.
* @private
* @param {element} element The target element.
* @returns The object element of the target.
*/
function getObject(element) {
return getState(element).object;
}
function uninstall(element) {
if (!getState(element)) {
return;
}
var object = getObject(element);
if (!object) {
return;
}
if (browserDetector.isIE(8)) {
element.detachEvent("onresize", object.proxy);
} else {
element.removeChild(object);
}
if (getState(element).checkForObjectDocumentTimeoutId) {
window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);
}
delete getState(element).object;
}
return {
makeDetectable: makeDetectable,
addListener: addListener,
uninstall: uninstall
};
};
/**
* Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.
* Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js
*/
var forEach$1 = collectionUtils.forEach;
var scroll = function(options) {
options = options || {};
var reporter = options.reporter;
var batchProcessor = options.batchProcessor;
var getState = options.stateHandler.getState;
options.stateHandler.hasState;
var idHandler = options.idHandler;
if (!batchProcessor) {
throw new Error("Missing required dependency: batchProcessor");
}
if (!reporter) {
throw new Error("Missing required dependency: reporter.");
}
//TODO: Could this perhaps be done at installation time?
var scrollbarSizes = getScrollbarSizes();
var styleId = "erd_scroll_detection_scrollbar_style";
var detectionContainerClass = "erd_scroll_detection_container";
function initDocument(targetDocument) {
// Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.
// The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).
injectScrollStyle(targetDocument, styleId, detectionContainerClass);
}
initDocument(window.document);
function buildCssTextString(rules) {
var seperator = options.important ? " !important; " : "; ";
return (rules.join(seperator) + seperator).trim();
}
function getScrollbarSizes() {
var width = 500;
var height = 500;
var child = document.createElement("div");
child.style.cssText = buildCssTextString(["position: absolute", "width: " + width*2 + "px", "height: " + height*2 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
var container = document.createElement("div");
container.style.cssText = buildCssTextString(["position: absolute", "width: " + width + "px", "height: " + height + "px", "overflow: scroll", "visibility: none", "top: " + -width*3 + "px", "left: " + -height*3 + "px", "visibility: hidden", "margin: 0", "padding: 0"]);
container.appendChild(child);
document.body.insertBefore(container, document.body.firstChild);
var widthSize = width - container.clientWidth;
var heightSize = height - container.clientHeight;
document.body.removeChild(container);
return {
width: widthSize,
height: heightSize
};
}
function injectScrollStyle(targetDocument, styleId, containerClass) {
function injectStyle(style, method) {
method = method || function (element) {
targetDocument.head.appendChild(element);
};
var styleElement = targetDocument.createElement("style");
styleElement.innerHTML = style;
styleElement.id = styleId;
method(styleElement);
return styleElement;
}
if (!targetDocument.getElementById(styleId)) {
var containerAnimationClass = containerClass + "_animation";
var containerAnimationActiveClass = containerClass + "_animation_active";
var style = "/* Created by the element-resize-detector library. */\n";
style += "." + containerClass + " > div::-webkit-scrollbar { " + buildCssTextString(["display: none"]) + " }\n\n";
style += "." + containerAnimationActiveClass + " { " + buildCssTextString(["-webkit-animation-duration: 0.1s", "animation-duration: 0.1s", "-webkit-animation-name: " + containerAnimationClass, "animation-name: " + containerAnimationClass]) + " }\n";
style += "@-webkit-keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\n";
style += "@keyframes " + containerAnimationClass + " { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }";
injectStyle(style);
}
}
function addAnimationClass(element) {
element.className += " " + detectionContainerClass + "_animation_active";
}
function addEvent(el, name, cb) {
if (el.addEventListener) {
el.addEventListener(name, cb);
} else if(el.attachEvent) {
el.attachEvent("on" + name, cb);
} else {
return reporter.error("[scroll] Don't know how to add event listeners.");
}
}
function removeEvent(el, name, cb) {
if (el.removeEventListener) {
el.removeEventListener(name, cb);
} else if(el.detachEvent) {
el.detachEvent("on" + name, cb);
} else {
return reporter.error("[scroll] Don't know how to remove event listeners.");
}
}
function getExpandElement(element) {
return getState(element).container.childNodes[0].childNodes[0].childNodes[0];
}
function getShrinkElement(element) {
return getState(element).container.childNodes[0].childNodes[0].childNodes[1];
}
/**
* Adds a resize event listener to the element.
* @public
* @param {element} element The element that should have the listener added.
* @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.
*/
function addListener(element, listener) {
var listeners = getState(element).listeners;
if (!listeners.push) {
throw new Error("Cannot add listener to an element that is not detectable.");
}
getState(element).listeners.push(listener);
}
/**
* Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.
* @private
* @param {object} options Optional options object.
* @param {element} element The element to make detectable
* @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.
*/
function makeDetectable(options, element, callback) {
if (!callback) {
callback = element;
element = options;
options = null;
}
options = options || {};
function debug() {
if (options.debug) {
var args = Array.prototype.slice.call(arguments);
args.unshift(idHandler.get(element), "Scroll: ");
if (reporter.log.apply) {
reporter.log.apply(null, args);
} else {
for (var i = 0; i < args.length; i++) {
reporter.log(args[i]);
}
}
}
}
function isDetached(element) {
function isInDocument(element) {
var isInShadowRoot = element.getRootNode && element.getRootNode().contains(element);
return element === element.ownerDocument.body || element.ownerDocument.body.contains(element) || isInShadowRoot;
}
if (!isInDocument(element)) {
return true;
}
// FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520
if (window.getComputedStyle(element) === null) {
return true;
}
return false;
}
function isUnrendered(element) {
// Check the absolute positioned container since the top level container is display: inline.
var container = getState(element).container.childNodes[0];
var style = window.getComputedStyle(container);
return !style.width || style.width.indexOf("px") === -1; //Can only compute pixel value when rendered.
}
function getStyle() {
// Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,
// so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).
var elementStyle = window.getComputedStyle(element);
var style = {};
style.position = elementStyle.position;
style.width = element.offsetWidth;
style.height = element.offsetHeight;
style.top = elementStyle.top;
style.right = elementStyle.right;
style.bottom = elementStyle.bottom;
style.left = elementStyle.left;
style.widthCSS = elementStyle.width;
style.heightCSS = elementStyle.height;
return style;
}
function storeStartSize() {
var style = getStyle();
getState(element).startSize = {
width: style.width,
height: style.height
};
debug("Element start size", getState(element).startSize);
}
function initListeners() {
getState(element).listeners = [];
}
function storeStyle() {
debug("storeStyle invoked.");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
var style = getStyle();
getState(element).style = style;
}
function storeCurrentSize(element, width, height) {
getState(element).lastWidth = width;
getState(element).lastHeight = height;
}
function getExpandChildElement(element) {
return getExpandElement(element).childNodes[0];
}
function getWidthOffset() {
return 2 * scrollbarSizes.width + 1;
}
function getHeightOffset() {
return 2 * scrollbarSizes.height + 1;
}
function getExpandWidth(width) {
return width + 10 + getWidthOffset();
}
function getExpandHeight(height) {
return height + 10 + getHeightOffset();
}
function getShrinkWidth(width) {
return width * 2 + getWidthOffset();
}
function getShrinkHeight(height) {
return height * 2 + getHeightOffset();
}
function positionScrollbars(element, width, height) {
var expand = getExpandElement(element);
var shrink = getShrinkElement(element);
var expandWidth = getExpandWidth(width);
var expandHeight = getExpandHeight(height);
var shrinkWidth = getShrinkWidth(width);
var shrinkHeight = getShrinkHeight(height);
expand.scrollLeft = expandWidth;
expand.scrollTop = expandHeight;
shrink.scrollLeft = shrinkWidth;
shrink.scrollTop = shrinkHeight;
}
function injectContainerElement() {
var container = getState(element).container;
if (!container) {
container = document.createElement("div");
container.className = detectionContainerClass;
container.style.cssText = buildCssTextString(["visibility: hidden", "display: inline", "width: 0px", "height: 0px", "z-index: -1", "overflow: hidden", "margin: 0", "padding: 0"]);
getState(element).container = container;
addAnimationClass(container);
element.appendChild(container);
var onAnimationStart = function () {
getState(element).onRendered && getState(element).onRendered();
};
addEvent(container, "animationstart", onAnimationStart);
// Store the event handler here so that they may be removed when uninstall is called.
// See uninstall function for an explanation why it is needed.
getState(element).onAnimationStart = onAnimationStart;
}
return container;
}
function injectScrollElements() {
function alterPositionStyles() {
var style = getState(element).style;
if(style.position === "static") {
element.style.setProperty("position", "relative",options.important ? "important" : "");
var removeRelativeStyles = function(reporter, element, style, property) {
function getNumericalValue(value) {
return value.replace(/[^-\d\.]/g, "");
}
var value = style[property];
if(value !== "auto" && getNumericalValue(value) !== "0") {
reporter.warn("An element that is positioned static has style." + property + "=" + value + " which is ignored due to the static positioning. The element will need to be positioned relative, so the style." + property + " will be set to 0. Element: ", element);
element.style[property] = 0;
}
};
//Check so that there are no accidental styles that will make the element styled differently now that is is relative.
//If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).
removeRelativeStyles(reporter, element, style, "top");
removeRelativeStyles(reporter, element, style, "right");
removeRelativeStyles(reporter, element, style, "bottom");
removeRelativeStyles(reporter, element, style, "left");
}
}
function getLeftTopBottomRightCssText(left, top, bottom, right) {
left = (!left ? "0" : (left + "px"));
top = (!top ? "0" : (top + "px"));
bottom = (!bottom ? "0" : (bottom + "px"));
right = (!right ? "0" : (right + "px"));
return ["left: " + left, "top: " + top, "right: " + right, "bottom: " + bottom];
}
debug("Injecting elements");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
alterPositionStyles();
var rootContainer = getState(element).container;
if (!rootContainer) {
rootContainer = injectContainerElement();
}
// Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),
// we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than
// the targeted element.
// When the bug is resolved, "containerContainer" may be removed.
// The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).
// This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.
var scrollbarWidth = scrollbarSizes.width;
var scrollbarHeight = scrollbarSizes.height;
var containerContainerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%", "left: 0px", "top: 0px"]);
var containerStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: hidden", "z-index: -1", "visibility: hidden"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));
var expandStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
var shrinkStyle = buildCssTextString(["position: absolute", "flex: none", "overflow: scroll", "z-index: -1", "visibility: hidden", "width: 100%", "height: 100%"]);
var expandChildStyle = buildCssTextString(["position: absolute", "left: 0", "top: 0"]);
var shrinkChildStyle = buildCssTextString(["position: absolute", "width: 200%", "height: 200%"]);
var containerContainer = document.createElement("div");
var container = document.createElement("div");
var expand = document.createElement("div");
var expandChild = document.createElement("div");
var shrink = document.createElement("div");
var shrinkChild = document.createElement("div");
// Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56
// However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.
containerContainer.dir = "ltr";
containerContainer.style.cssText = containerContainerStyle;
containerContainer.className = detectionContainerClass;
container.className = detectionContainerClass;
container.style.cssText = containerStyle;
expand.style.cssText = expandStyle;
expandChild.style.cssText = expandChildStyle;
shrink.style.cssText = shrinkStyle;
shrinkChild.style.cssText = shrinkChildStyle;
expand.appendChild(expandChild);
shrink.appendChild(shrinkChild);
container.appendChild(expand);
container.appendChild(shrink);
containerContainer.appendChild(container);
rootContainer.appendChild(containerContainer);
function onExpandScroll() {
var state = getState(element);
if (state && state.onExpand) {
state.onExpand();
} else {
debug("Aborting expand scroll handler: element has been uninstalled");
}
}
function onShrinkScroll() {
var state = getState(element);
if (state && state.onShrink) {
state.onShrink();
} else {
debug("Aborting shrink scroll handler: element has been uninstalled");
}
}
addEvent(expand, "scroll", onExpandScroll);
addEvent(shrink, "scroll", onShrinkScroll);
// Store the event handlers here so that they may be removed when uninstall is called.
// See uninstall function for an explanation why it is needed.
getState(element).onExpandScroll = onExpandScroll;
getState(element).onShrinkScroll = onShrinkScroll;
}
function registerListenersAndPositionElements() {
function updateChildSizes(element, width, height) {
var expandChild = getExpandChildElement(element);
var expandWidth = getExpandWidth(width);
var expandHeight = getExpandHeight(height);
expandChild.style.setProperty("width", expandWidth + "px", options.important ? "important" : "");
expandChild.style.setProperty("height", expandHeight + "px", options.important ? "important" : "");
}
function updateDetectorElements(done) {
var width = element.offsetWidth;
var height = element.offsetHeight;
// Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.
var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;
debug("Storing current size", width, height);
// Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.
// Otherwise the if-check in handleScroll is useless.
storeCurrentSize(element, width, height);
// Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.
// Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.
batchProcessor.add(0, function performUpdateChildSizes() {
if (!sizeChanged) {
return;
}
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
if (!areElementsInjected()) {
debug("Aborting because element container has not been initialized");
return;
}
if (options.debug) {
var w = element.offsetWidth;
var h = element.offsetHeight;
if (w !== width || h !== height) {
reporter.warn(idHandler.get(element), "Scroll: Size changed before updating detector elements.");
}
}
updateChildSizes(element, width, height);
});
batchProcessor.add(1, function updateScrollbars() {
// This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then
// been restored to the original size, which will have changed the scrollbar positions.
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
if (!areElementsInjected()) {
debug("Aborting because element container has not been initialized");
return;
}
positionScrollbars(element, width, height);
});
if (sizeChanged && done) {
batchProcessor.add(2, function () {
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
if (!areElementsInjected()) {
debug("Aborting because element container has not been initialized");
return;
}
done();
});
}
}
function areElementsInjected() {
return !!getState(element).container;
}
function notifyListenersIfNeeded() {
function isFirstNotify() {
return getState(element).lastNotifiedWidth === undefined;
}
debug("notifyListenersIfNeeded invoked");
var state = getState(element);
// Don't notify if the current size is the start size, and this is the first notification.
if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {
return debug("Not notifying: Size is the same as the start size, and there has been no notification yet.");
}
// Don't notify if the size already has been notified.
if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {
return debug("Not notifying: Size already notified");
}
debug("Current size not notified, notifying...");
state.lastNotifiedWidth = state.lastWidth;
state.lastNotifiedHeight = state.lastHeight;
forEach$1(getState(element).listeners, function (listener) {
listener(element);
});
}
function handleRender() {
debug("startanimation triggered.");
if (isUnrendered(element)) {
debug("Ignoring since element is still unrendered...");
return;
}
debug("Element rendered.");
var expand = getExpandElement(element);
var shrink = getShrinkElement(element);
if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {
debug("Scrollbars out of sync. Updating detector elements...");
updateDetectorElements(notifyListenersIfNeeded);
}
}
function handleScroll() {
debug("Scroll detected.");
if (isUnrendered(element)) {
// Element is still unrendered. Skip this scroll event.
debug("Scroll event fired while unrendered. Ignoring...");
return;
}
updateDetectorElements(notifyListenersIfNeeded);
}
debug("registerListenersAndPositionElements invoked.");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
getState(element).onRendered = handleRender;
getState(element).onExpand = handleScroll;
getState(element).onShrink = handleScroll;
var style = getState(element).style;
updateChildSizes(element, style.width, style.height);
}
function finalizeDomMutation() {
debug("finalizeDomMutation invoked.");
if (!getState(element)) {
debug("Aborting because element has been uninstalled");
return;
}
var style = getState(element).style;
storeCurrentSize(element, style.width, style.height);
positionScrollbars(element, style.width, style.height);
}
function ready() {
callback(element);
}
function install() {
debug("Installing...");
initListeners();
storeStartSize();
batchProcessor.add(0, storeStyle);
batchProcessor.add(1, injectScrollElements);
batchProcessor.add(2, registerListenersAndPositionElements);
batchProcessor.add(3, finalizeDomMutation);
batchProcessor.add(4, ready);
}
debug("Making detectable...");
if (isDetached(element)) {
debug("Element is detached");
injectContainerElement();
debug("Waiting until element is attached...");
getState(element).onRendered = function () {
debug("Element is now attached");
install();
};
} else {
install();
}
}
function uninstall(element) {
var state = getState(element);
if (!state) {
// Uninstall has been called on a non-erd element.
return;
}
// Uninstall may have been called in the following scenarios:
// (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).
// (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).
// (3) After the installation process (here, state.busy = false and all the stuff has been injected).
// So to be on the safe side, let's check for each thing before removing.
// We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.
state.onExpandScroll && removeEvent(getExpandElement(element), "scroll", state.onExpandScroll);
state.onShrinkScroll && removeEvent(getShrinkElement(element), "scroll", state.onShrinkScroll);
state.onAnimationStart && removeEvent(state.container, "animationstart", state.onAnimationStart);
state.container && element.removeChild(state.container);
}
return {
makeDetectable: makeDetectable,
addListener: addListener,
uninstall: uninstall,
initDocument: initDocument
};
};
var forEach = collectionUtils.forEach;
//Detection strategies.
function isCollection(obj) {
return Array.isArray(obj) || obj.length !== undefined;
}
function toArray(collection) {
if (!Array.isArray(collection)) {
var array = [];
forEach(collection, function (obj) {
array.push(obj);
});
return array;
} else {
return collection;
}
}
function isElement(obj) {
return obj && obj.nodeType === 1;
}
/**
* @typedef idHandler
* @type {object}
* @property {function} get Gets the resize detector id of the element.
* @property {function} set Generate and sets the resize detector id of the element.
*/
/**
* @typedef Options
* @type {object}
* @property {boolean} callOnAdd Determines if listeners should be called when they are getting added.
Default is true. If true, the listener is guaranteed to be called when it has been added.
If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).
* @property {idHandler} idHandler A custom id handler that is responsible for generating, setting and retrieving id's for elements.
If not provided, a default id handler will be used.
* @property {reporter} reporter A custom reporter that handles reporting logs, warnings and errors.
If not provided, a default id handler will be used.
If set to false, then nothing will be reported.
* @property {boolean} debug If set to true, the the system will report debug messages as default for the listenTo method.
*/
/**
* Creates an element resize detector instance.
* @public
* @param {Options?} options Optional global options object that will decide how this instance will work.
*/
var elementResizeDetector = function(options) {
options = options || {};
//idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.
var idHandler$1;
if (options.idHandler) {
// To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler
// so that readonly flag always is true when it's used here. This may be removed next major version bump.
idHandler$1 = {
get: function (element) { return options.idHandler.get(element, true); },
set: options.idHandler.set
};
} else {
var idGenerator$1 = idGenerator();
var defaultIdHandler = idHandler({
idGenerator: idGenerator$1,
stateHandler: stateHandler
});
idHandler$1 = defaultIdHandler;
}
//reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.
var reporter$1 = options.reporter;
if(!reporter$1) {
//If options.reporter is false, then the reporter should be quiet.
var quiet = reporter$1 === false;
reporter$1 = reporter(quiet);
}
//batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.
var batchProcessor$1 = getOption(options, "batchProcessor", batchProcessor({ reporter: reporter$1 }));
//Options to be used as default for the listenTo function.
var globalOptions = {};
globalOptions.callOnAdd = !!getOption(options, "callOnAdd", true);
globalOptions.debug = !!getOption(options, "debug", false);
var eventListenerHandler = listenerHandler(idHandler$1);
var elementUtils$1 = elementUtils({
stateHandler: stateHandler
});
//The detection strategy to be used.
var detectionStrategy;
var desiredStrategy = getOption(options, "strategy", "object");
var importantCssRules = getOption(options, "important", false);
var strategyOptions = {
reporter: reporter$1,
batchProcessor: batchProcessor$1,
stateHandler: stateHandler,
idHandler: idHandler$1,
important: importantCssRules
};
if(desiredStrategy === "scroll") {
if (browserDetector.isLegacyOpera()) {
reporter$1.warn("Scroll strategy is not supported on legacy Opera. Changing to object strategy.");
desiredStrategy = "object";
} else if (browserDetector.isIE(9)) {
reporter$1.warn("Scroll strategy is not supported on IE9. Changing to object strategy.");
desiredStrategy = "object";
}
}
if(desiredStrategy === "scroll") {
detectionStrategy = scroll(strategyOptions);
} else if(desiredStrategy === "object") {
detectionStrategy = object(strategyOptions);
} else {
throw new Error("Invalid strategy name: " + desiredStrategy);
}
//Calls can be made to listenTo with elements that are still being installed.
//Also, same elements can occur in the elements list in the listenTo function.
//With this map, the ready callbacks can be synchronized between the calls
//so that the ready callback can always be called when an element is ready - even if
//it wasn't installed from the function itself.
var onReadyCallbacks = {};
/**
* Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.
* @public
* @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.
* @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.
* @param {function} listener The callback to be executed for each resize event for each element.
*/
function listenTo(options, elements, listener) {
function onResizeCallback(element) {
var listeners = eventListenerHandler.get(element);
forEach(listeners, function callListenerProxy(listener) {
listener(element);
});
}
function addListener(callOnAdd, element, listener) {
eventListenerHandler.add(element, listener);
if(callOnAdd) {
listener(element);
}
}
//Options object may be omitted.
if(!listener) {
listener = elements;
elements = options;
options = {};
}
if(!elements) {
throw new Error("At least one element required.");
}
if(!listener) {
throw new Error("Listener required.");
}
if (isElement(elements)) {
// A single element has been passed in.
elements = [elements];
} else if (isCollection(elements)) {
// Convert collection to array for plugins.
// TODO: May want to check so that all the elements in the collection are valid elements.
elements = toArray(elements);
} else {
return reporter$1.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
}
var elementsReady = 0;
var callOnAdd = getOption(options, "callOnAdd", globalOptions.callOnAdd);
var onReadyCallback = getOption(options, "onReady", function noop() {});
var debug = getOption(options, "debug", globalOptions.debug);
forEach(elements, function attachListenerToElement(element) {
if (!stateHandler.getState(element)) {
stateHandler.initState(element);
idHandler$1.set(element);
}
var id = idHandler$1.get(element);
debug && reporter$1.log("Attaching listener to element", id, element);
if(!elementUtils$1.isDetectable(element)) {
debug && reporter$1.log(id, "Not detectable.");
if(elementUtils$1.isBusy(element)) {
debug && reporter$1.log(id, "System busy making it detectable");
//The element is being prepared to be detectable. Do not make it detectable.
//Just add the listener, because the element will soon be detectable.
addListener(callOnAdd, element, listener);
onReadyCallbacks[id] = onReadyCallbacks[id] || [];
onReadyCallbacks[id].push(function onReady() {
elementsReady++;
if(elementsReady === elements.length) {
onReadyCallback();
}
});
return;
}
debug && reporter$1.log(id, "Making detectable...");
//The element is not prepared to be detectable, so do prepare it and add a listener to it.
elementUtils$1.markBusy(element, true);
return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {
debug && reporter$1.log(id, "onElementDetectable");
if (stateHandler.getState(element)) {
elementUtils$1.markAsDetectable(element);
elementUtils$1.markBusy(element, false);
detectionStrategy.addListener(element, onResizeCallback);
addListener(callOnAdd, element, listener);
// Since the element size might have changed since the call to "listenTo", we need to check for this change,
// so that a resize event may be emitted.
// Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.
// Also, check the state existance before since the element may have been uninstalled in the installation process.
var state = stateHandler.getState(element);
if (state && state.startSize) {
var width = element.offsetWidth;
var height = element.offsetHeight;
if (state.startSize.width !== width || state.startSize.height !== height) {
onResizeCallback(element);
}
}
if(onReadyCallbacks[id]) {
forEach(onReadyCallbacks[id], function(callback) {
callback();
});
}
} else {
// The element has been unisntalled before being detectable.
debug && reporter$1.log(id, "Element uninstalled before being detectable.");
}
delete onReadyCallbacks[id];
elementsReady++;
if(elementsReady === elements.length) {
onReadyCallback();
}
});
}
debug && reporter$1.log(id, "Already detecable, adding listener.");
//The element has been prepared to be detectable and is ready to be listened to.
addListener(callOnAdd, element, listener);
elementsReady++;
});
if(elementsReady === elements.length) {
onReadyCallback();
}
}
function uninstall(elements) {
if(!elements) {
return reporter$1.error("At least one element is required.");
}
if (isElement(elements)) {
// A single element has been passed in.
elements = [elements];
} else if (isCollection(elements)) {
// Convert collection to array for plugins.
// TODO: May want to check so that all the elements in the collection are valid elements.
elements = toArray(elements);
} else {
return reporter$1.error("Invalid arguments. Must be a DOM element or a collection of DOM elements.");
}
forEach(elements, function (element) {
eventListenerHandler.removeAllListeners(element);
detectionStrategy.uninstall(element);
stateHandler.cleanState(element);
});
}
function initDocument(targetDocument) {
detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);
}
return {
listenTo: listenTo,
removeListener: eventListenerHandler.removeListener,
removeAllListeners: eventListenerHandler.removeAllListeners,
uninstall: uninstall,
initDocument: initDocument
};
};
function getOption(options, name, defaultValue) {
var value = options[name];
if((value === undefined || value === null) && defaultValue !== undefined) {
return defaultValue;
}
return value;
}
var erd = elementResizeDetector({ strategy: "scroll" });
function watchResize(element, handler) {
erd.listenTo(element, handler);
var currentHandler = handler;
return {
update: function (newHandler) {
erd.removeListener(element, currentHandler);
erd.listenTo(element, newHandler);
currentHandler = newHandler;
},
destroy: function () {
erd.removeListener(element, currentHandler);
},
};
}
const subscriber_queue = [];
/**
* Create a `Writable` store that allows both updating and reading by subscription.
* @param {*=}value initial value
* @param {StartStopNotifier=}start start and stop notifications for subscriptions
*/
function writable(value, start = noop) {
let stop;
const subscribers = new Set();
function set(new_value) {
if (safe_not_equal(value, new_value)) {
value = new_value;
if (stop) { // store is ready
const run_queue = !subscriber_queue.length;
for (const subscriber of subscribers) {
subscriber[1]();
subscriber_queue.push(subscriber, value);
}
if (run_queue) {
for (let i = 0; i < subscriber_queue.length; i += 2) {
subscriber_queue[i][0](subscriber_queue[i + 1]);
}
subscriber_queue.length = 0;
}
}
}
}
function update(fn) {
set(fn(value));
}
function subscribe(run, invalidate = noop) {
const subscriber = [run, invalidate];
subscribers.add(subscriber);
if (subscribers.size === 1) {
stop = start(set) || noop;
}
run(value);
return () => {
subscribers.delete(subscriber);
if (subscribers.size === 0) {
stop();
stop = null;
}
};
}
return { set, update, subscribe };
}
function getHotkeysV2(app) {
// app.hotkeyManager.bake()
let hotKeyDict = {};
const hkm = app.hotkeyManager;
Object.entries(app.commands.commands).forEach(([id, command]) => {
let isBuiltInCommand = command.name.split(':').length === 1;
let pluginName = isBuiltInCommand
? command.id.charAt(0).toUpperCase() + command.id.split(':')[0].slice(1)
: command.name.split(':', 2)[0];
let cmdName = isBuiltInCommand
? command.name
: // split by ":" remove the first element (plugin name) and join with ":"
command.name.split(':').slice(1).join(':');
let hotkeys = (hkm.getHotkeys(command.id) ||
hkm.getDefaultHotkeys(command.id) ||
[]);
// function to prepare hotkey object
function prepareHotkey(hotkey) {
let hotkeyObj = {};
if (hotkey.modifiers) {
hotkeyObj.modifiers = hotkey.modifiers;
hotkeyObj.backedModifiers = getConvertedModifiers(hotkey.modifiers).join(',');
}
hotkeyObj.key = hotkey.key;
hotkeyObj.isCustom = isCustomizedHotkey(id, hotkey, app);
return hotkeyObj;
}
// assign hotkey to hotkeyDict
hotkeys.forEach((hotkey) => {
let hotkeyObj = prepareHotkey(hotkey);
if (!hotKeyDict[id]) {
hotKeyDict[id] = {
id,
pluginName,
cmdName,
hotkeys: [hotkeyObj],
};
}
else {
hotKeyDict[id].hotkeys.push(hotkeyObj);
}
});
});
return hotKeyDict;
}
// check if hotkey is Customized
// app.hotkeyManager.customKeys store all custom hotkeys
// if reassigned return true
// https://forum.obsidian.md/t/dataviewjs-snippet-showcase/17847/37
function isCustomizedHotkey(id, hotkey, app) {
let isCustom = false;
let customKeys = app.hotkeyManager.customKeys[id];
let defaultKeys = app.hotkeyManager.getDefaultHotkeys(id);
if (customKeys) {
for (let customHotkey of customKeys) {
// compare arrays of modifiers, all modifiers must be the same
if (customHotkey.modifiers.length === hotkey.modifiers.length &&
customHotkey.modifiers.every((modifier, index) => {
return modifier === hotkey.modifiers[index];
}) &&
customHotkey.key === hotkey.key) {
isCustom = true;
}
else {
isCustom = false;
}
}
}
// check if hotkey is default
if (defaultKeys !== undefined) {
for (let defaultHotkey of defaultKeys) {
if (defaultHotkey.modifiers.length === hotkey.modifiers.length &&
defaultHotkey.modifiers.every((modifier, index) => {
return modifier === hotkey.modifiers[index];
}) &&
defaultHotkey.key === hotkey.key) {
isCustom = false;
}
else {
isCustom = true;
}
}
}
else if (defaultKeys === undefined) {
isCustom = true;
}
return isCustom;
}
// return true if hotkey duplicated with other hotkey
function isHotkeyDuplicate(commandID, hotkey) {
let isDuplicate = false;
let commands = getHotkeysV2(app);
for (let command of Object.entries(commands)) {
let currentCommandID = command[0];
let currentHotkeys = command[1].hotkeys;
if (currentCommandID !== commandID) {
for (let currentHotkey of currentHotkeys) {
if (currentHotkey.key === hotkey.key &&
currentHotkey.modifiers.length === hotkey.modifiers.length &&
currentHotkey.modifiers.every((modifier, index) => {
return modifier === hotkey.modifiers[index];
})) {
isDuplicate = true;
}
}
}
}
return isDuplicate;
}
function getConvertedModifiers(modifiers) {
let convertedModifiers = modifiers.map((modifier) => {
if (modifier === 'Mod') {
// check macos
if (obsidian.Platform.isMacOS === true) {
return 'Cmd';
}
else {
return 'Ctrl';
}
}
if (modifier === 'Meta') {
// check macos
if (obsidian.Platform.isMacOS === true) {
return 'Cmd';
}
else {
return 'Win';
}
}
return modifier;
});
return convertedModifiers;
}
// sort modifiers
function sortModifiers(modifiers) {
let sortedModifiers = modifiers.sort((a, b) => {
if (a === 'Mod') {
return -1;
}
if (b === 'Mod') {
return 1;
}
if (a === 'Meta') {
return -1;
}
if (b === 'Meta') {
return 1;
}
if (a === 'Ctrl') {
return -1;
}
if (b === 'Ctrl') {
return 1;
}
if (a === 'Alt') {
return -1;
}
if (b === 'Alt') {
return 1;
}
if (a === 'Shift') {
return -1;
}
if (b === 'Shift') {
return 1;
}
});
return sortedModifiers;
}
const activeKey = writable('');
const activeModifiers = writable([]);
var defaultAttributes = {
xmlns: 'http://www.w3.org/2000/svg',
width: 24,
height: 24,
viewBox: '0 0 24 24',
fill: 'none',
stroke: 'currentColor',
'stroke-width': 2,
'stroke-linecap': 'round',
'stroke-linejoin': 'round'
};
/* node_modules\lucide-svelte\dist\esm\Icon.svelte generated by Svelte v3.49.0 */
function create_fragment$b(ctx) {
let svg;
let svg_class_value;
let current;
const default_slot_template = /*#slots*/ ctx[7].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[6], null);
let svg_levels = [
defaultAttributes,
/*$$restProps*/ ctx[4],
{ width: /*size*/ ctx[2] },
{ height: /*size*/ ctx[2] },
{ stroke: /*color*/ ctx[1] },
{ "stroke-width": /*strokeWidth*/ ctx[3] },
{
class: svg_class_value = `lucide-icon lucide lucide-${/*name*/ ctx[0]} ${/*$$props*/ ctx[5].class ?? ''}`
}
];
let svg_data = {};
for (let i = 0; i < svg_levels.length; i += 1) {
svg_data = assign(svg_data, svg_levels[i]);
}
return {
c() {
svg = svg_element("svg");
if (default_slot) default_slot.c();
set_svg_attributes(svg, svg_data);
},
m(target, anchor) {
insert(target, svg, anchor);
if (default_slot) {
default_slot.m(svg, null);
}
current = true;
},
p(ctx, [dirty]) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 64)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[6],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[6])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[6], dirty, null),
null
);
}
}
set_svg_attributes(svg, svg_data = get_spread_update(svg_levels, [
defaultAttributes,
dirty & /*$$restProps*/ 16 && /*$$restProps*/ ctx[4],
(!current || dirty & /*size*/ 4) && { width: /*size*/ ctx[2] },
(!current || dirty & /*size*/ 4) && { height: /*size*/ ctx[2] },
(!current || dirty & /*color*/ 2) && { stroke: /*color*/ ctx[1] },
(!current || dirty & /*strokeWidth*/ 8) && { "stroke-width": /*strokeWidth*/ ctx[3] },
(!current || dirty & /*name, $$props*/ 33 && svg_class_value !== (svg_class_value = `lucide-icon lucide lucide-${/*name*/ ctx[0]} ${/*$$props*/ ctx[5].class ?? ''}`)) && { class: svg_class_value }
]));
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(svg);
if (default_slot) default_slot.d(detaching);
}
};
}
function instance$b($$self, $$props, $$invalidate) {
const omit_props_names = ["name","color","size","strokeWidth"];
let $$restProps = compute_rest_props($$props, omit_props_names);
let { $$slots: slots = {}, $$scope } = $$props;
let { name } = $$props;
let { color = 'currentColor' } = $$props;
let { size = 24 } = $$props;
let { strokeWidth = 2 } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(5, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
$$invalidate(4, $$restProps = compute_rest_props($$props, omit_props_names));
if ('name' in $$new_props) $$invalidate(0, name = $$new_props.name);
if ('color' in $$new_props) $$invalidate(1, color = $$new_props.color);
if ('size' in $$new_props) $$invalidate(2, size = $$new_props.size);
if ('strokeWidth' in $$new_props) $$invalidate(3, strokeWidth = $$new_props.strokeWidth);
if ('$$scope' in $$new_props) $$invalidate(6, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [name, color, size, strokeWidth, $$restProps, $$props, $$scope, slots];
}
class Icon extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$b, create_fragment$b, safe_not_equal, {
name: 0,
color: 1,
size: 2,
strokeWidth: 3
});
}
}
var Icon$1 = Icon;
/* node_modules\lucide-svelte\dist\esm\icons\circle-dot.svelte generated by Svelte v3.49.0 */
function create_default_slot$5(ctx) {
let circle0;
let t0;
let circle1;
let t1;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
circle0 = svg_element("circle");
t0 = space();
circle1 = svg_element("circle");
t1 = space();
if (default_slot) default_slot.c();
attr(circle0, "cx", "12");
attr(circle0, "cy", "12");
attr(circle0, "r", "10");
attr(circle1, "cx", "12");
attr(circle1, "cy", "12");
attr(circle1, "r", "1");
},
m(target, anchor) {
insert(target, circle0, anchor);
insert(target, t0, anchor);
insert(target, circle1, anchor);
insert(target, t1, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(circle0);
if (detaching) detach(t0);
if (detaching) detach(circle1);
if (detaching) detach(t1);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$a(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "circle-dot" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$5] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$a($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Circle_dot extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$a, create_fragment$a, safe_not_equal, {});
}
}
var CircleDotIcon = Circle_dot;
/* node_modules\lucide-svelte\dist\esm\icons\coffee.svelte generated by Svelte v3.49.0 */
function create_default_slot$4(ctx) {
let path0;
let t0;
let path1;
let t1;
let line0;
let t2;
let line1;
let t3;
let line2;
let t4;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
path0 = svg_element("path");
t0 = space();
path1 = svg_element("path");
t1 = space();
line0 = svg_element("line");
t2 = space();
line1 = svg_element("line");
t3 = space();
line2 = svg_element("line");
t4 = space();
if (default_slot) default_slot.c();
attr(path0, "d", "M17 8h1a4 4 0 1 1 0 8h-1");
attr(path1, "d", "M3 8h14v9a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4Z");
attr(line0, "x1", "6");
attr(line0, "y1", "2");
attr(line0, "x2", "6");
attr(line0, "y2", "4");
attr(line1, "x1", "10");
attr(line1, "y1", "2");
attr(line1, "x2", "10");
attr(line1, "y2", "4");
attr(line2, "x1", "14");
attr(line2, "y1", "2");
attr(line2, "x2", "14");
attr(line2, "y2", "4");
},
m(target, anchor) {
insert(target, path0, anchor);
insert(target, t0, anchor);
insert(target, path1, anchor);
insert(target, t1, anchor);
insert(target, line0, anchor);
insert(target, t2, anchor);
insert(target, line1, anchor);
insert(target, t3, anchor);
insert(target, line2, anchor);
insert(target, t4, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(path0);
if (detaching) detach(t0);
if (detaching) detach(path1);
if (detaching) detach(t1);
if (detaching) detach(line0);
if (detaching) detach(t2);
if (detaching) detach(line1);
if (detaching) detach(t3);
if (detaching) detach(line2);
if (detaching) detach(t4);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$9(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "coffee" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$4] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$9($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Coffee extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$9, create_fragment$9, safe_not_equal, {});
}
}
var CofeeIcon = Coffee;
/* node_modules\lucide-svelte\dist\esm\icons\filter.svelte generated by Svelte v3.49.0 */
function create_default_slot$3(ctx) {
let polygon;
let t;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
polygon = svg_element("polygon");
t = space();
if (default_slot) default_slot.c();
attr(polygon, "points", "22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3");
},
m(target, anchor) {
insert(target, polygon, anchor);
insert(target, t, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(polygon);
if (detaching) detach(t);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$8(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "filter" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$3] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$8($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Filter extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$8, create_fragment$8, safe_not_equal, {});
}
}
var FilterIcon = Filter;
/* node_modules\lucide-svelte\dist\esm\icons\refresh-cw.svelte generated by Svelte v3.49.0 */
function create_default_slot$2(ctx) {
let path0;
let t0;
let path1;
let t1;
let path2;
let t2;
let path3;
let t3;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
path0 = svg_element("path");
t0 = space();
path1 = svg_element("path");
t1 = space();
path2 = svg_element("path");
t2 = space();
path3 = svg_element("path");
t3 = space();
if (default_slot) default_slot.c();
attr(path0, "d", "M21 2v6h-6");
attr(path1, "d", "M3 12a9 9 0 0 1 15-6.7L21 8");
attr(path2, "d", "M3 22v-6h6");
attr(path3, "d", "M21 12a9 9 0 0 1-15 6.7L3 16");
},
m(target, anchor) {
insert(target, path0, anchor);
insert(target, t0, anchor);
insert(target, path1, anchor);
insert(target, t1, anchor);
insert(target, path2, anchor);
insert(target, t2, anchor);
insert(target, path3, anchor);
insert(target, t3, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(path0);
if (detaching) detach(t0);
if (detaching) detach(path1);
if (detaching) detach(t1);
if (detaching) detach(path2);
if (detaching) detach(t2);
if (detaching) detach(path3);
if (detaching) detach(t3);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$7(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "refresh-cw" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$2] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$7($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Refresh_cw extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$7, create_fragment$7, safe_not_equal, {});
}
}
var RefreshIcon = Refresh_cw;
/* node_modules\lucide-svelte\dist\esm\icons\star.svelte generated by Svelte v3.49.0 */
function create_default_slot$1(ctx) {
let polygon;
let t;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
polygon = svg_element("polygon");
t = space();
if (default_slot) default_slot.c();
attr(polygon, "points", "12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2");
},
m(target, anchor) {
insert(target, polygon, anchor);
insert(target, t, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(polygon);
if (detaching) detach(t);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$6(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "star" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot$1] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$6($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class Star extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$6, create_fragment$6, safe_not_equal, {});
}
}
var StarIcon = Star;
/* node_modules\lucide-svelte\dist\esm\icons\x.svelte generated by Svelte v3.49.0 */
function create_default_slot(ctx) {
let line0;
let t0;
let line1;
let t1;
let current;
const default_slot_template = /*#slots*/ ctx[1].default;
const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[2], null);
return {
c() {
line0 = svg_element("line");
t0 = space();
line1 = svg_element("line");
t1 = space();
if (default_slot) default_slot.c();
attr(line0, "x1", "18");
attr(line0, "y1", "6");
attr(line0, "x2", "6");
attr(line0, "y2", "18");
attr(line1, "x1", "6");
attr(line1, "y1", "6");
attr(line1, "x2", "18");
attr(line1, "y2", "18");
},
m(target, anchor) {
insert(target, line0, anchor);
insert(target, t0, anchor);
insert(target, line1, anchor);
insert(target, t1, anchor);
if (default_slot) {
default_slot.m(target, anchor);
}
current = true;
},
p(ctx, dirty) {
if (default_slot) {
if (default_slot.p && (!current || dirty & /*$$scope*/ 4)) {
update_slot_base(
default_slot,
default_slot_template,
ctx,
/*$$scope*/ ctx[2],
!current
? get_all_dirty_from_scope(/*$$scope*/ ctx[2])
: get_slot_changes(default_slot_template, /*$$scope*/ ctx[2], dirty, null),
null
);
}
}
},
i(local) {
if (current) return;
transition_in(default_slot, local);
current = true;
},
o(local) {
transition_out(default_slot, local);
current = false;
},
d(detaching) {
if (detaching) detach(line0);
if (detaching) detach(t0);
if (detaching) detach(line1);
if (detaching) detach(t1);
if (default_slot) default_slot.d(detaching);
}
};
}
function create_fragment$5(ctx) {
let icon;
let current;
const icon_spread_levels = [{ name: "x" }, /*$$props*/ ctx[0]];
let icon_props = {
$$slots: { default: [create_default_slot] },
$$scope: { ctx }
};
for (let i = 0; i < icon_spread_levels.length; i += 1) {
icon_props = assign(icon_props, icon_spread_levels[i]);
}
icon = new Icon$1({ props: icon_props });
return {
c() {
create_component(icon.$$.fragment);
},
m(target, anchor) {
mount_component(icon, target, anchor);
current = true;
},
p(ctx, [dirty]) {
const icon_changes = (dirty & /*$$props*/ 1)
? get_spread_update(icon_spread_levels, [icon_spread_levels[0], get_spread_object(/*$$props*/ ctx[0])])
: {};
if (dirty & /*$$scope*/ 4) {
icon_changes.$$scope = { dirty, ctx };
}
icon.$set(icon_changes);
},
i(local) {
if (current) return;
transition_in(icon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(icon.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(icon, detaching);
}
};
}
function instance$5($$self, $$props, $$invalidate) {
let { $$slots: slots = {}, $$scope } = $$props;
$$self.$$set = $$new_props => {
$$invalidate(0, $$props = assign(assign({}, $$props), exclude_internal_props($$new_props)));
if ('$$scope' in $$new_props) $$invalidate(2, $$scope = $$new_props.$$scope);
};
$$props = exclude_internal_props($$props);
return [$$props, slots, $$scope];
}
class X extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$5, create_fragment$5, safe_not_equal, {});
}
}
var CrossIcon = X;
/* src\Components\KeyboardKey.svelte generated by Svelte v3.49.0 */
function create_else_block$1(ctx) {
let div;
let raw_value = (/*unicode*/ ctx[6] && /*unicode*/ ctx[6] !== ''
? /*unicode*/ ctx[6]
: /*keyLabel*/ ctx[0]) + "";
let div_data_weight_value;
let mounted;
let dispose;
return {
c() {
div = element("div");
attr(div, "class", "kb-layout-key");
attr(div, "data-weight", div_data_weight_value = /*keyWeight*/ ctx[2]
? spreadWeights(/*keyWeight*/ ctx[2])
: 0);
attr(div, "data-key-id", /*keyCode*/ ctx[1]);
toggle_class(div, "is-active", /*state*/ ctx[7] === 'active');
toggle_class(div, "small-text", /*smallText*/ ctx[3]);
set_style(
div,
"grid-row",
/*height*/ ctx[5] !== 1
? `span calc(${/*height*/ ctx[5]}*1)`
: 'span 1',
false
);
set_style(
div,
"grid-column",
/*width*/ ctx[4] !== 1
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
},
m(target, anchor) {
insert(target, div, anchor);
div.innerHTML = raw_value;
if (!mounted) {
dispose = listen(div, "click", /*handleClick*/ ctx[8]);
mounted = true;
}
},
p(ctx, dirty) {
if (dirty & /*unicode, keyLabel*/ 65 && raw_value !== (raw_value = (/*unicode*/ ctx[6] && /*unicode*/ ctx[6] !== ''
? /*unicode*/ ctx[6]
: /*keyLabel*/ ctx[0]) + "")) div.innerHTML = raw_value;
if (dirty & /*keyWeight*/ 4 && div_data_weight_value !== (div_data_weight_value = /*keyWeight*/ ctx[2]
? spreadWeights(/*keyWeight*/ ctx[2])
: 0)) {
attr(div, "data-weight", div_data_weight_value);
}
if (dirty & /*keyCode*/ 2) {
attr(div, "data-key-id", /*keyCode*/ ctx[1]);
}
if (dirty & /*state*/ 128) {
toggle_class(div, "is-active", /*state*/ ctx[7] === 'active');
}
if (dirty & /*smallText*/ 8) {
toggle_class(div, "small-text", /*smallText*/ ctx[3]);
}
if (dirty & /*height*/ 32) {
set_style(
div,
"grid-row",
/*height*/ ctx[5] !== 1
? `span calc(${/*height*/ ctx[5]}*1)`
: 'span 1',
false
);
}
if (dirty & /*width*/ 16) {
set_style(
div,
"grid-column",
/*width*/ ctx[4] !== 1
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
}
},
d(detaching) {
if (detaching) detach(div);
mounted = false;
dispose();
}
};
}
// (33:0) {#if keyLabel === 'empty'}
function create_if_block$2(ctx) {
let div;
return {
c() {
div = element("div");
attr(div, "class", "kb-layout-key empty");
set_style(
div,
"grid-column",
/*width*/ ctx[4]
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
},
m(target, anchor) {
insert(target, div, anchor);
},
p(ctx, dirty) {
if (dirty & /*width*/ 16) {
set_style(
div,
"grid-column",
/*width*/ ctx[4]
? `span calc(${/*width*/ ctx[4]}*4)`
: 'span 4',
false
);
}
},
d(detaching) {
if (detaching) detach(div);
}
};
}
function create_fragment$4(ctx) {
let if_block_anchor;
function select_block_type(ctx, dirty) {
if (/*keyLabel*/ ctx[0] === 'empty') return create_if_block$2;
return create_else_block$1;
}
let current_block_type = select_block_type(ctx);
let if_block = current_block_type(ctx);
return {
c() {
if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx, [dirty]) {
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block) {
if_block.p(ctx, dirty);
} else {
if_block.d(1);
if_block = current_block_type(ctx);
if (if_block) {
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
}
},
i: noop,
o: noop,
d(detaching) {
if_block.d(detaching);
if (detaching) detach(if_block_anchor);
}
};
}
function spreadWeights(weight) {
if (weight >= 5) {
return 5;
} else if (weight < 5 && weight > 0) {
return weight;
} else {
return 0;
}
}
function instance$4($$self, $$props, $$invalidate) {
let { keyLabel = '' } = $$props;
let { keyOutput = '' } = $$props;
let { keyCode = -1 } = $$props;
let { keyWeight = 0 } = $$props;
let { smallText = false } = $$props;
let { width = 1 } = $$props;
let { height = 1 } = $$props;
let { unicode = '' } = $$props;
let { state } = $$props;
const dispatch = createEventDispatcher();
const handleClick = () => {
if (state !== 'disabled') {
dispatch('kb-key-click', [keyCode, keyOutput]);
}
};
$$self.$$set = $$props => {
if ('keyLabel' in $$props) $$invalidate(0, keyLabel = $$props.keyLabel);
if ('keyOutput' in $$props) $$invalidate(9, keyOutput = $$props.keyOutput);
if ('keyCode' in $$props) $$invalidate(1, keyCode = $$props.keyCode);
if ('keyWeight' in $$props) $$invalidate(2, keyWeight = $$props.keyWeight);
if ('smallText' in $$props) $$invalidate(3, smallText = $$props.smallText);
if ('width' in $$props) $$invalidate(4, width = $$props.width);
if ('height' in $$props) $$invalidate(5, height = $$props.height);
if ('unicode' in $$props) $$invalidate(6, unicode = $$props.unicode);
if ('state' in $$props) $$invalidate(7, state = $$props.state);
};
return [
keyLabel,
keyCode,
keyWeight,
smallText,
width,
height,
unicode,
state,
handleClick,
keyOutput
];
}
class KeyboardKey extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$4, create_fragment$4, safe_not_equal, {
keyLabel: 0,
keyOutput: 9,
keyCode: 1,
keyWeight: 2,
smallText: 3,
width: 4,
height: 5,
unicode: 6,
state: 7
});
}
}
/* src\Components\KeyboardLayout.svelte generated by Svelte v3.49.0 */
function add_css(target) {
append_styles(target, "svelte-oqtk7m", ".keyboard-layout.svelte-oqtk7m{grid-template-columns:var(--kb-grid-columns)}.donation-badge.svelte-oqtk7m{position:absolute;top:24px;right:24px;border:1px dashed var(--text-accent);color:var(--text-accent);font-size:var(--font-scale-0);line-height:initial;display:flex;justify-content:center;align-items:center;white-space:nowrap;border-radius:20px;padding:2px 8px;cursor:pointer}.donation-badge.svelte-oqtk7m:hover{border:1px solid var(--text-accent);background-color:var(--text-accent);color:var(--text-on-accent)}");
}
function get_each_context$2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[12] = list[i];
return child_ctx;
}
function get_each_context_1$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[15] = list[i];
return child_ctx;
}
function get_each_context_2(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[18] = list[i];
child_ctx[19] = list;
child_ctx[20] = i;
return child_ctx;
}
// (196:8) {#each Row as Key}
function create_each_block_2(ctx) {
let keyboardkey;
let updating_keyWeight;
let updating_state;
let current;
function keyboardkey_keyWeight_binding(value) {
/*keyboardkey_keyWeight_binding*/ ctx[6](value, /*Key*/ ctx[18]);
}
function keyboardkey_state_binding(value) {
/*keyboardkey_state_binding*/ ctx[7](value, /*Key*/ ctx[18]);
}
let keyboardkey_props = {
keyLabel: /*Key*/ ctx[18].label,
keyOutput: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].output,
keyCode: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].keyCode,
smallText: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].smallText,
unicode: /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].unicode,
width: /*Key*/ ctx[18].width,
height: /*Key*/ ctx[18].height
};
if (/*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight !== void 0) {
keyboardkey_props.keyWeight = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight;
}
if (/*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state !== void 0) {
keyboardkey_props.state = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state;
}
keyboardkey = new KeyboardKey({ props: keyboardkey_props });
binding_callbacks.push(() => bind(keyboardkey, 'keyWeight', keyboardkey_keyWeight_binding));
binding_callbacks.push(() => bind(keyboardkey, 'state', keyboardkey_state_binding));
keyboardkey.$on("kb-key-click", /*handleKeyClick*/ ctx[2]);
return {
c() {
create_component(keyboardkey.$$.fragment);
},
m(target, anchor) {
mount_component(keyboardkey, target, anchor);
current = true;
},
p(new_ctx, dirty) {
ctx = new_ctx;
const keyboardkey_changes = {};
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.keyLabel = /*Key*/ ctx[18].label;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.keyOutput = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].output;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.keyCode = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].keyCode;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.smallText = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].smallText;
if (dirty & /*KeyboardStateDict, KeyboardObject*/ 3) keyboardkey_changes.unicode = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].unicode;
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.width = /*Key*/ ctx[18].width;
if (dirty & /*KeyboardObject*/ 2) keyboardkey_changes.height = /*Key*/ ctx[18].height;
if (!updating_keyWeight && dirty & /*KeyboardStateDict, KeyboardObject*/ 3) {
updating_keyWeight = true;
keyboardkey_changes.keyWeight = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].weight;
add_flush_callback(() => updating_keyWeight = false);
}
if (!updating_state && dirty & /*KeyboardStateDict, KeyboardObject*/ 3) {
updating_state = true;
keyboardkey_changes.state = /*KeyboardStateDict*/ ctx[0][/*Key*/ ctx[18].label].state;
add_flush_callback(() => updating_state = false);
}
keyboardkey.$set(keyboardkey_changes);
},
i(local) {
if (current) return;
transition_in(keyboardkey.$$.fragment, local);
current = true;
},
o(local) {
transition_out(keyboardkey.$$.fragment, local);
current = false;
},
d(detaching) {
destroy_component(keyboardkey, detaching);
}
};
}
// (195:6) {#each Section.rows as Row}
function create_each_block_1$1(ctx) {
let each_1_anchor;
let current;
let each_value_2 = /*Row*/ ctx[15];
let each_blocks = [];
for (let i = 0; i < each_value_2.length; i += 1) {
each_blocks[i] = create_each_block_2(get_each_context_2(ctx, each_value_2, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
each_1_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
insert(target, each_1_anchor, anchor);
current = true;
},
p(ctx, dirty) {
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
each_value_2 = /*Row*/ ctx[15];
let i;
for (i = 0; i < each_value_2.length; i += 1) {
const child_ctx = get_each_context_2(ctx, each_value_2, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block_2(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(each_1_anchor.parentNode, each_1_anchor);
}
}
group_outros();
for (i = each_value_2.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value_2.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
destroy_each(each_blocks, detaching);
if (detaching) detach(each_1_anchor);
}
};
}
// (193:2) {#each KeyboardObject as Section}
function create_each_block$2(ctx) {
let div;
let div_class_value;
let current;
let each_value_1 = /*Section*/ ctx[12].rows;
let each_blocks = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks[i] = create_each_block_1$1(get_each_context_1$1(ctx, each_value_1, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
return {
c() {
div = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div, "class", div_class_value = "" + (null_to_empty(/*Section*/ ctx[12].name) + " svelte-oqtk7m"));
},
m(target, anchor) {
insert(target, div, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div, null);
}
current = true;
},
p(ctx, dirty) {
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
each_value_1 = /*Section*/ ctx[12].rows;
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1$1(ctx, each_value_1, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block_1$1(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div, null);
}
}
group_outros();
for (i = each_value_1.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
if (!current || dirty & /*KeyboardObject*/ 2 && div_class_value !== (div_class_value = "" + (null_to_empty(/*Section*/ ctx[12].name) + " svelte-oqtk7m"))) {
attr(div, "class", div_class_value);
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value_1.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching) detach(div);
destroy_each(each_blocks, detaching);
}
};
}
function create_fragment$3(ctx) {
let div2;
let t0;
let div1;
let div0;
let cofeeicon;
let t1;
let t2;
let current;
let mounted;
let dispose;
let each_value = /*KeyboardObject*/ ctx[1];
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$2(get_each_context$2(ctx, each_value, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
cofeeicon = new CofeeIcon({ props: { size: 16 } });
return {
c() {
div2 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t0 = space();
div1 = element("div");
div0 = element("div");
create_component(cofeeicon.$$.fragment);
t1 = text("\r\n Donate");
t2 = space();
set_style(div0, "padding-right", "6px");
attr(div1, "class", "donation-badge svelte-oqtk7m");
attr(div2, "id", "keyboard-layout");
set_style(div2, "grid-template-columns", kbGridColumns);
},
m(target, anchor) {
insert(target, div2, anchor);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div2, null);
}
append(div2, t0);
append(div2, div1);
append(div1, div0);
mount_component(cofeeicon, div0, null);
append(div1, t1);
insert(target, t2, anchor);
current = true;
if (!mounted) {
dispose = listen(div1, "click", /*click_handler*/ ctx[8]);
mounted = true;
}
},
p(ctx, [dirty]) {
if (dirty & /*KeyboardObject, KeyboardStateDict, handleKeyClick*/ 7) {
each_value = /*KeyboardObject*/ ctx[1];
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$2(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block$2(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(div2, t0);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
transition_in(cofeeicon.$$.fragment, local);
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
transition_out(cofeeicon.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div2);
destroy_each(each_blocks, detaching);
destroy_component(cofeeicon);
if (detaching) detach(t2);
mounted = false;
dispose();
}
};
}
let kbGridColumns = '3.75fr 0.75fr 1fr';
function instance$3($$self, $$props, $$invalidate) {
let $activeModifiers;
let $activeKey;
component_subscribe($$self, activeModifiers, $$value => $$invalidate(4, $activeModifiers = $$value));
component_subscribe($$self, activeKey, $$value => $$invalidate(5, $activeKey = $$value));
let { visibleCommands } = $$props;
let { KeyboardObject } = $$props;
let { KeyboardStateDict = {} } = $$props;
function getJSKeyEntry(keyLabel, mode = 'name') {
for (let JSEntry of Object.entries(JavaSciptKeyCodes)) {
if (mode === 'name' && keyLabel.toLocaleLowerCase() === JSEntry[1].Key.toLocaleLowerCase()) {
return JSEntry;
} else if (mode === 'code' && keyLabel.toLocaleLowerCase() === JSEntry[1].Code.toLocaleLowerCase() && keyLabel.toLocaleLowerCase().replace('numpad', '') === JSEntry[1].Key.toLocaleLowerCase()) {
return JSEntry;
} else if (keyLabel === 'empty') {
return ['empty', { Key: 'empty', Code: 'empty' }];
}
}
}
function unpackLayout(KeyboardLayout, activeSearchKey, activeSearchModifiers) {
let KeyboardDict = {};
for (let section of KeyboardLayout) {
for (let row of section.rows) {
for (let key of row) {
let JSkeyEntry = key.strictCode
? getJSKeyEntry(key.label, 'code')
: getJSKeyEntry(key.label);
let keyOutput = key.label;
let outputKeyObj;
if (key.label === 'empty') {
outputKeyObj = {
output: key.label,
keyCode: -2,
state: 'empty'
};
} else {
keyOutput = key.strictCode ? JSkeyEntry[1].Code : JSkeyEntry[1].Key;
// fix modifiers names according to OS - hardcoded for now
if (keyOutput === 'Control') {
keyOutput = 'Ctrl';
outputKeyObj = {
output: 'Ctrl',
smallText: key.smallText ? true : false,
keyCode: JSkeyEntry[0],
unicode: 'Ctrl'
};
} else if (keyOutput === 'Meta') {
if (obsidian.Platform.isMacOS === true) {
outputKeyObj = {
output: '⌥',
keyCode: 18,
smallText: key.smallText ? true : false,
unicode: '⌥'
};
} else {
outputKeyObj = {
output: 'Win',
state: 'disabled',
smallText: key.smallText ? true : false,
keyCode: JSkeyEntry[0],
unicode: '⊞'
};
}
} else if (keyOutput === 'Alt') {
if (obsidian.Platform.isMacOS === true) {
outputKeyObj = {
output: '⌘',
smallText: key.smallText ? true : false,
keyCode: 91,
unicode: '⌘'
};
} else {
keyOutput = 'Alt';
outputKeyObj = {
output: 'Alt',
smallText: key.smallText ? true : false,
keyCode: JSkeyEntry[0]
};
}
} else {
outputKeyObj = {
output: keyOutput,
keyCode: JSkeyEntry[0],
smallText: key.smallText ? true : false,
unicode: key.tryUnicode ? JSkeyEntry[1].Unicode : ''
};
}
}
// check if key is active
if (activeSearchKey !== null) {
if (outputKeyObj.output.toLocaleLowerCase() === activeSearchKey.toLocaleLowerCase()) {
outputKeyObj.state = 'active';
}
}
// check if modifiers are active
if (activeSearchModifiers.length > 0) {
if (activeSearchModifiers.includes(outputKeyObj.output)) {
outputKeyObj.state = 'active';
}
}
KeyboardDict[key.label] = outputKeyObj;
}
}
}
return KeyboardDict;
}
function calculateWeights(visibleCommands, KeyboardDict) {
for (let key of Object.entries(KeyboardDict)) {
$$invalidate(0, KeyboardStateDict[key[0]].weight = 0, KeyboardStateDict);
// calculate how many times a key or modifier is used in the hotkeys list
let keyWeight = 0;
for (let command of visibleCommands) {
for (let hotkey of command.hotkeys) {
if (hotkey.key.toLocaleLowerCase() === key[1].output.toLocaleLowerCase()) {
keyWeight++;
}
for (let modifier of hotkey.modifiers) {
if (getConvertedModifiers([modifier])[0].toLocaleLowerCase() === key[1].output.toLocaleLowerCase()) {
keyWeight++;
}
}
}
}
$$invalidate(0, KeyboardStateDict[key[0]].weight = keyWeight, KeyboardStateDict);
}
}
function handleKeyClick(e) {
let keyCode = parseInt(e.detail[0]);
let keyOutput = e.detail[1];
JavaSciptKeyCodes[keyCode].Key;
JavaSciptKeyCodes[keyCode].Code;
// check if key is modifier or key
if (keyCode === 16 || keyCode === 17 || keyCode === 18 || keyCode === 91) {
// try to put modifier in the active modifiers list
if ($activeModifiers.includes(keyOutput)) {
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(modifier => modifier !== keyOutput), $activeModifiers);
} else {
// if not in the list, add it
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers, keyOutput], $activeModifiers);
}
} else {
// try to set key in the active key
if ($activeKey === keyOutput) {
set_store_value(activeKey, $activeKey = '', $activeKey);
} else {
set_store_value(activeKey, $activeKey = keyOutput, $activeKey);
}
}
}
function keyboardkey_keyWeight_binding(value, Key) {
if ($$self.$$.not_equal(KeyboardStateDict[Key.label].weight, value)) {
KeyboardStateDict[Key.label].weight = value;
((($$invalidate(0, KeyboardStateDict), $$invalidate(1, KeyboardObject)), $$invalidate(5, $activeKey)), $$invalidate(4, $activeModifiers));
}
}
function keyboardkey_state_binding(value, Key) {
if ($$self.$$.not_equal(KeyboardStateDict[Key.label].state, value)) {
KeyboardStateDict[Key.label].state = value;
((($$invalidate(0, KeyboardStateDict), $$invalidate(1, KeyboardObject)), $$invalidate(5, $activeKey)), $$invalidate(4, $activeModifiers));
}
}
const click_handler = () => window.open('https://ko-fi.com/S6S5E6K74', '_blank');
$$self.$$set = $$props => {
if ('visibleCommands' in $$props) $$invalidate(3, visibleCommands = $$props.visibleCommands);
if ('KeyboardObject' in $$props) $$invalidate(1, KeyboardObject = $$props.KeyboardObject);
if ('KeyboardStateDict' in $$props) $$invalidate(0, KeyboardStateDict = $$props.KeyboardStateDict);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*KeyboardObject, $activeKey, $activeModifiers*/ 50) {
$$invalidate(0, KeyboardStateDict = unpackLayout(KeyboardObject, $activeKey, $activeModifiers));
}
if ($$self.$$.dirty & /*visibleCommands, KeyboardStateDict*/ 9) {
calculateWeights(visibleCommands, KeyboardStateDict);
}
};
return [
KeyboardStateDict,
KeyboardObject,
handleKeyClick,
visibleCommands,
$activeModifiers,
$activeKey,
keyboardkey_keyWeight_binding,
keyboardkey_state_binding,
click_handler
];
}
class KeyboardLayout extends SvelteComponent {
constructor(options) {
super();
init(
this,
options,
instance$3,
create_fragment$3,
safe_not_equal,
{
visibleCommands: 3,
KeyboardObject: 1,
KeyboardStateDict: 0
},
add_css
);
}
}
function cubicInOut(t) {
return t < 0.5 ? 4.0 * t * t * t : 0.5 * Math.pow(2.0 * t - 2.0, 3.0) + 1.0;
}
function cubicOut(t) {
const f = t - 1.0;
return f * f * f + 1.0;
}
function blur(node, { delay = 0, duration = 400, easing = cubicInOut, amount = 5, opacity = 0 } = {}) {
const style = getComputedStyle(node);
const target_opacity = +style.opacity;
const f = style.filter === 'none' ? '' : style.filter;
const od = target_opacity * (1 - opacity);
return {
delay,
duration,
easing,
css: (_t, u) => `opacity: ${target_opacity - (od * u)}; filter: ${f} blur(${u * amount}px);`
};
}
function fade(node, { delay = 0, duration = 400, easing = identity } = {}) {
const o = +getComputedStyle(node).opacity;
return {
delay,
duration,
easing,
css: t => `opacity: ${t * o}`
};
}
function slide(node, { delay = 0, duration = 400, easing = cubicOut } = {}) {
const style = getComputedStyle(node);
const opacity = +style.opacity;
const height = parseFloat(style.height);
const padding_top = parseFloat(style.paddingTop);
const padding_bottom = parseFloat(style.paddingBottom);
const margin_top = parseFloat(style.marginTop);
const margin_bottom = parseFloat(style.marginBottom);
const border_top_width = parseFloat(style.borderTopWidth);
const border_bottom_width = parseFloat(style.borderBottomWidth);
return {
delay,
duration,
easing,
css: t => 'overflow: hidden;' +
`opacity: ${Math.min(t * 20, 1) * opacity};` +
`height: ${t * height}px;` +
`padding-top: ${t * padding_top}px;` +
`padding-bottom: ${t * padding_bottom}px;` +
`margin-top: ${t * margin_top}px;` +
`margin-bottom: ${t * margin_bottom}px;` +
`border-top-width: ${t * border_top_width}px;` +
`border-bottom-width: ${t * border_bottom_width}px;`
};
}
var dist = createCommonjsModule(function (module, exports) {
Object.defineProperty(exports, "__esModule", { value: true });
exports.clickOutside = void 0;
function clickOutside(node, handler) {
var onClick = function (event) {
return node &&
!node.contains(event.target) &&
!event.defaultPrevented &&
handler();
};
document.addEventListener('click', onClick, true);
return {
destroy: function () {
document.removeEventListener('click', onClick, true);
},
};
}
exports.clickOutside = clickOutside;
});
function longpress(node, duration) {
let timer;
const handleMousedown = () => {
timer = setTimeout(() => {
node.dispatchEvent(new CustomEvent('longpress-start'));
}, duration);
};
const handleMouseup = () => {
if (!timer) {
node.dispatchEvent(new CustomEvent('longpress-end'));
} else {
clearTimeout(timer);
}
};
node.addEventListener('mousedown', handleMousedown);
node.addEventListener('mouseup', handleMouseup);
return {
update(newDuration) {
duration = newDuration;
},
destroy() {
node.removeEventListener('mousedown', handleMousedown);
node.removeEventListener('mouseup', handleMouseup);
},
}
}
/* src\Components\SearchMenu.svelte generated by Svelte v3.49.0 */
function get_each_context$1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[37] = list[i];
return child_ctx;
}
// (185:6) {#if $activeModifiers.length > 0 || $activeKey !== null}
function create_if_block_3(ctx) {
let t;
let if_block_anchor;
let current;
let each_value = sortModifiers(/*$activeModifiers*/ ctx[11]);
let each_blocks = [];
for (let i = 0; i < each_value.length; i += 1) {
each_blocks[i] = create_each_block$1(get_each_context$1(ctx, each_value, i));
}
const out = i => transition_out(each_blocks[i], 1, 1, () => {
each_blocks[i] = null;
});
let if_block = /*$activeKey*/ ctx[10] !== '' && create_if_block_4(ctx);
return {
c() {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t = space();
if (if_block) if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(target, anchor);
}
insert(target, t, anchor);
if (if_block) if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
current = true;
},
p(ctx, dirty) {
if (dirty[0] & /*$activeModifiers, inputHTML*/ 2049) {
each_value = sortModifiers(/*$activeModifiers*/ ctx[11]);
let i;
for (i = 0; i < each_value.length; i += 1) {
const child_ctx = get_each_context$1(ctx, each_value, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
transition_in(each_blocks[i], 1);
} else {
each_blocks[i] = create_each_block$1(child_ctx);
each_blocks[i].c();
transition_in(each_blocks[i], 1);
each_blocks[i].m(t.parentNode, t);
}
}
group_outros();
for (i = each_value.length; i < each_blocks.length; i += 1) {
out(i);
}
check_outros();
}
if (/*$activeKey*/ ctx[10] !== '') {
if (if_block) {
if_block.p(ctx, dirty);
if (dirty[0] & /*$activeKey*/ 1024) {
transition_in(if_block, 1);
}
} else {
if_block = create_if_block_4(ctx);
if_block.c();
transition_in(if_block, 1);
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
} else if (if_block) {
group_outros();
transition_out(if_block, 1, 1, () => {
if_block = null;
});
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
transition_in(if_block);
current = true;
},
o(local) {
each_blocks = each_blocks.filter(Boolean);
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
transition_out(if_block);
current = false;
},
d(detaching) {
destroy_each(each_blocks, detaching);
if (detaching) detach(t);
if (if_block) if_block.d(detaching);
if (detaching) detach(if_block_anchor);
}
};
}
// (186:8) {#each sortModifiers($activeModifiers) as modifier}
function create_each_block$1(ctx) {
let kbd;
let t_value = /*modifier*/ ctx[37] + "";
let t;
let kbd_intro;
let kbd_outro;
let current;
let mounted;
let dispose;
function click_handler() {
return /*click_handler*/ ctx[17](/*modifier*/ ctx[37]);
}
return {
c() {
kbd = element("kbd");
t = text(t_value);
attr(kbd, "class", "modifier");
},
m(target, anchor) {
insert(target, kbd, anchor);
append(kbd, t);
current = true;
if (!mounted) {
dispose = listen(kbd, "click", click_handler);
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if ((!current || dirty[0] & /*$activeModifiers*/ 2048) && t_value !== (t_value = /*modifier*/ ctx[37] + "")) set_data(t, t_value);
},
i(local) {
if (current) return;
add_render_callback(() => {
if (kbd_outro) kbd_outro.end(1);
kbd_intro = create_in_transition(kbd, slide, { duration: 100 });
kbd_intro.start();
});
current = true;
},
o(local) {
if (kbd_intro) kbd_intro.invalidate();
kbd_outro = create_out_transition(kbd, fade, { duration: 50 });
current = false;
},
d(detaching) {
if (detaching) detach(kbd);
if (detaching && kbd_outro) kbd_outro.end();
mounted = false;
dispose();
}
};
}
// (199:8) {#if $activeKey !== ''}
function create_if_block_4(ctx) {
let kbd;
let t_value = (/*$activeKey*/ ctx[10] in SpecialSymbols
? SpecialSymbols[/*$activeKey*/ ctx[10]]
: /*$activeKey*/ ctx[10].length === 1
? /*$activeKey*/ ctx[10].toUpperCase()
: /*$activeKey*/ ctx[10]) + "";
let t;
let kbd_intro;
let kbd_outro;
let current;
let mounted;
let dispose;
return {
c() {
kbd = element("kbd");
t = text(t_value);
attr(kbd, "class", "modifier");
set_style(kbd, "padding-left", "8px");
set_style(kbd, "padding-right", "8px");
},
m(target, anchor) {
insert(target, kbd, anchor);
append(kbd, t);
current = true;
if (!mounted) {
dispose = listen(kbd, "click", /*click_handler_1*/ ctx[18]);
mounted = true;
}
},
p(ctx, dirty) {
if ((!current || dirty[0] & /*$activeKey*/ 1024) && t_value !== (t_value = (/*$activeKey*/ ctx[10] in SpecialSymbols
? SpecialSymbols[/*$activeKey*/ ctx[10]]
: /*$activeKey*/ ctx[10].length === 1
? /*$activeKey*/ ctx[10].toUpperCase()
: /*$activeKey*/ ctx[10]) + "")) set_data(t, t_value);
},
i(local) {
if (current) return;
add_render_callback(() => {
if (kbd_outro) kbd_outro.end(1);
kbd_intro = create_in_transition(kbd, slide, { duration: 100 });
kbd_intro.start();
});
current = true;
},
o(local) {
if (kbd_intro) kbd_intro.invalidate();
kbd_outro = create_out_transition(kbd, fade, { duration: 50 });
current = false;
},
d(detaching) {
if (detaching) detach(kbd);
if (detaching && kbd_outro) kbd_outro.end();
mounted = false;
dispose();
}
};
}
// (266:2) {#if filterIsOpen}
function create_if_block_2(ctx) {
let div17;
let div15;
let div2;
let div0;
let input0;
let t0;
let div1;
let t2;
let div5;
let div3;
let input1;
let t3;
let div4;
let t5;
let div8;
let div6;
let input2;
let t6;
let div7;
let t8;
let div11;
let div9;
let input3;
let t9;
let div10;
let t11;
let div14;
let div12;
let input4;
let t12;
let div13;
let div15_transition;
let t14;
let div16;
let div17_class_value;
let clickOutside_action;
let div17_transition;
let current;
let mounted;
let dispose;
return {
c() {
div17 = element("div");
div15 = element("div");
div2 = element("div");
div0 = element("div");
input0 = element("input");
t0 = space();
div1 = element("div");
div1.textContent = "Display featured first";
t2 = space();
div5 = element("div");
div3 = element("div");
input1 = element("input");
t3 = space();
div4 = element("div");
div4.textContent = "Strict Search";
t5 = space();
div8 = element("div");
div6 = element("div");
input2 = element("input");
t6 = space();
div7 = element("div");
div7.textContent = "Highlight custom hotkeys";
t8 = space();
div11 = element("div");
div9 = element("div");
input3 = element("input");
t9 = space();
div10 = element("div");
div10.textContent = "Highlight hotkey duplicates";
t11 = space();
div14 = element("div");
div12 = element("div");
input4 = element("input");
t12 = space();
div13 = element("div");
div13.textContent = "Display command ID's";
t14 = space();
div16 = element("div");
attr(input0, "type", "checkbox");
attr(input0, "tabindex", "0");
attr(div0, "class", "checkbox-container");
toggle_class(div0, "is-enabled", /*FilterSettings*/ ctx[2].FeaturedFirst);
attr(div1, "class", "setting-item-name popup-filter-title");
attr(div2, "class", "setting-item mod-toggle popup-filter-menu");
attr(input1, "type", "checkbox");
attr(input1, "tabindex", "0");
attr(div3, "class", "checkbox-container");
toggle_class(div3, "is-enabled", /*FilterSettings*/ ctx[2].StrictSearch);
attr(div4, "class", "setting-item-name popup-filter-title");
attr(div5, "class", "setting-item mod-toggle popup-filter-menu");
attr(input2, "type", "checkbox");
attr(input2, "tabindex", "0");
attr(div6, "class", "checkbox-container");
toggle_class(div6, "is-enabled", /*FilterSettings*/ ctx[2].HighlightCustom);
attr(div7, "class", "setting-item-name popup-filter-title");
attr(div8, "class", "setting-item mod-toggle popup-filter-menu");
attr(input3, "type", "checkbox");
attr(input3, "tabindex", "0");
attr(div9, "class", "checkbox-container");
toggle_class(div9, "is-enabled", /*FilterSettings*/ ctx[2].HighlightDuplicates);
attr(div10, "class", "setting-item-name popup-filter-title");
attr(div11, "class", "setting-item mod-toggle popup-filter-menu");
attr(input4, "type", "checkbox");
attr(input4, "tabindex", "0");
attr(div12, "class", "checkbox-container");
toggle_class(div12, "is-enabled", /*FilterSettings*/ ctx[2].DisplayIDs);
attr(div13, "class", "setting-item-name popup-filter-title");
attr(div14, "class", "setting-item mod-toggle popup-filter-menu");
attr(div16, "class", "popup-filter-menu-background");
attr(div17, "class", div17_class_value = "popup-filter-menu-container " + (/*filterIsOpen*/ ctx[8] ? 'is-open' : ''));
},
m(target, anchor) {
insert(target, div17, anchor);
append(div17, div15);
append(div15, div2);
append(div2, div0);
append(div0, input0);
input0.checked = /*FilterSettings*/ ctx[2].FeaturedFirst;
append(div2, t0);
append(div2, div1);
append(div15, t2);
append(div15, div5);
append(div5, div3);
append(div3, input1);
input1.checked = /*FilterSettings*/ ctx[2].StrictSearch;
append(div5, t3);
append(div5, div4);
append(div15, t5);
append(div15, div8);
append(div8, div6);
append(div6, input2);
input2.checked = /*FilterSettings*/ ctx[2].HighlightCustom;
append(div8, t6);
append(div8, div7);
append(div15, t8);
append(div15, div11);
append(div11, div9);
append(div9, input3);
input3.checked = /*FilterSettings*/ ctx[2].HighlightDuplicates;
append(div11, t9);
append(div11, div10);
append(div15, t11);
append(div15, div14);
append(div14, div12);
append(div12, input4);
input4.checked = /*FilterSettings*/ ctx[2].DisplayIDs;
append(div14, t12);
append(div14, div13);
append(div17, t14);
append(div17, div16);
current = true;
if (!mounted) {
dispose = [
listen(input0, "change", /*input0_change_handler*/ ctx[26]),
listen(div0, "click", /*dispatchFeaturedFirstOptionTriggered*/ ctx[15]),
listen(input1, "change", /*input1_change_handler*/ ctx[27]),
listen(div3, "click", /*click_handler_3*/ ctx[28]),
listen(input2, "change", /*input2_change_handler*/ ctx[29]),
listen(div6, "click", /*click_handler_4*/ ctx[30]),
listen(input3, "change", /*input3_change_handler*/ ctx[31]),
listen(div9, "click", /*click_handler_5*/ ctx[32]),
listen(input4, "change", /*input4_change_handler*/ ctx[33]),
listen(div12, "click", /*click_handler_6*/ ctx[34]),
action_destroyer(clickOutside_action = dist.clickOutside.call(null, div17, /*clickOutside_function*/ ctx[35]))
];
mounted = true;
}
},
p(ctx, dirty) {
if (dirty[0] & /*FilterSettings*/ 4) {
input0.checked = /*FilterSettings*/ ctx[2].FeaturedFirst;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div0, "is-enabled", /*FilterSettings*/ ctx[2].FeaturedFirst);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input1.checked = /*FilterSettings*/ ctx[2].StrictSearch;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div3, "is-enabled", /*FilterSettings*/ ctx[2].StrictSearch);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input2.checked = /*FilterSettings*/ ctx[2].HighlightCustom;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div6, "is-enabled", /*FilterSettings*/ ctx[2].HighlightCustom);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input3.checked = /*FilterSettings*/ ctx[2].HighlightDuplicates;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div9, "is-enabled", /*FilterSettings*/ ctx[2].HighlightDuplicates);
}
if (dirty[0] & /*FilterSettings*/ 4) {
input4.checked = /*FilterSettings*/ ctx[2].DisplayIDs;
}
if (dirty[0] & /*FilterSettings*/ 4) {
toggle_class(div12, "is-enabled", /*FilterSettings*/ ctx[2].DisplayIDs);
}
if (!current || dirty[0] & /*filterIsOpen*/ 256 && div17_class_value !== (div17_class_value = "popup-filter-menu-container " + (/*filterIsOpen*/ ctx[8] ? 'is-open' : ''))) {
attr(div17, "class", div17_class_value);
}
if (clickOutside_action && is_function(clickOutside_action.update) && dirty[0] & /*filterIsOpen*/ 256) clickOutside_action.update.call(null, /*clickOutside_function*/ ctx[35]);
},
i(local) {
if (current) return;
add_render_callback(() => {
if (!div15_transition) div15_transition = create_bidirectional_transition(div15, fade, {}, true);
div15_transition.run(1);
});
add_render_callback(() => {
if (!div17_transition) div17_transition = create_bidirectional_transition(div17, slide, {}, true);
div17_transition.run(1);
});
current = true;
},
o(local) {
if (!div15_transition) div15_transition = create_bidirectional_transition(div15, fade, {}, false);
div15_transition.run(0);
if (!div17_transition) div17_transition = create_bidirectional_transition(div17, slide, {}, false);
div17_transition.run(0);
current = false;
},
d(detaching) {
if (detaching) detach(div17);
if (detaching && div15_transition) div15_transition.end();
if (detaching && div17_transition) div17_transition.end();
mounted = false;
run_all(dispose);
}
};
}
// (388:40)
function create_if_block_1$1(ctx) {
let span;
let span_intro;
return {
c() {
span = element("span");
span.textContent = "Hotkeys not found";
},
m(target, anchor) {
insert(target, span, anchor);
},
p: noop,
i(local) {
if (!span_intro) {
add_render_callback(() => {
span_intro = create_in_transition(span, blur, { duration: 100 });
span_intro.start();
});
}
},
o: noop,
d(detaching) {
if (detaching) detach(span);
}
};
}
// (384:4) {#if searchCommandsCount !== 0}
function create_if_block$1(ctx) {
let span;
let t0;
let t1;
let t2;
let t3;
let span_intro;
return {
c() {
span = element("span");
t0 = text(/*searchHotkeysCount*/ ctx[6]);
t1 = text(" keys | ");
t2 = text(/*searchCommandsCount*/ ctx[5]);
t3 = text(" cmds");
},
m(target, anchor) {
insert(target, span, anchor);
append(span, t0);
append(span, t1);
append(span, t2);
append(span, t3);
},
p(ctx, dirty) {
if (dirty[0] & /*searchHotkeysCount*/ 64) set_data(t0, /*searchHotkeysCount*/ ctx[6]);
if (dirty[0] & /*searchCommandsCount*/ 32) set_data(t2, /*searchCommandsCount*/ ctx[5]);
},
i(local) {
if (!span_intro) {
add_render_callback(() => {
span_intro = create_in_transition(span, blur, { duration: 100 });
span_intro.start();
});
}
},
o: noop,
d(detaching) {
if (detaching) detach(span);
}
};
}
function create_fragment$2(ctx) {
let div7;
let div5;
let div0;
let t0;
let div4;
let input;
let t1;
let div3;
let div1;
let circledoticon;
let div1_class_value;
let div1_aria_label_value;
let t2;
let div2;
let crossicon;
let t3;
let button0;
let filtericon;
let button0_class_value;
let t4;
let t5;
let div6;
let t6;
let button1;
let refreshicon;
let button1_class_value;
let current;
let mounted;
let dispose;
let if_block0 = (/*$activeModifiers*/ ctx[11].length > 0 || /*$activeKey*/ ctx[10] !== null) && create_if_block_3(ctx);
circledoticon = new CircleDotIcon({ props: { size: 20 } });
crossicon = new CrossIcon({ props: { size: 20 } });
filtericon = new FilterIcon({ props: { size: 16 } });
let if_block1 = /*filterIsOpen*/ ctx[8] && create_if_block_2(ctx);
function select_block_type(ctx, dirty) {
if (/*searchCommandsCount*/ ctx[5] !== 0) return create_if_block$1;
if (/*searchCommandsCount*/ ctx[5] === 0) return create_if_block_1$1;
}
let current_block_type = select_block_type(ctx);
let if_block2 = current_block_type && current_block_type(ctx);
refreshicon = new RefreshIcon({ props: { size: 16 } });
return {
c() {
div7 = element("div");
div5 = element("div");
div0 = element("div");
if (if_block0) if_block0.c();
t0 = space();
div4 = element("div");
input = element("input");
t1 = space();
div3 = element("div");
div1 = element("div");
create_component(circledoticon.$$.fragment);
t2 = space();
div2 = element("div");
create_component(crossicon.$$.fragment);
t3 = space();
button0 = element("button");
create_component(filtericon.$$.fragment);
t4 = space();
if (if_block1) if_block1.c();
t5 = space();
div6 = element("div");
if (if_block2) if_block2.c();
t6 = space();
button1 = element("button");
create_component(refreshicon.$$.fragment);
attr(div0, "class", "modifiers-wrapper");
attr(input, "type", "text");
attr(input, "placeholder", "Filter...");
attr(div1, "class", div1_class_value = "keyboard-icon icon " + (/*keyboardListenerIsActive*/ ctx[3] ? 'pulse' : ''));
attr(div1, "aria-label", div1_aria_label_value = /*keyboardListenerIsActive*/ ctx[3]
? 'Press Esc to deactivate key listener'
: `Press ${getConvertedModifiers(['Mod'])[0]}+F or long press to activate key listener`);
attr(div2, "class", "clear-icon icon");
attr(div3, "class", "meta-search-wrapper");
attr(div4, "class", "hotkey-search-container");
attr(div5, "class", "search-wrapper");
toggle_class(div5, "is-focused", /*inputIsFocused*/ ctx[7]);
attr(button0, "id", "hotkey-filter-button");
attr(button0, "class", button0_class_value = /*filterIsOpen*/ ctx[8] ? 'is-active' : '');
attr(button0, "aria-label", "Filter Commands");
attr(div6, "class", "community-plugin-search-summary u-muted");
set_style(div6, "display", "flex");
set_style(div6, "justify-content", "center");
set_style(div6, "font-size", "14px");
attr(button1, "id", "hotkey-refresh-button");
attr(button1, "aria-label", "Refresh Commands");
attr(button1, "class", button1_class_value = /*refreshIsActive*/ ctx[9] ? 'animation-is-active' : '');
attr(div7, "class", "hotkey-settings-container");
},
m(target, anchor) {
insert(target, div7, anchor);
append(div7, div5);
append(div5, div0);
if (if_block0) if_block0.m(div0, null);
append(div5, t0);
append(div5, div4);
append(div4, input);
set_input_value(input, /*search*/ ctx[1]);
/*input_binding*/ ctx[20](input);
append(div4, t1);
append(div4, div3);
append(div3, div1);
mount_component(circledoticon, div1, null);
append(div3, t2);
append(div3, div2);
mount_component(crossicon, div2, null);
append(div7, t3);
append(div7, button0);
mount_component(filtericon, button0, null);
append(div7, t4);
if (if_block1) if_block1.m(div7, null);
append(div7, t5);
append(div7, div6);
if (if_block2) if_block2.m(div6, null);
append(div7, t6);
append(div7, button1);
mount_component(refreshicon, button1, null);
current = true;
if (!mounted) {
dispose = [
listen(input, "input", /*input_input_handler*/ ctx[19]),
listen(input, "focus", /*focus_handler*/ ctx[21]),
listen(input, "blur", /*blur_handler*/ ctx[22]),
listen(div1, "click", /*ActivateKeyboardListener*/ ctx[13]),
action_destroyer(longpress.call(null, div1, 600)),
listen(div1, "longpress-start", /*longpress_start_handler*/ ctx[23]),
listen(div1, "longpress-end", /*longpress_end_handler*/ ctx[24]),
listen(div2, "click", /*ClearSearch*/ ctx[12]),
listen(button0, "click", /*click_handler_2*/ ctx[25]),
listen(button1, "click", /*sendRefreshCommands*/ ctx[14]),
listen(div7, "keydown", /*onModifierKeyDown*/ ctx[16])
];
mounted = true;
}
},
p(ctx, dirty) {
if (/*$activeModifiers*/ ctx[11].length > 0 || /*$activeKey*/ ctx[10] !== null) {
if (if_block0) {
if_block0.p(ctx, dirty);
if (dirty[0] & /*$activeModifiers, $activeKey*/ 3072) {
transition_in(if_block0, 1);
}
} else {
if_block0 = create_if_block_3(ctx);
if_block0.c();
transition_in(if_block0, 1);
if_block0.m(div0, null);
}
} else if (if_block0) {
group_outros();
transition_out(if_block0, 1, 1, () => {
if_block0 = null;
});
check_outros();
}
if (dirty[0] & /*search*/ 2 && input.value !== /*search*/ ctx[1]) {
set_input_value(input, /*search*/ ctx[1]);
}
if (!current || dirty[0] & /*keyboardListenerIsActive*/ 8 && div1_class_value !== (div1_class_value = "keyboard-icon icon " + (/*keyboardListenerIsActive*/ ctx[3] ? 'pulse' : ''))) {
attr(div1, "class", div1_class_value);
}
if (!current || dirty[0] & /*keyboardListenerIsActive*/ 8 && div1_aria_label_value !== (div1_aria_label_value = /*keyboardListenerIsActive*/ ctx[3]
? 'Press Esc to deactivate key listener'
: `Press ${getConvertedModifiers(['Mod'])[0]}+F or long press to activate key listener`)) {
attr(div1, "aria-label", div1_aria_label_value);
}
if (dirty[0] & /*inputIsFocused*/ 128) {
toggle_class(div5, "is-focused", /*inputIsFocused*/ ctx[7]);
}
if (!current || dirty[0] & /*filterIsOpen*/ 256 && button0_class_value !== (button0_class_value = /*filterIsOpen*/ ctx[8] ? 'is-active' : '')) {
attr(button0, "class", button0_class_value);
}
if (/*filterIsOpen*/ ctx[8]) {
if (if_block1) {
if_block1.p(ctx, dirty);
if (dirty[0] & /*filterIsOpen*/ 256) {
transition_in(if_block1, 1);
}
} else {
if_block1 = create_if_block_2(ctx);
if_block1.c();
transition_in(if_block1, 1);
if_block1.m(div7, t5);
}
} else if (if_block1) {
group_outros();
transition_out(if_block1, 1, 1, () => {
if_block1 = null;
});
check_outros();
}
if (current_block_type === (current_block_type = select_block_type(ctx)) && if_block2) {
if_block2.p(ctx, dirty);
} else {
if (if_block2) if_block2.d(1);
if_block2 = current_block_type && current_block_type(ctx);
if (if_block2) {
if_block2.c();
transition_in(if_block2, 1);
if_block2.m(div6, null);
}
}
if (!current || dirty[0] & /*refreshIsActive*/ 512 && button1_class_value !== (button1_class_value = /*refreshIsActive*/ ctx[9] ? 'animation-is-active' : '')) {
attr(button1, "class", button1_class_value);
}
},
i(local) {
if (current) return;
transition_in(if_block0);
transition_in(circledoticon.$$.fragment, local);
transition_in(crossicon.$$.fragment, local);
transition_in(filtericon.$$.fragment, local);
transition_in(if_block1);
transition_in(if_block2);
transition_in(refreshicon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(if_block0);
transition_out(circledoticon.$$.fragment, local);
transition_out(crossicon.$$.fragment, local);
transition_out(filtericon.$$.fragment, local);
transition_out(if_block1);
transition_out(refreshicon.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div7);
if (if_block0) if_block0.d();
/*input_binding*/ ctx[20](null);
destroy_component(circledoticon);
destroy_component(crossicon);
destroy_component(filtericon);
if (if_block1) if_block1.d();
if (if_block2) {
if_block2.d();
}
destroy_component(refreshicon);
mounted = false;
run_all(dispose);
}
};
}
function instance$2($$self, $$props, $$invalidate) {
let $activeKey;
let $activeModifiers;
component_subscribe($$self, activeKey, $$value => $$invalidate(10, $activeKey = $$value));
component_subscribe($$self, activeModifiers, $$value => $$invalidate(11, $activeModifiers = $$value));
let { plugin } = $$props;
let { inputHTML } = $$props;
let { search = '' } = $$props;
let { searchCommandsCount } = $$props;
let { searchHotkeysCount } = $$props;
let inputIsFocused = false;
let { FilterSettings } = $$props;
let { keyboardListenerIsActive = false } = $$props;
let filterIsOpen = false;
let refreshIsActive = false;
const ClearSearch = () => {
if (search === '') {
set_store_value(activeModifiers, $activeModifiers = [], $activeModifiers);
set_store_value(activeKey, $activeKey = '', $activeKey);
inputHTML.focus();
} else {
$$invalidate(1, search = '');
inputHTML.focus();
}
};
const ActivateKeyboardListener = () => {
$$invalidate(3, keyboardListenerIsActive = !keyboardListenerIsActive);
inputHTML.focus();
};
// EVENT DISPATHCHERs
const dispatch = createEventDispatcher();
// 1. refresh commands
function sendRefreshCommands() {
$$invalidate(9, refreshIsActive = true);
// set animation timeout
setTimeout(
() => {
$$invalidate(9, refreshIsActive = false);
},
1000
);
dispatch('refresh-commands');
}
function dispatchFeaturedFirstOptionTriggered() {
dispatch('featured-first-option-triggered');
}
// on focus modifier keydown event add to activeSearchModifiers array
// if modifier is already in array remove it
// https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/getModifierState
const onModifierKeyDown = e => {
// edit modifiers
function pushModifier(modifier) {
if (!$activeModifiers.includes(modifier)) {
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers, modifier], $activeModifiers);
}
}
function spliceModifier(modifier) {
// splice modifier from activeSearchModifiers array
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(activeModifier => activeModifier !== modifier), $activeModifiers);
}
if (keyboardListenerIsActive && (e.getModifierState('Shift') || e.getModifierState('Alt') || e.getModifierState('Control'))) {
switch (e.key) {
case 'Shift':
if ($activeModifiers.includes('Shift')) {
spliceModifier('Shift');
} else {
pushModifier('Shift');
}
break;
case 'Alt':
if ($activeModifiers.includes('Alt')) {
spliceModifier('Alt');
} else {
pushModifier('Alt');
}
break;
case 'Meta':
// OSX ONLY
if ($activeModifiers.includes('Meta')) {
spliceModifier('Meta');
} else {
pushModifier('Meta');
}
break;
case 'Control':
if ($activeModifiers.includes('Ctrl')) {
spliceModifier('Ctrl');
} else {
pushModifier('Ctrl');
}
break;
default:
// TODO: triggers if two modifiers are pressed at the same time
console.log('unknown modifier: ', e.key);
console.log('please report this to the developer');
break;
}
// return to stop event propagation
return;
} else if (e.key === 'Escape') {
if (keyboardListenerIsActive) {
$$invalidate(3, keyboardListenerIsActive = false);
} else if (keyboardListenerIsActive === false) {
inputHTML.blur();
}
} else if (e.key === 'Backspace') {
// TODO clear activeSearchKey
if (keyboardListenerIsActive === true && $activeKey !== 'Backspace') {
e.preventDefault();
set_store_value(activeKey, $activeKey = 'Backspace', $activeKey);
} else if (keyboardListenerIsActive === true && $activeKey === 'Backspace') {
e.preventDefault();
set_store_value(activeKey, $activeKey = '', $activeKey);
} else if (keyboardListenerIsActive === false) {
if (search === '' || inputHTML.selectionStart === 0) {
if ($activeKey !== '') {
set_store_value(activeKey, $activeKey = '', $activeKey);
} else if ($activeKey === '' && $activeModifiers.length > 0) {
set_store_value(activeModifiers, $activeModifiers = [...$activeModifiers.slice(0, $activeModifiers.length - 1)], $activeModifiers);
}
}
}
} else if (e.key === 'Meta') {
e.preventDefault();
} else if (keyboardListenerIsActive === true) {
// @ts-ignore
let clickedKeyJS = JavaSciptKeyCodes[e.keyCode];
if (clickedKeyJS.Key !== $activeKey) {
e.preventDefault();
if (clickedKeyJS.Code === 'Numpad' + clickedKeyJS.Key) {
set_store_value(activeKey, $activeKey = clickedKeyJS.Code, $activeKey);
} else {
set_store_value(activeKey, $activeKey = clickedKeyJS.Key, $activeKey);
}
} else if (clickedKeyJS.Key === $activeKey || clickedKeyJS.Code === $activeKey) {
e.preventDefault();
if ($activeKey === clickedKeyJS.Code) {
set_store_value(activeKey, $activeKey = '', $activeKey);
} else if ($activeKey === clickedKeyJS.Key) {
set_store_value(activeKey, $activeKey = '', $activeKey);
}
} else {
!(e.keyCode in JavaSciptKeyCodes)
? console.log('unknown key: ', JavaSciptKeyCodes[e.keyCode])
: console.log('unknown key: ', e.key);
}
}
};
const click_handler = modifier => {
set_store_value(activeModifiers, $activeModifiers = $activeModifiers.filter(activeModifier => activeModifier !== modifier), $activeModifiers);
inputHTML.focus();
};
const click_handler_1 = () => set_store_value(activeKey, $activeKey = '', $activeKey);
function input_input_handler() {
search = this.value;
$$invalidate(1, search);
}
function input_binding($$value) {
binding_callbacks[$$value ? 'unshift' : 'push'](() => {
inputHTML = $$value;
$$invalidate(0, inputHTML);
});
}
const focus_handler = () => $$invalidate(7, inputIsFocused = true);
const blur_handler = () => $$invalidate(7, inputIsFocused = false);
const longpress_start_handler = () => {
inputHTML.focus();
$$invalidate(3, keyboardListenerIsActive = true);
};
const longpress_end_handler = () => {
$$invalidate(3, keyboardListenerIsActive = false);
};
const click_handler_2 = () => {
// console.log('filter: ', filterIsOpen)
$$invalidate(8, filterIsOpen = !filterIsOpen);
};
function input0_change_handler() {
FilterSettings.FeaturedFirst = this.checked;
$$invalidate(2, FilterSettings);
}
function input1_change_handler() {
FilterSettings.StrictSearch = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_3 = () => {
$$invalidate(2, FilterSettings.StrictSearch = !FilterSettings.StrictSearch, FilterSettings);
plugin.saveSettings();
sendRefreshCommands();
};
function input2_change_handler() {
FilterSettings.HighlightCustom = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_4 = () => {
$$invalidate(2, FilterSettings.HighlightCustom = !FilterSettings.HighlightCustom, FilterSettings);
plugin.saveSettings();
};
function input3_change_handler() {
FilterSettings.HighlightDuplicates = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_5 = () => {
$$invalidate(2, FilterSettings.HighlightDuplicates = !FilterSettings.HighlightDuplicates, FilterSettings);
plugin.saveSettings();
};
function input4_change_handler() {
FilterSettings.DisplayIDs = this.checked;
$$invalidate(2, FilterSettings);
}
const click_handler_6 = () => {
$$invalidate(2, FilterSettings.DisplayIDs = !FilterSettings.DisplayIDs, FilterSettings);
plugin.saveSettings();
};
const clickOutside_function = () => // await timeout 40ms
setTimeout(
() => {
if (filterIsOpen) {
$$invalidate(8, filterIsOpen = false);
}
},
40
);
$$self.$$set = $$props => {
if ('plugin' in $$props) $$invalidate(4, plugin = $$props.plugin);
if ('inputHTML' in $$props) $$invalidate(0, inputHTML = $$props.inputHTML);
if ('search' in $$props) $$invalidate(1, search = $$props.search);
if ('searchCommandsCount' in $$props) $$invalidate(5, searchCommandsCount = $$props.searchCommandsCount);
if ('searchHotkeysCount' in $$props) $$invalidate(6, searchHotkeysCount = $$props.searchHotkeysCount);
if ('FilterSettings' in $$props) $$invalidate(2, FilterSettings = $$props.FilterSettings);
if ('keyboardListenerIsActive' in $$props) $$invalidate(3, keyboardListenerIsActive = $$props.keyboardListenerIsActive);
};
return [
inputHTML,
search,
FilterSettings,
keyboardListenerIsActive,
plugin,
searchCommandsCount,
searchHotkeysCount,
inputIsFocused,
filterIsOpen,
refreshIsActive,
$activeKey,
$activeModifiers,
ClearSearch,
ActivateKeyboardListener,
sendRefreshCommands,
dispatchFeaturedFirstOptionTriggered,
onModifierKeyDown,
click_handler,
click_handler_1,
input_input_handler,
input_binding,
focus_handler,
blur_handler,
longpress_start_handler,
longpress_end_handler,
click_handler_2,
input0_change_handler,
input1_change_handler,
click_handler_3,
input2_change_handler,
click_handler_4,
input3_change_handler,
click_handler_5,
input4_change_handler,
click_handler_6,
clickOutside_function
];
}
class SearchMenu extends SvelteComponent {
constructor(options) {
super();
init(
this,
options,
instance$2,
create_fragment$2,
safe_not_equal,
{
plugin: 4,
inputHTML: 0,
search: 1,
searchCommandsCount: 5,
searchHotkeysCount: 6,
FilterSettings: 2,
keyboardListenerIsActive: 3
},
null,
[-1, -1]
);
}
}
/* src\Components\CommandsList.svelte generated by Svelte v3.49.0 */
function get_each_context(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[8] = list[i];
return child_ctx;
}
function get_each_context_1(ctx, list, i) {
const child_ctx = ctx.slice();
child_ctx[11] = list[i];
return child_ctx;
}
// (64:10) {#if settings.filterSettings.DisplayIDs}
function create_if_block_1(ctx) {
let small;
let t_value = /*cmdEntry*/ ctx[8].id + "";
let t;
return {
c() {
small = element("small");
t = text(t_value);
},
m(target, anchor) {
insert(target, small, anchor);
append(small, t);
},
p(ctx, dirty) {
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*cmdEntry*/ ctx[8].id + "")) set_data(t, t_value);
},
d(detaching) {
if (detaching) detach(small);
}
};
}
// (81:14) {:else}
function create_else_block(ctx) {
let span;
let t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "";
let t;
return {
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "kbanalizer-setting-hotkey setting-hotkey");
toggle_class(span, "is-customized", /*hotkey*/ ctx[11].isCustom && /*settings*/ ctx[1].filterSettings.HighlightCustom);
},
m(target, anchor) {
insert(target, span, anchor);
append(span, t);
},
p(ctx, dirty) {
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "")) set_data(t, t_value);
if (dirty & /*visibleCommands, settings*/ 3) {
toggle_class(span, "is-customized", /*hotkey*/ ctx[11].isCustom && /*settings*/ ctx[1].filterSettings.HighlightCustom);
}
},
d(detaching) {
if (detaching) detach(span);
}
};
}
// (73:14) {#if isHotkeyDuplicate(cmdEntry.id, hotkey)}
function create_if_block(ctx) {
let span;
let t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "";
let t;
let mounted;
let dispose;
function click_handler_1() {
return /*click_handler_1*/ ctx[6](/*hotkey*/ ctx[11]);
}
return {
c() {
span = element("span");
t = text(t_value);
attr(span, "class", "kbanalizer-setting-hotkey setting-hotkey is-duplicate");
toggle_class(span, "is-duplicate", /*settings*/ ctx[1].filterSettings.HighlightDuplicates);
},
m(target, anchor) {
insert(target, span, anchor);
append(span, t);
if (!mounted) {
dispose = listen(span, "click", click_handler_1);
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if (dirty & /*visibleCommands*/ 1 && t_value !== (t_value = /*renderHotkey*/ ctx[2](/*hotkey*/ ctx[11]) + "")) set_data(t, t_value);
if (dirty & /*settings*/ 2) {
toggle_class(span, "is-duplicate", /*settings*/ ctx[1].filterSettings.HighlightDuplicates);
}
},
d(detaching) {
if (detaching) detach(span);
mounted = false;
dispose();
}
};
}
// (72:12) {#each cmdEntry.hotkeys as hotkey}
function create_each_block_1(ctx) {
let show_if;
let if_block_anchor;
function select_block_type(ctx, dirty) {
if (dirty & /*visibleCommands*/ 1) show_if = null;
if (show_if == null) show_if = !!isHotkeyDuplicate(/*cmdEntry*/ ctx[8].id, /*hotkey*/ ctx[11]);
if (show_if) return create_if_block;
return create_else_block;
}
let current_block_type = select_block_type(ctx, -1);
let if_block = current_block_type(ctx);
return {
c() {
if_block.c();
if_block_anchor = empty();
},
m(target, anchor) {
if_block.m(target, anchor);
insert(target, if_block_anchor, anchor);
},
p(ctx, dirty) {
if (current_block_type === (current_block_type = select_block_type(ctx, dirty)) && if_block) {
if_block.p(ctx, dirty);
} else {
if_block.d(1);
if_block = current_block_type(ctx);
if (if_block) {
if_block.c();
if_block.m(if_block_anchor.parentNode, if_block_anchor);
}
}
},
d(detaching) {
if_block.d(detaching);
if (detaching) detach(if_block_anchor);
}
};
}
// (42:4) {#each visibleCommands as cmdEntry (cmdEntry.id)}
function create_each_block(key_1, ctx) {
let div5;
let div2;
let div1;
let span0;
let t0_value = /*cmdEntry*/ ctx[8].pluginName + "";
let t0;
let t1;
let span1;
let t2_value = /*cmdEntry*/ ctx[8].cmdName + "";
let t2;
let t3;
let div0;
let staricon;
let t4;
let t5;
let div4;
let div3;
let t6;
let current;
let mounted;
let dispose;
staricon = new StarIcon({ props: { size: 16 } });
function click_handler() {
return /*click_handler*/ ctx[5](/*cmdEntry*/ ctx[8]);
}
let if_block = /*settings*/ ctx[1].filterSettings.DisplayIDs && create_if_block_1(ctx);
let each_value_1 = /*cmdEntry*/ ctx[8].hotkeys;
let each_blocks = [];
for (let i = 0; i < each_value_1.length; i += 1) {
each_blocks[i] = create_each_block_1(get_each_context_1(ctx, each_value_1, i));
}
return {
key: key_1,
first: null,
c() {
div5 = element("div");
div2 = element("div");
div1 = element("div");
span0 = element("span");
t0 = text(t0_value);
t1 = space();
span1 = element("span");
t2 = text(t2_value);
t3 = space();
div0 = element("div");
create_component(staricon.$$.fragment);
t4 = space();
if (if_block) if_block.c();
t5 = space();
div4 = element("div");
div3 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
t6 = space();
attr(span0, "class", "suggestion-prefix");
attr(span1, "class", "command-name");
attr(div0, "class", "star-icon icon");
attr(div1, "class", "setting-item-name");
attr(div2, "class", "setting-item-info");
attr(div3, "class", "setting-command-hotkeys");
attr(div4, "class", "kbanalizer-setting-item-control setting-item-control");
attr(div5, "class", "kbanalizer-setting-item setting-item");
toggle_class(div5, "is-starred", /*settings*/ ctx[1].featuredCommandIDs.includes(/*cmdEntry*/ ctx[8].id));
this.first = div5;
},
m(target, anchor) {
insert(target, div5, anchor);
append(div5, div2);
append(div2, div1);
append(div1, span0);
append(span0, t0);
append(div1, t1);
append(div1, span1);
append(span1, t2);
append(div1, t3);
append(div1, div0);
mount_component(staricon, div0, null);
append(div2, t4);
if (if_block) if_block.m(div2, null);
append(div5, t5);
append(div5, div4);
append(div4, div3);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div3, null);
}
append(div5, t6);
current = true;
if (!mounted) {
dispose = [
listen(span0, "click", /*sendPluginName*/ ctx[4]),
listen(div0, "click", click_handler)
];
mounted = true;
}
},
p(new_ctx, dirty) {
ctx = new_ctx;
if ((!current || dirty & /*visibleCommands*/ 1) && t0_value !== (t0_value = /*cmdEntry*/ ctx[8].pluginName + "")) set_data(t0, t0_value);
if ((!current || dirty & /*visibleCommands*/ 1) && t2_value !== (t2_value = /*cmdEntry*/ ctx[8].cmdName + "")) set_data(t2, t2_value);
if (/*settings*/ ctx[1].filterSettings.DisplayIDs) {
if (if_block) {
if_block.p(ctx, dirty);
} else {
if_block = create_if_block_1(ctx);
if_block.c();
if_block.m(div2, null);
}
} else if (if_block) {
if_block.d(1);
if_block = null;
}
if (dirty & /*settings, dispatch, visibleCommands, renderHotkey, isHotkeyDuplicate*/ 15) {
each_value_1 = /*cmdEntry*/ ctx[8].hotkeys;
let i;
for (i = 0; i < each_value_1.length; i += 1) {
const child_ctx = get_each_context_1(ctx, each_value_1, i);
if (each_blocks[i]) {
each_blocks[i].p(child_ctx, dirty);
} else {
each_blocks[i] = create_each_block_1(child_ctx);
each_blocks[i].c();
each_blocks[i].m(div3, null);
}
}
for (; i < each_blocks.length; i += 1) {
each_blocks[i].d(1);
}
each_blocks.length = each_value_1.length;
}
if (dirty & /*settings, visibleCommands*/ 3) {
toggle_class(div5, "is-starred", /*settings*/ ctx[1].featuredCommandIDs.includes(/*cmdEntry*/ ctx[8].id));
}
},
i(local) {
if (current) return;
transition_in(staricon.$$.fragment, local);
current = true;
},
o(local) {
transition_out(staricon.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div5);
destroy_component(staricon);
if (if_block) if_block.d();
destroy_each(each_blocks, detaching);
mounted = false;
run_all(dispose);
}
};
}
function create_fragment$1(ctx) {
let div1;
let div0;
let each_blocks = [];
let each_1_lookup = new Map();
let current;
let each_value = /*visibleCommands*/ ctx[0];
const get_key = ctx => /*cmdEntry*/ ctx[8].id;
for (let i = 0; i < each_value.length; i += 1) {
let child_ctx = get_each_context(ctx, each_value, i);
let key = get_key(child_ctx);
each_1_lookup.set(key, each_blocks[i] = create_each_block(key, child_ctx));
}
return {
c() {
div1 = element("div");
div0 = element("div");
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].c();
}
attr(div0, "class", "hotkey-list-container");
attr(div1, "id", "hotkeys-wrapper");
attr(div1, "class", "markdown-preview-sizer markdown-preview-section hotkey-settings-container");
},
m(target, anchor) {
insert(target, div1, anchor);
append(div1, div0);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].m(div0, null);
}
current = true;
},
p(ctx, [dirty]) {
if (dirty & /*settings, visibleCommands, dispatch, renderHotkey, isHotkeyDuplicate, sendPluginName*/ 31) {
each_value = /*visibleCommands*/ ctx[0];
group_outros();
each_blocks = update_keyed_each(each_blocks, dirty, get_key, 1, ctx, each_value, each_1_lookup, div0, outro_and_destroy_block, create_each_block, null, get_each_context);
check_outros();
}
},
i(local) {
if (current) return;
for (let i = 0; i < each_value.length; i += 1) {
transition_in(each_blocks[i]);
}
current = true;
},
o(local) {
for (let i = 0; i < each_blocks.length; i += 1) {
transition_out(each_blocks[i]);
}
current = false;
},
d(detaching) {
if (detaching) detach(div1);
for (let i = 0; i < each_blocks.length; i += 1) {
each_blocks[i].d();
}
}
};
}
function instance$1($$self, $$props, $$invalidate) {
let { visibleCommands } = $$props;
let { settings } = $$props;
function renderHotkey(hotkey) {
let modifiersString = hotkey.modifiers.length !== 0
? getConvertedModifiers(sortModifiers(hotkey.modifiers)).join(' + ') + ' + '
: '';
let key = hotkey.key in SpecialSymbols
? SpecialSymbols[hotkey.key]
: hotkey.key.length === 1
? hotkey.key.toUpperCase()
: hotkey.key;
return modifiersString + key;
}
const dispatch = createEventDispatcher();
function sendPluginName(e) {
const clicked = e.target.innerHTML;
dispatch('plugin-name-clicked', clicked);
}
const click_handler = cmdEntry => {
dispatch('star-clicked', cmdEntry.id);
};
const click_handler_1 = hotkey => dispatch('duplicate-hotkey-clicked', hotkey);
$$self.$$set = $$props => {
if ('visibleCommands' in $$props) $$invalidate(0, visibleCommands = $$props.visibleCommands);
if ('settings' in $$props) $$invalidate(1, settings = $$props.settings);
};
$$self.$$.update = () => {
if ($$self.$$.dirty & /*settings*/ 2) ;
};
return [
visibleCommands,
settings,
renderHotkey,
dispatch,
sendPluginName,
click_handler,
click_handler_1
];
}
class CommandsList extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance$1, create_fragment$1, safe_not_equal, { visibleCommands: 0, settings: 1 });
}
}
/* src\Components\KeyboardComponent.svelte generated by Svelte v3.49.0 */
function create_fragment(ctx) {
let div2;
let div0;
let keyboardlayout;
let updating_KeyboardObject;
let updating_KeyboardStateDict;
let updating_visibleCommands;
let t0;
let div1;
let searchmenu;
let updating_inputHTML;
let updating_search;
let updating_searchCommandsCount;
let updating_searchHotkeysCount;
let updating_keyboardListenerIsActive;
let updating_FilterSettings;
let updating_plugin;
let t1;
let commandslist;
let updating_visibleCommands_1;
let updating_settings;
let div2_class_value;
let div2_resize_listener;
let current;
let mounted;
let dispose;
function keyboardlayout_KeyboardObject_binding(value) {
/*keyboardlayout_KeyboardObject_binding*/ ctx[25](value);
}
function keyboardlayout_KeyboardStateDict_binding(value) {
/*keyboardlayout_KeyboardStateDict_binding*/ ctx[26](value);
}
function keyboardlayout_visibleCommands_binding(value) {
/*keyboardlayout_visibleCommands_binding*/ ctx[27](value);
}
let keyboardlayout_props = {};
if (/*KeyboardObject*/ ctx[9] !== void 0) {
keyboardlayout_props.KeyboardObject = /*KeyboardObject*/ ctx[9];
}
if (/*KeyboardStateDict*/ ctx[10] !== void 0) {
keyboardlayout_props.KeyboardStateDict = /*KeyboardStateDict*/ ctx[10];
}
if (/*visibleCommands*/ ctx[4] !== void 0) {
keyboardlayout_props.visibleCommands = /*visibleCommands*/ ctx[4];
}
keyboardlayout = new KeyboardLayout({ props: keyboardlayout_props });
binding_callbacks.push(() => bind(keyboardlayout, 'KeyboardObject', keyboardlayout_KeyboardObject_binding));
binding_callbacks.push(() => bind(keyboardlayout, 'KeyboardStateDict', keyboardlayout_KeyboardStateDict_binding));
binding_callbacks.push(() => bind(keyboardlayout, 'visibleCommands', keyboardlayout_visibleCommands_binding));
function searchmenu_inputHTML_binding(value) {
/*searchmenu_inputHTML_binding*/ ctx[28](value);
}
function searchmenu_search_binding(value) {
/*searchmenu_search_binding*/ ctx[29](value);
}
function searchmenu_searchCommandsCount_binding(value) {
/*searchmenu_searchCommandsCount_binding*/ ctx[30](value);
}
function searchmenu_searchHotkeysCount_binding(value) {
/*searchmenu_searchHotkeysCount_binding*/ ctx[31](value);
}
function searchmenu_keyboardListenerIsActive_binding(value) {
/*searchmenu_keyboardListenerIsActive_binding*/ ctx[32](value);
}
function searchmenu_FilterSettings_binding(value) {
/*searchmenu_FilterSettings_binding*/ ctx[33](value);
}
function searchmenu_plugin_binding(value) {
/*searchmenu_plugin_binding*/ ctx[34](value);
}
let searchmenu_props = {};
if (/*input*/ ctx[7] !== void 0) {
searchmenu_props.inputHTML = /*input*/ ctx[7];
}
if (/*search*/ ctx[3] !== void 0) {
searchmenu_props.search = /*search*/ ctx[3];
}
if (/*searchCommandsCount*/ ctx[12] !== void 0) {
searchmenu_props.searchCommandsCount = /*searchCommandsCount*/ ctx[12];
}
if (/*searchHotkeysCount*/ ctx[11] !== void 0) {
searchmenu_props.searchHotkeysCount = /*searchHotkeysCount*/ ctx[11];
}
if (/*keyboardListenerIsActive*/ ctx[8] !== void 0) {
searchmenu_props.keyboardListenerIsActive = /*keyboardListenerIsActive*/ ctx[8];
}
if (/*settings*/ ctx[1].filterSettings !== void 0) {
searchmenu_props.FilterSettings = /*settings*/ ctx[1].filterSettings;
}
if (/*plugin*/ ctx[0] !== void 0) {
searchmenu_props.plugin = /*plugin*/ ctx[0];
}
searchmenu = new SearchMenu({ props: searchmenu_props });
binding_callbacks.push(() => bind(searchmenu, 'inputHTML', searchmenu_inputHTML_binding));
binding_callbacks.push(() => bind(searchmenu, 'search', searchmenu_search_binding));
binding_callbacks.push(() => bind(searchmenu, 'searchCommandsCount', searchmenu_searchCommandsCount_binding));
binding_callbacks.push(() => bind(searchmenu, 'searchHotkeysCount', searchmenu_searchHotkeysCount_binding));
binding_callbacks.push(() => bind(searchmenu, 'keyboardListenerIsActive', searchmenu_keyboardListenerIsActive_binding));
binding_callbacks.push(() => bind(searchmenu, 'FilterSettings', searchmenu_FilterSettings_binding));
binding_callbacks.push(() => bind(searchmenu, 'plugin', searchmenu_plugin_binding));
searchmenu.$on("featured-first-option-triggered", /*handleFeaturedFirstOptionClicked*/ ctx[15]);
searchmenu.$on("refresh-commands", /*handleRefreshClicked*/ ctx[18]);
function commandslist_visibleCommands_binding(value) {
/*commandslist_visibleCommands_binding*/ ctx[35](value);
}
function commandslist_settings_binding(value) {
/*commandslist_settings_binding*/ ctx[36](value);
}
let commandslist_props = {};
if (/*visibleCommands*/ ctx[4] !== void 0) {
commandslist_props.visibleCommands = /*visibleCommands*/ ctx[4];
}
if (/*settings*/ ctx[1] !== void 0) {
commandslist_props.settings = /*settings*/ ctx[1];
}
commandslist = new CommandsList({ props: commandslist_props });
binding_callbacks.push(() => bind(commandslist, 'visibleCommands', commandslist_visibleCommands_binding));
binding_callbacks.push(() => bind(commandslist, 'settings', commandslist_settings_binding));
commandslist.$on("star-clicked", /*handleStarIconClicked*/ ctx[17]);
commandslist.$on("duplicate-hotkey-clicked", /*handleDuplicateHotkeyClicked*/ ctx[16]);
commandslist.$on("plugin-name-clicked", /*handlePluginNameClicked*/ ctx[14]);
return {
c() {
div2 = element("div");
div0 = element("div");
create_component(keyboardlayout.$$.fragment);
t0 = space();
div1 = element("div");
create_component(searchmenu.$$.fragment);
t1 = space();
create_component(commandslist.$$.fragment);
attr(div0, "class", "");
attr(div0, "id", "keyboard-preview-view");
attr(div1, "class", "shortcuts-wrapper");
attr(div2, "id", "keyboard-component");
attr(div2, "class", div2_class_value = "" + (/*viewMode*/ ctx[6] + " " + (/*viewMode*/ ctx[6] === 'xs' ? 'is-mobile' : '')));
add_render_callback(() => /*div2_elementresize_handler*/ ctx[37].call(div2));
},
m(target, anchor) {
insert(target, div2, anchor);
append(div2, div0);
mount_component(keyboardlayout, div0, null);
append(div2, t0);
append(div2, div1);
mount_component(searchmenu, div1, null);
append(div1, t1);
mount_component(commandslist, div1, null);
div2_resize_listener = add_resize_listener(div2, /*div2_elementresize_handler*/ ctx[37].bind(div2));
current = true;
if (!mounted) {
dispose = [
action_destroyer(watchResize.call(null, div2, /*handleResize*/ ctx[19])),
listen(div2, "mouseenter", /*mouseenter_handler*/ ctx[38]),
listen(div2, "mouseleave", /*mouseleave_handler*/ ctx[39])
];
mounted = true;
}
},
p(ctx, dirty) {
const keyboardlayout_changes = {};
if (!updating_KeyboardObject && dirty[0] & /*KeyboardObject*/ 512) {
updating_KeyboardObject = true;
keyboardlayout_changes.KeyboardObject = /*KeyboardObject*/ ctx[9];
add_flush_callback(() => updating_KeyboardObject = false);
}
if (!updating_KeyboardStateDict && dirty[0] & /*KeyboardStateDict*/ 1024) {
updating_KeyboardStateDict = true;
keyboardlayout_changes.KeyboardStateDict = /*KeyboardStateDict*/ ctx[10];
add_flush_callback(() => updating_KeyboardStateDict = false);
}
if (!updating_visibleCommands && dirty[0] & /*visibleCommands*/ 16) {
updating_visibleCommands = true;
keyboardlayout_changes.visibleCommands = /*visibleCommands*/ ctx[4];
add_flush_callback(() => updating_visibleCommands = false);
}
keyboardlayout.$set(keyboardlayout_changes);
const searchmenu_changes = {};
if (!updating_inputHTML && dirty[0] & /*input*/ 128) {
updating_inputHTML = true;
searchmenu_changes.inputHTML = /*input*/ ctx[7];
add_flush_callback(() => updating_inputHTML = false);
}
if (!updating_search && dirty[0] & /*search*/ 8) {
updating_search = true;
searchmenu_changes.search = /*search*/ ctx[3];
add_flush_callback(() => updating_search = false);
}
if (!updating_searchCommandsCount && dirty[0] & /*searchCommandsCount*/ 4096) {
updating_searchCommandsCount = true;
searchmenu_changes.searchCommandsCount = /*searchCommandsCount*/ ctx[12];
add_flush_callback(() => updating_searchCommandsCount = false);
}
if (!updating_searchHotkeysCount && dirty[0] & /*searchHotkeysCount*/ 2048) {
updating_searchHotkeysCount = true;
searchmenu_changes.searchHotkeysCount = /*searchHotkeysCount*/ ctx[11];
add_flush_callback(() => updating_searchHotkeysCount = false);
}
if (!updating_keyboardListenerIsActive && dirty[0] & /*keyboardListenerIsActive*/ 256) {
updating_keyboardListenerIsActive = true;
searchmenu_changes.keyboardListenerIsActive = /*keyboardListenerIsActive*/ ctx[8];
add_flush_callback(() => updating_keyboardListenerIsActive = false);
}
if (!updating_FilterSettings && dirty[0] & /*settings*/ 2) {
updating_FilterSettings = true;
searchmenu_changes.FilterSettings = /*settings*/ ctx[1].filterSettings;
add_flush_callback(() => updating_FilterSettings = false);
}
if (!updating_plugin && dirty[0] & /*plugin*/ 1) {
updating_plugin = true;
searchmenu_changes.plugin = /*plugin*/ ctx[0];
add_flush_callback(() => updating_plugin = false);
}
searchmenu.$set(searchmenu_changes);
const commandslist_changes = {};
if (!updating_visibleCommands_1 && dirty[0] & /*visibleCommands*/ 16) {
updating_visibleCommands_1 = true;
commandslist_changes.visibleCommands = /*visibleCommands*/ ctx[4];
add_flush_callback(() => updating_visibleCommands_1 = false);
}
if (!updating_settings && dirty[0] & /*settings*/ 2) {
updating_settings = true;
commandslist_changes.settings = /*settings*/ ctx[1];
add_flush_callback(() => updating_settings = false);
}
commandslist.$set(commandslist_changes);
if (!current || dirty[0] & /*viewMode*/ 64 && div2_class_value !== (div2_class_value = "" + (/*viewMode*/ ctx[6] + " " + (/*viewMode*/ ctx[6] === 'xs' ? 'is-mobile' : '')))) {
attr(div2, "class", div2_class_value);
}
},
i(local) {
if (current) return;
transition_in(keyboardlayout.$$.fragment, local);
transition_in(searchmenu.$$.fragment, local);
transition_in(commandslist.$$.fragment, local);
current = true;
},
o(local) {
transition_out(keyboardlayout.$$.fragment, local);
transition_out(searchmenu.$$.fragment, local);
transition_out(commandslist.$$.fragment, local);
current = false;
},
d(detaching) {
if (detaching) detach(div2);
destroy_component(keyboardlayout);
destroy_component(searchmenu);
destroy_component(commandslist);
div2_resize_listener();
mounted = false;
run_all(dispose);
}
};
}
// sort commands by featured commands first
function sortByFeaturedFirst(cmds, featured) {
let sortedCmds = [];
let featuredCmds = [];
let otherCmds = [];
// sort commands by name when type is name
(cmds.forEach(cmd => {
if (featured.includes(cmd.id)) {
featuredCmds.push(cmd);
} else {
otherCmds.push(cmd);
}
}), sortedCmds = featuredCmds.concat(otherCmds));
return sortedCmds;
}
// function to update amount of hotkeys for all commands
function updateCommandsCount(array) {
return array.length;
}
// function to count hotkeys for all commands
function countHotkeys(array) {
let hotkeysCount = 0;
for (let command of array) {
hotkeysCount += command.hotkeys.length;
}
return hotkeysCount;
}
function instance($$self, $$props, $$invalidate) {
let visibleCommands;
let searchCommandsCount;
let searchHotkeysCount;
let $activeKey;
let $activeModifiers;
component_subscribe($$self, activeKey, $$value => $$invalidate(23, $activeKey = $$value));
component_subscribe($$self, activeModifiers, $$value => $$invalidate(24, $activeModifiers = $$value));
let { app } = $$props;
let { plugin } = $$props;
let { settings } = $$props;
let { view } = $$props;
let viewWidth;
let viewMode = 'desktop';
// INITIALIZE SEARCH MENU
let search = '';
let input;
let keyboardListenerIsActive = false;
// Implements Cmd+F functionality for focus on input field
// thanks to @Fevol - https://discord.com/channels/686053708261228577/840286264964022302/1005131941240115221
const view_scope = new obsidian.Scope(app.scope);
view_scope.register(['Mod'], 'f', e => {
if (e.ctrlKey && e.key === 'f') {
if (input === document.activeElement && keyboardListenerIsActive === false) {
$$invalidate(8, keyboardListenerIsActive = true);
} else if (input === document.activeElement && keyboardListenerIsActive === true) {
$$invalidate(8, keyboardListenerIsActive = false);
} else {
input.focus();
}
return false;
}
});
let kbLayout_main = mainSectionQwerty;
let kbLayout_other = keyboardOther;
let kbLayout_num = keyboardNum;
let KeyboardObject = [kbLayout_main, kbLayout_other, kbLayout_num]; // kbLayout_num //Keyboard
let KeyboardStateDict;
// COMMANDS LIST
let commands = getHotkeysV2(app);
// 0. prepare commands array from commands object
let commandsArray = Object.keys(commands).map(key => commands[key]);
// 1. refresh commands array
function refreshCommandsList() {
$$invalidate(21, commands = getHotkeysV2(app));
$$invalidate(22, commandsArray = Object.keys(commands).map(key => commands[key]));
}
function triggerRenderCommands() {
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
// filter commands array by search string
function filterCommandsArray(cmds, search, activeSearchModifiers, activeSearchKey) {
refreshCommandsList();
let filteredCmds = [];
// function to filter commands by search string
function filterByName(command) {
let CommandName = command.pluginName.toLocaleLowerCase() + ' ' + command.cmdName.toLowerCase();
// get array of search words and search in fullName
let searchWords = search.toLocaleLowerCase().split(' ').filter(word => word.length > 0);
// return true if all search word are in fullName, hotkeys or key
return searchWords.every(word => {
return CommandName.includes(word) || command.hotkeys.some(hotkey => {
return hotkey.key.toLocaleLowerCase().includes(word) || getConvertedModifiers(hotkey.modifiers).some(modifier => modifier.toLocaleLowerCase().includes(word));
});
});
}
// filter commands by activeSearchModifiers
// if no activeSearchModifiers, filter by all commands
function filterByModifiers(command, activeModifiers, strictHotkeyChecker) {
if (strictHotkeyChecker === false) {
return command.hotkeys.some(hotkey => {
return activeModifiers.every(modifier => {
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
});
});
} else if (strictHotkeyChecker === true) {
command.hotkeys = command.hotkeys.filter(hotkey => {
if (hotkey.modifiers.length === activeModifiers.length && activeModifiers.every(modifier => {
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
})) {
return true;
}
});
return command.hotkeys.every(hotkey => {
return activeModifiers.every(modifier => {
return getConvertedModifiers(hotkey.modifiers).includes(modifier);
});
});
}
}
// filter commands by activeSearchModifiers
function filterByKey(command) {
return command.hotkeys.some(hotkey => {
return hotkey.key.toLocaleLowerCase() === $activeKey.toLocaleLowerCase();
});
}
filteredCmds = cmds.filter(command => {
return filterByName(command) && (activeSearchModifiers.length === 0 || filterByModifiers(command, activeSearchModifiers, settings.filterSettings.StrictSearch)) && (activeSearchKey === '' || filterByKey(command));
}).sort((a, b) => {
return a.pluginName.localeCompare(b.pluginName);
}).filter(command => command.hotkeys.length > 0);
if (settings.filterSettings.FeaturedFirst) {
filteredCmds = sortByFeaturedFirst(filteredCmds, settings.featuredCommandIDs);
}
return filteredCmds;
}
// HANDLE COMPONENT EVENTS
// 1. if plugin name clicked inside commands list
function handlePluginNameClicked(event) {
let pluginName = event.detail;
if (search === '' || search === undefined) {
// scroll to input field
input.focus();
$$invalidate(3, search = pluginName);
} else if (search.startsWith(pluginName)) {
$$invalidate(3, search = search.replace(pluginName, ''));
} else {
$$invalidate(3, search = pluginName + search);
}
}
function handleFeaturedFirstOptionClicked(event) {
$$invalidate(1, settings.filterSettings.FeaturedFirst = !settings.filterSettings.FeaturedFirst, settings);
plugin.saveSettings();
triggerRenderCommands();
}
function handleDuplicateHotkeyClicked(event) {
let duplicativeHotkey = event.detail;
let duplicativeModifiers = getConvertedModifiers(duplicativeHotkey.modifiers);
let duplicativeKey = duplicativeHotkey.key;
// check if modifiers and key already active search then remove them
if ($activeModifiers.every(modifier => {
return duplicativeModifiers.includes(modifier);
}) && $activeKey.toLocaleLowerCase() === duplicativeKey.toLocaleLowerCase()) {
set_store_value(activeModifiers, $activeModifiers = [], $activeModifiers);
set_store_value(activeKey, $activeKey = '', $activeKey);
} else {
set_store_value(activeModifiers, $activeModifiers = duplicativeModifiers, $activeModifiers);
set_store_value(activeKey, $activeKey = duplicativeKey, $activeKey);
$$invalidate(3, search = '');
}
}
function handleStarIconClicked(event) {
let pluginName = event.detail;
if (settings.featuredCommandIDs.includes(pluginName)) {
$$invalidate(1, settings.featuredCommandIDs = settings.featuredCommandIDs.filter(id => id !== pluginName), settings);
plugin.saveSettings();
} else {
// add pluginName to settings.featuredCommandIDs
settings.featuredCommandIDs.push(pluginName);
$$invalidate(1, settings);
plugin.saveSettings();
}
triggerRenderCommands();
}
// 2. if refresh button is clicked
function handleRefreshClicked() {
refreshCommandsList();
}
// track resize and assign device classes to each width
function handleResize() {
if (viewWidth >= 1400) {
$$invalidate(6, viewMode = 'xxl');
} else if (viewWidth >= 1200 && viewWidth < 1400) {
$$invalidate(6, viewMode = 'xl');
} else if (viewWidth >= 992 && viewWidth < 1200) {
$$invalidate(6, viewMode = 'lg');
} else if (viewWidth >= 768 && viewWidth < 992) {
$$invalidate(6, viewMode = 'md');
} else if (viewWidth >= 576 && viewWidth < 768) {
$$invalidate(6, viewMode = 'sm');
} else if (viewWidth < 576) {
$$invalidate(6, viewMode = 'xs');
}
}
onMount(() => {
input.focus();
});
onDestroy(() => {
app.keymap.popScope(view_scope);
});
function keyboardlayout_KeyboardObject_binding(value) {
KeyboardObject = value;
$$invalidate(9, KeyboardObject);
}
function keyboardlayout_KeyboardStateDict_binding(value) {
KeyboardStateDict = value;
$$invalidate(10, KeyboardStateDict);
}
function keyboardlayout_visibleCommands_binding(value) {
visibleCommands = value;
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function searchmenu_inputHTML_binding(value) {
input = value;
$$invalidate(7, input);
}
function searchmenu_search_binding(value) {
search = value;
$$invalidate(3, search);
}
function searchmenu_searchCommandsCount_binding(value) {
searchCommandsCount = value;
((((($$invalidate(12, searchCommandsCount), $$invalidate(4, visibleCommands)), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function searchmenu_searchHotkeysCount_binding(value) {
searchHotkeysCount = value;
((((($$invalidate(11, searchHotkeysCount), $$invalidate(4, visibleCommands)), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function searchmenu_keyboardListenerIsActive_binding(value) {
keyboardListenerIsActive = value;
$$invalidate(8, keyboardListenerIsActive);
}
function searchmenu_FilterSettings_binding(value) {
if ($$self.$$.not_equal(settings.filterSettings, value)) {
settings.filterSettings = value;
$$invalidate(1, settings);
}
}
function searchmenu_plugin_binding(value) {
plugin = value;
$$invalidate(0, plugin);
}
function commandslist_visibleCommands_binding(value) {
visibleCommands = value;
(((($$invalidate(4, visibleCommands), $$invalidate(22, commandsArray)), $$invalidate(3, search)), $$invalidate(24, $activeModifiers)), $$invalidate(23, $activeKey));
}
function commandslist_settings_binding(value) {
settings = value;
$$invalidate(1, settings);
}
function div2_elementresize_handler() {
viewWidth = this.offsetWidth;
$$invalidate(5, viewWidth);
}
const mouseenter_handler = () => {
app.keymap.pushScope(view_scope);
};
const mouseleave_handler = () => {
app.keymap.popScope(view_scope);
};
$$self.$$set = $$props => {
if ('app' in $$props) $$invalidate(2, app = $$props.app);
if ('plugin' in $$props) $$invalidate(0, plugin = $$props.plugin);
if ('settings' in $$props) $$invalidate(1, settings = $$props.settings);
if ('view' in $$props) $$invalidate(20, view = $$props.view);
};
$$self.$$.update = () => {
if ($$self.$$.dirty[0] & /*commandsArray, search, $activeModifiers, $activeKey*/ 29360136) {
// REACTIVE PROPERTIES
$$invalidate(4, visibleCommands = filterCommandsArray(commandsArray, search, $activeModifiers, $activeKey));
}
if ($$self.$$.dirty[0] & /*visibleCommands*/ 16) {
// COUNTERS
$$invalidate(12, searchCommandsCount = updateCommandsCount(visibleCommands));
}
if ($$self.$$.dirty[0] & /*visibleCommands*/ 16) {
$$invalidate(11, searchHotkeysCount = countHotkeys(visibleCommands));
}
if ($$self.$$.dirty[0] & /*app, plugin, settings, view, commands*/ 3145735) ;
};
return [
plugin,
settings,
app,
search,
visibleCommands,
viewWidth,
viewMode,
input,
keyboardListenerIsActive,
KeyboardObject,
KeyboardStateDict,
searchHotkeysCount,
searchCommandsCount,
view_scope,
handlePluginNameClicked,
handleFeaturedFirstOptionClicked,
handleDuplicateHotkeyClicked,
handleStarIconClicked,
handleRefreshClicked,
handleResize,
view,
commands,
commandsArray,
$activeKey,
$activeModifiers,
keyboardlayout_KeyboardObject_binding,
keyboardlayout_KeyboardStateDict_binding,
keyboardlayout_visibleCommands_binding,
searchmenu_inputHTML_binding,
searchmenu_search_binding,
searchmenu_searchCommandsCount_binding,
searchmenu_searchHotkeysCount_binding,
searchmenu_keyboardListenerIsActive_binding,
searchmenu_FilterSettings_binding,
searchmenu_plugin_binding,
commandslist_visibleCommands_binding,
commandslist_settings_binding,
div2_elementresize_handler,
mouseenter_handler,
mouseleave_handler
];
}
class KeyboardComponent extends SvelteComponent {
constructor(options) {
super();
init(this, options, instance, create_fragment, safe_not_equal, { app: 2, plugin: 0, settings: 1, view: 20 }, null, [-1, -1]);
}
}
class ShortcutsView extends obsidian.ItemView {
constructor(leaf, plugin) {
super(leaf);
this.navigation = true;
this.plugin = plugin;
}
onload() {
const _super = Object.create(null, {
onload: { get: () => super.onload }
});
return __awaiter(this, void 0, void 0, function* () {
_super.onload.call(this);
});
}
getViewType() {
return VIEW_TYPE_SHORTCUTS_ANALYZER;
}
getDisplayText() {
return 'Keyboard Shortcuts';
}
onOpen() {
return __awaiter(this, void 0, void 0, function* () {
yield this.draw();
});
}
onClose() {
return Promise.resolve();
}
draw() {
return __awaiter(this, void 0, void 0, function* () {
const { app, contentEl } = this;
const { settings } = this.plugin;
contentEl.empty();
contentEl.setAttribute(`id`, `KB-view`);
contentEl.style.padding = '0';
this.component = new KeyboardComponent({
target: contentEl,
props: {
app,
plugin: this.plugin,
settings,
view: this,
},
});
});
}
}
class KeyboardAnalizerPlugin extends obsidian.Plugin {
get full() {
const leaves = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER);
const leaf = leaves.length ? leaves[0] : null;
if (leaf && leaf.view && leaf.view instanceof ShortcutsView)
return leaf.view;
}
onload() {
return __awaiter(this, void 0, void 0, function* () {
yield this.loadSettings();
this.registerPluginHotkeys();
this.addStatusBarIndicator.apply(this);
this.registerView(VIEW_TYPE_SHORTCUTS_ANALYZER, (leaf) => new ShortcutsView(leaf, this));
// This adds a settings tab so the user can configure various aspects of the plugin
// this.addSettingTab(new KeyboardAnalyzerSettingTab(this.app, this))
});
}
onunload() {
return __awaiter(this, void 0, void 0, function* () {
this.app.workspace.detachLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER);
});
}
loadSettings() {
return __awaiter(this, void 0, void 0, function* () {
this.settings = Object.assign({}, DEFAULT_PLUGIN_SETTINGS, yield this.loadData());
});
}
saveSettings() {
return __awaiter(this, void 0, void 0, function* () {
yield this.saveData(this.settings);
});
}
addStatusBarIndicator() {
// This adds a status bar item to the bottom of the app. Does not work on mobile apps.
const statusBarIcon = this.addStatusBarItem();
statusBarIcon.addClass('mod-clickable');
statusBarIcon.setAttribute('aria-label', 'Keyboard Shortcuts');
statusBarIcon.style.order = '10';
// create the status bar icon
const icon = statusBarIcon.createSpan('icon');
// register click handler
obsidian.setIcon(icon, 'keyboard-glyph'); // inject svg icon
icon.addEventListener('click', (evt) => this.onStatusBarClick(evt));
// TODO update view on click
// TODO update view when commands added or hotkeys changed
}
onStatusBarClick(evt) {
return __awaiter(this, void 0, void 0, function* () {
if (evt.ctrlKey == true) {
this.addShortcutsView(true);
}
else {
this.addShortcutsView();
}
});
}
addShortcutsView(newLeaf = false) {
return __awaiter(this, void 0, void 0, function* () {
let checkResult = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER)
.length === 0;
if (checkResult) {
if (newLeaf) {
this.app.workspace
.getLeaf(true)
.setViewState({ type: VIEW_TYPE_SHORTCUTS_ANALYZER });
}
else {
this.app.workspace
.getLeaf()
.setViewState({ type: VIEW_TYPE_SHORTCUTS_ANALYZER });
}
}
});
}
registerPluginHotkeys() {
this.addCommand({
id: 'show-shortcuts-analyzer-view',
name: 'Open keyboard shortcuts view',
checkCallback: (checking) => {
let checkResult = this.app.workspace.getLeavesOfType(VIEW_TYPE_SHORTCUTS_ANALYZER)
.length === 0;
if (checkResult) {
// Only perform work when checking is false
if (!checking) {
this.addShortcutsView();
// openView(this.app, VIEW_TYPE_SHORTCUTS_ANALYZER, ShortcutsView)
}
return true;
}
},
});
}
}
// class KeyboardAnalyzerSettingTab extends PluginSettingTab {
// plugin: KeyboardAnalizerPlugin
// constructor(app: App, plugin: KeyboardAnalizerPlugin) {
// super(app, plugin)
// this.plugin = plugin
// }
// display(): void {
// const { containerEl } = this
// containerEl.empty()
// containerEl.createEl('h2', { text: 'Settings for my awesome plugin.' })
// // checkbox for showing status bar item
// new Setting(containerEl)
// .setName('Show Status Bar Item')
// .setDesc('Show the status bar item')
// .addToggle((checkbox: any) =>
// checkbox
// .setChecked(this.plugin.settings.showStatusBarItem)
// .onChange(async (value: boolean) => {
// this.plugin.settings.showStatusBarItem = value
// await this.plugin.saveSettings()
// })
// )
// }
// }
module.exports = KeyboardAnalizerPlugin;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZXMiOlsibm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIm5vZGVfbW9kdWxlcy9mZWF0aGVyLWljb25zL2Rpc3QvZmVhdGhlci5qcyIsInNyYy9Db25zdGFudHMudHMiLCJub2RlX21vZHVsZXMvc3ZlbHRlL2ludGVybmFsL2luZGV4Lm1qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvY29sbGVjdGlvbi11dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvZWxlbWVudC11dGlscy5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvbGlzdGVuZXItaGFuZGxlci5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvaWQtZ2VuZXJhdG9yLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9pZC1oYW5kbGVyLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9yZXBvcnRlci5qcyIsIm5vZGVfbW9kdWxlcy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci9zcmMvYnJvd3Nlci1kZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9iYXRjaC1wcm9jZXNzb3Ivc3JjL3V0aWxzLmpzIiwibm9kZV9tb2R1bGVzL2JhdGNoLXByb2Nlc3Nvci9zcmMvYmF0Y2gtcHJvY2Vzc29yLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9zdGF0ZS1oYW5kbGVyLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvb2JqZWN0LmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9kZXRlY3Rpb24tc3RyYXRlZ3kvc2Nyb2xsLmpzIiwibm9kZV9tb2R1bGVzL2VsZW1lbnQtcmVzaXplLWRldGVjdG9yL3NyYy9lbGVtZW50LXJlc2l6ZS1kZXRlY3Rvci5qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUtd2F0Y2gtcmVzaXplL2xpYi9pbmRleC5lcy5qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUvc3RvcmUvaW5kZXgubWpzIiwic3JjL0FwcFNob3J0Y3V0cy50cyIsInNyYy9Db21wb25lbnRzL2FjdGl2ZUtleXNTdG9yZS5qcyIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2RlZmF1bHRBdHRyaWJ1dGVzLmpzIiwibm9kZV9tb2R1bGVzL2x1Y2lkZS1zdmVsdGUvZGlzdC9lc20vSWNvbi5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9jaXJjbGUtZG90LnN2ZWx0ZSIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2ljb25zL2NvZmZlZS5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9maWx0ZXIuc3ZlbHRlIiwibm9kZV9tb2R1bGVzL2x1Y2lkZS1zdmVsdGUvZGlzdC9lc20vaWNvbnMvcmVmcmVzaC1jdy5zdmVsdGUiLCJub2RlX21vZHVsZXMvbHVjaWRlLXN2ZWx0ZS9kaXN0L2VzbS9pY29ucy9zdGFyLnN2ZWx0ZSIsIm5vZGVfbW9kdWxlcy9sdWNpZGUtc3ZlbHRlL2Rpc3QvZXNtL2ljb25zL3guc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvS2V5Ym9hcmRLZXkuc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvS2V5Ym9hcmRMYXlvdXQuc3ZlbHRlIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS9lYXNpbmcvaW5kZXgubWpzIiwibm9kZV9tb2R1bGVzL3N2ZWx0ZS90cmFuc2l0aW9uL2luZGV4Lm1qcyIsIm5vZGVfbW9kdWxlcy9zdmVsdGUtdXNlLWNsaWNrLW91dHNpZGUvZGlzdC9pbmRleC5qcyIsInNyYy9Db21wb25lbnRzL2xvbmdwcmVzcy5qcyIsInNyYy9Db21wb25lbnRzL1NlYXJjaE1lbnUuc3ZlbHRlIiwic3JjL0NvbXBvbmVudHMvQ29tbWFuZHNMaXN0LnN2ZWx0ZSIsInNyYy9Db21wb25lbnRzL0tleWJvYXJkQ29tcG9uZW50LnN2ZWx0ZSIsInNyYy9TaG9ydGN1dHNWaWV3LnRzIiwic3JjL21haW4udHMiXSwic291cmNlc0NvbnRlbnQiOm51bGwsIm5hbWVzIjpbInRoaXMiLCJ1dGlscyIsImZvckVhY2giLCJyZXF1aXJlJCQwIiwiaWRIYW5kbGVyIiwiaWRHZW5lcmF0b3IiLCJpZEdlbmVyYXRvck1ha2VyIiwiaWRIYW5kbGVyTWFrZXIiLCJyZXBvcnRlciIsInJlcG9ydGVyTWFrZXIiLCJiYXRjaFByb2Nlc3NvciIsImJhdGNoUHJvY2Vzc29yTWFrZXIiLCJsaXN0ZW5lckhhbmRsZXJNYWtlciIsImVsZW1lbnRVdGlscyIsImVsZW1lbnRVdGlsc01ha2VyIiwic2Nyb2xsU3RyYXRlZ3lNYWtlciIsIm9iamVjdFN0cmF0ZWd5TWFrZXIiLCJlbGVtZW50UmVzaXplRGV0ZWN0b3JNYWtlciIsIlBsYXRmb3JtIiwiY3JlYXRlX2lmX2Jsb2NrIiwibGluZWFyIiwiY3JlYXRlX2lmX2Jsb2NrXzEiLCJTY29wZSIsIkl0ZW1WaWV3IiwiUGx1Z2luIiwic2V0SWNvbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQXVEQTtBQUNPLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRTtBQUM3RCxJQUFJLFNBQVMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLE9BQU8sS0FBSyxZQUFZLENBQUMsR0FBRyxLQUFLLEdBQUcsSUFBSSxDQUFDLENBQUMsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENB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QyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxDQUFDLGtCQUFrQixDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLG1CQUFtQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxXQUFXLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxZQUFZLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsY0FBYyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGVBQWUsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxTQUFTLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxjQUFjLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxDQUFDLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsYUFBYSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8s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S0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWCxRQUFBLE9BQU8sRUFBRSxHQUFHO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsUUFBUTtBQUNiLFFBQUEsSUFBSSxFQUFFLFNBQVM7QUFDZixRQUFBLE9BQU8sRUFBRSxLQUFLO0FBQ2YsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsUUFBUTtBQUNiLFFBQUEsSUFBSSxFQUFFLGVBQWU7QUFDckIsUUFBQSxPQUFPLEVBQUUsS0FBSztBQUNmLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFFRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2QsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2YsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTs7Ozs7QUFLRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxNQUFNO0FBQ2IsS0FBQTtBQUNELElBQUEsRUFBRSxFQUFFO0FBQ0YsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsTUFBTTtBQUNiLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxVQUFVO0FBQ2pCLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxXQUFXO0FBQ2xCLEtBQUE7QUFDRCxJQUFBLEVBQUUsRUFBRTtBQUNGLFFBQUEsR0FBRyxFQUFFLGFBQWE7QUFDbEIsUUFBQSxJQUFJLEVBQUUsYUFBYTtBQUNwQixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxFQUFFLEVBQUU7QUFDRixRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3RCLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZUFBZTtBQUN0QixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3ZCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxlQUFlO0FBQ3RCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxjQUFjO0FBQ3JCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxJQUFJO0FBQ1gsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsSUFBSTtBQUNULFFBQUEsSUFBSSxFQUFFLElBQUk7QUFDWCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxLQUFLO0FBQ1YsUUFBQSxJQUFJLEVBQUUsS0FBSztBQUNaLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEtBQUs7QUFDVixRQUFBLElBQUksRUFBRSxLQUFLO0FBQ1osS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsS0FBSztBQUNWLFFBQUEsSUFBSSxFQUFFLEtBQUs7QUFDWixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxTQUFTO0FBQ2QsUUFBQSxJQUFJLEVBQUUsU0FBUztBQUNmLFFBQUEsT0FBTyxFQUFFLEdBQUc7QUFDYixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxZQUFZO0FBQ2pCLFFBQUEsSUFBSSxFQUFFLFlBQVk7QUFDbEIsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxhQUFhO0FBQ3BCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLE1BQU07QUFDWCxRQUFBLElBQUksRUFBRSxjQUFjO0FBQ3JCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLENBQUksRUFBQSxDQUFBO0FBQ1QsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxJQUFJO0FBQ1QsUUFBQSxJQUFJLEVBQUUsT0FBTztBQUNkLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLGNBQWM7QUFDckIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE9BQU87QUFDZCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxpQkFBaUI7QUFDdEIsUUFBQSxJQUFJLEVBQUUsaUJBQWlCO0FBQ3hCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLGdCQUFnQjtBQUNyQixRQUFBLElBQUksRUFBRSxnQkFBZ0I7QUFDdkIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsb0JBQW9CO0FBQ3pCLFFBQUEsSUFBSSxFQUFFLG9CQUFvQjtBQUMzQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxnQkFBZ0I7QUFDckIsUUFBQSxJQUFJLEVBQUUsZ0JBQWdCO0FBQ3ZCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLFlBQVk7QUFDakIsUUFBQSxJQUFJLEVBQUUsWUFBWTtBQUNsQixRQUFBLE9BQU8sRUFBRSxHQUFHO0FBQ2IsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsaUJBQWlCO0FBQ3RCLFFBQUEsSUFBSSxFQUFFLFlBQVk7QUFDbkIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsaUJBQWlCO0FBQ3RCLFFBQUEsSUFBSSxFQUFFLFlBQVk7QUFDbkIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsZUFBZTtBQUNwQixRQUFBLElBQUksRUFBRSxVQUFVO0FBQ2pCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxXQUFXO0FBQ2xCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE9BQU87QUFDZCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsT0FBTztBQUNkLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxRQUFRO0FBQ2YsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLE9BQU87QUFDZCxLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsV0FBVztBQUNsQixLQUFBO0FBQ0QsSUFBQSxHQUFHLEVBQUU7QUFDSCxRQUFBLEdBQUcsRUFBRSxHQUFHO0FBQ1IsUUFBQSxJQUFJLEVBQUUsUUFBUTtBQUNmLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxhQUFhO0FBQ3BCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxhQUFhO0FBQ3BCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxXQUFXO0FBQ2xCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxjQUFjO0FBQ3JCLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLEdBQUc7QUFDUixRQUFBLElBQUksRUFBRSxPQUFPO0FBQ2QsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsR0FBRztBQUNSLFFBQUEsSUFBSSxFQUFFLFdBQVc7QUFDbEIsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsTUFBTTtBQUNYLFFBQUEsSUFBSSxFQUFFLE1BQU07QUFDWixRQUFBLE9BQU8sRUFBRSxHQUFHO0FBQ2IsS0FBQTtBQUNELElBQUEsR0FBRyxFQUFFO0FBQ0gsUUFBQSxHQUFHLEVBQUUsVUFBVTtBQUNmLFFBQUEsSUFBSSxFQUFFLFVBQVU7QUFDaEIsUUFBQSxPQUFPLEVBQUUsR0FBRztBQUNiLEtBQUE7QUFDRCxJQUFBLEdBQUcsRUFBRTtBQUNILFFBQUEsR0FBRyxFQUFFLElBQUk7QUFDVCxRQUFBLElBQUksRUFBRSxlQUFlO0FBQ3RCLEtBQUE7Q0FDRjs7QUM3cENELFNBQVMsSUFBSSxHQUFHLEdBQUc7QUFDbkIsTUFBTSxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QixTQUFTLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFO0FBQzFCO0FBQ0EsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEdBQUc7QUFDdkIsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hCLElBQUksT0FBTyxHQUFHLENBQUM7QUFDZixDQUFDO0FBU0QsU0FBUyxHQUFHLENBQUMsRUFBRSxFQUFFO0FBQ2pCLElBQUksT0FBTyxFQUFFLEVBQUUsQ0FBQztBQUNoQixDQUFDO0FBQ0QsU0FBUyxZQUFZLEdBQUc7QUFDeEIsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsQ0FBQztBQUNELFNBQVMsT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUN0QixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDckIsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRTtBQUM1QixJQUFJLE9BQU8sT0FBTyxLQUFLLEtBQUssVUFBVSxDQUFDO0FBQ3ZDLENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0FBQzlCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsS0FBSyxRQUFRLEtBQUssT0FBTyxDQUFDLEtBQUssVUFBVSxDQUFDLENBQUM7QUFDbEcsQ0FBQztBQVlELFNBQVMsUUFBUSxDQUFDLEdBQUcsRUFBRTtBQUN2QixJQUFJLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFNRCxTQUFTLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxTQUFTLEVBQUU7QUFDeEMsSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7QUFDdkIsUUFBUSxPQUFPLElBQUksQ0FBQztBQUNwQixLQUFLO0FBQ0wsSUFBSSxNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEdBQUcsU0FBUyxDQUFDLENBQUM7QUFDaEQsSUFBSSxPQUFPLEtBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ2pFLENBQUM7QUFNRCxTQUFTLG1CQUFtQixDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFO0FBQ3pELElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUM3RCxDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsVUFBVSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxFQUFFO0FBQ25ELElBQUksSUFBSSxVQUFVLEVBQUU7QUFDcEIsUUFBUSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQztBQUN4RSxRQUFRLE9BQU8sVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7QUFDeEQsSUFBSSxPQUFPLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFO0FBQzlCLFVBQVUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzdELFVBQVUsT0FBTyxDQUFDLEdBQUcsQ0FBQztBQUN0QixDQUFDO0FBQ0QsU0FBUyxnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUU7QUFDMUQsSUFBSSxJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDN0IsUUFBUSxNQUFNLElBQUksR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDOUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLLEtBQUssU0FBUyxFQUFFO0FBQ3pDLFlBQVksT0FBTyxJQUFJLENBQUM7QUFDeEIsU0FBUztBQUNULFFBQVEsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUU7QUFDdEMsWUFBWSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDOUIsWUFBWSxNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUNwRSxZQUFZLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUM3QyxnQkFBZ0IsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3ZELGFBQWE7QUFDYixZQUFZLE9BQU8sTUFBTSxDQUFDO0FBQzFCLFNBQVM7QUFDVCxRQUFRLE9BQU8sT0FBTyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDcEMsS0FBSztBQUNMLElBQUksT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDO0FBQ3pCLENBQUM7QUFDRCxTQUFTLGdCQUFnQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUUsR0FBRyxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsbUJBQW1CLEVBQUU7QUFDbEcsSUFBSSxJQUFJLFlBQVksRUFBRTtBQUN0QixRQUFRLE1BQU0sWUFBWSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDbEcsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksRUFBRSxZQUFZLENBQUMsQ0FBQztBQUMzQyxLQUFLO0FBQ0wsQ0FBQztBQUtELFNBQVMsd0JBQXdCLENBQUMsT0FBTyxFQUFFO0FBQzNDLElBQUksSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLEVBQUU7QUFDakMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDekIsUUFBUSxNQUFNLE1BQU0sR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDL0MsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3pDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQzFCLFNBQVM7QUFDVCxRQUFRLE9BQU8sS0FBSyxDQUFDO0FBQ3JCLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQyxDQUFDLENBQUM7QUFDZCxDQUFDO0FBQ0QsU0FBUyxzQkFBc0IsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsSUFBSSxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUM7QUFDdEIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUs7QUFDekIsUUFBUSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHO0FBQ3hCLFlBQVksTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqQyxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUU7QUFDekMsSUFBSSxNQUFNLElBQUksR0FBRyxFQUFFLENBQUM7QUFDcEIsSUFBSSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekIsSUFBSSxLQUFLLE1BQU0sQ0FBQyxJQUFJLEtBQUs7QUFDekIsUUFBUSxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRztBQUN4QyxZQUFZLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDL0IsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBaUJELFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRTtBQUM5QixJQUFJLE9BQU8sS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3RDLENBQUM7QUFDRCxTQUFTLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtBQUM1QyxJQUFJLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckIsSUFBSSxPQUFPLEdBQUcsQ0FBQztBQUNmLENBQUM7QUFFRCxTQUFTLGdCQUFnQixDQUFDLGFBQWEsRUFBRTtBQUN6QyxJQUFJLE9BQU8sYUFBYSxJQUFJLFdBQVcsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEdBQUcsYUFBYSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDOUYsQ0FBQztBQUNEO0FBQ0EsTUFBTSxTQUFTLEdBQUcsT0FBTyxNQUFNLEtBQUssV0FBVyxDQUFDO0FBQ2hELElBQUksR0FBRyxHQUFHLFNBQVM7QUFDbkIsTUFBTSxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFO0FBQ3BDLE1BQU0sTUFBTSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkIsSUFBSSxHQUFHLEdBQUcsU0FBUyxHQUFHLEVBQUUsSUFBSSxxQkFBcUIsQ0FBQyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUM7QUFRN0Q7QUFDQSxNQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ3hCLFNBQVMsU0FBUyxDQUFDLEdBQUcsRUFBRTtBQUN4QixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJO0FBQzFCLFFBQVEsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUU7QUFDMUIsWUFBWSxLQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9CLFlBQVksSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3JCLFNBQVM7QUFDVCxLQUFLLENBQUMsQ0FBQztBQUNQLElBQUksSUFBSSxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUM7QUFDeEIsUUFBUSxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDdkIsQ0FBQztBQU9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUyxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3hCLElBQUksSUFBSSxJQUFJLENBQUM7QUFDYixJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxDQUFDO0FBQ3hCLFFBQVEsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZCLElBQUksT0FBTztBQUNYLFFBQVEsT0FBTyxFQUFFLElBQUksT0FBTyxDQUFDLE9BQU8sSUFBSTtBQUN4QyxZQUFZLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztBQUMxRCxTQUFTLENBQUM7QUFDVixRQUFRLEtBQUssR0FBRztBQUNoQixZQUFZLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsU0FBUztBQUNULEtBQUssQ0FBQztBQUNOLENBQUM7QUF1R0QsU0FBUyxNQUFNLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUM5QixJQUFJLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDN0IsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRSxjQUFjLEVBQUUsTUFBTSxFQUFFO0FBQ3ZELElBQUksTUFBTSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4RCxJQUFJLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLEVBQUU7QUFDMUQsUUFBUSxNQUFNLEtBQUssR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsUUFBUSxLQUFLLENBQUMsRUFBRSxHQUFHLGNBQWMsQ0FBQztBQUNsQyxRQUFRLEtBQUssQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBQ25DLFFBQVEsaUJBQWlCLENBQUMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDbkQsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGtCQUFrQixDQUFDLElBQUksRUFBRTtBQUNsQyxJQUFJLElBQUksQ0FBQyxJQUFJO0FBQ2IsUUFBUSxPQUFPLFFBQVEsQ0FBQztBQUN4QixJQUFJLE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUM7QUFDNUUsSUFBSSxJQUFJLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQzNCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMLElBQUksT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDO0FBQzlCLENBQUM7QUFDRCxTQUFTLHVCQUF1QixDQUFDLElBQUksRUFBRTtBQUN2QyxJQUFJLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzQyxJQUFJLGlCQUFpQixDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQy9ELElBQUksT0FBTyxhQUFhLENBQUMsS0FBSyxDQUFDO0FBQy9CLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7QUFDeEMsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQXlCRCxTQUFTLE1BQU0sQ0FBQyxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUN0QyxJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sSUFBSSxJQUFJLENBQUMsQ0FBQztBQUM5QyxDQUFDO0FBU0QsU0FBUyxNQUFNLENBQUMsSUFBSSxFQUFFO0FBQ3RCLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDdEMsQ0FBQztBQUNELFNBQVMsWUFBWSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUU7QUFDN0MsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25ELFFBQVEsSUFBSSxVQUFVLENBQUMsQ0FBQyxDQUFDO0FBQ3pCLFlBQVksVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsQ0FBQztBQUNELFNBQVMsT0FBTyxDQUFDLElBQUksRUFBRTtBQUN2QixJQUFJLE9BQU8sUUFBUSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN4QyxDQUFDO0FBZ0JELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRTtBQUMzQixJQUFJLE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsRUFBRSxJQUFJLENBQUMsQ0FBQztBQUN4RSxDQUFDO0FBQ0QsU0FBUyxJQUFJLENBQUMsSUFBSSxFQUFFO0FBQ3BCLElBQUksT0FBTyxRQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3JCLENBQUM7QUFDRCxTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3BCLENBQUM7QUFDRCxTQUFTLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDL0MsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRCxJQUFJLE9BQU8sTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuRSxDQUFDO0FBNkJELFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsS0FBSyxFQUFFO0FBQ3RDLElBQUksSUFBSSxLQUFLLElBQUksSUFBSTtBQUNyQixRQUFRLElBQUksQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDeEMsU0FBUyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSztBQUNuRCxRQUFRLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUFzQkQsU0FBUyxrQkFBa0IsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO0FBQzlDLElBQUksS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7QUFDbEMsUUFBUSxJQUFJLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QyxLQUFLO0FBQ0wsQ0FBQztBQWlDRCxTQUFTLFFBQVEsQ0FBQyxPQUFPLEVBQUU7QUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzFDLENBQUM7QUF1SEQsU0FBUyxRQUFRLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRTtBQUM5QixJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3JCLElBQUksSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLElBQUk7QUFDL0IsUUFBUSxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztBQUN6QixDQUFDO0FBQ0QsU0FBUyxlQUFlLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBRTtBQUN2QyxJQUFJLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQzdDLENBQUM7QUFTRCxTQUFTLFNBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUU7QUFDaEQsSUFBSSxJQUFJLEtBQUssS0FBSyxJQUFJLEVBQUU7QUFDeEIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxLQUFLO0FBQ0wsU0FBUztBQUNULFFBQVEsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ3pFLEtBQUs7QUFDTCxDQUFDO0FBd0JEO0FBQ0E7QUFDQSxJQUFJLFdBQVcsQ0FBQztBQUNoQixTQUFTLGNBQWMsR0FBRztBQUMxQixJQUFJLElBQUksV0FBVyxLQUFLLFNBQVMsRUFBRTtBQUNuQyxRQUFRLFdBQVcsR0FBRyxLQUFLLENBQUM7QUFDNUIsUUFBUSxJQUFJO0FBQ1osWUFBWSxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQ2hFLGdCQUFnQixLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDO0FBQzVDLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxPQUFPLEtBQUssRUFBRTtBQUN0QixZQUFZLFdBQVcsR0FBRyxJQUFJLENBQUM7QUFDL0IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU8sV0FBVyxDQUFDO0FBQ3ZCLENBQUM7QUFDRCxTQUFTLG1CQUFtQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDdkMsSUFBSSxNQUFNLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNsRCxJQUFJLElBQUksY0FBYyxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUU7QUFDOUMsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDekMsS0FBSztBQUNMLElBQUksTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3JDLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsa0ZBQWtGO0FBQ25ILFFBQVEsNkVBQTZFLENBQUMsQ0FBQztBQUN2RixJQUFJLE1BQU0sQ0FBQyxZQUFZLENBQUMsYUFBYSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQy9DLElBQUksTUFBTSxDQUFDLFFBQVEsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6QixJQUFJLE1BQU0sV0FBVyxHQUFHLGNBQWMsRUFBRSxDQUFDO0FBQ3pDLElBQUksSUFBSSxXQUFXLENBQUM7QUFDcEIsSUFBSSxJQUFJLFdBQVcsRUFBRTtBQUNyQixRQUFRLE1BQU0sQ0FBQyxHQUFHLEdBQUcsZ0ZBQWdGLENBQUM7QUFDdEcsUUFBUSxXQUFXLEdBQUcsTUFBTSxDQUFDLE1BQU0sRUFBRSxTQUFTLEVBQUUsQ0FBQyxLQUFLLEtBQUs7QUFDM0QsWUFBWSxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLGFBQWE7QUFDckQsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDO0FBQ3JCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLFNBQVM7QUFDVCxRQUFRLE1BQU0sQ0FBQyxHQUFHLEdBQUcsYUFBYSxDQUFDO0FBQ25DLFFBQVEsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNO0FBQzlCLFlBQVksV0FBVyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsYUFBYSxFQUFFLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQztBQUNyRSxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pCLElBQUksT0FBTyxNQUFNO0FBQ2pCLFFBQVEsSUFBSSxXQUFXLEVBQUU7QUFDekIsWUFBWSxXQUFXLEVBQUUsQ0FBQztBQUMxQixTQUFTO0FBQ1QsYUFBYSxJQUFJLFdBQVcsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFO0FBQ3RELFlBQVksV0FBVyxFQUFFLENBQUM7QUFDMUIsU0FBUztBQUNULFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZCLEtBQUssQ0FBQztBQUNOLENBQUM7QUFDRCxTQUFTLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRTtBQUM3QyxJQUFJLE9BQU8sQ0FBQyxTQUFTLENBQUMsTUFBTSxHQUFHLEtBQUssR0FBRyxRQUFRLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN2RCxDQUFDO0FBQ0QsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRSxFQUFFLE9BQU8sR0FBRyxLQUFLLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNsRixJQUFJLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbEQsSUFBSSxDQUFDLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pELElBQUksT0FBTyxDQUFDLENBQUM7QUFDYixDQUFDO0FBNEVEO0FBQ0E7QUFDQTtBQUNBLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDakMsSUFBSSxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2Y7QUFDQSxTQUFTLElBQUksQ0FBQyxHQUFHLEVBQUU7QUFDbkIsSUFBSSxJQUFJLElBQUksR0FBRyxJQUFJLENBQUM7QUFDcEIsSUFBSSxJQUFJLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDO0FBQ3ZCLElBQUksT0FBTyxDQUFDLEVBQUU7QUFDZCxRQUFRLElBQUksR0FBRyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxJQUFJLElBQUksR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4RCxJQUFJLE9BQU8sSUFBSSxLQUFLLENBQUMsQ0FBQztBQUN0QixDQUFDO0FBQ0QsU0FBUyx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFO0FBQzdDLElBQUksTUFBTSxJQUFJLEdBQUcsRUFBRSxVQUFVLEVBQUUsdUJBQXVCLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsRUFBRSxDQUFDO0FBQzFFLElBQUksY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDbEMsSUFBSSxPQUFPLElBQUksQ0FBQztBQUNoQixDQUFDO0FBQ0QsU0FBUyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLEVBQUU7QUFDckUsSUFBSSxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsUUFBUSxDQUFDO0FBQ25DLElBQUksSUFBSSxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQzFCLElBQUksS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLElBQUksSUFBSSxFQUFFO0FBQ3ZDLFFBQVEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEMsUUFBUSxTQUFTLElBQUksQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN0RCxLQUFLO0FBQ0wsSUFBSSxNQUFNLElBQUksR0FBRyxTQUFTLEdBQUcsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDekQsSUFBSSxNQUFNLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDakQsSUFBSSxNQUFNLEdBQUcsR0FBRyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sRUFBRSxVQUFVLEVBQUUsS0FBSyxFQUFFLEdBQUcsY0FBYyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSx3QkFBd0IsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ3RCLFFBQVEsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztBQUMzQixRQUFRLFVBQVUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDeEYsS0FBSztBQUNMLElBQUksTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO0FBQ2pELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsQ0FBQyxFQUFFLFNBQVMsR0FBRyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsUUFBUSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEgsSUFBSSxNQUFNLElBQUksQ0FBQyxDQUFDO0FBQ2hCLElBQUksT0FBTyxJQUFJLENBQUM7QUFDaEIsQ0FBQztBQUNELFNBQVMsV0FBVyxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUU7QUFDakMsSUFBSSxNQUFNLFFBQVEsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxJQUFJLEVBQUUsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUQsSUFBSSxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLElBQUk7QUFDckMsVUFBVSxJQUFJLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0FBQ3hDLFVBQVUsSUFBSSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2pELEtBQUssQ0FBQztBQUNOLElBQUksTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0FBQ2xELElBQUksSUFBSSxPQUFPLEVBQUU7QUFDakIsUUFBUSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQy9DLFFBQVEsTUFBTSxJQUFJLE9BQU8sQ0FBQztBQUMxQixRQUFRLElBQUksQ0FBQyxNQUFNO0FBQ25CLFlBQVksV0FBVyxFQUFFLENBQUM7QUFDMUIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLFdBQVcsR0FBRztBQUN2QixJQUFJLEdBQUcsQ0FBQyxNQUFNO0FBQ2QsUUFBUSxJQUFJLE1BQU07QUFDbEIsWUFBWSxPQUFPO0FBQ25CLFFBQVEsY0FBYyxDQUFDLE9BQU8sQ0FBQyxJQUFJLElBQUk7QUFDdkMsWUFBWSxNQUFNLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDO0FBQ3hDLFlBQVksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7QUFDL0MsWUFBWSxPQUFPLENBQUMsRUFBRTtBQUN0QixnQkFBZ0IsVUFBVSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6QyxZQUFZLElBQUksQ0FBQyxLQUFLLEdBQUcsRUFBRSxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsUUFBUSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDL0IsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBc0VEO0FBQ0EsSUFBSSxpQkFBaUIsQ0FBQztBQUN0QixTQUFTLHFCQUFxQixDQUFDLFNBQVMsRUFBRTtBQUMxQyxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQztBQUNsQyxDQUFDO0FBQ0QsU0FBUyxxQkFBcUIsR0FBRztBQUNqQyxJQUFJLElBQUksQ0FBQyxpQkFBaUI7QUFDMUIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7QUFDNUUsSUFBSSxPQUFPLGlCQUFpQixDQUFDO0FBQzdCLENBQUM7QUFJRCxTQUFTLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDckIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2pELENBQUM7QUFJRCxTQUFTLFNBQVMsQ0FBQyxFQUFFLEVBQUU7QUFDdkIsSUFBSSxxQkFBcUIsRUFBRSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ25ELENBQUM7QUFDRCxTQUFTLHFCQUFxQixHQUFHO0FBQ2pDLElBQUksTUFBTSxTQUFTLEdBQUcscUJBQXFCLEVBQUUsQ0FBQztBQUM5QyxJQUFJLE9BQU8sQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsVUFBVSxHQUFHLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSztBQUMxRCxRQUFRLE1BQU0sU0FBUyxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3ZELFFBQVEsSUFBSSxTQUFTLEVBQUU7QUFDdkI7QUFDQTtBQUNBLFlBQVksTUFBTSxLQUFLLEdBQUcsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDO0FBQ3JFLFlBQVksU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLE9BQU8sQ0FBQyxFQUFFLElBQUk7QUFDNUMsZ0JBQWdCLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzFDLGFBQWEsQ0FBQyxDQUFDO0FBQ2YsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDO0FBQzNDLFNBQVM7QUFDVCxRQUFRLE9BQU8sSUFBSSxDQUFDO0FBQ3BCLEtBQUssQ0FBQztBQUNOLENBQUM7QUF3QkQ7QUFDQSxNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUU1QixNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQztBQUM3QixNQUFNLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztBQUM1QixNQUFNLGVBQWUsR0FBRyxFQUFFLENBQUM7QUFDM0IsTUFBTSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDM0MsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFDN0IsU0FBUyxlQUFlLEdBQUc7QUFDM0IsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7QUFDM0IsUUFBUSxnQkFBZ0IsR0FBRyxJQUFJLENBQUM7QUFDaEMsUUFBUSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckMsS0FBSztBQUNMLENBQUM7QUFLRCxTQUFTLG1CQUFtQixDQUFDLEVBQUUsRUFBRTtBQUNqQyxJQUFJLGdCQUFnQixDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUM5QixDQUFDO0FBQ0QsU0FBUyxrQkFBa0IsQ0FBQyxFQUFFLEVBQUU7QUFDaEMsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzdCLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2pDLElBQUksUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNqQixTQUFTLEtBQUssR0FBRztBQUNqQixJQUFJLE1BQU0sZUFBZSxHQUFHLGlCQUFpQixDQUFDO0FBQzlDLElBQUksR0FBRztBQUNQO0FBQ0E7QUFDQSxRQUFRLE9BQU8sUUFBUSxHQUFHLGdCQUFnQixDQUFDLE1BQU0sRUFBRTtBQUNuRCxZQUFZLE1BQU0sU0FBUyxHQUFHLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pELFlBQVksUUFBUSxFQUFFLENBQUM7QUFDdkIsWUFBWSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDakMsU0FBUztBQUNULFFBQVEscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDcEMsUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLFFBQVEsUUFBUSxHQUFHLENBQUMsQ0FBQztBQUNyQixRQUFRLE9BQU8saUJBQWlCLENBQUMsTUFBTTtBQUN2QyxZQUFZLGlCQUFpQixDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUM7QUFDdEM7QUFDQTtBQUNBO0FBQ0EsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUU7QUFDN0QsWUFBWSxNQUFNLFFBQVEsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNqRCxZQUFZLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQy9DO0FBQ0EsZ0JBQWdCLGNBQWMsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsZ0JBQWdCLFFBQVEsRUFBRSxDQUFDO0FBQzNCLGFBQWE7QUFDYixTQUFTO0FBQ1QsUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDLEtBQUssUUFBUSxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUU7QUFDdEMsSUFBSSxPQUFPLGVBQWUsQ0FBQyxNQUFNLEVBQUU7QUFDbkMsUUFBUSxlQUFlLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQztBQUNoQyxLQUFLO0FBQ0wsSUFBSSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFDN0IsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLENBQUM7QUFDM0IsSUFBSSxxQkFBcUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUMzQyxDQUFDO0FBQ0QsU0FBUyxNQUFNLENBQUMsRUFBRSxFQUFFO0FBQ3BCLElBQUksSUFBSSxFQUFFLENBQUMsUUFBUSxLQUFLLElBQUksRUFBRTtBQUM5QixRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNwQixRQUFRLE9BQU8sQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7QUFDbEMsUUFBUSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO0FBQy9CLFFBQVEsRUFBRSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsUUFBUSxFQUFFLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDcEQsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0FBQ3JELEtBQUs7QUFDTCxDQUFDO0FBQ0Q7QUFDQSxJQUFJLE9BQU8sQ0FBQztBQUNaLFNBQVMsSUFBSSxHQUFHO0FBQ2hCLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtBQUNsQixRQUFRLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDcEMsUUFBUSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU07QUFDM0IsWUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksT0FBTyxPQUFPLENBQUM7QUFDbkIsQ0FBQztBQUNELFNBQVMsUUFBUSxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLFNBQVMsR0FBRyxPQUFPLEdBQUcsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDaEYsQ0FBQztBQUNELE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDM0IsSUFBSSxNQUFNLENBQUM7QUFDWCxTQUFTLFlBQVksR0FBRztBQUN4QixJQUFJLE1BQU0sR0FBRztBQUNiLFFBQVEsQ0FBQyxFQUFFLENBQUM7QUFDWixRQUFRLENBQUMsRUFBRSxFQUFFO0FBQ2IsUUFBUSxDQUFDLEVBQUUsTUFBTTtBQUNqQixLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBUyxZQUFZLEdBQUc7QUFDeEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRTtBQUNuQixRQUFRLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDMUIsS0FBSztBQUNMLElBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDdEIsQ0FBQztBQUNELFNBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDckMsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUMvQixRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLENBQUM7QUFDRCxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUU7QUFDeEQsSUFBSSxJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxFQUFFO0FBQzFCLFFBQVEsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztBQUMvQixZQUFZLE9BQU87QUFDbkIsUUFBUSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzVCLFFBQVEsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUM1QixZQUFZLFFBQVEsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkMsWUFBWSxJQUFJLFFBQVEsRUFBRTtBQUMxQixnQkFBZ0IsSUFBSSxNQUFNO0FBQzFCLG9CQUFvQixLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQy9CLGdCQUFnQixRQUFRLEVBQUUsQ0FBQztBQUMzQixhQUFhO0FBQ2IsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDdkIsS0FBSztBQUNMLFNBQVMsSUFBSSxRQUFRLEVBQUU7QUFDdkIsUUFBUSxRQUFRLEVBQUUsQ0FBQztBQUNuQixLQUFLO0FBQ0wsQ0FBQztBQUNELE1BQU0sZUFBZSxHQUFHLEVBQUUsUUFBUSxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3hDLFNBQVMsb0JBQW9CLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUU7QUFDaEQsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLElBQUksSUFBSSxPQUFPLEdBQUcsS0FBSyxDQUFDO0FBQ3hCLElBQUksSUFBSSxjQUFjLENBQUM7QUFDdkIsSUFBSSxJQUFJLElBQUksQ0FBQztBQUNiLElBQUksSUFBSSxHQUFHLEdBQUcsQ0FBQyxDQUFDO0FBQ2hCLElBQUksU0FBUyxPQUFPLEdBQUc7QUFDdkIsUUFBUSxJQUFJLGNBQWM7QUFDMUIsWUFBWSxXQUFXLENBQUMsSUFBSSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQzlDLEtBQUs7QUFDTCxJQUFJLFNBQVMsRUFBRSxHQUFHO0FBQ2xCLFFBQVEsTUFBTSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUcsUUFBUSxFQUFFLElBQUksR0FBRyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxJQUFJLGVBQWUsQ0FBQztBQUM3RyxRQUFRLElBQUksR0FBRztBQUNmLFlBQVksY0FBYyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztBQUMxRixRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkIsUUFBUSxNQUFNLFVBQVUsR0FBRyxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUM7QUFDekMsUUFBUSxNQUFNLFFBQVEsR0FBRyxVQUFVLEdBQUcsUUFBUSxDQUFDO0FBQy9DLFFBQVEsSUFBSSxJQUFJO0FBQ2hCLFlBQVksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO0FBQ3pCLFFBQVEsT0FBTyxHQUFHLElBQUksQ0FBQztBQUN2QixRQUFRLG1CQUFtQixDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNqRSxRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsR0FBRyxJQUFJO0FBQzNCLFlBQVksSUFBSSxPQUFPLEVBQUU7QUFDekIsZ0JBQWdCLElBQUksR0FBRyxJQUFJLFFBQVEsRUFBRTtBQUNyQyxvQkFBb0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMvQixvQkFBb0IsUUFBUSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDaEQsb0JBQW9CLE9BQU8sRUFBRSxDQUFDO0FBQzlCLG9CQUFvQixPQUFPLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDM0MsaUJBQWlCO0FBQ2pCLGdCQUFnQixJQUFJLEdBQUcsSUFBSSxVQUFVLEVBQUU7QUFDdkMsb0JBQW9CLE1BQU0sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsR0FBRyxVQUFVLElBQUksUUFBUSxDQUFDLENBQUM7QUFDcEUsb0JBQW9CLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ25DLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxPQUFPLE9BQU8sQ0FBQztBQUMzQixTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTCxJQUFJLElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQztBQUN4QixJQUFJLE9BQU87QUFDWCxRQUFRLEtBQUssR0FBRztBQUNoQixZQUFZLElBQUksT0FBTztBQUN2QixnQkFBZ0IsT0FBTztBQUN2QixZQUFZLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDM0IsWUFBWSxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUIsWUFBWSxJQUFJLFdBQVcsQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUNyQyxnQkFBZ0IsTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ2xDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7QUFDaEMsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQixnQkFBZ0IsRUFBRSxFQUFFLENBQUM7QUFDckIsYUFBYTtBQUNiLFNBQVM7QUFDVCxRQUFRLFVBQVUsR0FBRztBQUNyQixZQUFZLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDNUIsU0FBUztBQUNULFFBQVEsR0FBRyxHQUFHO0FBQ2QsWUFBWSxJQUFJLE9BQU8sRUFBRTtBQUN6QixnQkFBZ0IsT0FBTyxFQUFFLENBQUM7QUFDMUIsZ0JBQWdCLE9BQU8sR0FBRyxLQUFLLENBQUM7QUFDaEMsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixDQUFDO0FBQ0QsU0FBUyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRTtBQUNqRCxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDdkIsSUFBSSxJQUFJLGNBQWMsQ0FBQztBQUN2QixJQUFJLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQztBQUN6QixJQUFJLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pCLElBQUksU0FBUyxFQUFFLEdBQUc7QUFDbEIsUUFBUSxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxRQUFRLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLElBQUksZUFBZSxDQUFDO0FBQzdHLFFBQVEsSUFBSSxHQUFHO0FBQ2YsWUFBWSxjQUFjLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ25GLFFBQVEsTUFBTSxVQUFVLEdBQUcsR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDO0FBQ3pDLFFBQVEsTUFBTSxRQUFRLEdBQUcsVUFBVSxHQUFHLFFBQVEsQ0FBQztBQUMvQyxRQUFRLG1CQUFtQixDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsRSxRQUFRLElBQUksQ0FBQyxHQUFHLElBQUk7QUFDcEIsWUFBWSxJQUFJLE9BQU8sRUFBRTtBQUN6QixnQkFBZ0IsSUFBSSxHQUFHLElBQUksUUFBUSxFQUFFO0FBQ3JDLG9CQUFvQixJQUFJLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQy9CLG9CQUFvQixRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRCxvQkFBb0IsSUFBSSxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRTtBQUNwQztBQUNBO0FBQ0Esd0JBQXdCLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekMscUJBQXFCO0FBQ3JCLG9CQUFvQixPQUFPLEtBQUssQ0FBQztBQUNqQyxpQkFBaUI7QUFDakIsZ0JBQWdCLElBQUksR0FBRyxJQUFJLFVBQVUsRUFBRTtBQUN2QyxvQkFBb0IsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsR0FBRyxHQUFHLFVBQVUsSUFBSSxRQUFRLENBQUMsQ0FBQztBQUNwRSxvQkFBb0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbkMsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixZQUFZLE9BQU8sT0FBTyxDQUFDO0FBQzNCLFNBQVMsQ0FBQyxDQUFDO0FBQ1gsS0FBSztBQUNMLElBQUksSUFBSSxXQUFXLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDN0IsUUFBUSxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUMxQjtBQUNBLFlBQVksTUFBTSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQzlCLFlBQVksRUFBRSxFQUFFLENBQUM7QUFDakIsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsU0FBUztBQUNULFFBQVEsRUFBRSxFQUFFLENBQUM7QUFDYixLQUFLO0FBQ0wsSUFBSSxPQUFPO0FBQ1gsUUFBUSxHQUFHLENBQUMsS0FBSyxFQUFFO0FBQ25CLFlBQVksSUFBSSxLQUFLLElBQUksTUFBTSxDQUFDLElBQUksRUFBRTtBQUN0QyxnQkFBZ0IsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDbEMsYUFBYTtBQUNiLFlBQVksSUFBSSxPQUFPLEVBQUU7QUFDekIsZ0JBQWdCLElBQUksY0FBYztBQUNsQyxvQkFBb0IsV0FBVyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUN0RCxnQkFBZ0IsT0FBTyxHQUFHLEtBQUssQ0FBQztBQUNoQyxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUssQ0FBQztBQUNOLENBQUM7QUFDRCxTQUFTLCtCQUErQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTtBQUNsRSxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDbEMsSUFBSSxJQUFJLENBQUMsR0FBRyxLQUFLLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMxQixJQUFJLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztBQUMvQixJQUFJLElBQUksZUFBZSxHQUFHLElBQUksQ0FBQztBQUMvQixJQUFJLElBQUksY0FBYyxHQUFHLElBQUksQ0FBQztBQUM5QixJQUFJLFNBQVMsZUFBZSxHQUFHO0FBQy9CLFFBQVEsSUFBSSxjQUFjO0FBQzFCLFlBQVksV0FBVyxDQUFDLElBQUksRUFBRSxjQUFjLENBQUMsQ0FBQztBQUM5QyxLQUFLO0FBQ0wsSUFBSSxTQUFTLElBQUksQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQ3JDLFFBQVEsTUFBTSxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNsQyxRQUFRLFFBQVEsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsT0FBTztBQUNmLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsWUFBWSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDeEIsWUFBWSxDQUFDO0FBQ2IsWUFBWSxRQUFRO0FBQ3BCLFlBQVksS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLO0FBQ2hDLFlBQVksR0FBRyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEdBQUcsUUFBUTtBQUN6QyxZQUFZLEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSztBQUNoQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUU7QUFDbkIsUUFBUSxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxRQUFRLEdBQUcsR0FBRyxFQUFFLE1BQU0sR0FBRyxRQUFRLEVBQUUsSUFBSSxHQUFHLElBQUksRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLElBQUksZUFBZSxDQUFDO0FBQzdHLFFBQVEsTUFBTSxPQUFPLEdBQUc7QUFDeEIsWUFBWSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsS0FBSztBQUNoQyxZQUFZLENBQUM7QUFDYixTQUFTLENBQUM7QUFDVixRQUFRLElBQUksQ0FBQyxDQUFDLEVBQUU7QUFDaEI7QUFDQSxZQUFZLE9BQU8sQ0FBQyxLQUFLLEdBQUcsTUFBTSxDQUFDO0FBQ25DLFlBQVksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDMUIsU0FBUztBQUNULFFBQVEsSUFBSSxlQUFlLElBQUksZUFBZSxFQUFFO0FBQ2hELFlBQVksZUFBZSxHQUFHLE9BQU8sQ0FBQztBQUN0QyxTQUFTO0FBQ1QsYUFBYTtBQUNiO0FBQ0E7QUFDQSxZQUFZLElBQUksR0FBRyxFQUFFO0FBQ3JCLGdCQUFnQixlQUFlLEVBQUUsQ0FBQztBQUNsQyxnQkFBZ0IsY0FBYyxHQUFHLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztBQUN2RixhQUFhO0FBQ2IsWUFBWSxJQUFJLENBQUM7QUFDakIsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0IsWUFBWSxlQUFlLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RCxZQUFZLG1CQUFtQixDQUFDLE1BQU0sUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztBQUNsRSxZQUFZLElBQUksQ0FBQyxHQUFHLElBQUk7QUFDeEIsZ0JBQWdCLElBQUksZUFBZSxJQUFJLEdBQUcsR0FBRyxlQUFlLENBQUMsS0FBSyxFQUFFO0FBQ3BFLG9CQUFvQixlQUFlLEdBQUcsSUFBSSxDQUFDLGVBQWUsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RSxvQkFBb0IsZUFBZSxHQUFHLElBQUksQ0FBQztBQUMzQyxvQkFBb0IsUUFBUSxDQUFDLElBQUksRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9ELG9CQUFvQixJQUFJLEdBQUcsRUFBRTtBQUM3Qix3QkFBd0IsZUFBZSxFQUFFLENBQUM7QUFDMUMsd0JBQXdCLGNBQWMsR0FBRyxXQUFXLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRSxlQUFlLENBQUMsQ0FBQyxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbEkscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxlQUFlLEVBQUU7QUFDckMsb0JBQW9CLElBQUksR0FBRyxJQUFJLGVBQWUsQ0FBQyxHQUFHLEVBQUU7QUFDcEQsd0JBQXdCLElBQUksQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDM0Qsd0JBQXdCLFFBQVEsQ0FBQyxJQUFJLEVBQUUsZUFBZSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUNqRSx3QkFBd0IsSUFBSSxDQUFDLGVBQWUsRUFBRTtBQUM5QztBQUNBLDRCQUE0QixJQUFJLGVBQWUsQ0FBQyxDQUFDLEVBQUU7QUFDbkQ7QUFDQSxnQ0FBZ0MsZUFBZSxFQUFFLENBQUM7QUFDbEQsNkJBQTZCO0FBQzdCLGlDQUFpQztBQUNqQztBQUNBLGdDQUFnQyxJQUFJLENBQUMsRUFBRSxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDOUQsb0NBQW9DLE9BQU8sQ0FBQyxlQUFlLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JFLDZCQUE2QjtBQUM3Qix5QkFBeUI7QUFDekIsd0JBQXdCLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDL0MscUJBQXFCO0FBQ3JCLHlCQUF5QixJQUFJLEdBQUcsSUFBSSxlQUFlLENBQUMsS0FBSyxFQUFFO0FBQzNELHdCQUF3QixNQUFNLENBQUMsR0FBRyxHQUFHLEdBQUcsZUFBZSxDQUFDLEtBQUssQ0FBQztBQUM5RCx3QkFBd0IsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxDQUFDLEdBQUcsZUFBZSxDQUFDLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxHQUFHLGVBQWUsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6Ryx3QkFBd0IsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDdkMscUJBQXFCO0FBQ3JCLGlCQUFpQjtBQUNqQixnQkFBZ0IsT0FBTyxDQUFDLEVBQUUsZUFBZSxJQUFJLGVBQWUsQ0FBQyxDQUFDO0FBQzlELGFBQWEsQ0FBQyxDQUFDO0FBQ2YsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLE9BQU87QUFDWCxRQUFRLEdBQUcsQ0FBQyxDQUFDLEVBQUU7QUFDZixZQUFZLElBQUksV0FBVyxDQUFDLE1BQU0sQ0FBQyxFQUFFO0FBQ3JDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTTtBQUNsQztBQUNBLG9CQUFvQixNQUFNLEdBQUcsTUFBTSxFQUFFLENBQUM7QUFDdEMsb0JBQW9CLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUMxQixpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYixpQkFBaUI7QUFDakIsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN0QixhQUFhO0FBQ2IsU0FBUztBQUNULFFBQVEsR0FBRyxHQUFHO0FBQ2QsWUFBWSxlQUFlLEVBQUUsQ0FBQztBQUM5QixZQUFZLGVBQWUsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQ3JELFNBQVM7QUFDVCxLQUFLLENBQUM7QUFDTixDQUFDO0FBOEZELFNBQVMsdUJBQXVCLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUNoRCxJQUFJLGNBQWMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxNQUFNO0FBQ3RDLFFBQVEsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDakMsS0FBSyxDQUFDLENBQUM7QUFDUCxDQUFDO0FBU0QsU0FBUyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3hJLElBQUksSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLE1BQU0sQ0FBQztBQUM5QixJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7QUFDeEIsSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZCxJQUFJLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLE9BQU8sQ0FBQyxFQUFFO0FBQ2QsUUFBUSxXQUFXLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUMzQyxJQUFJLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQztBQUMxQixJQUFJLE1BQU0sVUFBVSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDakMsSUFBSSxNQUFNLE1BQU0sR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQzdCLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNWLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUNoQixRQUFRLE1BQU0sU0FBUyxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3BELFFBQVEsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ3ZDLFFBQVEsSUFBSSxLQUFLLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNwQyxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEIsWUFBWSxLQUFLLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ3RELFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3RCLFNBQVM7QUFDVCxhQUFhLElBQUksT0FBTyxFQUFFO0FBQzFCLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdEMsU0FBUztBQUNULFFBQVEsVUFBVSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0FBQ25ELFFBQVEsSUFBSSxHQUFHLElBQUksV0FBVztBQUM5QixZQUFZLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUQsS0FBSztBQUNMLElBQUksTUFBTSxTQUFTLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztBQUNoQyxJQUFJLE1BQU0sUUFBUSxHQUFHLElBQUksR0FBRyxFQUFFLENBQUM7QUFDL0IsSUFBSSxTQUFTLE1BQU0sQ0FBQyxLQUFLLEVBQUU7QUFDM0IsUUFBUSxhQUFhLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2hDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDNUIsUUFBUSxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDckMsUUFBUSxJQUFJLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztBQUMzQixRQUFRLENBQUMsRUFBRSxDQUFDO0FBQ1osS0FBSztBQUNMLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO0FBQ25CLFFBQVEsTUFBTSxTQUFTLEdBQUcsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxRQUFRLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFDNUMsUUFBUSxNQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsR0FBRyxDQUFDO0FBQ3RDLFFBQVEsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQztBQUN0QyxRQUFRLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRTtBQUNyQztBQUNBLFlBQVksSUFBSSxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUM7QUFDbkMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixZQUFZLENBQUMsRUFBRSxDQUFDO0FBQ2hCLFNBQVM7QUFDVCxhQUFhLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzNDO0FBQ0EsWUFBWSxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZDLFlBQVksQ0FBQyxFQUFFLENBQUM7QUFDaEIsU0FBUztBQUNULGFBQWEsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNqRSxZQUFZLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QixTQUFTO0FBQ1QsYUFBYSxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDeEMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixTQUFTO0FBQ1QsYUFBYSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM1RCxZQUFZLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsWUFBWSxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDOUIsU0FBUztBQUNULGFBQWE7QUFDYixZQUFZLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbkMsWUFBWSxDQUFDLEVBQUUsQ0FBQztBQUNoQixTQUFTO0FBQ1QsS0FBSztBQUNMLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRTtBQUNoQixRQUFRLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN4QyxRQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUM7QUFDMUMsWUFBWSxPQUFPLENBQUMsU0FBUyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3ZDLEtBQUs7QUFDTCxJQUFJLE9BQU8sQ0FBQztBQUNaLFFBQVEsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQyxJQUFJLE9BQU8sVUFBVSxDQUFDO0FBQ3RCLENBQUM7QUFXRDtBQUNBLFNBQVMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sRUFBRTtBQUM1QyxJQUFJLE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQztBQUN0QixJQUFJLE1BQU0sV0FBVyxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLE1BQU0sYUFBYSxHQUFHLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRSxDQUFDO0FBQ3pDLElBQUksSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztBQUMxQixJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUU7QUFDaEIsUUFBUSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDNUIsUUFBUSxNQUFNLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDN0IsUUFBUSxJQUFJLENBQUMsRUFBRTtBQUNmLFlBQVksS0FBSyxNQUFNLEdBQUcsSUFBSSxDQUFDLEVBQUU7QUFDakMsZ0JBQWdCLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0FBQy9CLG9CQUFvQixXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLGFBQWE7QUFDYixZQUFZLEtBQUssTUFBTSxHQUFHLElBQUksQ0FBQyxFQUFFO0FBQ2pDLGdCQUFnQixJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxFQUFFO0FBQ3pDLG9CQUFvQixNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3pDLG9CQUFvQixhQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzNDLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQzFCLFNBQVM7QUFDVCxhQUFhO0FBQ2IsWUFBWSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsRUFBRTtBQUNqQyxnQkFBZ0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUN2QyxhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLEtBQUssTUFBTSxHQUFHLElBQUksV0FBVyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxFQUFFLEdBQUcsSUFBSSxNQUFNLENBQUM7QUFDNUIsWUFBWSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsU0FBUyxDQUFDO0FBQ3BDLEtBQUs7QUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0FBQ2xCLENBQUM7QUFDRCxTQUFTLGlCQUFpQixDQUFDLFlBQVksRUFBRTtBQUN6QyxJQUFJLE9BQU8sT0FBTyxZQUFZLEtBQUssUUFBUSxJQUFJLFlBQVksS0FBSyxJQUFJLEdBQUcsWUFBWSxHQUFHLEVBQUUsQ0FBQztBQUN6RixDQUFDO0FBZ05EO0FBQ0EsU0FBUyxJQUFJLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDekMsSUFBSSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksS0FBSyxLQUFLLFNBQVMsRUFBRTtBQUM3QixRQUFRLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQztBQUM3QyxRQUFRLFFBQVEsQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUU7QUFDakMsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3ZCLENBQUM7QUFJRCxTQUFTLGVBQWUsQ0FBQyxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUU7QUFDbkUsSUFBSSxNQUFNLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEdBQUcsU0FBUyxDQUFDLEVBQUUsQ0FBQztBQUMxRSxJQUFJLFFBQVEsSUFBSSxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzQyxJQUFJLElBQUksQ0FBQyxhQUFhLEVBQUU7QUFDeEI7QUFDQSxRQUFRLG1CQUFtQixDQUFDLE1BQU07QUFDbEMsWUFBWSxNQUFNLGNBQWMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUN6RSxZQUFZLElBQUksVUFBVSxFQUFFO0FBQzVCLGdCQUFnQixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsY0FBYyxDQUFDLENBQUM7QUFDbkQsYUFBYTtBQUNiLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0EsZ0JBQWdCLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN4QyxhQUFhO0FBQ2IsWUFBWSxTQUFTLENBQUMsRUFBRSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUM7QUFDdkMsU0FBUyxDQUFDLENBQUM7QUFDWCxLQUFLO0FBQ0wsSUFBSSxZQUFZLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDOUMsQ0FBQztBQUNELFNBQVMsaUJBQWlCLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRTtBQUNqRCxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUM7QUFDNUIsSUFBSSxJQUFJLEVBQUUsQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO0FBQzlCLFFBQVEsT0FBTyxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMvQixRQUFRLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDaEQ7QUFDQTtBQUNBLFFBQVEsRUFBRSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQztBQUMzQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLEtBQUs7QUFDTCxDQUFDO0FBQ0QsU0FBUyxVQUFVLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRTtBQUNsQyxJQUFJLElBQUksU0FBUyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUU7QUFDdEMsUUFBUSxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDekMsUUFBUSxlQUFlLEVBQUUsQ0FBQztBQUMxQixRQUFRLFNBQVMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuQyxLQUFLO0FBQ0wsSUFBSSxTQUFTLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ3hELENBQUM7QUFDRCxTQUFTLElBQUksQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEtBQUssRUFBRSxhQUFhLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1RyxJQUFJLE1BQU0sZ0JBQWdCLEdBQUcsaUJBQWlCLENBQUM7QUFDL0MsSUFBSSxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyQyxJQUFJLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxFQUFFLEdBQUc7QUFDOUIsUUFBUSxRQUFRLEVBQUUsSUFBSTtBQUN0QixRQUFRLEdBQUcsRUFBRSxJQUFJO0FBQ2pCO0FBQ0EsUUFBUSxLQUFLO0FBQ2IsUUFBUSxNQUFNLEVBQUUsSUFBSTtBQUNwQixRQUFRLFNBQVM7QUFDakIsUUFBUSxLQUFLLEVBQUUsWUFBWSxFQUFFO0FBQzdCO0FBQ0EsUUFBUSxRQUFRLEVBQUUsRUFBRTtBQUNwQixRQUFRLFVBQVUsRUFBRSxFQUFFO0FBQ3RCLFFBQVEsYUFBYSxFQUFFLEVBQUU7QUFDekIsUUFBUSxhQUFhLEVBQUUsRUFBRTtBQUN6QixRQUFRLFlBQVksRUFBRSxFQUFFO0FBQ3hCLFFBQVEsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEtBQUssZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsQ0FBQztBQUNsRztBQUNBLFFBQVEsU0FBUyxFQUFFLFlBQVksRUFBRTtBQUNqQyxRQUFRLEtBQUs7QUFDYixRQUFRLFVBQVUsRUFBRSxLQUFLO0FBQ3pCLFFBQVEsSUFBSSxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksZ0JBQWdCLENBQUMsRUFBRSxDQUFDLElBQUk7QUFDeEQsS0FBSyxDQUFDO0FBQ04sSUFBSSxhQUFhLElBQUksYUFBYSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM1QyxJQUFJLElBQUksS0FBSyxHQUFHLEtBQUssQ0FBQztBQUN0QixJQUFJLEVBQUUsQ0FBQyxHQUFHLEdBQUcsUUFBUTtBQUNyQixVQUFVLFFBQVEsQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLEtBQUssSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsSUFBSSxLQUFLO0FBQ3hFLFlBQVksTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQ3RELFlBQVksSUFBSSxFQUFFLENBQUMsR0FBRyxJQUFJLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLEVBQUU7QUFDbkUsZ0JBQWdCLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxJQUFJLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pELG9CQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3ZDLGdCQUFnQixJQUFJLEtBQUs7QUFDekIsb0JBQW9CLFVBQVUsQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDN0MsYUFBYTtBQUNiLFlBQVksT0FBTyxHQUFHLENBQUM7QUFDdkIsU0FBUyxDQUFDO0FBQ1YsVUFBVSxFQUFFLENBQUM7QUFDYixJQUFJLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztBQUNoQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7QUFDakIsSUFBSSxPQUFPLENBQUMsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxFQUFFLENBQUMsUUFBUSxHQUFHLGVBQWUsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztBQUNwRSxJQUFJLElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUN4QixRQUFRLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRTtBQUU3QixZQUFZLE1BQU0sS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkQ7QUFDQSxZQUFZLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDaEQsWUFBWSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2xDLFNBQVM7QUFDVCxhQUFhO0FBQ2I7QUFDQSxZQUFZLEVBQUUsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUMzQyxTQUFTO0FBQ1QsUUFBUSxJQUFJLE9BQU8sQ0FBQyxLQUFLO0FBQ3pCLFlBQVksYUFBYSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakQsUUFBUSxlQUFlLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7QUFFMUYsUUFBUSxLQUFLLEVBQUUsQ0FBQztBQUNoQixLQUFLO0FBQ0wsSUFBSSxxQkFBcUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQzVDLENBQUM7QUE4Q0Q7QUFDQTtBQUNBO0FBQ0EsTUFBTSxlQUFlLENBQUM7QUFDdEIsSUFBSSxRQUFRLEdBQUc7QUFDZixRQUFRLGlCQUFpQixDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNuQyxRQUFRLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0FBQzdCLEtBQUs7QUFDTCxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO0FBQ3hCLFFBQVEsTUFBTSxTQUFTLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUN0RixRQUFRLFNBQVMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDakMsUUFBUSxPQUFPLE1BQU07QUFDckIsWUFBWSxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3RELFlBQVksSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQzVCLGdCQUFnQixTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztBQUMzQyxTQUFTLENBQUM7QUFDVixLQUFLO0FBQ0wsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO0FBQ2xCLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzlDLFlBQVksSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFlBQVksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoQyxZQUFZLElBQUksQ0FBQyxFQUFFLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQztBQUN2QyxTQUFTO0FBQ1QsS0FBSztBQUNMOzs7QUMxOERBO0FBQ0EsSUFBSSxLQUFLLEdBQUcsTUFBaUIsQ0FBQSxPQUFBLEdBQUEsRUFBRSxDQUFDO0FBQ2hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLLENBQUMsT0FBTyxHQUFHLFNBQVMsVUFBVSxFQUFFLFFBQVEsRUFBRTtBQUMvQyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQy9DLFFBQVEsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzdDLFFBQVEsR0FBRyxNQUFNLEVBQUU7QUFDbkIsWUFBWSxPQUFPLE1BQU0sQ0FBQztBQUMxQixTQUFTO0FBQ1QsS0FBSztBQUNMLENBQUMsQ0FBQTs7O0FDaEJELElBQWMsWUFBQSxHQUFHLFNBQVMsT0FBTyxFQUFFO0FBQ25DLElBQUksSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7QUFDakQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUNuQyxRQUFRLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxRQUFRLE9BQU8sS0FBSyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDO0FBQzdDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0FBQ3ZDLFFBQVEsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDOUMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLE1BQU0sQ0FBQyxPQUFPLEVBQUU7QUFDN0IsUUFBUSxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBQ3hDLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNyQyxRQUFRLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUN4QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLFlBQVksRUFBRSxZQUFZO0FBQ2xDLFFBQVEsZ0JBQWdCLEVBQUUsZ0JBQWdCO0FBQzFDLFFBQVEsTUFBTSxFQUFFLE1BQU07QUFDdEIsUUFBUSxRQUFRLEVBQUUsUUFBUTtBQUMxQixLQUFLLENBQUM7QUFDTixDQUFDOztBQ2pERCxJQUFjLGVBQUEsR0FBRyxTQUFTLFNBQVMsRUFBRTtBQUNyQyxJQUFJLElBQUksY0FBYyxHQUFHLEVBQUUsQ0FBQztBQUM1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsT0FBTyxFQUFFO0FBQ25DLFFBQVEsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QztBQUNBLFFBQVEsSUFBSSxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzlCLFlBQVksT0FBTyxFQUFFLENBQUM7QUFDdEIsU0FBUztBQUNUO0FBQ0EsUUFBUSxPQUFPLGNBQWMsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDeEMsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxFQUFFLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN4QztBQUNBLFFBQVEsR0FBRyxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsRUFBRTtBQUNoQyxZQUFZLGNBQWMsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDcEMsU0FBUztBQUNUO0FBQ0EsUUFBUSxjQUFjLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzFDLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtBQUMvQyxRQUFRLElBQUksU0FBUyxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QyxRQUFRLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUcsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7QUFDOUQsWUFBWSxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUU7QUFDM0MsY0FBYyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztBQUNyQyxjQUFjLE1BQU07QUFDcEIsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsa0JBQWtCLENBQUMsT0FBTyxFQUFFO0FBQ3pDLE1BQU0sSUFBSSxTQUFTLEdBQUcsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDLE1BQU0sSUFBSSxDQUFDLFNBQVMsRUFBRSxFQUFFLE9BQU8sRUFBRTtBQUNqQyxNQUFNLFNBQVMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQzNCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTztBQUNYLFFBQVEsR0FBRyxFQUFFLFlBQVk7QUFDekIsUUFBUSxHQUFHLEVBQUUsV0FBVztBQUN4QixRQUFRLGNBQWMsRUFBRSxjQUFjO0FBQ3RDLFFBQVEsa0JBQWtCLEVBQUUsa0JBQWtCO0FBQzlDLEtBQUssQ0FBQztBQUNOLENBQUM7O0FDekRELElBQUEsV0FBYyxHQUFHLFdBQVc7QUFDNUIsSUFBSSxJQUFJLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFFBQVEsR0FBRztBQUN4QixRQUFRLE9BQU8sT0FBTyxFQUFFLENBQUM7QUFDekIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPO0FBQ1gsUUFBUSxRQUFRLEVBQUUsUUFBUTtBQUMxQixLQUFLLENBQUM7QUFDTixDQUFDOztBQ2ZELElBQWMsU0FBQSxHQUFHLFNBQVMsT0FBTyxFQUFFO0FBQ25DLElBQUksSUFBSSxXQUFXLE9BQU8sT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUM5QyxJQUFJLElBQUksUUFBUSxVQUFVLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0FBQ3hEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDNUIsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksS0FBSyxJQUFJLEtBQUssQ0FBQyxFQUFFLEtBQUssU0FBUyxFQUFFO0FBQzdDLFlBQVksT0FBTyxLQUFLLENBQUMsRUFBRSxDQUFDO0FBQzVCLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLEtBQUssQ0FBQyxPQUFPLEVBQUU7QUFDNUIsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEIsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUM7QUFDNUYsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLEVBQUUsR0FBRyxXQUFXLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDeEM7QUFDQSxRQUFRLEtBQUssQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO0FBQ3RCO0FBQ0EsUUFBUSxPQUFPLEVBQUUsQ0FBQztBQUNsQixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLEdBQUcsRUFBRSxLQUFLO0FBQ2xCLFFBQVEsR0FBRyxFQUFFLEtBQUs7QUFDbEIsS0FBSyxDQUFDO0FBQ04sQ0FBQzs7QUM1Q0Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFjLFFBQUEsR0FBRyxTQUFTLEtBQUssRUFBRTtBQUNqQyxJQUFJLFNBQVMsSUFBSSxHQUFHO0FBQ3BCO0FBQ0EsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLFFBQVEsR0FBRztBQUNuQixRQUFRLEdBQUcsRUFBRSxJQUFJO0FBQ2pCLFFBQVEsSUFBSSxFQUFFLElBQUk7QUFDbEIsUUFBUSxLQUFLLEVBQUUsSUFBSTtBQUNuQixLQUFLLENBQUM7QUFDTjtBQUNBLElBQUksR0FBRyxDQUFDLEtBQUssSUFBSSxNQUFNLENBQUMsT0FBTyxFQUFFO0FBQ2pDLFFBQVEsSUFBSSxjQUFjLEdBQUcsU0FBUyxRQUFRLEVBQUUsSUFBSSxFQUFFO0FBQ3REO0FBQ0E7QUFDQSxZQUFZLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxTQUFTLGFBQWEsR0FBRztBQUN0RCxnQkFBZ0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLGdCQUFnQixJQUFJLENBQUMsQ0FBQyxLQUFLLEVBQUU7QUFDN0Isb0JBQW9CLENBQUMsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ2hELGlCQUFpQixNQUFNO0FBQ3ZCLG9CQUFvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMvRCx3QkFBd0IsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3hDLHFCQUFxQjtBQUNyQixpQkFBaUI7QUFDakIsYUFBYSxDQUFDO0FBQ2QsU0FBUyxDQUFDO0FBQ1Y7QUFDQSxRQUFRLGNBQWMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDeEMsUUFBUSxjQUFjLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pDLFFBQVEsY0FBYyxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUMxQyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sUUFBUSxDQUFDO0FBQ3BCLENBQUM7OztBQ3pDRDtBQUNBLElBQUksUUFBUSxHQUFHLE1BQWlCLENBQUEsT0FBQSxHQUFBLEVBQUUsQ0FBQztBQUNuQztBQUNBLFFBQVEsQ0FBQyxJQUFJLEdBQUcsU0FBUyxPQUFPLEVBQUU7QUFDbEMsSUFBSSxTQUFTLGNBQWMsR0FBRztBQUM5QixRQUFRLElBQUksS0FBSyxHQUFHLFNBQVMsQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdEQsUUFBUSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0FBQ2pILEtBQUs7QUFDTDtBQUNBLElBQUksR0FBRyxDQUFDLGNBQWMsRUFBRSxFQUFFO0FBQzFCLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSztBQUNMO0FBQ0EsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksU0FBUyxJQUFJLFVBQVU7QUFDL0IsUUFBUSxJQUFJLEtBQUs7QUFDakIsWUFBWSxDQUFDLEdBQUcsQ0FBQztBQUNqQixZQUFZLEdBQUcsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQztBQUMvQyxZQUFZLEdBQUcsR0FBRyxHQUFHLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDaEQ7QUFDQSxRQUFRLEdBQUc7QUFDWCxZQUFZLEdBQUcsQ0FBQyxTQUFTLEdBQUcsZ0JBQWdCLElBQUksRUFBRSxDQUFDLENBQUMsR0FBRyx1QkFBdUIsQ0FBQztBQUMvRSxTQUFTO0FBQ1QsZUFBZSxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDdkI7QUFDQSxRQUFRLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO0FBQ2pDLEtBQUssRUFBRSxDQUFDLENBQUM7QUFDVDtBQUNBLElBQUksT0FBTyxPQUFPLEtBQUssU0FBUyxDQUFDO0FBQ2pDLENBQUMsQ0FBQztBQUNGO0FBQ0EsUUFBUSxDQUFDLGFBQWEsR0FBRyxXQUFXO0FBQ3BDLElBQUksT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztBQUMxQixDQUFDLENBQUE7Ozs7QUNyQ0Q7QUFDQSxJQUFJLEtBQUssR0FBRyxNQUFpQixDQUFBLE9BQUEsR0FBQSxFQUFFLENBQUM7QUFDaEM7QUFDQSxLQUFLLENBQUMsU0FBUyxHQUFHLFNBQVMsQ0FBQztBQUM1QjtBQUNBLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFO0FBQ2hELElBQUksSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQzlCO0FBQ0EsSUFBSSxHQUFHLENBQUMsS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxLQUFLLFlBQVksS0FBSyxTQUFTLEVBQUU7QUFDOUUsUUFBUSxPQUFPLFlBQVksQ0FBQztBQUM1QixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU8sS0FBSyxDQUFDO0FBQ2pCLENBQUE7OztBQ1ZBLElBQUEsY0FBYyxHQUFHLFNBQVMsbUJBQW1CLENBQUMsT0FBTyxFQUFFO0FBQ3ZELElBQUksT0FBTyxlQUFlLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDeEMsSUFBSSxJQUFJLFFBQVEsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzNDLElBQUksSUFBSSxZQUFZLE1BQU1DLE9BQUssQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNsRSxJQUFJLElBQUksV0FBVyxPQUFPQSxPQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLENBQUM7QUFDakU7QUFDQSxJQUFJLEdBQUcsV0FBVyxJQUFJLENBQUMsWUFBWSxFQUFFO0FBQ3JDLFFBQVEsUUFBUSxJQUFJLFFBQVEsQ0FBQyxJQUFJLENBQUMsd0ZBQXdGLENBQUMsQ0FBQztBQUM1SCxRQUFRLFlBQVksR0FBRyxJQUFJLENBQUM7QUFDNUIsS0FBSztBQUNMO0FBQ0EsSUFBSSxJQUFJLEtBQUssR0FBRyxLQUFLLEVBQUUsQ0FBQztBQUN4QixJQUFJLElBQUksaUJBQWlCLENBQUM7QUFDMUIsSUFBSSxJQUFJLFlBQVksR0FBRyxLQUFLLENBQUM7QUFDN0I7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBUSxHQUFHLENBQUMsWUFBWSxJQUFJLFdBQVcsSUFBSSxZQUFZLElBQUksS0FBSyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsRUFBRTtBQUMvRTtBQUNBO0FBQ0EsWUFBWSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hDLFNBQVM7QUFDVDtBQUNBLFFBQVEsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0IsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFlBQVksR0FBRztBQUM1QjtBQUNBO0FBQ0EsUUFBUSxZQUFZLEdBQUcsSUFBSSxDQUFDO0FBQzVCLFFBQVEsT0FBTyxLQUFLLENBQUMsSUFBSSxFQUFFLEVBQUU7QUFDN0IsWUFBWSxJQUFJLGVBQWUsR0FBRyxLQUFLLENBQUM7QUFDeEMsWUFBWSxLQUFLLEdBQUcsS0FBSyxFQUFFLENBQUM7QUFDNUIsWUFBWSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDdEMsU0FBUztBQUNULFFBQVEsWUFBWSxHQUFHLEtBQUssQ0FBQztBQUM3QixLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsaUJBQWlCLENBQUMsaUJBQWlCLEVBQUU7QUFDbEQsUUFBUSxJQUFJLFlBQVksRUFBRTtBQUMxQixZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxHQUFHLGlCQUFpQixLQUFLLFNBQVMsRUFBRTtBQUM1QyxZQUFZLGlCQUFpQixHQUFHLFlBQVksQ0FBQztBQUM3QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLEdBQUcsaUJBQWlCLEVBQUU7QUFDOUIsWUFBWSxXQUFXLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUMzQyxZQUFZLGlCQUFpQixHQUFHLElBQUksQ0FBQztBQUNyQyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLEdBQUcsaUJBQWlCLEVBQUU7QUFDOUIsWUFBWSxpQkFBaUIsRUFBRSxDQUFDO0FBQ2hDLFNBQVMsTUFBTTtBQUNmLFlBQVksWUFBWSxFQUFFLENBQUM7QUFDM0IsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxpQkFBaUIsR0FBRztBQUNqQyxRQUFRLGlCQUFpQixHQUFHLFlBQVksQ0FBQyxZQUFZLENBQUMsQ0FBQztBQUN2RCxLQUFLO0FBUUw7QUFDQSxJQUFJLFNBQVMsV0FBVyxDQUFDLFFBQVEsRUFBRTtBQUNuQztBQUNBLFFBQVEsSUFBSSxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQ2xDLFFBQVEsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDaEMsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFlBQVksQ0FBQyxRQUFRLEVBQUU7QUFDcEM7QUFDQSxRQUFRLElBQUksR0FBRyxHQUFHLFNBQVMsRUFBRSxFQUFFLEVBQUUsT0FBTyxVQUFVLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUM3RCxRQUFRLE9BQU8sR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQzdCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTztBQUNYLFFBQVEsR0FBRyxFQUFFLFdBQVc7QUFDeEIsUUFBUSxLQUFLLEVBQUUsaUJBQWlCO0FBQ2hDLEtBQUssQ0FBQztBQUNOLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxLQUFLLEdBQUc7QUFDakIsSUFBSSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7QUFDekIsSUFBSSxJQUFJLElBQUksVUFBVSxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLFFBQVEsTUFBTSxDQUFDLENBQUM7QUFDeEIsSUFBSSxJQUFJLFdBQVcsR0FBRyxDQUFDLENBQUM7QUFDeEI7QUFDQSxJQUFJLFNBQVMsR0FBRyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7QUFDNUIsUUFBUSxHQUFHLENBQUMsRUFBRSxFQUFFO0FBQ2hCLFlBQVksRUFBRSxHQUFHLEtBQUssQ0FBQztBQUN2QixZQUFZLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDdEIsU0FBUztBQUNUO0FBQ0EsUUFBUSxHQUFHLEtBQUssR0FBRyxRQUFRLEVBQUU7QUFDN0IsWUFBWSxRQUFRLEdBQUcsS0FBSyxDQUFDO0FBQzdCLFNBQVMsTUFBTSxHQUFHLEtBQUssR0FBRyxXQUFXLEVBQUU7QUFDdkMsWUFBWSxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ2hDLFNBQVM7QUFDVDtBQUNBLFFBQVEsR0FBRyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRTtBQUMxQixZQUFZLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDOUIsU0FBUztBQUNUO0FBQ0EsUUFBUSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzlCLFFBQVEsSUFBSSxFQUFFLENBQUM7QUFDZixLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0FBQ3ZCLFFBQVEsSUFBSSxJQUFJLEtBQUssR0FBRyxXQUFXLEVBQUUsS0FBSyxJQUFJLFFBQVEsRUFBRSxLQUFLLEVBQUUsRUFBRTtBQUNqRSxZQUFZLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNuQztBQUNBLFlBQVksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDaEQsZ0JBQWdCLElBQUksRUFBRSxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNoQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUM7QUFDckIsYUFBYTtBQUNiLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsT0FBTyxHQUFHO0FBQ3ZCLFFBQVEsT0FBTyxJQUFJLENBQUM7QUFDcEIsS0FBSztBQUNMO0FBQ0EsSUFBSSxPQUFPO0FBQ1gsUUFBUSxHQUFHLEVBQUUsR0FBRztBQUNoQixRQUFRLE9BQU8sRUFBRSxPQUFPO0FBQ3hCLFFBQVEsSUFBSSxFQUFFLE9BQU87QUFDckIsS0FBSyxDQUFDO0FBQ047O0FDdklBLElBQUksSUFBSSxHQUFHLE1BQU0sQ0FBQztBQUNsQjtBQUNBLFNBQVMsU0FBUyxDQUFDLE9BQU8sRUFBRTtBQUM1QixJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDdkIsSUFBSSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFFBQVEsQ0FBQyxPQUFPLEVBQUU7QUFDM0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBQ0Q7QUFDQSxTQUFTLFVBQVUsQ0FBQyxPQUFPLEVBQUU7QUFDN0IsSUFBSSxPQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QixDQUFDO0FBQ0Q7QUFDQSxJQUFBLFlBQWMsR0FBRztBQUNqQixJQUFJLFNBQVMsRUFBRSxTQUFTO0FBQ3hCLElBQUksUUFBUSxFQUFFLFFBQVE7QUFDdEIsSUFBSSxVQUFVLEVBQUUsVUFBVTtBQUMxQixDQUFDOzs7Ozs7QUNmRDtBQUNxRDtBQUNyRDtBQUNBLElBQWMsTUFBQSxHQUFHLFNBQVMsT0FBTyxFQUFFO0FBQ25DLElBQUksT0FBTyxlQUFlLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDeEMsSUFBSSxJQUFJLFFBQVEsVUFBVSxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQzNDLElBQUksSUFBSSxjQUFjLElBQUksT0FBTyxDQUFDLGNBQWMsQ0FBQztBQUNqRCxJQUFJLElBQUksUUFBUSxVQUFVLE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDO0FBQ3hEO0FBQ0EsSUFBSSxHQUFHLENBQUMsUUFBUSxFQUFFO0FBQ2xCLFFBQVEsTUFBTSxJQUFJLEtBQUssQ0FBQyx3Q0FBd0MsQ0FBQyxDQUFDO0FBQ2xFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRTtBQUM1QyxRQUFRLFNBQVMsYUFBYSxHQUFHO0FBQ2pDLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlCLFNBQVM7QUFDVDtBQUNBLFFBQVEsR0FBRyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3BDO0FBQ0EsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHO0FBQ3ZDLGdCQUFnQixLQUFLLEVBQUUsYUFBYTtBQUNwQyxhQUFhLENBQUM7QUFDZCxZQUFZLE9BQU8sQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLGFBQWEsQ0FBQyxDQUFDO0FBQzNELFNBQVMsTUFBTTtBQUNmLFlBQVksSUFBSSxNQUFNLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzVDO0FBQ0EsWUFBWSxHQUFHLENBQUMsTUFBTSxFQUFFO0FBQ3hCLGdCQUFnQixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7QUFDL0UsYUFBYTtBQUNiO0FBQ0EsWUFBWSxNQUFNLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDekYsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxrQkFBa0IsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsUUFBUSxJQUFJLFNBQVMsR0FBRyxPQUFPLENBQUMsU0FBUyxHQUFHLGVBQWUsR0FBRyxJQUFJLENBQUM7QUFDbkU7QUFDQSxRQUFRLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFNBQVMsRUFBRSxJQUFJLEVBQUUsQ0FBQztBQUMxRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDeEQsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3ZCLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUMvQixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDOUIsWUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDaEMsUUFBb0IsT0FBTyxDQUFDLE1BQU07QUFDbEM7QUFDQSxRQUFRLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDakQsWUFBWSxJQUFJLFlBQVksR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLGdCQUFnQixFQUFFLG9CQUFvQixFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxjQUFjLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLEVBQUUsc0JBQXNCLENBQUMsQ0FBQyxDQUFDO0FBQ25QO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsWUFBWSxJQUFJLHNCQUFzQixHQUFHLEtBQUssQ0FBQztBQUMvQztBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6RCxZQUFZLElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDNUMsWUFBWSxJQUFJLE1BQU0sR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO0FBQzlDO0FBQ0EsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxHQUFHO0FBQzFDLGdCQUFnQixLQUFLLEVBQUUsS0FBSztBQUM1QixnQkFBZ0IsTUFBTSxFQUFFLE1BQU07QUFDOUIsYUFBYSxDQUFDO0FBQ2Q7QUFDQSxZQUFZLFNBQVMsU0FBUyxHQUFHO0FBQ2pDLGdCQUFnQixTQUFTLG1CQUFtQixHQUFHO0FBQy9DLG9CQUFvQixHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO0FBQ3BELHdCQUF3QixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ2hIO0FBQ0Esd0JBQXdCLElBQUksb0JBQW9CLEdBQUcsU0FBUyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDaEcsNEJBQTRCLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO0FBQzlELGdDQUFnQyxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ3RFLDZCQUE2QjtBQUM3QjtBQUNBLDRCQUE0QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDeEQ7QUFDQSw0QkFBNEIsR0FBRyxLQUFLLEtBQUssTUFBTSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUNyRixnQ0FBZ0MsUUFBUSxDQUFDLElBQUksQ0FBQyxpREFBaUQsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxpSEFBaUgsR0FBRyxRQUFRLEdBQUcsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDblMsZ0NBQWdDLE9BQU8sQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxHQUFHLEVBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDL0csNkJBQTZCO0FBQzdCLHlCQUF5QixDQUFDO0FBQzFCO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztBQUM5RSx3QkFBd0Isb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDaEYsd0JBQXdCLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2pGLHdCQUF3QixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRSxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCO0FBQ0EsZ0JBQWdCLFNBQVMsWUFBWSxHQUFHO0FBQ3hDO0FBQ0Esb0JBQW9CLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtBQUNqRCx3QkFBd0IsbUJBQW1CLEVBQUUsQ0FBQztBQUM5QyxxQkFBcUI7QUFDckI7QUFDQTtBQUNBO0FBQ0Esb0JBQW9CLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDNUQ7QUFDQTtBQUNBO0FBQ0Esd0JBQXdCLEdBQUcsQ0FBQyxPQUFPLENBQUMsZUFBZSxFQUFFO0FBQ3JELDRCQUE0QixJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDMUQsNEJBQTRCLElBQUksS0FBSyxDQUFDLCtCQUErQixFQUFFO0FBQ3ZFLGdDQUFnQyxNQUFNLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO0FBQzNGLDZCQUE2QjtBQUM3Qiw0QkFBNEIsS0FBSyxDQUFDLCtCQUErQixHQUFHLFVBQVUsQ0FBQyxTQUFTLHNCQUFzQixHQUFHO0FBQ2pILGdDQUFnQyxLQUFLLENBQUMsK0JBQStCLEdBQUcsQ0FBQyxDQUFDO0FBQzFFLGdDQUFnQyxXQUFXLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQy9ELDZCQUE2QixFQUFFLEdBQUcsQ0FBQyxDQUFDO0FBQ3BDO0FBQ0EsNEJBQTRCLE9BQU87QUFDbkMseUJBQXlCO0FBQ3pCO0FBQ0Esd0JBQXdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUQscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQixJQUFJLGFBQWEsR0FBRyxJQUFJLENBQUM7QUFDN0M7QUFDQTtBQUNBLG9CQUFvQixXQUFXLENBQUMsYUFBYSxFQUFFLFNBQVMscUJBQXFCLENBQUMsY0FBYyxFQUFFO0FBQzlGO0FBQ0Esd0JBQXdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3ZCLGlCQUFpQjtBQUNqQjtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsUUFBUSxLQUFLLEVBQUUsRUFBRTtBQUMzQyxvQkFBb0IsbUJBQW1CLENBQU0sQ0FBQyxDQUFDO0FBQy9DLG9CQUFvQixzQkFBc0IsR0FBRyxJQUFJLENBQUM7QUFDbEQsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxNQUFNLEdBQUcsUUFBUSxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM5RCxnQkFBZ0IsTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsWUFBWSxDQUFDO0FBQ3BELGdCQUFnQixNQUFNLENBQUMsUUFBUSxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLGdCQUFnQixNQUFNLENBQUMsSUFBSSxHQUFHLFdBQVcsQ0FBQztBQUMxQyxnQkFBZ0IsTUFBTSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0QsZ0JBQWdCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsWUFBWSxDQUFDO0FBQzdDO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFO0FBQzVDLG9CQUFvQixNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztBQUNoRCxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4QztBQUNBLG9CQUFvQixPQUFPO0FBQzNCLGlCQUFpQjtBQUNqQjtBQUNBLGdCQUFnQixPQUFPLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzVDLGdCQUFnQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztBQUNsRDtBQUNBO0FBQ0EsZ0JBQWdCLEdBQUcsZUFBZSxDQUFDLElBQUksRUFBRSxFQUFFO0FBQzNDLG9CQUFvQixNQUFNLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztBQUNoRCxpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxHQUFHLGNBQWMsRUFBRTtBQUMvQixnQkFBZ0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM5QyxhQUFhLE1BQU07QUFDbkIsZ0JBQWdCLFNBQVMsRUFBRSxDQUFDO0FBQzVCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQSxRQUFRLEdBQUcsZUFBZSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUNwQztBQUNBO0FBQ0E7QUFDQSxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixTQUFTLE1BQU07QUFDZixZQUFZLFlBQVksQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDNUMsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ2hDLFFBQVEsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDO0FBQ3hDLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFO0FBQ2hDLFFBQVEsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNoQyxZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNUO0FBQ0EsUUFBUSxJQUFJLE1BQU0sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDeEM7QUFDQSxRQUFRLElBQUksQ0FBQyxNQUFNLEVBQUU7QUFDckIsWUFBWSxPQUFPO0FBQ25CLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFO0FBQ3JDLFlBQVksT0FBTyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFELFNBQVMsTUFBTTtBQUNmLFlBQVksT0FBTyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN4QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLCtCQUErQixFQUFFO0FBQy9ELFlBQVksTUFBTSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsK0JBQStCLENBQUMsQ0FBQztBQUNuRixTQUFTO0FBQ1Q7QUFDQSxRQUFRLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQztBQUN4QyxLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLGNBQWMsRUFBRSxjQUFjO0FBQ3RDLFFBQVEsV0FBVyxFQUFFLFdBQVc7QUFDaEMsUUFBUSxTQUFTLEVBQUUsU0FBUztBQUM1QixLQUFLLENBQUM7QUFDTixDQUFDOzs7Ozs7QUNoUEQ7QUFDQSxJQUFJQyxTQUFPLEdBQUdDLGVBQThCLENBQUMsT0FBTyxDQUFDO0FBQ3JEO0FBQ0EsSUFBYyxNQUFBLEdBQUcsU0FBUyxPQUFPLEVBQUU7QUFDbkMsSUFBSSxPQUFPLGVBQWUsT0FBTyxJQUFJLEVBQUUsQ0FBQztBQUN4QyxJQUFJLElBQUksUUFBUSxVQUFVLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDM0MsSUFBSSxJQUFJLGNBQWMsSUFBSSxPQUFPLENBQUMsY0FBYyxDQUFDO0FBQ2pELElBQUksSUFBSSxRQUFRLFVBQVUsT0FBTyxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUM7QUFDeEQsSUFBMEIsT0FBTyxDQUFDLFlBQVksQ0FBQyxTQUFTO0FBQ3hELElBQUksSUFBSSxTQUFTLFNBQVMsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUM1QztBQUNBLElBQUksSUFBSSxDQUFDLGNBQWMsRUFBRTtBQUN6QixRQUFRLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQUN2RSxLQUFLO0FBQ0w7QUFDQSxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7QUFDbkIsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLHdDQUF3QyxDQUFDLENBQUM7QUFDbEUsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUksY0FBYyxHQUFHLGlCQUFpQixFQUFFLENBQUM7QUFDN0M7QUFDQSxJQUFJLElBQUksT0FBTyxHQUFHLHNDQUFzQyxDQUFDO0FBQ3pELElBQUksSUFBSSx1QkFBdUIsR0FBRyxnQ0FBZ0MsQ0FBQztBQUNuRTtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsY0FBYyxFQUFFO0FBQzFDO0FBQ0E7QUFDQSxRQUFRLGlCQUFpQixDQUFDLGNBQWMsRUFBRSxPQUFPLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUM1RSxLQUFLO0FBQ0w7QUFDQSxJQUFJLFlBQVksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDbEM7QUFDQSxJQUFJLFNBQVMsa0JBQWtCLENBQUMsS0FBSyxFQUFFO0FBQ3ZDLFFBQVEsSUFBSSxTQUFTLEdBQUcsT0FBTyxDQUFDLFNBQVMsR0FBRyxlQUFlLEdBQUcsSUFBSSxDQUFDO0FBQ25FO0FBQ0EsUUFBUSxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxTQUFTLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDMUQsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLGlCQUFpQixHQUFHO0FBQ2pDLFFBQVEsSUFBSSxLQUFLLEdBQUcsR0FBRyxDQUFDO0FBQ3hCLFFBQVEsSUFBSSxNQUFNLEdBQUcsR0FBRyxDQUFDO0FBQ3pCO0FBQ0EsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ2xELFFBQVEsS0FBSyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEdBQUcsS0FBSyxDQUFDLENBQUMsR0FBRyxJQUFJLEVBQUUsVUFBVSxHQUFHLE1BQU0sQ0FBQyxDQUFDLEdBQUcsSUFBSSxFQUFFLG9CQUFvQixFQUFFLFdBQVcsRUFBRSxZQUFZLENBQUMsQ0FBQyxDQUFDO0FBQ3BMO0FBQ0EsUUFBUSxJQUFJLFNBQVMsR0FBRyxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RELFFBQVEsU0FBUyxDQUFDLEtBQUssQ0FBQyxPQUFPLEdBQUcsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEdBQUcsS0FBSyxHQUFHLElBQUksRUFBRSxVQUFVLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxRQUFRLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksRUFBRSxvQkFBb0IsRUFBRSxXQUFXLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztBQUNwUjtBQUNBLFFBQVEsU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUNyQztBQUNBLFFBQVEsUUFBUSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsU0FBUyxFQUFFLFFBQVEsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDeEU7QUFDQSxRQUFRLElBQUksU0FBUyxHQUFHLEtBQUssR0FBRyxTQUFTLENBQUMsV0FBVyxDQUFDO0FBQ3RELFFBQVEsSUFBSSxVQUFVLEdBQUcsTUFBTSxHQUFHLFNBQVMsQ0FBQyxZQUFZLENBQUM7QUFDekQ7QUFDQSxRQUFRLFFBQVEsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQzdDO0FBQ0EsUUFBUSxPQUFPO0FBQ2YsWUFBWSxLQUFLLEVBQUUsU0FBUztBQUM1QixZQUFZLE1BQU0sRUFBRSxVQUFVO0FBQzlCLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxpQkFBaUIsQ0FBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRTtBQUN4RSxRQUFRLFNBQVMsV0FBVyxDQUFDLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDNUMsWUFBWSxNQUFNLEdBQUcsTUFBTSxJQUFJLFVBQVUsT0FBTyxFQUFFO0FBQ2xELGdCQUFnQixjQUFjLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN6RCxhQUFhLENBQUM7QUFDZDtBQUNBLFlBQVksSUFBSSxZQUFZLEdBQUcsY0FBYyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNyRSxZQUFZLFlBQVksQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQzNDLFlBQVksWUFBWSxDQUFDLEVBQUUsR0FBRyxPQUFPLENBQUM7QUFDdEMsWUFBWSxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDakMsWUFBWSxPQUFPLFlBQVksQ0FBQztBQUNoQyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3JELFlBQVksSUFBSSx1QkFBdUIsR0FBRyxjQUFjLEdBQUcsWUFBWSxDQUFDO0FBQ3hFLFlBQVksSUFBSSw2QkFBNkIsR0FBRyxjQUFjLEdBQUcsbUJBQW1CLENBQUM7QUFDckYsWUFBWSxJQUFJLEtBQUssR0FBRyx5REFBeUQsQ0FBQztBQUNsRixZQUFZLEtBQUssSUFBSSxHQUFHLEdBQUcsY0FBYyxHQUFHLDhCQUE4QixHQUFHLGtCQUFrQixDQUFDLENBQUMsZUFBZSxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7QUFDOUgsWUFBWSxLQUFLLElBQUksR0FBRyxHQUFHLDZCQUE2QixHQUFHLEtBQUssR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLGtDQUFrQyxFQUFFLDBCQUEwQixFQUFFLDBCQUEwQixHQUFHLHVCQUF1QixFQUFFLGtCQUFrQixHQUFHLHVCQUF1QixDQUFDLENBQUMsR0FBRyxNQUFNLENBQUM7QUFDclEsWUFBWSxLQUFLLElBQUkscUJBQXFCLEdBQUcsdUJBQXVCLElBQUksb0VBQW9FLENBQUM7QUFDN0ksWUFBWSxLQUFLLElBQUksYUFBYSxHQUFHLHVCQUF1QixZQUFZLGtFQUFrRSxDQUFDO0FBQzNJLFlBQVksV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQy9CLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsaUJBQWlCLENBQUMsT0FBTyxFQUFFO0FBQ3hDLFFBQVEsT0FBTyxDQUFDLFNBQVMsSUFBSSxHQUFHLEdBQUcsdUJBQXVCLEdBQUcsbUJBQW1CLENBQUM7QUFDakYsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFFBQVEsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNwQyxRQUFRLElBQUksRUFBRSxDQUFDLGdCQUFnQixFQUFFO0FBQ2pDLFlBQVksRUFBRSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUMxQyxTQUFTLE1BQU0sR0FBRyxFQUFFLENBQUMsV0FBVyxFQUFFO0FBQ2xDLFlBQVksRUFBRSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQzVDLFNBQVMsTUFBTTtBQUNmLFlBQVksT0FBTyxRQUFRLENBQUMsS0FBSyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFDckYsU0FBUztBQUNULEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxXQUFXLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDdkMsUUFBUSxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRTtBQUNwQyxZQUFZLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0MsU0FBUyxNQUFNLEdBQUcsRUFBRSxDQUFDLFdBQVcsRUFBRTtBQUNsQyxZQUFZLEVBQUUsQ0FBQyxXQUFXLENBQUMsSUFBSSxHQUFHLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQztBQUM1QyxTQUFTLE1BQU07QUFDZixZQUFZLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxvREFBb0QsQ0FBQyxDQUFDO0FBQ3hGLFNBQVM7QUFDVCxLQUFLO0FBQ0w7QUFDQSxJQUFJLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFO0FBQ3ZDLFFBQVEsT0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3JGLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7QUFDdkMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDckYsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSSxTQUFTLFdBQVcsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQzVDLFFBQVEsSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQztBQUNwRDtBQUNBLFFBQVEsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLEVBQUU7QUFDN0IsWUFBWSxNQUFNLElBQUksS0FBSyxDQUFDLDJEQUEyRCxDQUFDLENBQUM7QUFDekYsU0FBUztBQUNUO0FBQ0EsUUFBUSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNuRCxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUksU0FBUyxjQUFjLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUU7QUFDeEQsUUFBUSxJQUFJLENBQUMsUUFBUSxFQUFFO0FBQ3ZCLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUMvQixZQUFZLE9BQU8sR0FBRyxPQUFPLENBQUM7QUFDOUIsWUFBWSxPQUFPLEdBQUcsSUFBSSxDQUFDO0FBQzNCLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDaEM7QUFDQSxRQUFRLFNBQVMsS0FBSyxHQUFHO0FBQ3pCLFlBQVksSUFBSSxPQUFPLENBQUMsS0FBSyxFQUFFO0FBQy9CLGdCQUFnQixJQUFJLElBQUksR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDakUsZ0JBQWdCLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztBQUNqRSxnQkFBZ0IsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRTtBQUN4QyxvQkFBb0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ25ELGlCQUFpQixNQUFNO0FBQ3ZCLG9CQUFvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUMxRCx3QkFBd0IsUUFBUSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUM5QyxxQkFBcUI7QUFDckIsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsVUFBVSxDQUFDLE9BQU8sRUFBRTtBQUNyQyxZQUFZLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUMzQyxnQkFBZ0IsSUFBSSxjQUFjLEdBQUcsT0FBTyxDQUFDLFdBQVcsSUFBSSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BHLGdCQUFnQixPQUFPLE9BQU8sS0FBSyxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksSUFBSSxPQUFPLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksY0FBYyxDQUFDO0FBQ2hJLGFBQWE7QUFDYjtBQUNBLFlBQVksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4QyxnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiO0FBQ0E7QUFDQSxZQUFZLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksRUFBRTtBQUMzRCxnQkFBZ0IsT0FBTyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxPQUFPLEtBQUssQ0FBQztBQUN6QixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsWUFBWSxDQUFDLE9BQU8sRUFBRTtBQUN2QztBQUNBLFlBQVksSUFBSSxTQUFTLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDdEUsWUFBWSxJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFDLENBQUM7QUFDM0QsWUFBWSxPQUFPLENBQUMsS0FBSyxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNwRSxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsUUFBUSxHQUFHO0FBQzVCO0FBQ0E7QUFDQSxZQUFZLElBQUksWUFBWSxjQUFjLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMzRSxZQUFZLElBQUksS0FBSyxxQkFBcUIsRUFBRSxDQUFDO0FBQzdDLFlBQVksS0FBSyxDQUFDLFFBQVEsZ0JBQWdCLFlBQVksQ0FBQyxRQUFRLENBQUM7QUFDaEUsWUFBWSxLQUFLLENBQUMsS0FBSyxtQkFBbUIsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUM5RCxZQUFZLEtBQUssQ0FBQyxNQUFNLGtCQUFrQixPQUFPLENBQUMsWUFBWSxDQUFDO0FBQy9ELFlBQVksS0FBSyxDQUFDLEdBQUcscUJBQXFCLFlBQVksQ0FBQyxHQUFHLENBQUM7QUFDM0QsWUFBWSxLQUFLLENBQUMsS0FBSyxtQkFBbUIsWUFBWSxDQUFDLEtBQUssQ0FBQztBQUM3RCxZQUFZLEtBQUssQ0FBQyxNQUFNLGtCQUFrQixZQUFZLENBQUMsTUFBTSxDQUFDO0FBQzlELFlBQVksS0FBSyxDQUFDLElBQUksb0JBQW9CLFlBQVksQ0FBQyxJQUFJLENBQUM7QUFDNUQsWUFBWSxLQUFLLENBQUMsUUFBUSxnQkFBZ0IsWUFBWSxDQUFDLEtBQUssQ0FBQztBQUM3RCxZQUFZLEtBQUssQ0FBQyxTQUFTLGVBQWUsWUFBWSxDQUFDLE1BQU0sQ0FBQztBQUM5RCxZQUFZLE9BQU8sS0FBSyxDQUFDO0FBQ3pCLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxjQUFjLEdBQUc7QUFDbEMsWUFBWSxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNuQyxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUc7QUFDMUMsZ0JBQWdCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztBQUNsQyxnQkFBZ0IsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO0FBQ3BDLGFBQWEsQ0FBQztBQUNkLFlBQVksS0FBSyxDQUFDLG9CQUFvQixFQUFFLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNyRSxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsYUFBYSxHQUFHO0FBQ2pDLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUM7QUFDN0MsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLFVBQVUsR0FBRztBQUM5QixZQUFZLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pDLFlBQVksSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNwQyxnQkFBZ0IsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDdkUsZ0JBQWdCLE9BQU87QUFDdkIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLEtBQUssR0FBRyxRQUFRLEVBQUUsQ0FBQztBQUNuQyxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0FBQzVDLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUMxRCxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0FBQ2hELFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsSUFBSSxNQUFNLENBQUM7QUFDbkQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLHFCQUFxQixDQUFDLE9BQU8sRUFBRTtBQUNoRCxZQUFZLE9BQU8sZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzNELFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxjQUFjLEdBQUc7QUFDbEMsWUFBWSxPQUFPLENBQUMsR0FBRyxjQUFjLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQztBQUNoRCxTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsZUFBZSxHQUFHO0FBQ25DLFlBQVksT0FBTyxDQUFDLEdBQUcsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUM7QUFDakQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsWUFBWSxPQUFPLEtBQUssR0FBRyxFQUFFLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDakQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUU7QUFDekMsWUFBWSxPQUFPLE1BQU0sR0FBRyxFQUFFLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFDbkQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGNBQWMsQ0FBQyxLQUFLLEVBQUU7QUFDdkMsWUFBWSxPQUFPLEtBQUssR0FBRyxDQUFDLEdBQUcsY0FBYyxFQUFFLENBQUM7QUFDaEQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGVBQWUsQ0FBQyxNQUFNLEVBQUU7QUFDekMsWUFBWSxPQUFPLE1BQU0sR0FBRyxDQUFDLEdBQUcsZUFBZSxFQUFFLENBQUM7QUFDbEQsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFO0FBQzVELFlBQVksSUFBSSxNQUFNLFlBQVksZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDNUQsWUFBWSxJQUFJLE1BQU0sWUFBWSxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1RCxZQUFZLElBQUksV0FBVyxPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLElBQUksWUFBWSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxZQUFZLElBQUksV0FBVyxPQUFPLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RCxZQUFZLElBQUksWUFBWSxNQUFNLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxRCxZQUFZLE1BQU0sQ0FBQyxVQUFVLEtBQUssV0FBVyxDQUFDO0FBQzlDLFlBQVksTUFBTSxDQUFDLFNBQVMsTUFBTSxZQUFZLENBQUM7QUFDL0MsWUFBWSxNQUFNLENBQUMsVUFBVSxLQUFLLFdBQVcsQ0FBQztBQUM5QyxZQUFZLE1BQU0sQ0FBQyxTQUFTLE1BQU0sWUFBWSxDQUFDO0FBQy9DLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxzQkFBc0IsR0FBRztBQUMxQyxZQUFZLElBQUksU0FBUyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDeEQ7QUFDQSxZQUFZLElBQUksQ0FBQyxTQUFTLEVBQUU7QUFDNUIsZ0JBQWdCLFNBQVMscUJBQXFCLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDNUUsZ0JBQWdCLFNBQVMsQ0FBQyxTQUFTLFdBQVcsdUJBQXVCLENBQUM7QUFDdEUsZ0JBQWdCLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxPQUFPLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsaUJBQWlCLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsV0FBVyxFQUFFLFlBQVksQ0FBQyxDQUFDLENBQUM7QUFDdk0sZ0JBQWdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBQ3hELGdCQUFnQixpQkFBaUIsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUM3QyxnQkFBZ0IsT0FBTyxDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMvQztBQUNBLGdCQUFnQixJQUFJLGdCQUFnQixHQUFHLFlBQVk7QUFDbkQsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxVQUFVLElBQUksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBQ25GLGlCQUFpQixDQUFDO0FBQ2xCO0FBQ0EsZ0JBQWdCLFFBQVEsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQUN4RTtBQUNBO0FBQ0E7QUFDQSxnQkFBZ0IsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO0FBQ3RFLGFBQWE7QUFDYjtBQUNBLFlBQVksT0FBTyxTQUFTLENBQUM7QUFDN0IsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLG9CQUFvQixHQUFHO0FBQ3hDLFlBQVksU0FBUyxtQkFBbUIsR0FBRztBQUMzQyxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssQ0FBQztBQUNwRDtBQUNBLGdCQUFnQixHQUFHLEtBQUssQ0FBQyxRQUFRLEtBQUssUUFBUSxFQUFFO0FBQ2hELG9CQUFvQixPQUFPLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsVUFBVSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQzNHO0FBQ0Esb0JBQW9CLElBQUksb0JBQW9CLEdBQUcsU0FBUyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUU7QUFDNUYsd0JBQXdCLFNBQVMsaUJBQWlCLENBQUMsS0FBSyxFQUFFO0FBQzFELDRCQUE0QixPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2xFLHlCQUF5QjtBQUN6QjtBQUNBLHdCQUF3QixJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDcEQ7QUFDQSx3QkFBd0IsR0FBRyxLQUFLLEtBQUssTUFBTSxJQUFJLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsRUFBRTtBQUNqRiw0QkFBNEIsUUFBUSxDQUFDLElBQUksQ0FBQyxpREFBaUQsR0FBRyxRQUFRLEdBQUcsR0FBRyxHQUFHLEtBQUssR0FBRyxpSEFBaUgsR0FBRyxRQUFRLEdBQUcsOEJBQThCLEVBQUUsT0FBTyxDQUFDLENBQUM7QUFDL1IsNEJBQTRCLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBQ3hELHlCQUF5QjtBQUN6QixxQkFBcUIsQ0FBQztBQUN0QjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0Isb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDMUUsb0JBQW9CLG9CQUFvQixDQUFDLFFBQVEsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzVFLG9CQUFvQixvQkFBb0IsQ0FBQyxRQUFRLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM3RSxvQkFBb0Isb0JBQW9CLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0UsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyw0QkFBNEIsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7QUFDNUUsZ0JBQWdCLElBQUksSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDckQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLEdBQUcsR0FBRyxHQUFHLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDbEQsZ0JBQWdCLE1BQU0sSUFBSSxDQUFDLE1BQU0sR0FBRyxHQUFHLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDM0QsZ0JBQWdCLEtBQUssSUFBSSxDQUFDLEtBQUssR0FBRyxHQUFHLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUM7QUFDeEQ7QUFDQSxnQkFBZ0IsT0FBTyxDQUFDLFFBQVEsR0FBRyxJQUFJLEVBQUUsT0FBTyxHQUFHLEdBQUcsRUFBRSxTQUFTLEdBQUcsS0FBSyxFQUFFLFVBQVUsR0FBRyxNQUFNLENBQUMsQ0FBQztBQUNoRyxhQUFhO0FBQ2I7QUFDQSxZQUFZLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3hDO0FBQ0EsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3BDLGdCQUFnQixLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUN2RSxnQkFBZ0IsT0FBTztBQUN2QixhQUFhO0FBQ2I7QUFDQSxZQUFZLG1CQUFtQixFQUFFLENBQUM7QUFDbEM7QUFDQSxZQUFZLElBQUksYUFBYSxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLENBQUM7QUFDNUQ7QUFDQSxZQUFZLElBQUksQ0FBQyxhQUFhLEVBQUU7QUFDaEMsZ0JBQWdCLGFBQWEsR0FBRyxzQkFBc0IsRUFBRSxDQUFDO0FBQ3pELGFBQWE7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxZQUFZLElBQUksY0FBYyxZQUFZLGNBQWMsQ0FBQyxLQUFLLENBQUM7QUFDL0QsWUFBWSxJQUFJLGVBQWUsV0FBVyxjQUFjLENBQUMsTUFBTSxDQUFDO0FBQ2hFLFlBQVksSUFBSSx1QkFBdUIsR0FBRyxrQkFBa0IsQ0FBQyxDQUFDLG9CQUFvQixFQUFFLFlBQVksRUFBRSxrQkFBa0IsRUFBRSxhQUFhLEVBQUUsb0JBQW9CLEVBQUUsYUFBYSxFQUFFLGNBQWMsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQztBQUNwTixZQUFZLElBQUksY0FBYyxZQUFZLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxlQUFlLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFBRSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNuUixZQUFZLElBQUksV0FBVyxlQUFlLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUMzTCxZQUFZLElBQUksV0FBVyxlQUFlLGtCQUFrQixDQUFDLENBQUMsb0JBQW9CLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFLGFBQWEsRUFBRSxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUMzTCxZQUFZLElBQUksZ0JBQWdCLFVBQVUsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUMsQ0FBQztBQUMxRyxZQUFZLElBQUksZ0JBQWdCLFVBQVUsa0JBQWtCLENBQUMsQ0FBQyxvQkFBb0IsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFDLENBQUMsQ0FBQztBQUNwSDtBQUNBLFlBQVksSUFBSSxrQkFBa0IsUUFBUSxRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLFlBQVksSUFBSSxTQUFTLGlCQUFpQixRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLFlBQVksSUFBSSxNQUFNLG9CQUFvQixRQUFRLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hFLFlBQVksSUFBSSxXQUFXLGVBQWUsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RSxZQUFZLElBQUksTUFBTSxvQkFBb0IsUUFBUSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4RSxZQUFZLElBQUksV0FBVyxlQUFlLFFBQVEsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEU7QUFDQTtBQUNBO0FBQ0EsWUFBWSxrQkFBa0IsQ0FBQyxHQUFHLGdCQUFnQixLQUFLLENBQUM7QUFDeEQ7QUFDQSxZQUFZLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxPQUFPLE1BQU0sdUJBQXVCLENBQUM7QUFDMUUsWUFBWSxrQkFBa0IsQ0FBQyxTQUFTLFVBQVUsdUJBQXVCLENBQUM7QUFDMUUsWUFBWSxTQUFTLENBQUMsU0FBUyxtQkFBbUIsdUJBQXVCLENBQUM7QUFDMUUsWUFBWSxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sZUFBZSxjQUFjLENBQUM7QUFDakUsWUFBWSxNQUFNLENBQUMsS0FBSyxDQUFDLE9BQU8sa0JBQWtCLFdBQVcsQ0FBQztBQUM5RCxZQUFZLFdBQVcsQ0FBQyxLQUFLLENBQUMsT0FBTyxhQUFhLGdCQUFnQixDQUFDO0FBQ25FLFlBQVksTUFBTSxDQUFDLEtBQUssQ0FBQyxPQUFPLGtCQUFrQixXQUFXLENBQUM7QUFDOUQsWUFBWSxXQUFXLENBQUMsS0FBSyxDQUFDLE9BQU8sYUFBYSxnQkFBZ0IsQ0FBQztBQUNuRTtBQUNBLFlBQVksTUFBTSxDQUFDLFdBQVcsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUM1QyxZQUFZLE1BQU0sQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDNUMsWUFBWSxTQUFTLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzFDLFlBQVksU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxZQUFZLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUN0RCxZQUFZLGFBQWEsQ0FBQyxXQUFXLENBQUMsa0JBQWtCLENBQUMsQ0FBQztBQUMxRDtBQUNBLFlBQVksU0FBUyxjQUFjLEdBQUc7QUFDdEMsZ0JBQWdCLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QyxnQkFBZ0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFFBQVEsRUFBRTtBQUM3QyxvQkFBb0IsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO0FBQ3JDLGlCQUFpQixNQUFNO0FBQ3ZCLG9CQUFvQixLQUFLLENBQUMsOERBQThELENBQUMsQ0FBQztBQUMxRixpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxTQUFTLGNBQWMsR0FBRztBQUN0QyxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDLGdCQUFnQixJQUFJLEtBQUssSUFBSSxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQzdDLG9CQUFvQixLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7QUFDckMsaUJBQWlCLE1BQU07QUFDdkIsb0JBQW9CLEtBQUssQ0FBQyw4REFBOEQsQ0FBQyxDQUFDO0FBQzFGLGlCQUFpQjtBQUNqQixhQUFhO0FBQ2I7QUFDQSxZQUFZLFFBQVEsQ0FBQyxNQUFNLEVBQUUsUUFBUSxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZELFlBQVksUUFBUSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDdkQ7QUFDQTtBQUNBO0FBQ0EsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztBQUM5RCxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0FBQzlELFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxvQ0FBb0MsR0FBRztBQUN4RCxZQUFZLFNBQVMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUU7QUFDOUQsZ0JBQWdCLElBQUksV0FBVyxlQUFlLHFCQUFxQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdFLGdCQUFnQixJQUFJLFdBQVcsZUFBZSxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDcEUsZ0JBQWdCLElBQUksWUFBWSxjQUFjLGVBQWUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUN0RSxnQkFBZ0IsV0FBVyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLFdBQVcsR0FBRyxJQUFJLEVBQUUsT0FBTyxDQUFDLFNBQVMsR0FBRyxXQUFXLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDakgsZ0JBQWdCLFdBQVcsQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxZQUFZLEdBQUcsSUFBSSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQyxDQUFDO0FBQ25ILGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUU7QUFDbEQsZ0JBQWdCLElBQUksS0FBSyxhQUFhLE9BQU8sQ0FBQyxXQUFXLENBQUM7QUFDMUQsZ0JBQWdCLElBQUksTUFBTSxZQUFZLE9BQU8sQ0FBQyxZQUFZLENBQUM7QUFDM0Q7QUFDQTtBQUNBLGdCQUFnQixJQUFJLFdBQVcsR0FBRyxLQUFLLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFNBQVMsSUFBSSxNQUFNLEtBQUssUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsQ0FBQztBQUNuSDtBQUNBLGdCQUFnQixLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzdEO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZ0JBQWdCLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLFNBQVMsdUJBQXVCLEdBQUc7QUFDekUsb0JBQW9CLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDdEMsd0JBQXdCLE9BQU87QUFDL0IscUJBQXFCO0FBQ3JCO0FBQ0Esb0JBQW9CLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDNUMsd0JBQXdCLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQy9FLHdCQUF3QixPQUFPO0FBQy9CLHFCQUFxQjtBQUNyQjtBQUNBLG9CQUFvQixJQUFJLENBQUMsbUJBQW1CLEVBQUUsRUFBRTtBQUNoRCx3QkFBd0IsS0FBSyxDQUFDLDZEQUE2RCxDQUFDLENBQUM7QUFDN0Ysd0JBQXdCLE9BQU87QUFDL0IscUJBQXFCO0FBQ3JCO0FBQ0Esb0JBQW9CLElBQUksT0FBTyxDQUFDLEtBQUssRUFBRTtBQUN2Qyx3QkFBd0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUNwRCx3QkFBd0IsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUNyRDtBQUNBLHdCQUF3QixJQUFJLENBQUMsS0FBSyxLQUFLLElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUN6RCw0QkFBNEIsUUFBUSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLHlEQUF5RCxDQUFDLENBQUM7QUFDN0gseUJBQXlCO0FBQ3pCLHFCQUFxQjtBQUNyQjtBQUNBLG9CQUFvQixnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFDO0FBQzdELGlCQUFpQixDQUFDLENBQUM7QUFDbkI7QUFDQSxnQkFBZ0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsU0FBUyxnQkFBZ0IsR0FBRztBQUNsRTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUM1Qyx3QkFBd0IsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDL0Usd0JBQXdCLE9BQU87QUFDL0IscUJBQXFCO0FBQ3JCO0FBQ0Esb0JBQW9CLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO0FBQ2hELHdCQUF3QixLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQUM3Rix3QkFBd0IsT0FBTztBQUMvQixxQkFBcUI7QUFDckI7QUFDQSxvQkFBb0Isa0JBQWtCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMvRCxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CO0FBQ0EsZ0JBQWdCLElBQUksV0FBVyxJQUFJLElBQUksRUFBRTtBQUN6QyxvQkFBb0IsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsWUFBWTtBQUN0RCx3QkFBd0IsSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNoRCw0QkFBNEIsS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDbkYsNEJBQTRCLE9BQU87QUFDbkMseUJBQXlCO0FBQ3pCO0FBQ0Esd0JBQXdCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxFQUFFO0FBQ3BELDBCQUEwQixLQUFLLENBQUMsNkRBQTZELENBQUMsQ0FBQztBQUMvRiwwQkFBMEIsT0FBTztBQUNqQyx5QkFBeUI7QUFDekI7QUFDQSx3QkFBd0IsSUFBSSxFQUFFLENBQUM7QUFDL0IscUJBQXFCLENBQUMsQ0FBQztBQUN2QixpQkFBaUI7QUFDakIsYUFBYTtBQUNiO0FBQ0EsWUFBWSxTQUFTLG1CQUFtQixHQUFHO0FBQzNDLGdCQUFnQixPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsU0FBUyxDQUFDO0FBQ3JELGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyx1QkFBdUIsR0FBRztBQUMvQyxnQkFBZ0IsU0FBUyxhQUFhLEdBQUc7QUFDekMsb0JBQW9CLE9BQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsQ0FBQztBQUM3RSxpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUM7QUFDekQ7QUFDQSxnQkFBZ0IsSUFBSSxLQUFLLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzlDO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxhQUFhLEVBQUUsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxTQUFTLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxVQUFVLEtBQUssS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUU7QUFDakksb0JBQW9CLE9BQU8sS0FBSyxDQUFDLDRGQUE0RixDQUFDLENBQUM7QUFDL0gsaUJBQWlCO0FBQ2pCO0FBQ0E7QUFDQSxnQkFBZ0IsSUFBSSxLQUFLLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxLQUFLLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQyxrQkFBa0IsRUFBRTtBQUNsSCxvQkFBb0IsT0FBTyxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUN6RSxpQkFBaUI7QUFDakI7QUFDQTtBQUNBLGdCQUFnQixLQUFLLENBQUMseUNBQXlDLENBQUMsQ0FBQztBQUNqRSxnQkFBZ0IsS0FBSyxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7QUFDMUQsZ0JBQWdCLEtBQUssQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO0FBQzVELGdCQUFnQkQsU0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxTQUFTLEVBQUUsVUFBVSxRQUFRLEVBQUU7QUFDekUsb0JBQW9CLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxpQkFBaUIsQ0FBQyxDQUFDO0FBQ25CLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxZQUFZLEdBQUc7QUFDcEMsZ0JBQWdCLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0FBQ25EO0FBQ0EsZ0JBQWdCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzNDLG9CQUFvQixLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUMzRSxvQkFBb0IsT0FBTztBQUMzQixpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7QUFDM0MsZ0JBQWdCLElBQUksTUFBTSxHQUFHLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3ZELGdCQUFnQixJQUFJLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2RCxnQkFBZ0IsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxLQUFLLENBQUMsSUFBSSxNQUFNLENBQUMsU0FBUyxLQUFLLENBQUMsRUFBRTtBQUM1SCxvQkFBb0IsS0FBSyxDQUFDLHVEQUF1RCxDQUFDLENBQUM7QUFDbkYsb0JBQW9CLHNCQUFzQixDQUFDLHVCQUF1QixDQUFDLENBQUM7QUFDcEUsaUJBQWlCO0FBQ2pCLGFBQWE7QUFDYjtBQUNBLFlBQVksU0FBUyxZQUFZLEdBQUc7QUFDcEMsZ0JBQWdCLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQzFDO0FBQ0EsZ0JBQWdCLElBQUksWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQzNDO0FBQ0Esb0JBQW9CLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0FBQzlFLG9CQUFvQixPQUFPO0FBQzNCLGlCQUFpQjtBQUNqQjtBQUNBLGdCQUFnQixzQkFBc0IsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO0FBQ2hFLGFBQWE7QUFDYjtBQUNBLFlBQVksS0FBSyxDQUFDLCtDQUErQyxDQUFDLENBQUM7QUFDbkU7QUFDQSxZQUFZLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDcEMsZ0JBQWdCLEtBQUssQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBQ3ZFLGdCQUFnQixPQUFPO0FBQ3ZCLGFBQWE7QUFDYjtBQUNBLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7QUFDeEQsWUFBWSxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsUUFBUSxHQUFHLFlBQVksQ0FBQztBQUN0RCxZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLEdBQUcsWUFBWSxDQUFDO0FBQ3REO0FBQ0EsWUFBWSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsS0FBSyxDQUFDO0FBQ2hELFlBQVksZ0JBQWdCLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQ2pFLFNBQVM7QUFDVDtBQUNBLFFBQVEsU0FBUyxtQkFBbUIsR0FBRztBQUN2QyxZQUFZLEtBQUssQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDO0FBQ2xEO0FBQ0EsWUFBWSxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3BDLGdCQUFnQixLQUFLLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUN2RSxnQkFBZ0IsT0FBTztBQUN2QixhQUFhO0FBQ2I7QUFDQSxZQUFZLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxLQUFLLENBQUM7QUFDaEQsWUFBWSxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDakUsWUFBWSxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUM7QUFDbkUsU0FBUztBQUNUO0FBQ0EsUUFBUSxTQUFTLEtBQUssR0FBRztBQUN6QixZQUFZLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5QixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsT0FBTyxHQUFHO0FBQzNCLFlBQVksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO0FBQ25DLFlBQVksYUFBYSxFQUFFLENBQUM7QUFDNUIsWUFBWSxjQUFjLEVBQUUsQ0FBQztBQUM3QjtBQUNBLFlBQVksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUMsWUFBWSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxDQUFDO0FBQ3hELFlBQVksY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUUsb0NBQW9DLENBQUMsQ0FBQztBQUN4RSxZQUFZLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDdkQsWUFBWSxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztBQUN6QyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0FBQ3RDO0FBQ0EsUUFBUSxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNqQyxZQUFZLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3pDO0FBQ0EsWUFBWSxzQkFBc0IsRUFBRSxDQUFDO0FBQ3JDO0FBQ0EsWUFBWSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQztBQUMxRDtBQUNBLFlBQVksUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLFVBQVUsR0FBRyxZQUFZO0FBQ3ZELGdCQUFnQixLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztBQUNqRCxnQkFBZ0IsT0FBTyxFQUFFLENBQUM7QUFDMUIsYUFBYSxDQUFDO0FBQ2QsU0FBUyxNQUFNO0FBQ2YsWUFBWSxPQUFPLEVBQUUsQ0FBQztBQUN0QixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxPQUFPLEVBQUU7QUFDaEMsUUFBUSxJQUFJLEtBQUssR0FBRyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdEM7QUFDQSxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDcEI7QUFDQSxZQUFZLE9BQU87QUFDbkIsU0FBUztBQUNUO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxRQUFRLEtBQUssQ0FBQyxjQUFjLElBQUksV0FBVyxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDdkcsUUFBUSxLQUFLLENBQUMsY0FBYyxJQUFJLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsRUFBRSxRQUFRLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDO0FBQ3ZHLFFBQVEsS0FBSyxDQUFDLGdCQUFnQixJQUFJLFdBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3pHO0FBQ0EsUUFBUSxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2hFLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTztBQUNYLFFBQVEsY0FBYyxFQUFFLGNBQWM7QUFDdEMsUUFBUSxXQUFXLEVBQUUsV0FBVztBQUNoQyxRQUFRLFNBQVMsRUFBRSxTQUFTO0FBQzVCLFFBQVEsWUFBWSxFQUFFLFlBQVk7QUFDbEMsS0FBSyxDQUFDO0FBQ04sQ0FBQzs7QUM3cEJELElBQUksT0FBTyxtQkFBbUJDLGVBQTZCLENBQUMsT0FBTyxDQUFDO0FBQ1g7QUFDRztBQUNKO0FBQ0Y7QUFDRjtBQUNRO0FBQ0g7QUFDQTtBQUN6RDtBQUNBO0FBQ3dFO0FBQ0E7QUFDeEU7QUFDQSxTQUFTLFlBQVksQ0FBQyxHQUFHLEVBQUU7QUFDM0IsSUFBSSxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksR0FBRyxDQUFDLE1BQU0sS0FBSyxTQUFTLENBQUM7QUFDMUQsQ0FBQztBQUNEO0FBQ0EsU0FBUyxPQUFPLENBQUMsVUFBVSxFQUFFO0FBQzdCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7QUFDcEMsUUFBUSxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7QUFDdkIsUUFBUSxPQUFPLENBQUMsVUFBVSxFQUFFLFVBQVUsR0FBRyxFQUFFO0FBQzNDLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1QixTQUFTLENBQUMsQ0FBQztBQUNYLFFBQVEsT0FBTyxLQUFLLENBQUM7QUFDckIsS0FBSyxNQUFNO0FBQ1gsUUFBUSxPQUFPLFVBQVUsQ0FBQztBQUMxQixLQUFLO0FBQ0wsQ0FBQztBQUNEO0FBQ0EsU0FBUyxTQUFTLENBQUMsR0FBRyxFQUFFO0FBQ3hCLElBQUksT0FBTyxHQUFHLElBQUksR0FBRyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUM7QUFDckMsQ0FBQztBQUNEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQWMscUJBQUEsR0FBRyxTQUFTLE9BQU8sRUFBRTtBQUNuQyxJQUFJLE9BQU8sR0FBRyxPQUFPLElBQUksRUFBRSxDQUFDO0FBQzVCO0FBQ0E7QUFDQSxJQUFJLElBQUlDLFdBQVMsQ0FBQztBQUNsQjtBQUNBLElBQUksSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO0FBQzNCO0FBQ0E7QUFDQSxRQUFRQSxXQUFTLEdBQUc7QUFDcEIsWUFBWSxHQUFHLEVBQUUsVUFBVSxPQUFPLEVBQUUsRUFBRSxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFO0FBQ3BGLFlBQVksR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRztBQUN0QyxTQUFTLENBQUM7QUFDVixLQUFLLE1BQU07QUFDWCxRQUFRLElBQUlDLGFBQVcsR0FBR0MsV0FBZ0IsRUFBRSxDQUFDO0FBQzdDLFFBQVEsSUFBSSxnQkFBZ0IsR0FBR0MsU0FBYyxDQUFDO0FBQzlDLFlBQVksV0FBVyxFQUFFRixhQUFXO0FBQ3BDLFlBQVksWUFBWSxFQUFFLFlBQVk7QUFDdEMsU0FBUyxDQUFDLENBQUM7QUFDWCxRQUFRRCxXQUFTLEdBQUcsZ0JBQWdCLENBQUM7QUFDckMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUlJLFVBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDO0FBQ3BDO0FBQ0EsSUFBSSxHQUFHLENBQUNBLFVBQVEsRUFBRTtBQUNsQjtBQUNBLFFBQVEsSUFBSSxLQUFLLEdBQUdBLFVBQVEsS0FBSyxLQUFLLENBQUM7QUFDdkMsUUFBUUEsVUFBUSxHQUFHQyxRQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDeEMsS0FBSztBQUNMO0FBQ0E7QUFDQSxJQUFJLElBQUlDLGdCQUFjLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRUMsY0FBbUIsQ0FBQyxFQUFFLFFBQVEsRUFBRUgsVUFBUSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNHO0FBQ0E7QUFDQSxJQUFJLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztBQUMzQixJQUFJLGFBQWEsQ0FBQyxTQUFTLE9BQU8sQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQzFFLElBQUksYUFBYSxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDdkU7QUFDQSxJQUFJLElBQUksb0JBQW9CLE1BQU1JLGVBQW9CLENBQUNSLFdBQVMsQ0FBQyxDQUFDO0FBQ2xFLElBQUksSUFBSVMsY0FBWSxjQUFjQyxZQUFpQixDQUFDO0FBQ3BELFFBQVEsWUFBWSxFQUFFLFlBQVk7QUFDbEMsS0FBSyxDQUFDLENBQUM7QUFDUDtBQUNBO0FBQ0EsSUFBSSxJQUFJLGlCQUFpQixDQUFDO0FBQzFCLElBQUksSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDbkUsSUFBSSxJQUFJLGlCQUFpQixHQUFHLFNBQVMsQ0FBQyxPQUFPLEVBQUUsV0FBVyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQ25FLElBQUksSUFBSSxlQUFlLEdBQUc7QUFDMUIsUUFBUSxRQUFRLEVBQUVOLFVBQVE7QUFDMUIsUUFBUSxjQUFjLEVBQUVFLGdCQUFjO0FBQ3RDLFFBQVEsWUFBWSxFQUFFLFlBQVk7QUFDbEMsUUFBUSxTQUFTLEVBQUVOLFdBQVM7QUFDNUIsUUFBUSxTQUFTLEVBQUUsaUJBQWlCO0FBQ3BDLEtBQUssQ0FBQztBQUNOO0FBQ0EsSUFBSSxHQUFHLGVBQWUsS0FBSyxRQUFRLEVBQUU7QUFDckMsUUFBUSxJQUFJLGVBQWUsQ0FBQyxhQUFhLEVBQUUsRUFBRTtBQUM3QyxZQUFZSSxVQUFRLENBQUMsSUFBSSxDQUFDLGdGQUFnRixDQUFDLENBQUM7QUFDNUcsWUFBWSxlQUFlLEdBQUcsUUFBUSxDQUFDO0FBQ3ZDLFNBQVMsTUFBTSxJQUFJLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUU7QUFDNUMsWUFBWUEsVUFBUSxDQUFDLElBQUksQ0FBQyx1RUFBdUUsQ0FBQyxDQUFDO0FBQ25HLFlBQVksZUFBZSxHQUFHLFFBQVEsQ0FBQztBQUN2QyxTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsSUFBSSxHQUFHLGVBQWUsS0FBSyxRQUFRLEVBQUU7QUFDckMsUUFBUSxpQkFBaUIsR0FBR08sTUFBbUIsQ0FBQyxlQUFlLENBQUMsQ0FBQztBQUNqRSxLQUFLLE1BQU0sR0FBRyxlQUFlLEtBQUssUUFBUSxFQUFFO0FBQzVDLFFBQVEsaUJBQWlCLEdBQUdDLE1BQW1CLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDakUsS0FBSyxNQUFNO0FBQ1gsUUFBUSxNQUFNLElBQUksS0FBSyxDQUFDLHlCQUF5QixHQUFHLGVBQWUsQ0FBQyxDQUFDO0FBQ3JFLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLElBQUksZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBQzlCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLFNBQVMsUUFBUSxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFO0FBQ25ELFFBQVEsU0FBUyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUU7QUFDM0MsWUFBWSxJQUFJLFNBQVMsR0FBRyxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDOUQsWUFBWSxPQUFPLENBQUMsU0FBUyxFQUFFLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFO0FBQ3BFLGdCQUFnQixRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDbEMsYUFBYSxDQUFDLENBQUM7QUFDZixTQUFTO0FBQ1Q7QUFDQSxRQUFRLFNBQVMsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO0FBQzNELFlBQVksb0JBQW9CLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN4RDtBQUNBLFlBQVksR0FBRyxTQUFTLEVBQUU7QUFDMUIsZ0JBQWdCLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNsQyxhQUFhO0FBQ2IsU0FBUztBQUNUO0FBQ0E7QUFDQSxRQUFRLEdBQUcsQ0FBQyxRQUFRLEVBQUU7QUFDdEIsWUFBWSxRQUFRLEdBQUcsUUFBUSxDQUFDO0FBQ2hDLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQztBQUMvQixZQUFZLE9BQU8sR0FBRyxFQUFFLENBQUM7QUFDekIsU0FBUztBQUNUO0FBQ0EsUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFO0FBQ3RCLFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsQ0FBQyxDQUFDO0FBQzlELFNBQVM7QUFDVDtBQUNBLFFBQVEsR0FBRyxDQUFDLFFBQVEsRUFBRTtBQUN0QixZQUFZLE1BQU0sSUFBSSxLQUFLLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUNsRCxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQyxFQUFFO0FBQ2pDO0FBQ0EsWUFBWSxRQUFRLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUNsQyxTQUFTLE1BQU0sSUFBSSxZQUFZLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDM0M7QUFDQTtBQUNBLFlBQVksUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUN6QyxTQUFTLE1BQU07QUFDZixZQUFZLE9BQU9SLFVBQVEsQ0FBQyxLQUFLLENBQUMsMkVBQTJFLENBQUMsQ0FBQztBQUMvRyxTQUFTO0FBQ1Q7QUFDQSxRQUFRLElBQUksYUFBYSxHQUFHLENBQUMsQ0FBQztBQUM5QjtBQUNBLFFBQVEsSUFBSSxTQUFTLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxXQUFXLEVBQUUsYUFBYSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0FBQ2pGLFFBQVEsSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxTQUFTLEVBQUUsU0FBUyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUM7QUFDaEYsUUFBUSxJQUFJLEtBQUssR0FBRyxTQUFTLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDckU7QUFDQSxRQUFRLE9BQU8sQ0FBQyxRQUFRLEVBQUUsU0FBUyx1QkFBdUIsQ0FBQyxPQUFPLEVBQUU7QUFDcEUsWUFBWSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUNqRCxnQkFBZ0IsWUFBWSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNoRCxnQkFBZ0JKLFdBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDdkMsYUFBYTtBQUNiO0FBQ0EsWUFBWSxJQUFJLEVBQUUsR0FBR0EsV0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM1QztBQUNBLFlBQVksS0FBSyxJQUFJSSxVQUFRLENBQUMsR0FBRyxDQUFDLCtCQUErQixFQUFFLEVBQUUsRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNoRjtBQUNBLFlBQVksR0FBRyxDQUFDSyxjQUFZLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxFQUFFO0FBQ3BELGdCQUFnQixLQUFLLElBQUlMLFVBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUM7QUFDN0QsZ0JBQWdCLEdBQUdLLGNBQVksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUU7QUFDakQsb0JBQW9CLEtBQUssSUFBSUwsVUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsa0NBQWtDLENBQUMsQ0FBQztBQUNsRjtBQUNBO0FBQ0E7QUFDQSxvQkFBb0IsV0FBVyxDQUFDLFNBQVMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFDOUQsb0JBQW9CLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxHQUFHLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUN0RSxvQkFBb0IsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFNBQVMsT0FBTyxHQUFHO0FBQ2pFLHdCQUF3QixhQUFhLEVBQUUsQ0FBQztBQUN4QztBQUNBLHdCQUF3QixHQUFHLGFBQWEsS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzlELDRCQUE0QixlQUFlLEVBQUUsQ0FBQztBQUM5Qyx5QkFBeUI7QUFDekIscUJBQXFCLENBQUMsQ0FBQztBQUN2QixvQkFBb0IsT0FBTztBQUMzQixpQkFBaUI7QUFDakI7QUFDQSxnQkFBZ0IsS0FBSyxJQUFJQSxVQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO0FBQ2xFO0FBQ0EsZ0JBQWdCSyxjQUFZLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNyRCxnQkFBZ0IsT0FBTyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxpQkFBaUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxTQUFTLG1CQUFtQixDQUFDLE9BQU8sRUFBRTtBQUN2SixvQkFBb0IsS0FBSyxJQUFJTCxVQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO0FBQ3JFO0FBQ0Esb0JBQW9CLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsRUFBRTtBQUN4RCx3QkFBd0JLLGNBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMvRCx3QkFBd0JBLGNBQVksQ0FBQyxRQUFRLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzlELHdCQUF3QixpQkFBaUIsQ0FBQyxXQUFXLENBQUMsT0FBTyxFQUFFLGdCQUFnQixDQUFDLENBQUM7QUFDakYsd0JBQXdCLFdBQVcsQ0FBQyxTQUFTLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0FBQ2xFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0IsSUFBSSxLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUNuRSx3QkFBd0IsSUFBSSxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsRUFBRTtBQUN0RCw0QkFBNEIsSUFBSSxLQUFLLEdBQUcsT0FBTyxDQUFDLFdBQVcsQ0FBQztBQUM1RCw0QkFBNEIsSUFBSSxNQUFNLEdBQUcsT0FBTyxDQUFDLFlBQVksQ0FBQztBQUM5RCw0QkFBNEIsSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLEtBQUssS0FBSyxLQUFLLElBQUksS0FBSyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFO0FBQ3RHLGdDQUFnQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUMxRCw2QkFBNkI7QUFDN0IseUJBQXlCO0FBQ3pCO0FBQ0Esd0JBQXdCLEdBQUcsZ0JBQWdCLENBQUMsRUFBRSxDQUFDLEVBQUU7QUFDakQsNEJBQTRCLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUMsRUFBRSxTQUFTLFFBQVEsRUFBRTtBQUM3RSxnQ0FBZ0MsUUFBUSxFQUFFLENBQUM7QUFDM0MsNkJBQTZCLENBQUMsQ0FBQztBQUMvQix5QkFBeUI7QUFDekIscUJBQXFCLE1BQU07QUFDM0I7QUFDQSx3QkFBd0IsS0FBSyxJQUFJTCxVQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSw4Q0FBOEMsQ0FBQyxDQUFDO0FBQ2xHLHFCQUFxQjtBQUNyQjtBQUNBLG9CQUFvQixPQUFPLGdCQUFnQixDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ2hEO0FBQ0Esb0JBQW9CLGFBQWEsRUFBRSxDQUFDO0FBQ3BDLG9CQUFvQixHQUFHLGFBQWEsS0FBSyxRQUFRLENBQUMsTUFBTSxFQUFFO0FBQzFELHdCQUF3QixlQUFlLEVBQUUsQ0FBQztBQUMxQyxxQkFBcUI7QUFDckIsaUJBQWlCLENBQUMsQ0FBQztBQUNuQixhQUFhO0FBQ2I7QUFDQSxZQUFZLEtBQUssSUFBSUEsVUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUscUNBQXFDLENBQUMsQ0FBQztBQUM3RTtBQUNBO0FBQ0EsWUFBWSxXQUFXLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQztBQUN0RCxZQUFZLGFBQWEsRUFBRSxDQUFDO0FBQzVCLFNBQVMsQ0FBQyxDQUFDO0FBQ1g7QUFDQSxRQUFRLEdBQUcsYUFBYSxLQUFLLFFBQVEsQ0FBQyxNQUFNLEVBQUU7QUFDOUMsWUFBWSxlQUFlLEVBQUUsQ0FBQztBQUM5QixTQUFTO0FBQ1QsS0FBSztBQUNMO0FBQ0EsSUFBSSxTQUFTLFNBQVMsQ0FBQyxRQUFRLEVBQUU7QUFDakMsUUFBUSxHQUFHLENBQUMsUUFBUSxFQUFFO0FBQ3RCLFlBQVksT0FBT0EsVUFBUSxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBQyxDQUFDO0FBQ3ZFLFNBQVM7QUFDVDtBQUNBLFFBQVEsSUFBSSxTQUFTLENBQUMsUUFBUSxDQUFDLEVBQUU7QUFDakM7QUFDQSxZQUFZLFFBQVEsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ2xDLFNBQVMsTUFBTSxJQUFJLFlBQVksQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzQztBQUNBO0FBQ0EsWUFBWSxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0FBQ3pDLFNBQVMsTUFBTTtBQUNmLFlBQVksT0FBT0EsVUFBUSxDQUFDLEtBQUssQ0FBQywyRUFBMkUsQ0FBQyxDQUFDO0FBQy9HLFNBQVM7QUFDVDtBQUNBLFFBQVEsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLE9BQU8sRUFBRTtBQUM3QyxZQUFZLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdELFlBQVksaUJBQWlCLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ2pELFlBQVksWUFBWSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM3QyxTQUFTLENBQUMsQ0FBQztBQUNYLEtBQUs7QUFDTDtBQUNBLElBQUksU0FBUyxZQUFZLENBQUMsY0FBYyxFQUFFO0FBQzFDLFFBQVEsaUJBQWlCLENBQUMsWUFBWSxJQUFJLGlCQUFpQixDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsQ0FBQztBQUN6RixLQUFLO0FBQ0w7QUFDQSxJQUFJLE9BQU87QUFDWCxRQUFRLFFBQVEsRUFBRSxRQUFRO0FBQzFCLFFBQVEsY0FBYyxFQUFFLG9CQUFvQixDQUFDLGNBQWM7QUFDM0QsUUFBUSxrQkFBa0IsRUFBRSxvQkFBb0IsQ0FBQyxrQkFBa0I7QUFDbkUsUUFBUSxTQUFTLEVBQUUsU0FBUztBQUM1QixRQUFRLFlBQVksRUFBRSxZQUFZO0FBQ2xDLEtBQUssQ0FBQztBQUNOLENBQUMsQ0FBQztBQUNGO0FBQ0EsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUU7QUFDaEQsSUFBSSxJQUFJLEtBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDOUI7QUFDQSxJQUFJLEdBQUcsQ0FBQyxLQUFLLEtBQUssU0FBUyxJQUFJLEtBQUssS0FBSyxJQUFJLEtBQUssWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUM5RSxRQUFRLE9BQU8sWUFBWSxDQUFDO0FBQzVCLEtBQUs7QUFDTDtBQUNBLElBQUksT0FBTyxLQUFLLENBQUM7QUFDakI7O0FDclVBLElBQUksR0FBRyxHQUFHUyxxQkFBMEIsQ0FBQyxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0FBQzdELFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDdkMsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztBQUNuQyxJQUFJLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQztBQUNqQyxJQUFJLE9BQU87QUFDWCxRQUFRLE1BQU0sRUFBRSxVQUFVLFVBQVUsRUFBRTtBQUN0QyxZQUFZLEdBQUcsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3hELFlBQVksR0FBRyxDQUFDLFFBQVEsQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUM7QUFDOUMsWUFBWSxjQUFjLEdBQUcsVUFBVSxDQUFDO0FBQ3hDLFNBQVM7QUFDVCxRQUFRLE9BQU8sRUFBRSxZQUFZO0FBQzdCLFlBQVksR0FBRyxDQUFDLGNBQWMsQ0FBQyxPQUFPLEVBQUUsY0FBYyxDQUFDLENBQUM7QUFDeEQsU0FBUztBQUNULEtBQUssQ0FBQztBQUNOOztBQ2JBLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDO0FBVzVCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTLFFBQVEsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFHLElBQUksRUFBRTtBQUN2QyxJQUFJLElBQUksSUFBSSxDQUFDO0FBQ2IsSUFBSSxNQUFNLFdBQVcsR0FBRyxJQUFJLEdBQUcsRUFBRSxDQUFDO0FBQ2xDLElBQUksU0FBUyxHQUFHLENBQUMsU0FBUyxFQUFFO0FBQzVCLFFBQVEsSUFBSSxjQUFjLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFO0FBQzlDLFlBQVksS0FBSyxHQUFHLFNBQVMsQ0FBQztBQUM5QixZQUFZLElBQUksSUFBSSxFQUFFO0FBQ3RCLGdCQUFnQixNQUFNLFNBQVMsR0FBRyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztBQUMzRCxnQkFBZ0IsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7QUFDdEQsb0JBQW9CLFVBQVUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0FBQ3BDLG9CQUFvQixnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO0FBQzdELGlCQUFpQjtBQUNqQixnQkFBZ0IsSUFBSSxTQUFTLEVBQUU7QUFDL0Isb0JBQW9CLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRTtBQUN6RSx3QkFBd0IsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEUscUJBQXFCO0FBQ3JCLG9CQUFvQixnQkFBZ0IsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0FBQ2hELGlCQUFpQjtBQUNqQixhQUFhO0FBQ2IsU0FBUztBQUNULEtBQUs7QUFDTCxJQUFJLFNBQVMsTUFBTSxDQUFDLEVBQUUsRUFBRTtBQUN4QixRQUFRLEdBQUcsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN2QixLQUFLO0FBQ0wsSUFBSSxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUUsVUFBVSxHQUFHLElBQUksRUFBRTtBQUMvQyxRQUFRLE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0FBQzdDLFFBQVEsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNwQyxRQUFRLElBQUksV0FBVyxDQUFDLElBQUksS0FBSyxDQUFDLEVBQUU7QUFDcEMsWUFBWSxJQUFJLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztBQUN0QyxTQUFTO0FBQ1QsUUFBUSxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUM7QUFDbkIsUUFBUSxPQUFPLE1BQU07QUFDckIsWUFBWSxXQUFXLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0FBQzNDLFlBQVksSUFBSSxXQUFXLENBQUMsSUFBSSxLQUFLLENBQUMsRUFBRTtBQUN4QyxnQkFBZ0IsSUFBSSxFQUFFLENBQUM7QUFDdkIsZ0JBQWdCLElBQUksR0FBRyxJQUFJLENBQUM7QUFDNUIsYUFBYTtBQUNiLFNBQVMsQ0FBQztBQUNWLEtBQUs7QUFDTCxJQUFJLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxDQUFDO0FBQ3RDOztBQ3RETSxTQUFVLFlBQVksQ0FBQyxHQUFRLEVBQUE7O0lBRW5DLElBQUksVUFBVSxHQUFlLEVBQWdCLENBQUE7QUFFN0MsSUFBQSxNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFBO0FBRTdCLElBQUEsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxLQUFJO0FBQzlELFFBQUEsSUFBSSxnQkFBZ0IsR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFBO1FBQzNELElBQUksVUFBVSxHQUFXLGdCQUFnQjtBQUN2QyxjQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDeEUsY0FBRSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDakMsSUFBSSxPQUFPLEdBQVcsZ0JBQWdCO2NBQ2xDLE9BQU8sQ0FBQyxJQUFJO0FBQ2Q7QUFDRSxnQkFBQSxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQzlDLElBQUksT0FBTyxJQUFjLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUNqRCxZQUFBLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDO0FBQ2pDLFlBQUEsRUFBRSxDQUFhLENBQUE7O1FBR2pCLFNBQVMsYUFBYSxDQUFDLE1BQWMsRUFBQTtZQUNuQyxJQUFJLFNBQVMsR0FBZ0IsRUFBaUIsQ0FBQTtZQUM5QyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEVBQUU7QUFDcEIsZ0JBQUEsU0FBUyxDQUFDLFNBQVMsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFBO0FBQ3RDLGdCQUFBLFNBQVMsQ0FBQyxlQUFlLEdBQUcscUJBQXFCLENBQy9DLE1BQU0sQ0FBQyxTQUFTLENBQ2pCLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQ1osYUFBQTtBQUNELFlBQUEsU0FBUyxDQUFDLEdBQUcsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFBO1lBQzFCLFNBQVMsQ0FBQyxRQUFRLEdBQUcsa0JBQWtCLENBQUMsRUFBRSxFQUFFLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQTtBQUV4RCxZQUFBLE9BQU8sU0FBUyxDQUFBO1NBQ2pCOztBQUdELFFBQUEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sS0FBSTtBQUN6QixZQUFBLElBQUksU0FBUyxHQUFHLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtBQUNyQyxZQUFBLElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUU7Z0JBQ25CLFVBQVUsQ0FBQyxFQUFFLENBQUMsR0FBRztvQkFDZixFQUFFO29CQUNGLFVBQVU7b0JBQ1YsT0FBTztvQkFDUCxPQUFPLEVBQUUsQ0FBQyxTQUFTLENBQUM7aUJBQ3JCLENBQUE7QUFDRixhQUFBO0FBQU0saUJBQUE7Z0JBQ0wsVUFBVSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7QUFDdkMsYUFBQTtBQUNILFNBQUMsQ0FBQyxDQUFBO0FBQ0osS0FBQyxDQUFDLENBQUE7QUFDRixJQUFBLE9BQU8sVUFBVSxDQUFBO0FBQ25CLENBQUM7QUFVRDtBQUNBO0FBQ0E7QUFDQTtTQUNnQixrQkFBa0IsQ0FBQyxFQUFVLEVBQUUsTUFBYyxFQUFFLEdBQVEsRUFBQTtJQUNyRSxJQUFJLFFBQVEsR0FBWSxLQUFLLENBQUE7SUFDN0IsSUFBSSxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUE7SUFDakQsSUFBSSxXQUFXLEdBQUcsR0FBRyxDQUFDLGFBQWEsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUV6RCxJQUFBLElBQUksVUFBVSxFQUFFO0FBQ2QsUUFBQSxLQUFLLElBQUksWUFBWSxJQUFJLFVBQVUsRUFBRTs7WUFFbkMsSUFDRSxZQUFZLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU07Z0JBQ3pELFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxFQUFFLEtBQUssS0FBSTtvQkFDL0MsT0FBTyxRQUFRLEtBQUssTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtBQUM3QyxpQkFBQyxDQUFDO0FBQ0YsZ0JBQUEsWUFBWSxDQUFDLEdBQUcsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUMvQjtnQkFDQSxRQUFRLEdBQUcsSUFBSSxDQUFBO0FBQ2hCLGFBQUE7QUFBTSxpQkFBQTtnQkFDTCxRQUFRLEdBQUcsS0FBSyxDQUFBO0FBQ2pCLGFBQUE7QUFDRixTQUFBO0FBQ0YsS0FBQTs7SUFHRCxJQUFJLFdBQVcsS0FBSyxTQUFTLEVBQUU7QUFDN0IsUUFBQSxLQUFLLElBQUksYUFBYSxJQUFJLFdBQVcsRUFBRTtZQUNyQyxJQUNFLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTTtnQkFDMUQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFJO29CQUNoRCxPQUFPLFFBQVEsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdDLGlCQUFDLENBQUM7QUFDRixnQkFBQSxhQUFhLENBQUMsR0FBRyxLQUFLLE1BQU0sQ0FBQyxHQUFHLEVBQ2hDO2dCQUNBLFFBQVEsR0FBRyxLQUFLLENBQUE7QUFDakIsYUFBQTtBQUFNLGlCQUFBO2dCQUNMLFFBQVEsR0FBRyxJQUFJLENBQUE7QUFDaEIsYUFBQTtBQUNGLFNBQUE7QUFDRixLQUFBO1NBQU0sSUFBSSxXQUFXLEtBQUssU0FBUyxFQUFFO1FBQ3BDLFFBQVEsR0FBRyxJQUFJLENBQUE7QUFDaEIsS0FBQTtBQUNELElBQUEsT0FBTyxRQUFRLENBQUE7QUFDakIsQ0FBQztBQUVEO0FBQ2dCLFNBQUEsaUJBQWlCLENBQUMsU0FBaUIsRUFBRSxNQUFjLEVBQUE7SUFDakUsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFBO0FBQ3ZCLElBQUEsSUFBSSxRQUFRLEdBQUcsWUFBWSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQ2hDLEtBQUssSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUM1QyxRQUFBLElBQUksZ0JBQWdCLEdBQUcsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFBO1FBQ2pDLElBQUksY0FBYyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUE7UUFFdkMsSUFBSSxnQkFBZ0IsS0FBSyxTQUFTLEVBQUU7QUFDbEMsWUFBQSxLQUFLLElBQUksYUFBYSxJQUFJLGNBQWMsRUFBRTtBQUN4QyxnQkFBQSxJQUNFLGFBQWEsQ0FBQyxHQUFHLEtBQUssTUFBTSxDQUFDLEdBQUc7b0JBQ2hDLGFBQWEsQ0FBQyxTQUFTLENBQUMsTUFBTSxLQUFLLE1BQU0sQ0FBQyxTQUFTLENBQUMsTUFBTTtvQkFDMUQsYUFBYSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLEVBQUUsS0FBSyxLQUFJO3dCQUNoRCxPQUFPLFFBQVEsS0FBSyxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFBO0FBQzdDLHFCQUFDLENBQUMsRUFDRjtvQkFDQSxXQUFXLEdBQUcsSUFBSSxDQUFBO0FBQ25CLGlCQUFBO0FBQ0YsYUFBQTtBQUNGLFNBQUE7QUFDRixLQUFBO0FBRUQsSUFBQSxPQUFPLFdBQVcsQ0FBQTtBQUNwQixDQUFDO0FBRUssU0FBVSxxQkFBcUIsQ0FBQyxTQUFxQixFQUFBO0lBQ3pELElBQUksa0JBQWtCLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQWtCLEtBQUk7UUFDNUQsSUFBSSxRQUFRLEtBQUssS0FBSyxFQUFFOztBQUV0QixZQUFBLElBQUlDLGlCQUFRLENBQUMsT0FBTyxLQUFLLElBQUksRUFBRTtBQUM3QixnQkFBQSxPQUFPLEtBQUssQ0FBQTtBQUNiLGFBQUE7QUFBTSxpQkFBQTtBQUNMLGdCQUFBLE9BQU8sTUFBTSxDQUFBO0FBQ2QsYUFBQTtBQUNGLFNBQUE7UUFDRCxJQUFJLFFBQVEsS0FBSyxNQUFNLEVBQUU7O0FBRXZCLFlBQUEsSUFBSUEsaUJBQVEsQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO0FBQzdCLGdCQUFBLE9BQU8sS0FBSyxDQUFBO0FBQ2IsYUFBQTtBQUFNLGlCQUFBO0FBQ0wsZ0JBQUEsT0FBTyxLQUFLLENBQUE7QUFDYixhQUFBO0FBQ0YsU0FBQTtBQUNELFFBQUEsT0FBTyxRQUFRLENBQUE7QUFDakIsS0FBQyxDQUFDLENBQUE7QUFDRixJQUFBLE9BQU8sa0JBQThCLENBQUE7QUFDdkMsQ0FBQztBQXlCRDtBQUNNLFNBQVUsYUFBYSxDQUFDLFNBQWdDLEVBQUE7SUFDNUQsSUFBSSxlQUFlLEdBQUcsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsRUFBRSxDQUFTLEtBQUk7UUFDNUQsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFO1lBQ2YsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUNWLFNBQUE7UUFDRCxJQUFJLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDZixZQUFBLE9BQU8sQ0FBQyxDQUFBO0FBQ1QsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ1YsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUNoQixZQUFBLE9BQU8sQ0FBQyxDQUFBO0FBQ1QsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtZQUNoQixPQUFPLENBQUMsQ0FBQyxDQUFBO0FBQ1YsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLE1BQU0sRUFBRTtBQUNoQixZQUFBLE9BQU8sQ0FBQyxDQUFBO0FBQ1QsU0FBQTtRQUNELElBQUksQ0FBQyxLQUFLLEtBQUssRUFBRTtZQUNmLE9BQU8sQ0FBQyxDQUFDLENBQUE7QUFDVixTQUFBO1FBQ0QsSUFBSSxDQUFDLEtBQUssS0FBSyxFQUFFO0FBQ2YsWUFBQSxPQUFPLENBQUMsQ0FBQTtBQUNULFNBQUE7UUFDRCxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUU7WUFDakIsT0FBTyxDQUFDLENBQUMsQ0FBQTtBQUNWLFNBQUE7UUFDRCxJQUFJLENBQUMsS0FBSyxPQUFPLEVBQUU7QUFDakIsWUFBQSxPQUFPLENBQUMsQ0FBQTtBQUNULFNBQUE7QUFDSCxLQUFDLENBQUMsQ0FBQTtBQUNGLElBQUEsT0FBTyxlQUE2QixDQUFBO0FBQ3RDOztBQ3pOTyxNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsRUFBRSxFQUFDO0FBQzlCLE1BQU0sZUFBZSxHQUFHLFFBQVEsQ0FBQyxFQUFFOztBQ0gxQyxJQUFJLGlCQUFpQixHQUFHO0FBQ3hCLEVBQUUsS0FBSyxFQUFFLDRCQUE0QjtBQUNyQyxFQUFFLEtBQUssRUFBRSxFQUFFO0FBQ1gsRUFBRSxNQUFNLEVBQUUsRUFBRTtBQUNaLEVBQUUsT0FBTyxFQUFFLFdBQVc7QUFDdEIsRUFBRSxJQUFJLEVBQUUsTUFBTTtBQUNkLEVBQUUsTUFBTSxFQUFFLGNBQWM7QUFDeEIsRUFBRSxjQUFjLEVBQUUsQ0FBQztBQUNuQixFQUFFLGdCQUFnQixFQUFFLE9BQU87QUFDM0IsRUFBRSxpQkFBaUIsRUFBRSxPQUFPO0FBQzVCLENBQUM7Ozs7Ozs7Ozs7OztFQ0RLLGlCQUFpQjtrQkFDakIsR0FBVyxDQUFBLENBQUEsQ0FBQTtvQkFDUixHQUFJLENBQUEsQ0FBQSxDQUFBLEVBQUE7cUJBQ0gsR0FBSSxDQUFBLENBQUEsQ0FBQSxFQUFBO3NCQUNKLEdBQUssQ0FBQSxDQUFBLENBQUEsRUFBQTtvQ0FDQyxHQUFXLENBQUEsQ0FBQSxDQUFBLEVBQUE7O0FBQ1csR0FBQSxLQUFBLEVBQUEsZUFBQSxHQUFBLENBQUEsMEJBQUEsV0FBQSxHQUFJLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxjQUFBLEdBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxLQUFLLElBQUksRUFBRSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBUGpFLE1BVUssQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBVEMsaUJBQWlCO2tEQUNqQixHQUFXLENBQUEsQ0FBQSxDQUFBOzBEQUNSLEdBQUksQ0FBQSxDQUFBLENBQUEsRUFBQTsyREFDSCxHQUFJLENBQUEsQ0FBQSxDQUFBLEVBQUE7NkRBQ0osR0FBSyxDQUFBLENBQUEsQ0FBQSxFQUFBO2lGQUNDLEdBQVcsQ0FBQSxDQUFBLENBQUEsRUFBQTtBQUNXLElBQUEsQ0FBQSxDQUFBLE9BQUEsSUFBQSxLQUFBLHFCQUFBLEVBQUEsSUFBQSxlQUFBLE1BQUEsZUFBQSxHQUFBLENBQUEsMEJBQUEsV0FBQSxHQUFJLENBQUksQ0FBQSxDQUFBLENBQUEsQ0FBQSxjQUFBLEdBQU8sQ0FBQyxDQUFBLENBQUEsQ0FBQSxLQUFLLElBQUksRUFBRSxDQUFBLENBQUEsQ0FBQSxLQUFBLEVBQUEsS0FBQSxFQUFBLGVBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FicEQsSUFBQSxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ0EsQ0FBQSxJQUFBLEVBQUEsS0FBSyxHQUFHLGNBQWEsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUNyQixDQUFBLElBQUEsRUFBQSxJQUFJLEdBQUcsRUFBQSxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ1AsQ0FBQSxJQUFBLEVBQUEsV0FBVyxHQUFHLENBQUEsRUFBQSxHQUFBLE9BQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQXpCLE1BQStCLENBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7R0FDL0IsTUFBOEIsQ0FBQSxNQUFBLEVBQUEsT0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpRUFGSixHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUdBQVAsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ0NqQyxNQUFtQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ25DLE1BQW1ELENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7R0FDbkQsTUFBa0MsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOztHQUNsQyxNQUFvQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ3BDLE1BQW9DLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkRBTGQsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lHQUFQLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQzdCLE1BQThELENBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzZEQUR4QyxHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUdBQVAsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0NDN0IsTUFBcUIsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOztHQUNyQixNQUFzQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ3RDLE1BQXFCLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7R0FDckIsTUFBdUMsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUVBSmIsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2lHQUFQLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dDQ2pDLE1BQWlILENBQUEsTUFBQSxFQUFBLE9BQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzJEQUQ3RixHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7aUdBQVAsR0FBTyxDQUFBLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQ0MzQixNQUFvQyxDQUFBLE1BQUEsRUFBQSxLQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7O0dBQ3BDLE1BQW9DLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7d0RBRm5CLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztpR0FBUCxHQUFPLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs4QkMrQ2YsR0FBTyxDQUFBLENBQUEsQ0FBQSxnQkFBSSxHQUFPLENBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRTtlQUFHLEdBQU8sQ0FBQSxDQUFBLENBQUE7Z0JBQUcsR0FBUSxDQUFBLENBQUEsQ0FBQSxJQUFBLEVBQUEsQ0FBQTs7Ozs7Ozs7Ozs7a0VBUnhDLEdBQVMsQ0FBQSxDQUFBLENBQUE7QUFBRyxLQUFBLGFBQWEsZUFBQyxHQUFTLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FBSSxDQUFDLENBQUEsQ0FBQTs7d0NBQ3hDLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO0FBQ0gsR0FBQSxZQUFBLENBQUEsR0FBQSxFQUFBLFdBQUEsWUFBQSxHQUFLLFFBQUssUUFBUSxDQUFBLENBQUE7aURBQ2pCLEdBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7OztBQUNYLGVBQUEsR0FBTSxRQUFLLENBQUM7OEJBQWdCLEdBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7TUFBUSxRQUFROzs7Ozs7O0FBQy9DLGNBQUEsR0FBSyxRQUFLLENBQUM7NkJBQWdCLEdBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7TUFBUSxRQUFROzs7OztHQVByRSxNQVdNLENBQUEsTUFBQSxFQUFBLEdBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7OzttREFITSxHQUFXLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7bUZBRWQsR0FBTyxDQUFBLENBQUEsQ0FBQSxnQkFBSSxHQUFPLENBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRTtpQkFBRyxHQUFPLENBQUEsQ0FBQSxDQUFBO2tCQUFHLEdBQVEsQ0FBQSxDQUFBLENBQUEsSUFBQSxFQUFBLENBQUEsRUFBQSxHQUFBLENBQUEsU0FBQSxHQUFBLFNBQUE7bUdBUnhDLEdBQVMsQ0FBQSxDQUFBLENBQUE7QUFBRyxLQUFBLGFBQWEsZUFBQyxHQUFTLENBQUEsQ0FBQSxDQUFBLENBQUE7S0FBSSxDQUFDLENBQUEsRUFBQTs7Ozs7eUNBQ3hDLEdBQU8sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7O0FBQ0gsSUFBQSxZQUFBLENBQUEsR0FBQSxFQUFBLFdBQUEsWUFBQSxHQUFLLFFBQUssUUFBUSxDQUFBLENBQUE7Ozs7a0RBQ2pCLEdBQVMsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7O0FBQ1gsZ0JBQUEsR0FBTSxRQUFLLENBQUM7K0JBQWdCLEdBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7T0FBUSxRQUFROzs7Ozs7Ozs7QUFDL0MsZUFBQSxHQUFLLFFBQUssQ0FBQzs4QkFBZ0IsR0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQTtPQUFRLFFBQVE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Y0FWaEQsR0FBSyxDQUFBLENBQUEsQ0FBQTs2QkFBZ0IsR0FBSyxDQUFBLENBQUEsQ0FBQSxDQUFBLEdBQUEsQ0FBQTtNQUFRLFFBQVE7Ozs7O0dBRi9ELE1BR0UsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7O2VBRG1CLEdBQUssQ0FBQSxDQUFBLENBQUE7OEJBQWdCLEdBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQSxHQUFBLENBQUE7T0FBUSxRQUFROzs7Ozs7Ozs7Ozs7Ozs7QUFINUQsRUFBQSxpQkFBQSxHQUFRLFFBQUssT0FBTyxFQUFBLE9BQUFDLGlCQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBbEJkLFNBQUEsYUFBYSxDQUFDLE1BQWMsRUFBQTtBQUMvQixDQUFBLElBQUEsTUFBTSxJQUFJLENBQUMsRUFBQTtTQUNOLENBQUMsQ0FBQTtBQUNDLEVBQUEsTUFBQSxJQUFBLE1BQU0sR0FBRyxDQUFDLElBQUksTUFBTSxHQUFHLENBQUMsRUFBQTtTQUMxQixNQUFNLENBQUE7O1NBRU4sQ0FBQyxDQUFBOzs7OztBQW5CRCxDQUFBLElBQUEsRUFBQSxRQUFRLEdBQVcsRUFBRSxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ3JCLENBQUEsSUFBQSxFQUFBLFNBQVMsR0FBVyxFQUFFLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDdEIsQ0FBQSxJQUFBLEVBQUEsT0FBTyxJQUFZLENBQUMsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUNwQixDQUFBLElBQUEsRUFBQSxTQUFTLEdBQVcsQ0FBQyxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ3JCLENBQUEsSUFBQSxFQUFBLFNBQVMsR0FBWSxLQUFLLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDMUIsQ0FBQSxJQUFBLEVBQUEsS0FBSyxHQUFXLENBQUMsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUNqQixDQUFBLElBQUEsRUFBQSxNQUFNLEdBQVcsQ0FBQyxFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQ2xCLENBQUEsSUFBQSxFQUFBLE9BQU8sR0FBVyxFQUFFLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDcEIsS0FBK0QsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQWVwRSxDQUFBLE1BQUEsUUFBUSxHQUFHLHFCQUFxQixFQUFBLENBQUE7O09BQ2hDLFdBQVcsR0FBQSxNQUFBO0FBQ1gsRUFBQSxJQUFBLEtBQUssS0FBSyxVQUFVLEVBQUE7QUFDdEIsR0FBQSxRQUFRLENBQUMsY0FBYyxFQUFHLENBQUEsT0FBTyxFQUFFLFNBQVMsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQytONUIsRUFBQSxRQUFBLFVBQUEsR0FBRyxLQUFDLEtBQUs7QUFDUixFQUFBLFNBQUEsd0JBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE1BQU07QUFDckMsRUFBQSxPQUFBLHdCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxPQUFPO0FBQ2xDLEVBQUEsU0FBQSx3QkFBQSxHQUFpQixDQUFDLENBQUEsQ0FBQSxTQUFBLEdBQUcsQ0FBQyxFQUFBLENBQUEsQ0FBQSxLQUFLLEVBQUUsU0FBUztBQUN4QyxFQUFBLE9BQUEsd0JBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE9BQU87QUFDdEMsRUFBQSxLQUFBLFVBQUEsR0FBRyxLQUFDLEtBQUs7QUFDUixFQUFBLE1BQUEsVUFBQSxHQUFHLEtBQUMsTUFBTTs7O0FBQ0YsQ0FBQSwwQkFBQSxHQUFpQixDQUFDLENBQUEsQ0FBQSxTQUFBLEdBQUcsQ0FBQyxFQUFBLENBQUEsQ0FBQSxLQUFLLEVBQUUsTUFBTSxLQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQW5DLEVBQUEsaUJBQUEsQ0FBQSxTQUFBLHlCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxNQUFNLENBQUE7OztBQUN2QyxDQUFBLDBCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxLQUFLLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBbEMsRUFBQSxpQkFBQSxDQUFBLEtBQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLEtBQUssQ0FBQTs7Ozs7O29EQUM3QixHQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7OztBQVRyQixHQUFBLElBQUEsS0FBQSxzQkFBQSxDQUFBLEVBQUEsbUJBQUEsQ0FBQSxRQUFBLFdBQUEsR0FBRyxLQUFDLEtBQUssQ0FBQTtBQUNSLEdBQUEsSUFBQSxLQUFBLHlDQUFBLENBQUEsRUFBQSxtQkFBQSxDQUFBLFNBQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE1BQU0sQ0FBQTtBQUNyQyxHQUFBLElBQUEsS0FBQSx5Q0FBQSxDQUFBLEVBQUEsbUJBQUEsQ0FBQSxPQUFBLHlCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxPQUFPLENBQUE7QUFDbEMsR0FBQSxJQUFBLEtBQUEseUNBQUEsQ0FBQSxFQUFBLG1CQUFBLENBQUEsU0FBQSx5QkFBQSxHQUFpQixDQUFDLENBQUEsQ0FBQSxTQUFBLEdBQUcsQ0FBQyxFQUFBLENBQUEsQ0FBQSxLQUFLLEVBQUUsU0FBUyxDQUFBO0FBQ3hDLEdBQUEsSUFBQSxLQUFBLHlDQUFBLENBQUEsRUFBQSxtQkFBQSxDQUFBLE9BQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE9BQU8sQ0FBQTtBQUN0QyxHQUFBLElBQUEsS0FBQSxzQkFBQSxDQUFBLEVBQUEsbUJBQUEsQ0FBQSxLQUFBLFdBQUEsR0FBRyxLQUFDLEtBQUssQ0FBQTtBQUNSLEdBQUEsSUFBQSxLQUFBLHNCQUFBLENBQUEsRUFBQSxtQkFBQSxDQUFBLE1BQUEsV0FBQSxHQUFHLEtBQUMsTUFBTSxDQUFBOzs7O0FBQ0YsSUFBQSxtQkFBQSxDQUFBLFNBQUEseUJBQUEsR0FBaUIsQ0FBQyxDQUFBLENBQUEsU0FBQSxHQUFHLENBQUMsRUFBQSxDQUFBLENBQUEsS0FBSyxFQUFFLE1BQU0sQ0FBQTs7Ozs7O0FBQ3ZDLElBQUEsbUJBQUEsQ0FBQSxLQUFBLHlCQUFBLEdBQWlCLENBQUMsQ0FBQSxDQUFBLFNBQUEsR0FBRyxDQUFDLEVBQUEsQ0FBQSxDQUFBLEtBQUssRUFBRSxLQUFLLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBVjNDLEdBQUcsQ0FBQSxFQUFBLENBQUEsQ0FBQTs7O2tDQUFSLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OzsyQkFBQyxHQUFHLENBQUEsRUFBQSxDQUFBLENBQUE7OztpQ0FBUixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7OzswQkFBSixNQUFJLEVBQUEsQ0FBQSxHQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7OztvQ0FBSixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBREQsQ0FBQSxJQUFBLFlBQUEsZUFBQSxHQUFPLEtBQUMsSUFBSSxDQUFBOzs7a0NBQWpCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBREksR0FBQSxJQUFBLENBQUEsR0FBQSxFQUFBLE9BQUEsRUFBQSxlQUFBLEdBQUEsRUFBQSxJQUFBLGFBQUEsYUFBQSxHQUFPLEtBQUMsSUFBSSxDQUFBLEdBQUEsZ0JBQUEsQ0FBQSxDQUFBLENBQUE7OztHQUF4QixNQWtCTSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7QUFqQkcsSUFBQSxZQUFBLGVBQUEsR0FBTyxLQUFDLElBQUksQ0FBQTs7O2lDQUFqQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7OzswQkFBSixNQUFJLEVBQUEsQ0FBQSxHQUFBLFdBQUEsQ0FBQSxNQUFBLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7OztBQURJLEdBQUEsSUFBQSxDQUFBLE9BQUEsSUFBQSxLQUFBLHNCQUFBLENBQUEsSUFBQSxlQUFBLE1BQUEsZUFBQSxHQUFBLEVBQUEsSUFBQSxhQUFBLGFBQUEsR0FBTyxLQUFDLElBQUksQ0FBQSxHQUFBLGdCQUFBLENBQUEsQ0FBQSxFQUFBOzs7Ozs7O29DQUNwQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3FDQUZILEdBQWMsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7O2dDQUFuQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7NENBMEJlLEVBQUUsRUFBQSxFQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7YUFDZixnQkFFUixDQUFBLENBQUE7Ozs7OzRDQTlCdUQsYUFBYSxDQUFBLENBQUE7OztHQUF0RSxNQStCTSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7R0FUSixNQVFNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBSkosTUFFTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7OztvQ0EzQkQsR0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7K0JBQW5CLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7O3dCQUFKLE1BQUksRUFBQSxDQUFBLEdBQUEsV0FBQSxDQUFBLE1BQUEsRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7O2tDQUFKLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBck9GLElBQUEsYUFBYSxHQUFXLG1CQUFtQixDQUFBOzs7Ozs7O09BTHBDLGVBQThCLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FHOUIsY0FBd0IsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUN4QixpQkFBaUIsR0FBQSxFQUFBLEVBQUEsR0FBQSxPQUFBLENBQUE7O0FBb0JuQixDQUFBLFNBQUEsYUFBYSxDQUFDLFFBQWdCLEVBQUUsSUFBM0MsR0FBbUUsTUFBTSxFQUFBO0FBQzVELEVBQUEsS0FBQSxJQUFBLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFBLEVBQUE7QUFFaEQsR0FBQSxJQUFBLElBQUksS0FBSyxNQUFNLElBQ2YsUUFBUSxDQUFDLGlCQUFpQixFQUFPLEtBQUEsT0FBTyxDQUFDLENBQUMsQ0FBRSxDQUFBLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQSxFQUFBO1dBRTFELE9BQU8sQ0FBQTtBQUVkLElBQUEsTUFBQSxJQUFBLElBQUksS0FBSyxNQUFNLElBQ2YsUUFBUSxDQUFDLGlCQUFpQixFQUFPLEtBQUEsT0FBTyxDQUFDLENBQUMsQ0FBRSxDQUFBLElBQUksQ0FBQyxpQkFBaUIsRUFBQSxJQUNsRSxRQUFRLENBQUMsaUJBQWlCLEVBQUEsQ0FBRyxPQUFPLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDL0MsS0FBQSxPQUFPLENBQUMsQ0FBQyxDQUFFLENBQUEsR0FBRyxDQUFDLGlCQUFpQixFQUFBLEVBQUE7V0FFM0IsT0FBTyxDQUFBO0FBQ0wsSUFBQSxNQUFBLElBQUEsUUFBUSxLQUFLLE9BQU8sRUFBQTtBQUNyQixJQUFBLE9BQUEsQ0FBQSxPQUFPLElBQUksR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFBLENBQUEsQ0FBQTs7Ozs7QUFLM0MsQ0FBQSxTQUFBLFlBQVksQ0FDbkIsY0FBd0IsRUFDeEIsZUFBOEIsRUFDOUIscUJBQStCLEVBQUE7TUFFM0IsWUFBWSxHQUFBLEVBQUEsQ0FBQTs7QUFXUCxFQUFBLEtBQUEsSUFBQSxPQUFPLElBQUksY0FBYyxFQUFBO1lBQ3ZCLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxFQUFBO0FBQ2pCLElBQUEsS0FBQSxJQUFBLEdBQUcsSUFBSSxHQUFHLEVBQUE7U0FDYixVQUFVLEdBQVEsR0FBRyxDQUFDLFVBQVU7QUFDaEMsT0FBQSxhQUFhLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUE7T0FDL0IsYUFBYSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQTs7U0FDdkIsU0FBUyxHQUFXLEdBQUcsQ0FBQyxLQUFLLENBQUE7U0FDN0IsWUFBaUIsQ0FBQTs7U0FFakIsR0FBRyxDQUFDLEtBQUssS0FBSyxPQUFPLEVBQUE7TUFDdkIsWUFBWSxHQUFBO09BQ1YsTUFBTSxFQUFFLEdBQUcsQ0FBQyxLQUFLO0FBQ2pCLE9BQUEsT0FBTyxHQUFHLENBQUM7QUFDWCxPQUFBLEtBQUssRUFBRSxPQUFPOzs7QUFHaEIsTUFBQSxTQUFTLEdBQUcsR0FBRyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUMsQ0FBQyxDQUFBLENBQUUsSUFBSSxHQUFHLFVBQVUsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFBOzs7QUFFL0QsTUFBQSxJQUFBLFNBQVMsS0FBSyxTQUFTLEVBQUE7QUFDekIsT0FBQSxTQUFTLEdBQUcsTUFBTSxDQUFBOztPQUNsQixZQUFZLEdBQUE7QUFDVixRQUFBLE1BQU0sRUFBRSxNQUFNO0FBQ2QsUUFBQSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSztRQUN2QyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNyQixRQUFBLE9BQU8sRUFBRSxNQUFNOztBQUVSLE9BQUEsTUFBQSxJQUFBLFNBQVMsS0FBSyxNQUFNLEVBQUE7V0FDekJELGlCQUFRLENBQUMsT0FBTyxLQUFLLElBQUksRUFBQTtRQUMzQixZQUFZLEdBQUE7QUFDVixTQUFBLE1BQU0sRUFBRSxHQUFHO0FBQ1gsU0FBQSxPQUFPLEVBQUUsRUFBRTtBQUNYLFNBQUEsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUs7QUFDdkMsU0FBQSxPQUFPLEVBQUUsR0FBRzs7O1FBR2QsWUFBWSxHQUFBO0FBQ1YsU0FBQSxNQUFNLEVBQUUsS0FBSztBQUNiLFNBQUEsS0FBSyxFQUFFLFVBQVU7QUFDakIsU0FBQSxTQUFTLEVBQUUsR0FBRyxDQUFDLFNBQVMsR0FBRyxJQUFJLEdBQUcsS0FBSztTQUN2QyxPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNyQixTQUFBLE9BQU8sRUFBRSxHQUFHOzs7QUFHUCxPQUFBLE1BQUEsSUFBQSxTQUFTLEtBQUssS0FBSyxFQUFBO1dBQ3hCQSxpQkFBUSxDQUFDLE9BQU8sS0FBSyxJQUFJLEVBQUE7UUFDM0IsWUFBWSxHQUFBO0FBQ1YsU0FBQSxNQUFNLEVBQUUsR0FBRztBQUNYLFNBQUEsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUs7QUFDdkMsU0FBQSxPQUFPLEVBQUUsRUFBRTtBQUNYLFNBQUEsT0FBTyxFQUFFLEdBQUc7OztBQUdkLFFBQUEsU0FBUyxHQUFHLEtBQUssQ0FBQTs7UUFDakIsWUFBWSxHQUFBO0FBQ1YsU0FBQSxNQUFNLEVBQUUsS0FBSztBQUNiLFNBQUEsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxHQUFHLEtBQUs7U0FDdkMsT0FBTyxFQUFFLFVBQVUsQ0FBQyxDQUFDLENBQUE7Ozs7T0FJekIsWUFBWSxHQUFBO0FBQ1YsUUFBQSxNQUFNLEVBQUUsU0FBUztRQUNqQixPQUFPLEVBQUUsVUFBVSxDQUFDLENBQUMsQ0FBQTtBQUNyQixRQUFBLFNBQVMsRUFBRSxHQUFHLENBQUMsU0FBUyxHQUFHLElBQUksR0FBRyxLQUFLO1FBQ3ZDLE9BQU8sRUFBRSxHQUFHLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQyxDQUFDLENBQUEsQ0FBRSxPQUFPLEdBQUcsRUFBRTs7Ozs7O0FBTXRELEtBQUEsSUFBQSxlQUFlLEtBQUssSUFBSSxFQUFBO0FBRXhCLE1BQUEsSUFBQSxZQUFZLENBQUMsTUFBTSxDQUFDLGlCQUFpQixFQUNyQyxLQUFBLGVBQWUsQ0FBQyxpQkFBaUIsRUFBQSxFQUFBO09BRWpDLFlBQVksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBOzs7OztTQUs3QixxQkFBcUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFBO0FBQzlCLE1BQUEsSUFBQSxxQkFBcUIsQ0FBQyxRQUFRLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQSxFQUFBO09BQ3BELFlBQVksQ0FBQyxLQUFLLEdBQUcsUUFBUSxDQUFBOzs7O0FBSWpDLEtBQUEsWUFBWSxDQUFDLEdBQUcsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFBOzs7OztTQUtyQyxZQUFZLENBQUE7OztVQUdaLGdCQUFnQixDQUN2QixlQUE4QixFQUM5QixZQVNDLEVBQUE7O0FBR1EsRUFBQSxLQUFBLElBQUEsR0FBRyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFBLEVBQUE7QUFDekMsR0FBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUcsQ0FBQSxDQUFBLE1BQU0sR0FBRyxDQUFDLEVBQUEsaUJBQUEsQ0FBQSxDQUFBOzs7QUFHaEMsR0FBQSxJQUFBLFNBQVMsR0FBRyxDQUFDLENBQUE7O0FBRVIsR0FBQSxLQUFBLElBQUEsT0FBTyxJQUFJLGVBQWUsRUFBQTthQUN4QixNQUFNLElBQUksT0FBTyxDQUFDLE9BQU8sRUFBQTtTQUU5QixNQUFNLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFBLEtBQU8sR0FBRyxDQUFDLENBQUMsQ0FBQSxDQUFFLE1BQU0sQ0FBQyxpQkFBaUIsRUFBQSxFQUFBO01BRWxFLFNBQVMsRUFBQSxDQUFBOzs7Y0FFRixRQUFRLElBQUksTUFBTSxDQUFDLFNBQVMsRUFBQTtBQUVqQyxNQUFBLElBQUEscUJBQXFCLENBQUUsQ0FBQSxRQUFRLENBQUcsQ0FBQSxDQUFBLENBQUMsQ0FBRSxDQUFBLGlCQUFpQixFQUN0RCxLQUFBLEdBQUcsQ0FBQyxDQUFDLENBQUUsQ0FBQSxNQUFNLENBQUMsaUJBQWlCLEVBQUEsRUFBQTtPQUUvQixTQUFTLEVBQUEsQ0FBQTs7Ozs7O0FBS2pCLEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFHLENBQUEsQ0FBQSxNQUFNLEdBQUcsU0FBUyxFQUFBLGlCQUFBLENBQUEsQ0FBQTs7OztBQUl2QyxDQUFBLFNBQUEsY0FBYyxDQUFDLENBQWMsRUFBQTtBQUNoQyxFQUFBLElBQUEsT0FBTyxHQUFXLFFBQVEsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBLENBQUE7QUFDckMsRUFBQSxJQUFBLFNBQVMsR0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQSxDQUFBO0FBRTlCLEVBQVksaUJBQWlCLENBQUMsT0FBTyxFQUFFLElBQUc7QUFDMUMsRUFBWSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSTs7O0FBRzNDLEVBQUEsSUFBQSxPQUFPLEtBQUssRUFBRSxJQUFJLE9BQU8sS0FBSyxFQUFFLElBQUksT0FBTyxLQUFLLEVBQUUsSUFBSSxPQUFPLEtBQUssRUFBRSxFQUFBOztPQUdsRSxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFBLEVBQUE7cUNBQ3JDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDdkMsUUFBUSxJQUFLLFFBQVEsS0FBSyxTQUFTLENBQUEsRUFBQSxnQkFBQSxDQUFBLENBQUE7OztxQ0FJdEMsZ0JBQWdCLEdBQUEsQ0FBQSxHQUFPLGdCQUFnQixFQUFFLFNBQVMsQ0FBQSxFQUFBLGdCQUFBLENBQUEsQ0FBQTs7OztBQUloRCxHQUFBLElBQUEsVUFBVSxLQUFLLFNBQVMsRUFBQTtBQUMxQixJQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTs7QUFFZixJQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLFNBQVMsRUFBQSxVQUFBLENBQUEsQ0FBQTs7Ozs7O0FBMkJGLEVBQUEsSUFBQSxNQUFBLENBQUEsRUFBQSxDQUFBLFNBQUEsQ0FBQSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBQSxLQUFBLENBQUEsRUFBQTtBQUFuQyxHQUFBLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsTUFBTSxHQUFBLEtBQUEsQ0FBQTs7Ozs7O0FBQ3ZDLEVBQUEsSUFBQSxNQUFBLENBQUEsRUFBQSxDQUFBLFNBQUEsQ0FBQSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQSxLQUFBLENBQUEsRUFBQTtBQUFsQyxHQUFBLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUUsS0FBSyxHQUFBLEtBQUEsQ0FBQTs7Ozs7QUFVdEMsQ0FBQSxNQUFBLGFBQUEsR0FBQSxNQUFBLE1BQU0sQ0FBQyxJQUFJLENBQUMsNkJBQTZCLEVBQUUsUUFBUSxDQUFBLENBQUE7Ozs7Ozs7Ozs7R0EvQnBFLFlBQUEsQ0FBQSxDQUFBLEVBQUUsaUJBQWlCLEdBQUcsWUFBWSxDQUNqQyxjQUFjLEVBQ2QsVUFBVSxFQUNWLGdCQUFnQixDQUFBLENBQUEsQ0FBQTs7OztBQUxsQixHQUFHLGdCQUFnQixDQUFDLGVBQWUsRUFBRSxpQkFBaUIsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDdkx4RCxTQUFTLFVBQVUsQ0FBQyxDQUFDLEVBQUU7QUFDdkIsSUFBSSxPQUFPLENBQUMsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDLEdBQUcsR0FBRyxFQUFFLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUNoRixDQUFDO0FBSUQsU0FBUyxRQUFRLENBQUMsQ0FBQyxFQUFFO0FBQ3JCLElBQUksTUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQztBQUN0QixJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsR0FBRyxDQUFDO0FBQzNCOztBQ2xDQSxTQUFTLElBQUksQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLFVBQVUsRUFBRSxNQUFNLEdBQUcsQ0FBQyxFQUFFLE9BQU8sR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUU7QUFDdEcsSUFBSSxNQUFNLEtBQUssR0FBRyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN6QyxJQUFJLE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztBQUMxQyxJQUFJLE1BQU0sQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssTUFBTSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQzFELElBQUksTUFBTSxFQUFFLEdBQUcsY0FBYyxJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQztBQUM5QyxJQUFJLE9BQU87QUFDWCxRQUFRLEtBQUs7QUFDYixRQUFRLFFBQVE7QUFDaEIsUUFBUSxNQUFNO0FBQ2QsUUFBUSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLGNBQWMsSUFBSSxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUM7QUFDcEcsS0FBSyxDQUFDO0FBQ04sQ0FBQztBQUNELFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxFQUFFLEtBQUssR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLEdBQUcsRUFBRSxNQUFNLEdBQUdFLFFBQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUN6RSxJQUFJLE1BQU0sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDO0FBQzlDLElBQUksT0FBTztBQUNYLFFBQVEsS0FBSztBQUNiLFFBQVEsUUFBUTtBQUNoQixRQUFRLE1BQU07QUFDZCxRQUFRLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0FBQ3JDLEtBQUssQ0FBQztBQUNOLENBQUM7QUFlRCxTQUFTLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLFFBQVEsR0FBRyxHQUFHLEVBQUUsTUFBTSxHQUFHLFFBQVEsRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUM1RSxJQUFJLE1BQU0sS0FBSyxHQUFHLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLElBQUksTUFBTSxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO0FBQ25DLElBQUksTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUM1QyxJQUFJLE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDckQsSUFBSSxNQUFNLGNBQWMsR0FBRyxVQUFVLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBQzNELElBQUksTUFBTSxVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUNuRCxJQUFJLE1BQU0sYUFBYSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUM7QUFDekQsSUFBSSxNQUFNLGdCQUFnQixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7QUFDOUQsSUFBSSxNQUFNLG1CQUFtQixHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsaUJBQWlCLENBQUMsQ0FBQztBQUNwRSxJQUFJLE9BQU87QUFDWCxRQUFRLEtBQUs7QUFDYixRQUFRLFFBQVE7QUFDaEIsUUFBUSxNQUFNO0FBQ2QsUUFBUSxHQUFHLEVBQUUsQ0FBQyxJQUFJLG1CQUFtQjtBQUNyQyxZQUFZLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3hELFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDdEMsWUFBWSxDQUFDLGFBQWEsRUFBRSxDQUFDLEdBQUcsV0FBVyxDQUFDLEdBQUcsQ0FBQztBQUNoRCxZQUFZLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUM7QUFDdEQsWUFBWSxDQUFDLFlBQVksRUFBRSxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQztBQUM5QyxZQUFZLENBQUMsZUFBZSxFQUFFLENBQUMsR0FBRyxhQUFhLENBQUMsR0FBRyxDQUFDO0FBQ3BELFlBQVksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsR0FBRyxDQUFDO0FBQzFELFlBQVksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDO0FBQ2hFLEtBQUssQ0FBQztBQUNOOzs7QUN4RkEsTUFBTSxDQUFDLGNBQWMsQ0FBQSxPQUFBLEVBQVUsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7QUFDOUQsT0FBdUIsQ0FBQSxZQUFBLEdBQUEsS0FBSyxDQUFDLENBQUM7QUFDOUIsU0FBUyxZQUFZLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtBQUNyQyxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsS0FBSyxFQUFFO0FBQ25DLFFBQVEsT0FBTyxJQUFJO0FBQ25CLFlBQVksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDeEMsWUFBWSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7QUFDbkMsWUFBWSxPQUFPLEVBQUUsQ0FBQztBQUN0QixLQUFLLENBQUM7QUFDTixJQUFJLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3RELElBQUksT0FBTztBQUNYLFFBQVEsT0FBTyxFQUFFLFlBQVk7QUFDN0IsWUFBWSxRQUFRLENBQUMsbUJBQW1CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztBQUNqRSxTQUFTO0FBQ1QsS0FBSyxDQUFDO0FBQ04sQ0FBQztBQUNELE9BQUEsQ0FBQSxZQUFBLEdBQXVCLFlBQVksQ0FBQztBQUNwQzs7O0FDbEJPLFNBQVMsU0FBUyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDMUMsRUFBRSxJQUFJLE1BQUs7QUFDWDtBQUNBLEVBQUUsTUFBTSxlQUFlLEdBQUcsTUFBTTtBQUNoQyxJQUFJLEtBQUssR0FBRyxVQUFVLENBQUMsTUFBTTtBQUM3QixNQUFNLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxXQUFXLENBQUMsaUJBQWlCLENBQUMsRUFBQztBQUM1RCxLQUFLLEVBQUUsUUFBUSxFQUFDO0FBQ2hCLElBQUc7QUFDSDtBQUNBLEVBQUUsTUFBTSxhQUFhLEdBQUcsTUFBTTtBQUM5QixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7QUFDaEIsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksV0FBVyxDQUFDLGVBQWUsQ0FBQyxFQUFDO0FBQzFELEtBQUssTUFBTTtBQUNYLE1BQU0sWUFBWSxDQUFDLEtBQUssRUFBQztBQUN6QixLQUFLO0FBQ0wsSUFBRztBQUNIO0FBQ0EsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBQztBQUNyRCxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFDO0FBQ2pEO0FBQ0EsRUFBRSxPQUFPO0FBQ1QsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO0FBQ3hCLE1BQU0sUUFBUSxHQUFHLFlBQVc7QUFDNUIsS0FBSztBQUNMLElBQUksT0FBTyxHQUFHO0FBQ2QsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsV0FBVyxFQUFFLGVBQWUsRUFBQztBQUM1RCxNQUFNLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxTQUFTLEVBQUUsYUFBYSxFQUFDO0FBQ3hELEtBQUs7QUFDTCxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQzhLZSxDQUFBLElBQUEsVUFBQSxHQUFBLGFBQWEsc0JBQUMsR0FBZ0IsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Z0NBQW5DLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7OztBQWFELENBQUEsSUFBQSxRQUFBLGtCQUFBLEdBQVUsU0FBSyxFQUFFLElBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBYmYsSUFBQSxVQUFBLEdBQUEsYUFBYSxzQkFBQyxHQUFnQixDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUE7OzsrQkFBbkMsTUFBSSxFQUFBLENBQUEsSUFBQSxDQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7d0JBQUosTUFBSSxFQUFBLENBQUEsR0FBQSxXQUFBLENBQUEsTUFBQSxFQUFBLENBQUEsSUFBQSxDQUFBLEVBQUE7Ozs7Ozs7QUFhRCxHQUFBLG1CQUFBLEdBQVUsU0FBSyxFQUFFLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQWJwQixNQUFJLEVBQUEsQ0FBQSxJQUFBLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEJBVUUsR0FBUSxDQUFBLEVBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQVRkLE1BVUMsQ0FBQSxNQUFBLEVBQUEsR0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7OztpR0FESyxHQUFRLENBQUEsRUFBQSxDQUFBLEdBQUEsRUFBQSxDQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsRUFBQSxPQUFBLENBQUEsQ0FBQTs7Ozs7OztBQVBBLElBQUEsU0FBQSxHQUFBLG9CQUFBLENBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxHQUFHLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7OztBQUNiLEdBQUEsU0FBQSxHQUFBLHFCQUFBLENBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxFQUFFLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBZ0J0QixDQUFBLElBQUEsT0FBQSxHQUFBLGdCQUFBLEdBQVUsUUFBSSxjQUFjO0FBQzFCLEdBQUEsY0FBYyxnQkFBQyxHQUFVLENBQUEsRUFBQSxDQUFBLENBQUE7a0JBQ3pCLEdBQVUsQ0FBQSxFQUFBLENBQUEsQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN2QixtQkFBQSxHQUFVLEtBQUMsV0FBVyxFQUFBO21CQUN0QixHQUFVLENBQUEsRUFBQSxDQUFBLElBQUEsRUFBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FWaEIsTUFXTSxDQUFBLE1BQUEsRUFBQSxHQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7QUFMRixHQUFBLElBQUEsQ0FBQSxDQUFBLE9BQUEsSUFBQSxLQUFBLENBQUEsQ0FBQSxDQUFBLGtCQUFBLElBQUEsS0FBQSxPQUFBLE1BQUEsT0FBQSxHQUFBLGdCQUFBLEdBQVUsUUFBSSxjQUFjO0FBQzFCLEtBQUEsY0FBYyxnQkFBQyxHQUFVLENBQUEsRUFBQSxDQUFBLENBQUE7b0JBQ3pCLEdBQVUsQ0FBQSxFQUFBLENBQUEsQ0FBQyxNQUFNLEtBQUssQ0FBQztBQUN2QixxQkFBQSxHQUFVLEtBQUMsV0FBVyxFQUFBO3FCQUN0QixHQUFVLENBQUEsRUFBQSxDQUFBLElBQUEsRUFBQSxDQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsRUFBQSxPQUFBLENBQUEsQ0FBQTs7Ozs7OztBQVRGLElBQUEsU0FBQSxHQUFBLG9CQUFBLENBQUEsR0FBQSxFQUFBLEtBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxHQUFHLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7OztBQUNiLEdBQUEsU0FBQSxHQUFBLHFCQUFBLENBQUEsR0FBQSxFQUFBLElBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxFQUFFLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWdGTixHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsYUFBYSxDQUFBLENBQUE7Ozs7OztBQWdCNUIsR0FBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLFlBQVksQ0FBQSxDQUFBOzs7Ozs7QUFrQjNCLEdBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxZQUFBLHFCQUFBLEdBQWMsSUFBQyxlQUFlLENBQUEsQ0FBQTs7Ozs7O0FBbUI5QixHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsbUJBQW1CLENBQUEsQ0FBQTs7Ozs7O0FBb0JsQyxHQUFBLFlBQUEsQ0FBQSxLQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsVUFBVSxDQUFBLENBQUE7Ozs7K0ZBL0ViLEdBQVksQ0FBQSxDQUFBLENBQUEsR0FBRyxTQUFTLEdBQUcsRUFBRSxDQUFBLENBQUEsQ0FBQTs7O0dBVG5FLE1BMkdNLENBQUEsTUFBQSxFQUFBLEtBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtHQWhHSixNQTZGTSxDQUFBLEtBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQTtHQTVGSixNQWVNLENBQUEsS0FBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBZEosTUFVTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQUxKLE1BSUUsQ0FBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7QUFEYyxHQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxhQUFhLENBQUE7O0dBRzlDLE1BRU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7O0dBRVIsTUFpQk0sQ0FBQSxLQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0FoQkosTUFjTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQUxKLE1BSUUsQ0FBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7QUFEYyxHQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxZQUFZLENBQUE7O0dBRzdDLE1BQXFFLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBOztHQUV2RSxNQWtCTSxDQUFBLEtBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQWpCSixNQWFNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBTEosTUFJRSxDQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtBQURjLEdBQUEsTUFBQSxDQUFBLE9BQUEsc0JBQUEsR0FBYyxJQUFDLGVBQWUsQ0FBQTs7R0FHaEQsTUFFTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7R0FFUixNQW1CTSxDQUFBLEtBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQTtHQWxCSixNQWNNLENBQUEsS0FBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBTEosTUFJRSxDQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtBQURjLEdBQUEsTUFBQSxDQUFBLE9BQUEsc0JBQUEsR0FBYyxJQUFDLG1CQUFtQixDQUFBOztHQUdwRCxNQUVNLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOztHQUVSLE1Ba0JNLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBO0dBakJKLE1BYU0sQ0FBQSxLQUFBLEVBQUEsS0FBQSxDQUFBLENBQUE7R0FMSixNQUlFLENBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBO0FBRGMsR0FBQSxNQUFBLENBQUEsT0FBQSxzQkFBQSxHQUFjLElBQUMsVUFBVSxDQUFBOztHQUczQyxNQUVNLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOztHQUlWLE1BQTRDLENBQUEsS0FBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOzs7Ozs7b0VBMUY1QixHQUFvQyxDQUFBLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7OztBQUs5QixJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxhQUFhLENBQUE7Ozs7QUFOMUIsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLGFBQWEsQ0FBQSxDQUFBOzs7O0FBMEI5QixJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxZQUFZLENBQUE7Ozs7QUFWekIsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLFlBQVksQ0FBQSxDQUFBOzs7O0FBMkI3QixJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxlQUFlLENBQUE7Ozs7QUFUNUIsSUFBQSxZQUFBLENBQUEsSUFBQSxFQUFBLFlBQUEscUJBQUEsR0FBYyxJQUFDLGVBQWUsQ0FBQSxDQUFBOzs7O0FBNkJoQyxJQUFBLE1BQUEsQ0FBQSxPQUFBLHNCQUFBLEdBQWMsSUFBQyxtQkFBbUIsQ0FBQTs7OztBQVZoQyxJQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxxQkFBQSxHQUFjLElBQUMsbUJBQW1CLENBQUEsQ0FBQTs7OztBQTZCcEMsSUFBQSxNQUFBLENBQUEsT0FBQSxzQkFBQSxHQUFjLElBQUMsVUFBVSxDQUFBOzs7O0FBVHZCLElBQUEsWUFBQSxDQUFBLEtBQUEsRUFBQSxZQUFBLHFCQUFBLEdBQWMsSUFBQyxVQUFVLENBQUEsQ0FBQTs7O29KQS9FYixHQUFZLENBQUEsQ0FBQSxDQUFBLEdBQUcsU0FBUyxHQUFHLEVBQUUsQ0FBQSxDQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpSGpFLE1BQTBELENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTs7Ozs7O0FBQXpDLEtBQUEsVUFBQSxHQUFBLG9CQUFBLENBQUEsSUFBQSxFQUFBLElBQUEsRUFBQSxFQUFBLFFBQVEsRUFBRSxHQUFHLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7b0NBSDNCLEdBQWtCLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUFDLFVBQVEsQ0FBQSxDQUFBO3FDQUFDLEdBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTthQUFDLE9BQ25ELENBQUEsQ0FBQTs7O0dBRkEsTUFFTyxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7aUZBREosR0FBa0IsQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBO21GQUFVLEdBQW1CLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7QUFEakMsS0FBQSxVQUFBLEdBQUEsb0JBQUEsQ0FBQSxJQUFBLEVBQUEsSUFBQSxFQUFBLEVBQUEsUUFBUSxFQUFFLEdBQUcsRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQXhNekIsQ0FBQSxJQUFBLFNBQUEsR0FBQSxzQkFBQSxHQUFnQixLQUFDLE1BQU0sR0FBRyxDQUFDLG1CQUFJLEdBQVUsU0FBSyxJQUFJLEtBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTtvREEwRDlCLEVBQUUsRUFBQSxFQUFBLENBQUEsQ0FBQTs0Q0FNTixFQUFFLEVBQUEsRUFBQSxDQUFBLENBQUE7OENBZVAsRUFBRSxFQUFBLEVBQUEsQ0FBQSxDQUFBO2tDQUVqQixHQUFZLENBQUEsQ0FBQSxDQUFBLElBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTs7O0FBc0hWLEVBQUEsNEJBQUEsR0FBbUIsUUFBSyxDQUFDLEVBQUEsT0FBQUQsaUJBQUEsQ0FBQTtBQUlwQixFQUFBLDRCQUFBLEdBQW1CLFFBQUssQ0FBQyxFQUFBLE9BQUFFLG1CQUFBLENBQUE7Ozs7O2dEQVVoQixFQUFFLEVBQUEsRUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2dHQTNLWSxHQUF3QixDQUFBLENBQUEsQ0FBQSxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBOztpRkFDdEQsR0FBd0IsQ0FBQSxDQUFBLENBQUE7S0FDaEMsc0NBQXNDO2NBRXBDLHFCQUFxQixDQUFBLENBQUUsS0FBSyxDQUFBLENBQUEsQ0FBRyxDQUFDLENBQUEsQ0FBQSx5Q0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7O3VEQWhEQSxHQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7aUVBMEVuRCxHQUFZLENBQUEsQ0FBQSxDQUFBLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQSxDQUFBOzs7Ozs7OztvRUEwSS9CLEdBQWUsQ0FBQSxDQUFBLENBQUEsR0FBRyxxQkFBcUIsR0FBRyxFQUFFLENBQUEsQ0FBQTs7OztHQXROdkQsTUEyTk0sQ0FBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBO0dBek5KLE1BdUVNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBdEVKLE1BOEJNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBOzs7R0FDTixNQXNDTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTtHQXJDSixNQU9FLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBO3FDQUpZLEdBQU0sQ0FBQSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7R0FLcEIsTUE0Qk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0ExQkosTUFrQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7OztHQUlOLE1BRU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7OztHQUtaLE1BVVMsQ0FBQSxJQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7Ozs7O0dBa0hULE1BWU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7OztHQUNOLE1BT1MsQ0FBQSxJQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozt3REF0S1MsR0FBd0IsQ0FBQSxFQUFBLENBQUEsQ0FBQTtpREFDbkIsR0FBRyxDQUFBLENBQUE7OzsyQ0FjbUIsR0FBVyxDQUFBLEVBQUEsQ0FBQSxDQUFBOztzREFvSjVDLEdBQW1CLENBQUEsRUFBQSxDQUFBLENBQUE7bURBdk5rQixHQUFpQixDQUFBLEVBQUEsQ0FBQSxDQUFBOzs7Ozs7O0FBSXpELEdBQUEseUJBQUEsR0FBZ0IsS0FBQyxNQUFNLEdBQUcsQ0FBQyxtQkFBSSxHQUFVLFNBQUssSUFBSSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs2REFrQ3pDLEdBQU0sQ0FBQSxDQUFBLENBQUEsRUFBQTtzQ0FBTixHQUFNLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7OytKQVFXLEdBQXdCLENBQUEsQ0FBQSxDQUFBLEdBQUcsT0FBTyxHQUFHLEVBQUUsQ0FBQSxDQUFBLEVBQUE7Ozs7Z0pBQ3RELEdBQXdCLENBQUEsQ0FBQSxDQUFBO0tBQ2hDLHNDQUFzQztjQUVwQyxxQkFBcUIsQ0FBQSxDQUFFLEtBQUssQ0FBQSxDQUFBLENBQUcsQ0FBQyxDQUFBLENBQUEseUNBQUEsQ0FBQSxDQUFBLEVBQUE7Ozs7O3dEQWhEQSxHQUFjLENBQUEsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7O3NIQTBFbkQsR0FBWSxDQUFBLENBQUEsQ0FBQSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUEsRUFBQTs7Ozt3QkFTbkMsR0FBWSxDQUFBLENBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NEhBaUlSLEdBQWUsQ0FBQSxDQUFBLENBQUEsR0FBRyxxQkFBcUIsR0FBRyxFQUFFLENBQUEsRUFBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQWpZMUMsTUFBOEIsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUc5QixTQUEyQixFQUFBLEdBQUEsT0FBQSxDQUFBO0FBQzNCLENBQUEsSUFBQSxFQUFBLE1BQU0sR0FBVyxFQUFFLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDbkIsbUJBQTJCLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDM0Isa0JBQTBCLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDakMsQ0FBQSxJQUFBLGNBQWMsR0FBWSxLQUFLLENBQUE7T0FFeEIsY0FBOEIsRUFBQSxHQUFBLE9BQUEsQ0FBQTtBQUU5QixDQUFBLElBQUEsRUFBQSx3QkFBd0IsR0FBWSxLQUFLLEVBQUEsR0FBQSxPQUFBLENBQUE7QUFDaEQsQ0FBQSxJQUFBLFlBQVksR0FBWSxLQUFLLENBQUE7QUFDN0IsQ0FBQSxJQUFBLGVBQWUsR0FBWSxLQUFLLENBQUE7O09BRTlCLFdBQVcsR0FBQSxNQUFBO0FBQ1gsRUFBQSxJQUFBLE1BQU0sS0FBSyxFQUFFLEVBQUE7b0NBQ2YsZ0JBQWdCLEdBQUEsRUFBQSxFQUFBLGdCQUFBLENBQUEsQ0FBQTtBQUNoQixHQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUNmLEdBQUEsU0FBUyxDQUFDLEtBQUssRUFBQSxDQUFBOztBQUVmLEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxNQUFNLEdBQUcsRUFBRSxDQUFBLENBQUE7QUFDWCxHQUFBLFNBQVMsQ0FBQyxLQUFLLEVBQUEsQ0FBQTs7OztPQUliLHdCQUF3QixHQUFBLE1BQUE7QUFDNUIsRUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLHdCQUF3QixJQUFJLHdCQUF3QixDQUFBLENBQUE7QUFDcEQsRUFBQSxTQUFTLENBQUMsS0FBSyxFQUFBLENBQUE7Ozs7QUFJWCxDQUFBLE1BQUEsUUFBUSxHQUFHLHFCQUFxQixFQUFBLENBQUE7OztVQUc3QixtQkFBbUIsR0FBQTtBQUMxQixFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsZUFBZSxHQUFHLElBQUksQ0FBQSxDQUFBOzs7RUFFdEIsVUFBVTs7QUFDUixJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsZUFBZSxHQUFHLEtBQUssQ0FBQSxDQUFBOztHQUN0QixJQUFJOzs7QUFDUCxFQUFBLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFBOzs7VUFHcEIsb0NBQW9DLEdBQUE7QUFDM0MsRUFBQSxRQUFRLENBQUMsaUNBQWlDLENBQUEsQ0FBQTs7Ozs7O0FBTXRDLENBQUEsTUFBQSxpQkFBaUIsR0FBSSxDQUFnQixJQUFBOztBQUVoQyxFQUFBLFNBQUEsWUFBWSxDQUFDLFFBQWdCLEVBQUE7UUFDL0IsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQSxFQUFBO3FDQUNyQyxnQkFBZ0IsR0FBQSxDQUFBLEdBQU8sZ0JBQWdCLEVBQUUsUUFBUSxDQUFBLEVBQUEsZ0JBQUEsQ0FBQSxDQUFBOzs7O0FBSTVDLEVBQUEsU0FBQSxjQUFjLENBQUMsUUFBa0IsRUFBQTs7b0NBRXhDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDLE1BQU0sQ0FDdkMsY0FBYyxJQUFLLGNBQWMsS0FBSyxRQUFRLENBQUEsRUFBQSxnQkFBQSxDQUFBLENBQUE7OztBQUlqRCxFQUFBLElBQUEsd0JBQXdCLEtBQ3ZCLENBQUMsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQ3pCLElBQUEsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQSxJQUN4QixDQUFDLENBQUMsZ0JBQWdCLENBQUMsU0FBUyxDQUFBLENBQUEsRUFBQTtBQUV0QixHQUFBLFFBQUEsQ0FBQyxDQUFDLEdBQUc7U0FDTixPQUFPO1NBQ04sZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQSxFQUFBO0FBQ25DLE1BQUEsY0FBYyxDQUFDLE9BQU8sQ0FBQSxDQUFBOztBQUV0QixNQUFBLFlBQVksQ0FBQyxPQUFPLENBQUEsQ0FBQTs7O1NBR25CLEtBQUs7U0FDSixnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFBLEVBQUE7QUFDakMsTUFBQSxjQUFjLENBQUMsS0FBSyxDQUFBLENBQUE7O0FBRXBCLE1BQUEsWUFBWSxDQUFDLEtBQUssQ0FBQSxDQUFBOzs7U0FHakIsTUFBTTs7U0FFTCxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFBLEVBQUE7QUFDbEMsTUFBQSxjQUFjLENBQUMsTUFBTSxDQUFBLENBQUE7O0FBRXJCLE1BQUEsWUFBWSxDQUFDLE1BQU0sQ0FBQSxDQUFBOzs7U0FHbEIsU0FBUztTQUNSLGdCQUFnQixDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUEsRUFBQTtBQUNsQyxNQUFBLGNBQWMsQ0FBQyxNQUFNLENBQUEsQ0FBQTs7QUFFckIsTUFBQSxZQUFZLENBQUMsTUFBTSxDQUFBLENBQUE7Ozs7O0FBS3JCLEtBQUEsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFBLENBQUE7S0FDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxxQ0FBcUMsQ0FBQSxDQUFBOzs7Ozs7YUFLNUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxRQUFRLEVBQUE7T0FDdkIsd0JBQXdCLEVBQUE7QUFDMUIsSUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLHdCQUF3QixHQUFHLEtBQUssQ0FBQSxDQUFBO0FBQ3ZCLElBQUEsTUFBQSxJQUFBLHdCQUF3QixLQUFLLEtBQUssRUFBQTtBQUMzQyxJQUFBLFNBQVMsQ0FBQyxJQUFJLEVBQUEsQ0FBQTs7YUFFUCxDQUFDLENBQUMsR0FBRyxLQUFLLFdBQVcsRUFBQTs7QUFFMUIsR0FBQSxJQUFBLHdCQUF3QixLQUFLLElBQUksSUFBSSxVQUFVLEtBQUssV0FBVyxFQUFBO0FBQ2pFLElBQUEsQ0FBQyxDQUFDLGNBQWMsRUFBQSxDQUFBO0FBQ2hCLElBQUEsZUFBQSxDQUFBLFNBQUEsRUFBQSxVQUFVLEdBQUcsV0FBVyxFQUFBLFVBQUEsQ0FBQSxDQUFBO0FBRXhCLElBQUEsTUFBQSxJQUFBLHdCQUF3QixLQUFLLElBQUksSUFDakMsVUFBVSxLQUFLLFdBQVcsRUFBQTtBQUUxQixJQUFBLENBQUMsQ0FBQyxjQUFjLEVBQUEsQ0FBQTtBQUNoQixJQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUNOLElBQUEsTUFBQSxJQUFBLHdCQUF3QixLQUFLLEtBQUssRUFBQTtBQUN2QyxJQUFBLElBQUEsTUFBTSxLQUFLLEVBQUUsSUFBSSxTQUFTLENBQUMsY0FBYyxLQUFLLENBQUMsRUFBQTtBQUM3QyxLQUFBLElBQUEsVUFBVSxLQUFLLEVBQUUsRUFBQTtBQUNuQixNQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUNOLE1BQUEsTUFBQSxJQUFBLFVBQVUsS0FBSyxFQUFFLElBQUksZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBQTt1Q0FDekQsZ0JBQWdCLEdBQUEsQ0FBQSxHQUNYLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQSxDQUFBLEVBQUEsZ0JBQUEsQ0FBQSxDQUFBOzs7O2FBS3ZELENBQUMsQ0FBQyxHQUFHLEtBQUssTUFBTSxFQUFBO0FBQ3pCLEdBQUEsQ0FBQyxDQUFDLGNBQWMsRUFBQSxDQUFBO0FBQ1AsR0FBQSxNQUFBLElBQUEsd0JBQXdCLEtBQUssSUFBSSxFQUFBOztBQUV0QyxHQUFBLElBQUEsWUFBWSxHQUFHLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBQTs7T0FFMUMsWUFBWSxDQUFDLEdBQUcsS0FBSyxVQUFVLEVBQUE7QUFDakMsSUFBQSxDQUFDLENBQUMsY0FBYyxFQUFBLENBQUE7O0FBRVosSUFBQSxJQUFBLFlBQVksQ0FBQyxJQUFJLEtBQUssUUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUE7Z0NBQ25ELFVBQVUsR0FBRyxZQUFZLENBQUMsSUFBSSxFQUFBLFVBQUEsQ0FBQSxDQUFBOztnQ0FFOUIsVUFBVSxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUEsVUFBQSxDQUFBLENBQUE7O2NBRy9CLFlBQVksQ0FBQyxHQUFHLEtBQUssVUFBVSxJQUMvQixZQUFZLENBQUMsSUFBSSxLQUFLLFVBQVUsRUFBQTtBQUVoQyxJQUFBLENBQUMsQ0FBQyxjQUFjLEVBQUEsQ0FBQTs7UUFFWixVQUFVLEtBQUssWUFBWSxDQUFDLElBQUksRUFBQTtBQUNsQyxLQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTtlQUNOLFVBQVUsS0FBSyxZQUFZLENBQUMsR0FBRyxFQUFBO0FBQ3hDLEtBQUEsZUFBQSxDQUFBLFNBQUEsRUFBQSxVQUFVLEdBQUcsRUFBRSxFQUFBLFVBQUEsQ0FBQSxDQUFBOzs7TUFHZixDQUFDLENBQUMsT0FBTyxJQUFJLGlCQUFpQixDQUFBO01BQzVCLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUEsQ0FBQTtBQUN4RCxNQUFBLE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUEsQ0FBQTs7Ozs7O21DQWlCaEMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUMsTUFBTSxDQUN2QyxjQUFjLElBQUssY0FBYyxLQUFLLFFBQVEsQ0FBQSxFQUFBLGdCQUFBLENBQUEsQ0FBQTtBQUVqRCxFQUFBLFNBQVMsQ0FBQyxLQUFLLEVBQUEsQ0FBQTs7O0FBVUEsQ0FBQSxNQUFBLGVBQUEsR0FBQSxNQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLEVBQUUsRUFBQSxVQUFBLENBQUEsQ0FBQTs7O0VBY3hCLE1BQU0sR0FBQSxJQUFBLENBQUEsS0FBQSxDQUFBOzs7Ozs7R0FDUCxTQUFTLEdBQUEsT0FBQSxDQUFBOzs7OztBQUNILENBQUEsTUFBQSxhQUFBLEdBQUEsTUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLGNBQWMsR0FBRyxJQUFJLENBQUEsQ0FBQTtBQUN0QixDQUFBLE1BQUEsWUFBQSxHQUFBLE1BQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxjQUFjLEdBQUcsS0FBSyxDQUFBLENBQUE7OztBQWNsQyxFQUFBLFNBQVMsQ0FBQyxLQUFLLEVBQUEsQ0FBQTtBQUNmLEVBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSx3QkFBd0IsR0FBRyxJQUFJLENBQUEsQ0FBQTs7OztBQUcvQixFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsd0JBQXdCLEdBQUcsS0FBSyxDQUFBLENBQUE7Ozs7O0FBcUJ0QyxFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsWUFBWSxJQUFJLFlBQVksQ0FBQSxDQUFBOzs7O0FBMkJOLEVBQUEsY0FBYyxDQUFDLGFBQWEsR0FBQSxJQUFBLENBQUEsT0FBQSxDQUFBOzs7OztBQW9CNUIsRUFBQSxjQUFjLENBQUMsWUFBWSxHQUFBLElBQUEsQ0FBQSxPQUFBLENBQUE7Ozs7O0FBUnpDLEVBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxjQUFjLENBQUMsWUFBWSxHQUFJLENBQUEsY0FBYyxDQUFDLFlBQVksRUFBQSxjQUFBLENBQUEsQ0FBQTtBQUMxRCxFQUFBLE1BQU0sQ0FBQyxZQUFZLEVBQUEsQ0FBQTtFQUNuQixtQkFBbUIsRUFBQSxDQUFBOzs7O0FBdUJMLEVBQUEsY0FBYyxDQUFDLGVBQWUsR0FBQSxJQUFBLENBQUEsT0FBQSxDQUFBOzs7OztBQVA1QyxFQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsY0FBYyxDQUFDLGVBQWUsR0FBSSxDQUFBLGNBQWMsQ0FBQyxlQUFlLEVBQUEsY0FBQSxDQUFBLENBQUE7QUFDaEUsRUFBQSxNQUFNLENBQUMsWUFBWSxFQUFBLENBQUE7Ozs7QUEwQkwsRUFBQSxjQUFjLENBQUMsbUJBQW1CLEdBQUEsSUFBQSxDQUFBLE9BQUEsQ0FBQTs7Ozs7QUFSaEQsRUFBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLGNBQWMsQ0FBQyxtQkFBbUIsR0FDL0IsQ0FBQSxjQUFjLENBQUMsbUJBQW1CLEVBQUEsY0FBQSxDQUFBLENBQUE7QUFDckMsRUFBQSxNQUFNLENBQUMsWUFBWSxFQUFBLENBQUE7Ozs7QUF5QkwsRUFBQSxjQUFjLENBQUMsVUFBVSxHQUFBLElBQUEsQ0FBQSxPQUFBLENBQUE7Ozs7O0FBUHZDLEVBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxjQUFjLENBQUMsVUFBVSxHQUFJLENBQUEsY0FBYyxDQUFDLFVBQVUsRUFBQSxjQUFBLENBQUEsQ0FBQTtBQUN0RCxFQUFBLE1BQU0sQ0FBQyxZQUFZLEVBQUEsQ0FBQTs7OztDQXhGekIsVUFBVTs7T0FDSixZQUFZLEVBQUE7QUFDZCxJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsWUFBWSxHQUFHLEtBQUssQ0FBQSxDQUFBOzs7RUFFckIsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsTkUsQ0FBQSxJQUFBLE9BQUEsZ0JBQUEsR0FBUSxJQUFDLEVBQUUsR0FBQSxFQUFBLENBQUE7Ozs7Ozs7OztHQURkLE1BRVEsQ0FBQSxNQUFBLEVBQUEsS0FBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBOzs7O0FBREwsR0FBQSxJQUFBLEtBQUEsdUJBQUEsQ0FBQSxJQUFBLE9BQUEsTUFBQSxPQUFBLGdCQUFBLEdBQVEsSUFBQyxFQUFFLEdBQUEsRUFBQSxDQUFBLEVBQUEsUUFBQSxDQUFBLENBQUEsRUFBQSxPQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7QUFvQk4sQ0FBQSxJQUFBLE9BQUEsb0JBQUEsR0FBWSxlQUFDLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQTs7Ozs7Ozs7QUFGQSxHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsZUFBQSxhQUFBLEdBQU0sS0FBQyxRQUFRLGlCQUNsQyxHQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsY0FBYyxDQUFDLGVBQWUsQ0FBQSxDQUFBOzs7R0FIM0MsTUFLQyxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7QUFERyxHQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLElBQUEsT0FBQSxNQUFBLE9BQUEsb0JBQUEsR0FBWSxlQUFDLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7OztBQUZBLElBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxlQUFBLGFBQUEsR0FBTSxLQUFDLFFBQVEsaUJBQ2xDLEdBQVEsQ0FBQyxDQUFBLENBQUEsQ0FBQSxjQUFjLENBQUMsZUFBZSxDQUFBLENBQUE7Ozs7Ozs7Ozs7OztBQU52QyxDQUFBLElBQUEsT0FBQSxvQkFBQSxHQUFZLGVBQUMsR0FBTSxDQUFBLEVBQUEsQ0FBQSxDQUFBLEdBQUEsRUFBQSxDQUFBOzs7Ozs7Ozs7Ozs7OzttREFIRCxHQUFRLENBQUEsQ0FBQSxDQUFBLENBQUMsY0FBYyxDQUN4QyxtQkFBbUIsQ0FBQSxDQUFBOzs7R0FIeEIsTUFNQyxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7QUFERyxHQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLElBQUEsT0FBQSxNQUFBLE9BQUEsb0JBQUEsR0FBWSxlQUFDLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxHQUFBLEVBQUEsQ0FBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBLEVBQUEsT0FBQSxDQUFBLENBQUE7OztvREFIRCxHQUFRLENBQUEsQ0FBQSxDQUFBLENBQUMsY0FBYyxDQUN4QyxtQkFBbUIsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFKckIsRUFBQSxJQUFBLE9BQUEsSUFBQSxJQUFBLEVBQUEsT0FBQSxHQUFBLENBQUEsQ0FBQSxpQkFBaUIsY0FBQyxHQUFRLENBQUMsQ0FBQSxDQUFBLENBQUEsRUFBRSxhQUFFLEdBQU0sQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBckJ6QyxDQUFBLElBQUEsUUFBQSxnQkFBQSxHQUFRLElBQUMsVUFBVSxHQUFBLEVBQUEsQ0FBQTs7OztBQUVNLENBQUEsSUFBQSxRQUFBLGdCQUFBLEdBQVEsSUFBQyxPQUFPLEdBQUEsRUFBQSxDQUFBOzs7Ozs7Ozs7Ozs7OzBDQU8xQixFQUFFLEVBQUEsRUFBQSxDQUFBLENBQUE7Ozs7Ozs2QkFHakIsR0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFDLGNBQWMsQ0FBQyxVQUFVLElBQUEsaUJBQUEsQ0FBQSxHQUFBLENBQUEsQ0FBQTtBQVE5QixDQUFBLElBQUEsWUFBQSxnQkFBQSxHQUFRLElBQUMsT0FBTyxDQUFBOzs7a0NBQXJCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTNCUSxHQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxlQUFBLEdBQVEsSUFBQyxrQkFBa0IsQ0FBQyxRQUFRLGNBQUMsR0FBUSxJQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUE7Ozs7R0FGcEUsTUFpRE0sQ0FBQSxNQUFBLEVBQUEsSUFBQSxFQUFBLE1BQUEsQ0FBQSxDQUFBO0dBM0NKLE1Bb0JNLENBQUEsSUFBQSxFQUFBLElBQUEsQ0FBQSxDQUFBO0dBbkJKLE1BYU0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0FaSixNQUVPLENBQUEsSUFBQSxFQUFBLEtBQUEsQ0FBQSxDQUFBOzs7R0FDUCxNQUFvRCxDQUFBLElBQUEsRUFBQSxLQUFBLENBQUEsQ0FBQTs7O0dBQ3BELE1BT00sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7Ozs7O0dBUVYsTUFxQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7R0FwQkosTUFtQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7OytDQXZDc0MsR0FBYyxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7QUFDckQsR0FBQSxJQUFBLENBQUEsQ0FBQSxPQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLEtBQUEsUUFBQSxNQUFBLFFBQUEsZ0JBQUEsR0FBUSxJQUFDLFVBQVUsR0FBQSxFQUFBLENBQUEsRUFBQSxRQUFBLENBQUEsRUFBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBO0FBRU0sR0FBQSxJQUFBLENBQUEsQ0FBQSxPQUFBLElBQUEsS0FBQSx1QkFBQSxDQUFBLEtBQUEsUUFBQSxNQUFBLFFBQUEsZ0JBQUEsR0FBUSxJQUFDLE9BQU8sR0FBQSxFQUFBLENBQUEsRUFBQSxRQUFBLENBQUEsRUFBQSxFQUFBLFFBQUEsQ0FBQSxDQUFBOztvQkFVekMsR0FBUSxDQUFBLENBQUEsQ0FBQSxDQUFDLGNBQWMsQ0FBQyxVQUFVLEVBQUE7Ozs7Ozs7Ozs7Ozs7O0FBUTlCLElBQUEsWUFBQSxnQkFBQSxHQUFRLElBQUMsT0FBTyxDQUFBOzs7aUNBQXJCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7O3NDQUFKLE1BQUksQ0FBQTs7OztBQTNCUSxJQUFBLFlBQUEsQ0FBQSxJQUFBLEVBQUEsWUFBQSxlQUFBLEdBQVEsSUFBQyxrQkFBa0IsQ0FBQyxRQUFRLGNBQUMsR0FBUSxJQUFDLEVBQUUsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O3NDQUgvRCxHQUFlLENBQUEsQ0FBQSxDQUFBLENBQUE7QUFBYyxDQUFBLE1BQUEsT0FBQSxHQUFBLEdBQUEsaUJBQUEsR0FBUSxJQUFDLEVBQUUsQ0FBQTs7Z0NBQTdDLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQUxWLE1BMERNLENBQUEsTUFBQSxFQUFBLElBQUEsRUFBQSxNQUFBLENBQUEsQ0FBQTtHQXRESixNQXFETSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7OztxQ0FwREcsR0FBZSxDQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7a0NBQXBCLE1BQUksRUFBQSxDQUFBLElBQUEsQ0FBQSxFQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0F4Q0csZUFBOEIsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUU5QixRQUF3QixFQUFBLEdBQUEsT0FBQSxDQUFBOztBQUUxQixDQUFBLFNBQUEsWUFBWSxDQUFDLE1BQWMsRUFBQTtBQUM5QixFQUFBLElBQUEsZUFBZSxHQUNqQixNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO0lBQ3pCLHFCQUFxQixDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFBLENBQUEsQ0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBLEdBQ2pFLEtBQUs7SUFDTCxFQUFFLENBQUE7O0FBQ0osRUFBQSxJQUFBLEdBQUcsR0FDTCxNQUFNLENBQUMsR0FBRyxJQUFJLGNBQWM7SUFDeEIsY0FBYyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUE7QUFDekIsSUFBQSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDO0tBQ3ZCLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFBO0FBQ3RCLEtBQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQTs7QUFDVCxFQUFBLE9BQUEsZUFBZSxHQUFHLEdBQUcsQ0FBQTs7O0FBR3hCLENBQUEsTUFBQSxRQUFRLEdBQUcscUJBQXFCLEVBQUEsQ0FBQTs7QUFDN0IsQ0FBQSxTQUFBLGNBQWMsQ0FBQyxDQUFNLEVBQUE7QUFDdEIsRUFBQSxNQUFBLE9BQU8sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQTtFQUNsQyxRQUFRLENBQUMscUJBQXFCLEVBQUUsT0FBTyxDQUFBLENBQUE7Ozs7QUFrQzNCLEVBQUEsUUFBUSxDQUFDLGNBQWMsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFBLENBQUE7OzttQ0FvQmxCLFFBQVEsQ0FBQywwQkFBMEIsRUFBRSxNQUFNLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7ZUNpVXZELEdBQUssQ0FBQSxDQUFBLENBQUEsS0FBQSxLQUFBLENBQUEsRUFBQTt5Q0FBTCxHQUFLLENBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxDQUFBLGlCQUFBLEdBQVEsSUFBQyxjQUFjLEtBQUEsS0FBQSxDQUFBLEVBQUE7QUFBdkIsRUFBQSxnQkFBQSxDQUFBLGNBQUEsZ0JBQUEsR0FBUSxJQUFDLGNBQWMsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7O3dGQUVSLEdBQWdDLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQTs2REFDL0MsR0FBb0IsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs0REFNeEIsR0FBcUIsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOytFQUNULEdBQTRCLENBQUEsRUFBQSxDQUFBLENBQUEsQ0FBQTtxRUFDakMsR0FBdUIsQ0FBQSxFQUFBLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7O0FBcEMzQyxHQUFBLElBQUEsQ0FBQSxJQUFBLEVBQUEsT0FBQSxFQUFBLGdCQUFBLEdBQUEsRUFBQSxpQkFBQSxHQUFRLDBCQUFHLEdBQVEsQ0FBQSxDQUFBLENBQUEsS0FBSyxJQUFJLEdBQUcsV0FBVyxHQUFHLEVBQUUsQ0FBQSxDQUFBLENBQUEsQ0FBQTs7OztHQUZ6RCxNQXlDTSxDQUFBLE1BQUEsRUFBQSxJQUFBLEVBQUEsTUFBQSxDQUFBLENBQUE7R0E3QkosTUFNTSxDQUFBLElBQUEsRUFBQSxJQUFBLENBQUEsQ0FBQTs7O0dBQ04sTUFxQk0sQ0FBQSxJQUFBLEVBQUEsSUFBQSxDQUFBLENBQUE7Ozs7Ozs7OztvRUFyQ1csR0FBWSxDQUFBLEVBQUEsQ0FBQSxDQUFBLENBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7NkNBbUJULEdBQUssQ0FBQSxDQUFBLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsSUFBQSxrQkFBQSxDQUFBLGNBQUEsZ0JBQUEsR0FBUSxJQUFDLGNBQWMsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBekJ4QyxHQUFBLElBQUEsQ0FBQSxPQUFBLElBQUEsS0FBQSxDQUFBLENBQUEsQ0FBQSxnQkFBQSxFQUFBLElBQUEsZ0JBQUEsTUFBQSxnQkFBQSxHQUFBLEVBQUEsaUJBQUEsR0FBUSwwQkFBRyxHQUFRLENBQUEsQ0FBQSxDQUFBLEtBQUssSUFBSSxHQUFHLFdBQVcsR0FBRyxFQUFFLENBQUEsQ0FBQSxDQUFBLEVBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQTdROUMsbUJBQW1CLENBQUMsSUFBbUIsRUFBRSxRQUFrQixFQUFBO0tBQzlELFVBQVUsR0FBQSxFQUFBLENBQUE7S0FDVixZQUFZLEdBQUEsRUFBQSxDQUFBO0tBQ1osU0FBUyxHQUFBLEVBQUEsQ0FBQTs7O0VBR2IsSUFBSSxDQUFDLE9BQU8sQ0FBRSxHQUFpQixJQUFBO0FBQ3pCLEVBQUEsSUFBQSxRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUEsRUFBQTtHQUMxQixZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBOztHQUVyQixTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQSxDQUFBOztBQUduQixFQUFBLENBQUEsRUFBQSxVQUFVLEdBQUcsWUFBWSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUEsRUFBQTs7UUFDdEMsVUFBVSxDQUFBOzs7O0FBNk1WLFNBQUEsbUJBQW1CLENBQUMsS0FBb0IsRUFBQTtRQUV2QixLQUFLLENBQUMsTUFBTSxDQUFBOzs7O0FBSTdCLFNBQUEsWUFBWSxDQUFDLEtBQW9CLEVBQUE7QUFDcEMsQ0FBQSxJQUFBLFlBQVksR0FBVyxDQUFDLENBQUE7O0FBQ25CLENBQUEsS0FBQSxJQUFBLE9BQU8sSUFBSSxLQUFLLEVBQUE7QUFDdkIsRUFBQSxZQUFZLElBQUksT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUE7OztRQUVqQyxZQUFZLENBQUE7Ozs7Ozs7Ozs7O09BdlRWLEdBQVEsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUNSLE1BQThCLEVBQUEsR0FBQSxPQUFBLENBQUE7T0FDOUIsUUFBd0IsRUFBQSxHQUFBLE9BQUEsQ0FBQTtPQUN4QixJQUFtQixFQUFBLEdBQUEsT0FBQSxDQUFBO0tBQzFCLFNBQWlCLENBQUE7QUFDakIsQ0FBQSxJQUFBLFFBQVEsR0FBVyxTQUFTLENBQUE7OztBQUc1QixDQUFBLElBQUEsTUFBTSxHQUFXLEVBQUUsQ0FBQTs7S0FDbkIsS0FBdUIsQ0FBQTtBQUN2QixDQUFBLElBQUEsd0JBQXdCLEdBQVksS0FBSyxDQUFBOzs7O0FBSXZDLENBQUEsTUFBQSxVQUFVLEdBQU8sSUFBQUMsY0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUEsQ0FBQTs7QUFDdEMsQ0FBQSxVQUFVLENBQUMsUUFBUSxDQUFBLENBQUUsS0FBSyxDQUFHLEVBQUEsR0FBRyxFQUFHLENBQUMsSUFBQTtBQUM5QixFQUFBLElBQUEsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLENBQUMsR0FBRyxLQUFLLEdBQUcsRUFBQTtBQUUxQixHQUFBLElBQUEsS0FBSyxLQUFLLFFBQVEsQ0FBQyxhQUFhLElBQ2hDLHdCQUF3QixLQUFLLEtBQUssRUFBQTtBQUVsQyxJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsd0JBQXdCLEdBQUcsSUFBSSxDQUFBLENBQUE7QUFFL0IsSUFBQSxNQUFBLElBQUEsS0FBSyxLQUFLLFFBQVEsQ0FBQyxhQUFhLElBQ2hDLHdCQUF3QixLQUFLLElBQUksRUFBQTtBQUVqQyxJQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsd0JBQXdCLEdBQUcsS0FBSyxDQUFBLENBQUE7O0FBRWhDLElBQUEsS0FBSyxDQUFDLEtBQUssRUFBQSxDQUFBOzs7VUFFTixLQUFLLENBQUE7Ozs7QUFJWixDQUFBLElBQUEsYUFBYSxHQUFHLGlCQUFpQixDQUFBO0FBQ2pDLENBQUEsSUFBQSxjQUFjLEdBQUcsYUFBYSxDQUFBO0FBQzlCLENBQUEsSUFBQSxZQUFZLEdBQUcsV0FBVyxDQUFBO0FBRTFCLENBQUEsSUFBQSxjQUFjLEdBQWMsQ0FBQSxhQUFhLEVBQUUsY0FBYyxFQUFFLFlBQVksQ0FBQSxDQUFBO0tBQ3ZFLGlCQUFzQixDQUFBOzs7S0FHdEIsUUFBUSxHQUFlLFlBQVksQ0FBQyxHQUFHLENBQUEsQ0FBQTs7O0FBR3ZDLENBQUEsSUFBQSxhQUFhLEdBQWtCLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFFLENBQUEsR0FBRyxDQUN6RCxHQUFXLElBQUssUUFBUSxDQUFDLEdBQUcsQ0FBQSxDQUFBLENBQUE7OztVQUl0QixtQkFBbUIsR0FBQTttQkFDMUIsUUFBUSxHQUFHLFlBQVksQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBO0FBQzNCLEVBQUEsWUFBQSxDQUFBLEVBQUEsRUFBQSxhQUFhLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUUsQ0FBQSxHQUFHLENBQUUsR0FBVyxJQUFLLFFBQVEsQ0FBQyxHQUFHLENBQUEsQ0FBQSxDQUFBLENBQUE7OztVQUdoRSxxQkFBcUIsR0FBQTs7Ozs7QUE0Q3JCLENBQUEsU0FBQSxtQkFBbUIsQ0FDMUIsSUFBbUIsRUFDbkIsTUFBYyxFQUNkLHFCQUErQixFQUMvQixlQUF1QixFQUFBO0VBRXZCLG1CQUFtQixFQUFBLENBQUE7TUFDZixZQUFZLEdBQUEsRUFBQSxDQUFBOzs7QUFHUCxFQUFBLFNBQUEsWUFBWSxDQUFDLE9BQXFCLEVBQUE7QUFDckMsR0FBQSxJQUFBLFdBQVcsR0FDYixPQUFPLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUNwQyxHQUFBLEdBQUcsR0FDSCxPQUFPLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBQSxDQUFBOzs7QUFHekIsR0FBQSxJQUFBLFdBQVcsR0FBRyxNQUFNLENBQ3JCLGlCQUFpQixFQUFBLENBQ2pCLEtBQUssQ0FBQyxHQUFHLENBQ1QsQ0FBQSxNQUFNLENBQUUsSUFBSSxJQUFLLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBLENBQUE7OztVQUc1QixXQUFXLENBQUMsS0FBSyxDQUFFLElBQUksSUFBQTtXQUUxQixXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQSxJQUN6QixPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBRSxNQUFNLElBQUE7WUFFeEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBQSxDQUFHLFFBQVEsQ0FBQyxJQUFJLENBQzVDLElBQUEscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQSxDQUFFLElBQUksQ0FBRSxRQUFRLElBQ3BELFFBQVEsQ0FBQyxpQkFBaUIsRUFBQSxDQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUEsQ0FBQSxDQUFBOzs7Ozs7O0FBVTdDLEVBQUEsU0FBQSxpQkFBaUIsQ0FDeEIsT0FBcUIsRUFDckIsZUFBeUIsRUFDekIsbUJBQTRCLEVBQUE7QUFFeEIsR0FBQSxJQUFBLG1CQUFtQixLQUFLLEtBQUssRUFBQTtBQUN4QixJQUFBLE9BQUEsT0FBTyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUUsTUFBTSxJQUFBO1lBQzFCLGVBQWUsQ0FBQyxLQUFLLENBQUUsUUFBUSxJQUFBO0FBQzdCLE1BQUEsT0FBQSxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFFLENBQUEsUUFBUSxDQUFDLFFBQVEsQ0FBQSxDQUFBOzs7QUFHM0QsSUFBQSxNQUFBLElBQUEsbUJBQW1CLEtBQUssSUFBSSxFQUFBO0lBQ3JDLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUUsTUFBTSxJQUFBO0FBRTVDLEtBQUEsSUFBQSxNQUFNLENBQUMsU0FBUyxDQUFDLE1BQU0sS0FBSyxlQUFlLENBQUMsTUFBTSxJQUNsRCxlQUFlLENBQUMsS0FBSyxDQUFFLFFBQVEsSUFBQTtBQUN0QixNQUFBLE9BQUEscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBRSxDQUFBLFFBQVEsQ0FBQyxRQUFRLENBQUEsQ0FBQTs7YUFHM0QsSUFBSSxDQUFBOzs7O0FBSVIsSUFBQSxPQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFFLE1BQU0sSUFBQTtZQUMzQixlQUFlLENBQUMsS0FBSyxDQUFFLFFBQVEsSUFBQTtBQUM3QixNQUFBLE9BQUEscUJBQXFCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBRSxDQUFBLFFBQVEsQ0FBQyxRQUFRLENBQUEsQ0FBQTs7Ozs7OztBQU8vRCxFQUFBLFNBQUEsV0FBVyxDQUFDLE9BQXFCLEVBQUE7QUFDakMsR0FBQSxPQUFBLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFFLE1BQU0sSUFBQTtBQUMxQixJQUFBLE9BQUEsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsRUFBTyxLQUFBLFVBQVUsQ0FBQyxpQkFBaUIsRUFBQSxDQUFBOzs7O0FBa0IxRSxFQUFBLFlBQVksR0FBRyxJQUFJLENBQ2hCLE1BQU0sQ0FBRSxPQUFPLElBQUE7VUFFWixZQUFZLENBQUMsT0FBTyxDQUFBLEtBQ25CLHFCQUFxQixDQUFDLE1BQU0sS0FBSyxDQUFDLElBQ2pDLGlCQUFpQixDQUNmLE9BQU8sRUFDUCxxQkFBcUIsRUFDckIsUUFBUSxDQUFDLGNBQWMsQ0FBQyxZQUFZLENBQUEsQ0FBQSxLQUV2QyxlQUFlLEtBQUssRUFBRSxJQUFJLFdBQVcsQ0FBQyxPQUFPLENBQUEsQ0FBQSxDQUFBO0tBR2pELElBQUksQ0FBQSxDQUFFLENBQWUsRUFBRSxDQUFlLEtBQUE7QUFDOUIsR0FBQSxPQUFBLENBQUMsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUEsQ0FBQTtLQUUvQyxNQUFNLENBQUUsT0FBTyxJQUFLLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQSxDQUFBOztNQUU3QyxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBQTtBQUN2QyxHQUFBLFlBQVksR0FBRyxtQkFBbUIsQ0FDaEMsWUFBWSxFQUNaLFFBQVEsQ0FBQyxrQkFBa0IsQ0FBQSxDQUFBOzs7U0FJeEIsWUFBWSxDQUFBOzs7OztBQWNaLENBQUEsU0FBQSx1QkFBdUIsQ0FBQyxLQUFrQixFQUFBO01BQzdDLFVBQVUsR0FBVyxLQUFLLENBQUMsTUFBTSxDQUFBOztBQUNqQyxFQUFBLElBQUEsTUFBTSxLQUFLLEVBQUUsSUFBSSxNQUFNLEtBQUssU0FBUyxFQUFBOztBQUV2QyxHQUFBLEtBQUssQ0FBQyxLQUFLLEVBQUEsQ0FBQTs7QUFDWCxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBTSxHQUFHLFVBQVUsQ0FBQSxDQUFBO2FBQ1YsTUFBTSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUEsRUFBQTtBQUNyQyxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQSxDQUFBLENBQUE7O21CQUV0QyxNQUFNLEdBQUcsVUFBVSxHQUFHLE1BQU0sQ0FBQSxDQUFBOzs7O0FBSXZCLENBQUEsU0FBQSxnQ0FBZ0MsQ0FBQyxLQUFrQixFQUFBO2tCQUMxRCxRQUFRLENBQUMsY0FBYyxDQUFDLGFBQWEsSUFDbEMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUEsUUFBQSxDQUFBLENBQUE7QUFDeEMsRUFBQSxNQUFNLENBQUMsWUFBWSxFQUFBLENBQUE7RUFDbkIscUJBQXFCLEVBQUEsQ0FBQTs7O0FBR2QsQ0FBQSxTQUFBLDRCQUE0QixDQUFDLEtBQWtCLEVBQUE7TUFDbEQsaUJBQWlCLEdBQVcsS0FBSyxDQUFDLE1BQU0sQ0FBQTtBQUN4QyxFQUFBLElBQUEsb0JBQW9CLEdBQWEscUJBQXFCLENBQ3hELGlCQUFpQixDQUFDLFNBQVMsQ0FBQSxDQUFBO01BRXpCLGNBQWMsR0FBVyxpQkFBaUIsQ0FBQyxHQUFHLENBQUE7OztNQUloRCxnQkFBZ0IsQ0FBQyxLQUFLLENBQUUsUUFBZ0IsSUFBQTtVQUMvQixvQkFBb0IsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFBLENBQUE7QUFFL0MsR0FBQSxDQUFBLElBQUEsVUFBVSxDQUFDLGlCQUFpQixFQUFPLEtBQUEsY0FBYyxDQUFDLGlCQUFpQixFQUFBLEVBQUE7b0NBRW5FLGdCQUFnQixHQUFBLEVBQUEsRUFBQSxnQkFBQSxDQUFBLENBQUE7QUFDaEIsR0FBQSxlQUFBLENBQUEsU0FBQSxFQUFBLFVBQVUsR0FBRyxFQUFFLEVBQUEsVUFBQSxDQUFBLENBQUE7O0FBRWYsR0FBQSxlQUFBLENBQUEsZUFBQSxFQUFBLGdCQUFnQixHQUFHLG9CQUFvQixFQUFBLGdCQUFBLENBQUEsQ0FBQTtBQUN2QyxHQUFBLGVBQUEsQ0FBQSxTQUFBLEVBQUEsVUFBVSxHQUFHLGNBQWMsRUFBQSxVQUFBLENBQUEsQ0FBQTtBQUMzQixHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsTUFBTSxHQUFHLEVBQUUsQ0FBQSxDQUFBOzs7O0FBSU4sQ0FBQSxTQUFBLHFCQUFxQixDQUFDLEtBQWtCLEVBQUE7TUFDM0MsVUFBVSxHQUFXLEtBQUssQ0FBQyxNQUFNLENBQUE7O0FBRWpDLEVBQUEsSUFBQSxRQUFRLENBQUMsa0JBQWtCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQSxFQUFBO0FBQ2pELEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxRQUFRLENBQUMsa0JBQWtCLEdBQUcsUUFBUSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sQ0FDN0QsRUFBVSxJQUFLLEVBQUUsS0FBSyxVQUFVLENBQUEsRUFBQSxRQUFBLENBQUEsQ0FBQTtBQUVuQyxHQUFBLE1BQU0sQ0FBQyxZQUFZLEVBQUEsQ0FBQTs7O0FBR25CLEdBQUEsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLENBQUEsQ0FBQTs7O0FBRTNDLEdBQUEsTUFBTSxDQUFDLFlBQVksRUFBQSxDQUFBOzs7RUFFckIscUJBQXFCLEVBQUEsQ0FBQTs7OztVQUlkLG9CQUFvQixHQUFBO0VBQzNCLG1CQUFtQixFQUFBLENBQUE7Ozs7VUF1QlosWUFBWSxHQUFBO0FBQ2YsRUFBQSxJQUFBLFNBQVMsSUFBSSxJQUFJLEVBQUE7QUFDbkIsR0FBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLFFBQVEsR0FBRyxLQUFLLENBQUEsQ0FBQTtBQUNQLEdBQUEsTUFBQSxJQUFBLFNBQVMsSUFBSSxJQUFJLElBQUksU0FBUyxHQUFHLElBQUksRUFBQTtBQUM5QyxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsUUFBUSxHQUFHLElBQUksQ0FBQSxDQUFBO0FBQ04sR0FBQSxNQUFBLElBQUEsU0FBUyxJQUFJLEdBQUcsSUFBSSxTQUFTLEdBQUcsSUFBSSxFQUFBO0FBQzdDLEdBQUEsWUFBQSxDQUFBLENBQUEsRUFBQSxRQUFRLEdBQUcsSUFBSSxDQUFBLENBQUE7QUFDTixHQUFBLE1BQUEsSUFBQSxTQUFTLElBQUksR0FBRyxJQUFJLFNBQVMsR0FBRyxHQUFHLEVBQUE7QUFDNUMsR0FBQSxZQUFBLENBQUEsQ0FBQSxFQUFBLFFBQVEsR0FBRyxJQUFJLENBQUEsQ0FBQTtBQUNOLEdBQUEsTUFBQSxJQUFBLFNBQVMsSUFBSSxHQUFHLElBQUksU0FBUyxHQUFHLEdBQUcsRUFBQTtBQUM1QyxHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsUUFBUSxHQUFHLElBQUksQ0FBQSxDQUFBO0FBQ04sR0FBQSxNQUFBLElBQUEsU0FBUyxHQUFHLEdBQUcsRUFBQTtBQUN4QixHQUFBLFlBQUEsQ0FBQSxDQUFBLEVBQUEsUUFBUSxHQUFHLElBQUksQ0FBQSxDQUFBOzs7O0NBSW5CLE9BQU8sQ0FBQSxNQUFBO0FBQ0wsRUFBQSxLQUFLLENBQUMsS0FBSyxFQUFBLENBQUE7OztDQUdiLFNBQVMsQ0FBQSxNQUFBO0FBQ1AsRUFBQSxHQUFHLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztFQWtDWixLQUFLLEdBQUEsS0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBS0EsRUFBQSxJQUFBLE1BQUEsQ0FBQSxFQUFBLENBQUEsU0FBQSxDQUFBLFFBQVEsQ0FBQyxjQUFjLEVBQUEsS0FBQSxDQUFBLEVBQUE7QUFBdkIsR0FBQSxRQUFRLENBQUMsY0FBYyxHQUFBLEtBQUEsQ0FBQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0VBdkI5QixTQUFTLEdBQUEsSUFBQSxDQUFBLFdBQUEsQ0FBQTs7Ozs7QUFFekIsRUFBQSxHQUFHLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUEsQ0FBQTs7OztBQUcvQixFQUFBLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7O0dBekkvQixZQUFBLENBQUEsQ0FBQSxFQUFFLGVBQWUsR0FBRyxtQkFBbUIsQ0FDdEMsYUFBYSxFQUNiLE1BQU0sRUFDTixnQkFBZ0IsRUFDaEIsVUFBVSxDQUFBLENBQUEsQ0FBQTs7Ozs7QUF3RVosR0FBRyxZQUFBLENBQUEsRUFBQSxFQUFBLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDLGVBQWUsQ0FBQSxDQUFBLENBQUE7Ozs7QUFDNUQsR0FBRyxZQUFBLENBQUEsRUFBQSxFQUFBLGtCQUFrQixHQUFHLFlBQVksQ0FBQyxlQUFlLENBQUEsQ0FBQSxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUMvVWpDLE1BQUEsYUFBYyxTQUFRQyxpQkFBUSxDQUFBO0lBTWpELFdBQVksQ0FBQSxJQUFtQixFQUFFLE1BQThCLEVBQUE7UUFDN0QsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFBO1FBSGIsSUFBVSxDQUFBLFVBQUEsR0FBRyxJQUFJLENBQUE7QUFJZixRQUFBLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO0tBQ3JCO0lBRUssTUFBTSxHQUFBOzs7OztBQUNWLFlBQUEsTUFBQSxDQUFNLE1BQU0sQ0FBRSxJQUFBLENBQUEsSUFBQSxDQUFBLENBQUE7U0FDZixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUQsV0FBVyxHQUFBO0FBQ1QsUUFBQSxPQUFPLDRCQUE0QixDQUFBO0tBQ3BDO0lBRUQsY0FBYyxHQUFBO0FBQ1osUUFBQSxPQUFPLG9CQUFvQixDQUFBO0tBQzVCO0lBRUssTUFBTSxHQUFBOztBQUNWLFlBQUEsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUE7U0FDbEIsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVELE9BQU8sR0FBQTtBQUNMLFFBQUEsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUE7S0FDekI7SUFFSyxJQUFJLEdBQUE7O0FBQ1IsWUFBQSxNQUFNLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxHQUFHLElBQUksQ0FBQTtBQUMvQixZQUFBLE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFBO1lBRWhDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQTtBQUNqQixZQUFBLFNBQVMsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLENBQUEsT0FBQSxDQUFTLENBQUMsQ0FBQTtBQUN2QyxZQUFBLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxHQUFHLEdBQUcsQ0FBQTtBQUM3QixZQUFBLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxpQkFBaUIsQ0FBQztBQUNyQyxnQkFBQSxNQUFNLEVBQUUsU0FBUztBQUNqQixnQkFBQSxLQUFLLEVBQUU7b0JBQ0wsR0FBRztvQkFDSCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07b0JBQ25CLFFBQVE7QUFDUixvQkFBQSxJQUFJLEVBQUUsSUFBSTtBQUNYLGlCQUFBO0FBQ0YsYUFBQSxDQUFDLENBQUE7U0FDSCxDQUFBLENBQUE7QUFBQSxLQUFBO0FBQ0Y7O0FDL0JvQixNQUFBLHNCQUF1QixTQUFRQyxlQUFNLENBQUE7QUFHeEQsSUFBQSxJQUFJLElBQUksR0FBQTtBQUNOLFFBQUEsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUMvQyw0QkFBNEIsQ0FDN0IsQ0FBQTtBQUNELFFBQUEsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFBO1FBQzdDLElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksWUFBWSxhQUFhO1lBQ3pELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQTtLQUNuQjtJQUVLLE1BQU0sR0FBQTs7QUFDVixZQUFBLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFBO1lBRXpCLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFBO0FBQzVCLFlBQUEsSUFBSSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUV0QyxZQUFBLElBQUksQ0FBQyxZQUFZLENBQ2YsNEJBQTRCLEVBQzVCLENBQUMsSUFBbUIsS0FBSyxJQUFJLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQ3ZELENBQUE7OztTQUlGLENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxRQUFRLEdBQUE7O1lBQ1osSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUMsNEJBQTRCLENBQUMsQ0FBQTtTQUNwRSxDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUssWUFBWSxHQUFBOztBQUNoQixZQUFBLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FDM0IsRUFBRSxFQUNGLHVCQUF1QixFQUN2QixNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FDdEIsQ0FBQTtTQUNGLENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxZQUFZLEdBQUE7O1lBQ2hCLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUE7U0FDbkMsQ0FBQSxDQUFBO0FBQUEsS0FBQTtJQUVELHFCQUFxQixHQUFBOztBQUVuQixRQUFBLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFBO0FBQzdDLFFBQUEsYUFBYSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUN2QyxRQUFBLGFBQWEsQ0FBQyxZQUFZLENBQUMsWUFBWSxFQUFFLG9CQUFvQixDQUFDLENBQUE7QUFDOUQsUUFBQSxhQUFhLENBQUMsS0FBSyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUE7O1FBR2hDLE1BQU0sSUFBSSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7O0FBRzdDLFFBQUFDLGdCQUFPLENBQUMsSUFBSSxFQUFFLGdCQUFnQixDQUFDLENBQUE7QUFDL0IsUUFBQSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBOzs7S0FHcEU7QUFFSyxJQUFBLGdCQUFnQixDQUFDLEdBQWUsRUFBQTs7QUFDcEMsWUFBQSxJQUFJLEdBQUcsQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFO0FBQ3ZCLGdCQUFBLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTtBQUM1QixhQUFBO0FBQU0saUJBQUE7Z0JBQ0wsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7QUFDeEIsYUFBQTtTQUNGLENBQUEsQ0FBQTtBQUFBLEtBQUE7SUFFSyxnQkFBZ0IsQ0FBQyxVQUFtQixLQUFLLEVBQUE7O1lBQzdDLElBQUksV0FBVyxHQUNiLElBQUksQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyw0QkFBNEIsQ0FBQztpQkFDN0QsTUFBTSxLQUFLLENBQUMsQ0FBQTtBQUVqQixZQUFBLElBQUksV0FBVyxFQUFFO0FBQ2YsZ0JBQUEsSUFBSSxPQUFPLEVBQUU7b0JBQ1gsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTO3lCQUNmLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDYix5QkFBQSxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyxDQUFBO0FBQ3hELGlCQUFBO0FBQU0scUJBQUE7b0JBQ0wsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTO0FBQ2YseUJBQUEsT0FBTyxFQUFFO0FBQ1QseUJBQUEsWUFBWSxDQUFDLEVBQUUsSUFBSSxFQUFFLDRCQUE0QixFQUFFLENBQUMsQ0FBQTtBQUN4RCxpQkFBQTtBQUNGLGFBQUE7U0FDRixDQUFBLENBQUE7QUFBQSxLQUFBO0lBRUQscUJBQXFCLEdBQUE7UUFDbkIsSUFBSSxDQUFDLFVBQVUsQ0FBQztBQUNkLFlBQUEsRUFBRSxFQUFFLDhCQUE4QjtBQUNsQyxZQUFBLElBQUksRUFBRSw4QkFBOEI7QUFDcEMsWUFBQSxhQUFhLEVBQUUsQ0FBQyxRQUFpQixLQUFJO2dCQUNuQyxJQUFJLFdBQVcsR0FDYixJQUFJLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxlQUFlLENBQUMsNEJBQTRCLENBQUM7cUJBQzdELE1BQU0sS0FBSyxDQUFDLENBQUE7QUFFakIsZ0JBQUEsSUFBSSxXQUFXLEVBQUU7O29CQUVmLElBQUksQ0FBQyxRQUFRLEVBQUU7d0JBQ2IsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUE7O0FBRXhCLHFCQUFBO0FBQ0Qsb0JBQUEsT0FBTyxJQUFJLENBQUE7QUFDWixpQkFBQTthQUNGO0FBQ0YsU0FBQSxDQUFDLENBQUE7S0FDSDtBQUVGLENBQUE7QUFFRDtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7In0=