diff --git a/material/assets/javascripts/bundle.js b/material/assets/javascripts/bundle.js new file mode 100644 index 000000000..a355b8ff3 --- /dev/null +++ b/material/assets/javascripts/bundle.js @@ -0,0 +1,37587 @@ +(function(e, a) { for(var i in a) e[i] = a[i]; }(window, /******/ (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, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // 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 = "./src/assets/javascripts/index.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/clipboard/dist/clipboard.js": +/*!**************************************************!*\ + !*** ./node_modules/clipboard/dist/clipboard.js ***! + \**************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/*! + * clipboard.js v2.0.4 + * https://zenorocha.github.io/clipboard.js + * + * Licensed MIT © Zeno Rocha + */ +(function webpackUniversalModuleDefinition(root, factory) { + if(true) + module.exports = factory(); + else {} +})(this, 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, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // 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); +/******/ }) +/************************************************************************/ +/******/ ([ +/* 0 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +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 _clipboardAction = __webpack_require__(1); + +var _clipboardAction2 = _interopRequireDefault(_clipboardAction); + +var _tinyEmitter = __webpack_require__(3); + +var _tinyEmitter2 = _interopRequireDefault(_tinyEmitter); + +var _goodListener = __webpack_require__(4); + +var _goodListener2 = _interopRequireDefault(_goodListener); + +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"); } } + +function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; } + +function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; } + +/** + * Base class which takes one or more elements, adds event listeners to them, + * and instantiates a new `ClipboardAction` on each click. + */ +var Clipboard = function (_Emitter) { + _inherits(Clipboard, _Emitter); + + /** + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + * @param {Object} options + */ + function Clipboard(trigger, options) { + _classCallCheck(this, Clipboard); + + var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this)); + + _this.resolveOptions(options); + _this.listenClick(trigger); + return _this; + } + + /** + * Defines if attributes would be resolved using internal setter functions + * or custom functions that were passed in the constructor. + * @param {Object} options + */ + + + _createClass(Clipboard, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = typeof options.action === 'function' ? options.action : this.defaultAction; + this.target = typeof options.target === 'function' ? options.target : this.defaultTarget; + this.text = typeof options.text === 'function' ? options.text : this.defaultText; + this.container = _typeof(options.container) === 'object' ? options.container : document.body; + } + + /** + * Adds a click event listener to the passed trigger. + * @param {String|HTMLElement|HTMLCollection|NodeList} trigger + */ + + }, { + key: 'listenClick', + value: function listenClick(trigger) { + var _this2 = this; + + this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) { + return _this2.onClick(e); + }); + } + + /** + * Defines a new `ClipboardAction` on each click event. + * @param {Event} e + */ + + }, { + key: 'onClick', + value: function onClick(e) { + var trigger = e.delegateTarget || e.currentTarget; + + if (this.clipboardAction) { + this.clipboardAction = null; + } + + this.clipboardAction = new _clipboardAction2.default({ + action: this.action(trigger), + target: this.target(trigger), + text: this.text(trigger), + container: this.container, + trigger: trigger, + emitter: this + }); + } + + /** + * Default `action` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultAction', + value: function defaultAction(trigger) { + return getAttributeValue('action', trigger); + } + + /** + * Default `target` lookup function. + * @param {Element} trigger + */ + + }, { + key: 'defaultTarget', + value: function defaultTarget(trigger) { + var selector = getAttributeValue('target', trigger); + + if (selector) { + return document.querySelector(selector); + } + } + + /** + * Returns the support of the given action, or all actions if no action is + * given. + * @param {String} [action] + */ + + }, { + key: 'defaultText', + + + /** + * Default `text` lookup function. + * @param {Element} trigger + */ + value: function defaultText(trigger) { + return getAttributeValue('text', trigger); + } + + /** + * Destroy lifecycle. + */ + + }, { + key: 'destroy', + value: function destroy() { + this.listener.destroy(); + + if (this.clipboardAction) { + this.clipboardAction.destroy(); + this.clipboardAction = null; + } + } + }], [{ + key: 'isSupported', + value: function isSupported() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut']; + + var actions = typeof action === 'string' ? [action] : action; + var support = !!document.queryCommandSupported; + + actions.forEach(function (action) { + support = support && !!document.queryCommandSupported(action); + }); + + return support; + } + }]); + + return Clipboard; +}(_tinyEmitter2.default); + +/** + * Helper function to retrieve attribute value. + * @param {String} suffix + * @param {Element} element + */ + + +function getAttributeValue(suffix, element) { + var attribute = 'data-clipboard-' + suffix; + + if (!element.hasAttribute(attribute)) { + return; + } + + return element.getAttribute(attribute); +} + +module.exports = Clipboard; + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; + +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 _select = __webpack_require__(2); + +var _select2 = _interopRequireDefault(_select); + +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"); } } + +/** + * Inner class which performs selection from either `text` or `target` + * properties and then executes copy or cut operations. + */ +var ClipboardAction = function () { + /** + * @param {Object} options + */ + function ClipboardAction(options) { + _classCallCheck(this, ClipboardAction); + + this.resolveOptions(options); + this.initSelection(); + } + + /** + * Defines base properties passed from constructor. + * @param {Object} options + */ + + + _createClass(ClipboardAction, [{ + key: 'resolveOptions', + value: function resolveOptions() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + this.action = options.action; + this.container = options.container; + this.emitter = options.emitter; + this.target = options.target; + this.text = options.text; + this.trigger = options.trigger; + + this.selectedText = ''; + } + + /** + * Decides which selection strategy is going to be applied based + * on the existence of `text` and `target` properties. + */ + + }, { + key: 'initSelection', + value: function initSelection() { + if (this.text) { + this.selectFake(); + } else if (this.target) { + this.selectTarget(); + } + } + + /** + * Creates a fake textarea element, sets its value from `text` property, + * and makes a selection on it. + */ + + }, { + key: 'selectFake', + value: function selectFake() { + var _this = this; + + var isRTL = document.documentElement.getAttribute('dir') == 'rtl'; + + this.removeFake(); + + this.fakeHandlerCallback = function () { + return _this.removeFake(); + }; + this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true; + + this.fakeElem = document.createElement('textarea'); + // Prevent zooming on iOS + this.fakeElem.style.fontSize = '12pt'; + // Reset box model + this.fakeElem.style.border = '0'; + this.fakeElem.style.padding = '0'; + this.fakeElem.style.margin = '0'; + // Move element out of screen horizontally + this.fakeElem.style.position = 'absolute'; + this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px'; + // Move element to the same position vertically + var yPosition = window.pageYOffset || document.documentElement.scrollTop; + this.fakeElem.style.top = yPosition + 'px'; + + this.fakeElem.setAttribute('readonly', ''); + this.fakeElem.value = this.text; + + this.container.appendChild(this.fakeElem); + + this.selectedText = (0, _select2.default)(this.fakeElem); + this.copyText(); + } + + /** + * Only removes the fake element after another click event, that way + * a user can hit `Ctrl+C` to copy because selection still exists. + */ + + }, { + key: 'removeFake', + value: function removeFake() { + if (this.fakeHandler) { + this.container.removeEventListener('click', this.fakeHandlerCallback); + this.fakeHandler = null; + this.fakeHandlerCallback = null; + } + + if (this.fakeElem) { + this.container.removeChild(this.fakeElem); + this.fakeElem = null; + } + } + + /** + * Selects the content from element passed on `target` property. + */ + + }, { + key: 'selectTarget', + value: function selectTarget() { + this.selectedText = (0, _select2.default)(this.target); + this.copyText(); + } + + /** + * Executes the copy operation based on the current selection. + */ + + }, { + key: 'copyText', + value: function copyText() { + var succeeded = void 0; + + try { + succeeded = document.execCommand(this.action); + } catch (err) { + succeeded = false; + } + + this.handleResult(succeeded); + } + + /** + * Fires an event based on the copy operation result. + * @param {Boolean} succeeded + */ + + }, { + key: 'handleResult', + value: function handleResult(succeeded) { + this.emitter.emit(succeeded ? 'success' : 'error', { + action: this.action, + text: this.selectedText, + trigger: this.trigger, + clearSelection: this.clearSelection.bind(this) + }); + } + + /** + * Moves focus away from `target` and back to the trigger, removes current selection. + */ + + }, { + key: 'clearSelection', + value: function clearSelection() { + if (this.trigger) { + this.trigger.focus(); + } + + window.getSelection().removeAllRanges(); + } + + /** + * Sets the `action` to be performed which can be either 'copy' or 'cut'. + * @param {String} action + */ + + }, { + key: 'destroy', + + + /** + * Destroy lifecycle. + */ + value: function destroy() { + this.removeFake(); + } + }, { + key: 'action', + set: function set() { + var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy'; + + this._action = action; + + if (this._action !== 'copy' && this._action !== 'cut') { + throw new Error('Invalid "action" value, use either "copy" or "cut"'); + } + } + + /** + * Gets the `action` property. + * @return {String} + */ + , + get: function get() { + return this._action; + } + + /** + * Sets the `target` property using an element + * that will be have its content copied. + * @param {Element} target + */ + + }, { + key: 'target', + set: function set(target) { + if (target !== undefined) { + if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) { + if (this.action === 'copy' && target.hasAttribute('disabled')) { + throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute'); + } + + if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) { + throw new Error('Invalid "target" attribute. You can\'t cut text from elements with "readonly" or "disabled" attributes'); + } + + this._target = target; + } else { + throw new Error('Invalid "target" value, use a valid Element'); + } + } + } + + /** + * Gets the `target` property. + * @return {String|HTMLElement} + */ + , + get: function get() { + return this._target; + } + }]); + + return ClipboardAction; +}(); + +module.exports = ClipboardAction; + +/***/ }), +/* 2 */ +/***/ (function(module, exports) { + +function select(element) { + var selectedText; + + if (element.nodeName === 'SELECT') { + element.focus(); + + selectedText = element.value; + } + else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') { + var isReadOnly = element.hasAttribute('readonly'); + + if (!isReadOnly) { + element.setAttribute('readonly', ''); + } + + element.select(); + element.setSelectionRange(0, element.value.length); + + if (!isReadOnly) { + element.removeAttribute('readonly'); + } + + selectedText = element.value; + } + else { + if (element.hasAttribute('contenteditable')) { + element.focus(); + } + + var selection = window.getSelection(); + var range = document.createRange(); + + range.selectNodeContents(element); + selection.removeAllRanges(); + selection.addRange(range); + + selectedText = selection.toString(); + } + + return selectedText; +} + +module.exports = select; + + +/***/ }), +/* 3 */ +/***/ (function(module, exports) { + +function E () { + // Keep this empty so it's easier to inherit from + // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3) +} + +E.prototype = { + on: function (name, callback, ctx) { + var e = this.e || (this.e = {}); + + (e[name] || (e[name] = [])).push({ + fn: callback, + ctx: ctx + }); + + return this; + }, + + once: function (name, callback, ctx) { + var self = this; + function listener () { + self.off(name, listener); + callback.apply(ctx, arguments); + }; + + listener._ = callback + return this.on(name, listener, ctx); + }, + + emit: function (name) { + var data = [].slice.call(arguments, 1); + var evtArr = ((this.e || (this.e = {}))[name] || []).slice(); + var i = 0; + var len = evtArr.length; + + for (i; i < len; i++) { + evtArr[i].fn.apply(evtArr[i].ctx, data); + } + + return this; + }, + + off: function (name, callback) { + var e = this.e || (this.e = {}); + var evts = e[name]; + var liveEvents = []; + + if (evts && callback) { + for (var i = 0, len = evts.length; i < len; i++) { + if (evts[i].fn !== callback && evts[i].fn._ !== callback) + liveEvents.push(evts[i]); + } + } + + // Remove event from queue to prevent memory leak + // Suggested by https://github.com/lazd + // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910 + + (liveEvents.length) + ? e[name] = liveEvents + : delete e[name]; + + return this; + } +}; + +module.exports = E; + + +/***/ }), +/* 4 */ +/***/ (function(module, exports, __webpack_require__) { + +var is = __webpack_require__(5); +var delegate = __webpack_require__(6); + +/** + * Validates all params and calls the right + * listener function based on its target type. + * + * @param {String|HTMLElement|HTMLCollection|NodeList} target + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listen(target, type, callback) { + if (!target && !type && !callback) { + throw new Error('Missing required arguments'); + } + + if (!is.string(type)) { + throw new TypeError('Second argument must be a String'); + } + + if (!is.fn(callback)) { + throw new TypeError('Third argument must be a Function'); + } + + if (is.node(target)) { + return listenNode(target, type, callback); + } + else if (is.nodeList(target)) { + return listenNodeList(target, type, callback); + } + else if (is.string(target)) { + return listenSelector(target, type, callback); + } + else { + throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList'); + } +} + +/** + * Adds an event listener to a HTML element + * and returns a remove listener function. + * + * @param {HTMLElement} node + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNode(node, type, callback) { + node.addEventListener(type, callback); + + return { + destroy: function() { + node.removeEventListener(type, callback); + } + } +} + +/** + * Add an event listener to a list of HTML elements + * and returns a remove listener function. + * + * @param {NodeList|HTMLCollection} nodeList + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenNodeList(nodeList, type, callback) { + Array.prototype.forEach.call(nodeList, function(node) { + node.addEventListener(type, callback); + }); + + return { + destroy: function() { + Array.prototype.forEach.call(nodeList, function(node) { + node.removeEventListener(type, callback); + }); + } + } +} + +/** + * Add an event listener to a selector + * and returns a remove listener function. + * + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Object} + */ +function listenSelector(selector, type, callback) { + return delegate(document.body, selector, type, callback); +} + +module.exports = listen; + + +/***/ }), +/* 5 */ +/***/ (function(module, exports) { + +/** + * Check if argument is a HTML element. + * + * @param {Object} value + * @return {Boolean} + */ +exports.node = function(value) { + return value !== undefined + && value instanceof HTMLElement + && value.nodeType === 1; +}; + +/** + * Check if argument is a list of HTML elements. + * + * @param {Object} value + * @return {Boolean} + */ +exports.nodeList = function(value) { + var type = Object.prototype.toString.call(value); + + return value !== undefined + && (type === '[object NodeList]' || type === '[object HTMLCollection]') + && ('length' in value) + && (value.length === 0 || exports.node(value[0])); +}; + +/** + * Check if argument is a string. + * + * @param {Object} value + * @return {Boolean} + */ +exports.string = function(value) { + return typeof value === 'string' + || value instanceof String; +}; + +/** + * Check if argument is a function. + * + * @param {Object} value + * @return {Boolean} + */ +exports.fn = function(value) { + var type = Object.prototype.toString.call(value); + + return type === '[object Function]'; +}; + + +/***/ }), +/* 6 */ +/***/ (function(module, exports, __webpack_require__) { + +var closest = __webpack_require__(7); + +/** + * Delegates event to a selector. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function _delegate(element, selector, type, callback, useCapture) { + var listenerFn = listener.apply(this, arguments); + + element.addEventListener(type, listenerFn, useCapture); + + return { + destroy: function() { + element.removeEventListener(type, listenerFn, useCapture); + } + } +} + +/** + * Delegates event to a selector. + * + * @param {Element|String|Array} [elements] + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @param {Boolean} useCapture + * @return {Object} + */ +function delegate(elements, selector, type, callback, useCapture) { + // Handle the regular Element usage + if (typeof elements.addEventListener === 'function') { + return _delegate.apply(null, arguments); + } + + // Handle Element-less usage, it defaults to global delegation + if (typeof type === 'function') { + // Use `document` as the first parameter, then apply arguments + // This is a short way to .unshift `arguments` without running into deoptimizations + return _delegate.bind(null, document).apply(null, arguments); + } + + // Handle Selector-based usage + if (typeof elements === 'string') { + elements = document.querySelectorAll(elements); + } + + // Handle Array-like based usage + return Array.prototype.map.call(elements, function (element) { + return _delegate(element, selector, type, callback, useCapture); + }); +} + +/** + * Finds closest match and invokes callback. + * + * @param {Element} element + * @param {String} selector + * @param {String} type + * @param {Function} callback + * @return {Function} + */ +function listener(element, selector, type, callback) { + return function(e) { + e.delegateTarget = closest(e.target, selector); + + if (e.delegateTarget) { + callback.call(element, e); + } + } +} + +module.exports = delegate; + + +/***/ }), +/* 7 */ +/***/ (function(module, exports) { + +var DOCUMENT_NODE_TYPE = 9; + +/** + * A polyfill for Element.matches() + */ +if (typeof Element !== 'undefined' && !Element.prototype.matches) { + var proto = Element.prototype; + + proto.matches = proto.matchesSelector || + proto.mozMatchesSelector || + proto.msMatchesSelector || + proto.oMatchesSelector || + proto.webkitMatchesSelector; +} + +/** + * Finds the closest parent that matches a selector. + * + * @param {Element} element + * @param {String} selector + * @return {Function} + */ +function closest (element, selector) { + while (element && element.nodeType !== DOCUMENT_NODE_TYPE) { + if (typeof element.matches === 'function' && + element.matches(selector)) { + return element; + } + element = element.parentNode; + } +} + +module.exports = closest; + + +/***/ }) +/******/ ]); +}); + +/***/ }), + +/***/ "./node_modules/material-design-icons-svg/paths/content-copy.json": +/*!************************************************************************!*\ + !*** ./node_modules/material-design-icons-svg/paths/content-copy.json ***! + \************************************************************************/ +/*! exports provided: default */ +/***/ (function(module) { + +module.exports = JSON.parse("\"M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z\""); + +/***/ }), + +/***/ "./node_modules/material-design-icons-svg/paths/file-search-outline.json": +/*!*******************************************************************************!*\ + !*** ./node_modules/material-design-icons-svg/paths/file-search-outline.json ***! + \*******************************************************************************/ +/*! exports provided: default */ +/***/ (function(module) { + +module.exports = JSON.parse("\"M14,2H6A2,2 0 0,0 4,4V20A2,2 0 0,0 6,22H13C12.59,21.75 12.2,21.44 11.86,21.1C11.53,20.77 11.25,20.4 11,20H6V4H13V9H18V10.18C18.71,10.34 19.39,10.61 20,11V8L14,2M20.31,18.9C21.64,16.79 21,14 18.91,12.68C16.8,11.35 14,12 12.69,14.08C11.35,16.19 12,18.97 14.09,20.3C15.55,21.23 17.41,21.23 18.88,20.32L22,23.39L23.39,22L20.31,18.9M16.5,19A2.5,2.5 0 0,1 14,16.5A2.5,2.5 0 0,1 16.5,14A2.5,2.5 0 0,1 19,16.5A2.5,2.5 0 0,1 16.5,19Z\""); + +/***/ }), + +/***/ "./node_modules/ramda/es/F.js": +/*!************************************!*\ + !*** ./node_modules/ramda/es/F.js ***! + \************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); + + +/** + * A function that always returns `false`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.T + * @example + * + * R.F(); //=> false + */ +var F = function () { + return false; +}; +/* harmony default export */ __webpack_exports__["default"] = (F); + +/***/ }), + +/***/ "./node_modules/ramda/es/T.js": +/*!************************************!*\ + !*** ./node_modules/ramda/es/T.js ***! + \************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); + + +/** + * A function that always returns `true`. Any passed in parameters are ignored. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig * -> Boolean + * @param {*} + * @return {Boolean} + * @see R.F + * @example + * + * R.T(); //=> true + */ +var T = function () { + return true; +}; +/* harmony default export */ __webpack_exports__["default"] = (T); + +/***/ }), + +/***/ "./node_modules/ramda/es/__.js": +/*!*************************************!*\ + !*** ./node_modules/ramda/es/__.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/** + * A special placeholder value used to specify "gaps" within curried functions, + * allowing partial application of any combination of arguments, regardless of + * their positions. + * + * If `g` is a curried ternary function and `_` is `R.__`, the following are + * equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2, _)(1, 3)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @name __ + * @constant + * @memberOf R + * @since v0.6.0 + * @category Function + * @example + * + * const greet = R.replace('{name}', R.__, 'Hello, {name}!'); + * greet('Alice'); //=> 'Hello, Alice!' + */ +/* harmony default export */ __webpack_exports__["default"] = ({ '@@functional/placeholder': true }); + +/***/ }), + +/***/ "./node_modules/ramda/es/add.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/add.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Adds two values. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a + * @param {Number} b + * @return {Number} + * @see R.subtract + * @example + * + * R.add(2, 3); //=> 5 + * R.add(7)(10); //=> 17 + */ +var add = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function add(a, b) { + return Number(a) + Number(b); +}); +/* harmony default export */ __webpack_exports__["default"] = (add); + +/***/ }), + +/***/ "./node_modules/ramda/es/addIndex.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/addIndex.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); + + + + +/** + * Creates a new list iteration function from an existing one by adding two new + * parameters to its callback function: the current index, and the entire list. + * + * This would turn, for instance, [`R.map`](#map) function into one that + * more closely resembles `Array.prototype.map`. Note that this will only work + * for functions in which the iteration callback function is the first + * parameter, and where the list is the last parameter. (This latter might be + * unimportant if the list parameter is not used.) + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Function + * @category List + * @sig ((a ... -> b) ... -> [a] -> *) -> ((a ..., Int, [a] -> b) ... -> [a] -> *) + * @param {Function} fn A list iteration function that does not pass index or list to its callback + * @return {Function} An altered list iteration function that passes (item, index, list) to its callback + * @example + * + * const mapIndexed = R.addIndex(R.map); + * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']); + * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r'] + */ +var addIndex = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function addIndex(fn) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(fn.length, function () { + var idx = 0; + var origFn = arguments[0]; + var list = arguments[arguments.length - 1]; + var args = Array.prototype.slice.call(arguments, 0); + args[0] = function () { + var result = origFn.apply(this, Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments, [idx, list])); + idx += 1; + return result; + }; + return fn.apply(this, args); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (addIndex); + +/***/ }), + +/***/ "./node_modules/ramda/es/adjust.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/adjust.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + + +/** + * Applies a function to the value at the given index of an array, returning a + * new copy of the array with the element at the given index replaced with the + * result of the function application. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig Number -> (a -> a) -> [a] -> [a] + * @param {Number} idx The index. + * @param {Function} fn The function to apply. + * @param {Array|Arguments} list An array-like object whose value + * at the supplied index will be replaced. + * @return {Array} A copy of the supplied array-like object with + * the element at index `idx` replaced with the value + * returned by applying `fn` to the existing element. + * @see R.update + * @example + * + * R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'B', 'c', 'd'] + * R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'D'] + * @symb R.adjust(-1, f, [a, b]) = [a, f(b)] + * @symb R.adjust(0, f, [a, b]) = [f(a), b] + */ +var adjust = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function adjust(idx, fn, list) { + if (idx >= list.length || idx < -list.length) { + return list; + } + var start = idx < 0 ? list.length : 0; + var _idx = start + idx; + var _list = Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list); + _list[_idx] = fn(list[_idx]); + return _list; +}); +/* harmony default export */ __webpack_exports__["default"] = (adjust); + +/***/ }), + +/***/ "./node_modules/ramda/es/all.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/all.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xall_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xall.js */ "./node_modules/ramda/es/internal/_xall.js"); + + + + +/** + * Returns `true` if all elements of the list match the predicate, `false` if + * there are any that don't. + * + * Dispatches to the `all` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by every element, `false` + * otherwise. + * @see R.any, R.none, R.transduce + * @example + * + * const equals3 = R.equals(3); + * R.all(equals3)([3, 3, 3, 3]); //=> true + * R.all(equals3)([3, 3, 1, 3]); //=> false + */ +var all = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['all'], _internal_xall_js__WEBPACK_IMPORTED_MODULE_2__["default"], function all(fn, list) { + var idx = 0; + while (idx < list.length) { + if (!fn(list[idx])) { + return false; + } + idx += 1; + } + return true; +})); +/* harmony default export */ __webpack_exports__["default"] = (all); + +/***/ }), + +/***/ "./node_modules/ramda/es/allPass.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/allPass.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); +/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); + + + + + + +/** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if every one of the provided predicates is satisfied + * by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.anyPass + * @example + * + * const isQueen = R.propEq('rank', 'Q'); + * const isSpade = R.propEq('suit', '♠︎'); + * const isQueenOfSpades = R.allPass([isQueen, isSpade]); + * + * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false + * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true + */ +var allPass = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function allPass(preds) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_2__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_3__["default"])('length', preds)), function () { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (!preds[idx].apply(this, arguments)) { + return false; + } + idx += 1; + } + return true; + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (allPass); + +/***/ }), + +/***/ "./node_modules/ramda/es/always.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/always.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Returns a function that always returns the given value. Note that for + * non-primitives the value returned is a reference to the original value. + * + * This function is known as `const`, `constant`, or `K` (for K combinator) in + * other languages and libraries. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> (* -> a) + * @param {*} val The value to wrap in a function + * @return {Function} A Function :: * -> val. + * @example + * + * const t = R.always('Tee'); + * t(); //=> 'Tee' + */ +var always = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function always(val) { + return function () { + return val; + }; +}); +/* harmony default export */ __webpack_exports__["default"] = (always); + +/***/ }), + +/***/ "./node_modules/ramda/es/and.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/and.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns `true` if both arguments are `true`; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if it is falsy, otherwise the second argument. + * @see R.both + * @example + * + * R.and(true, true); //=> true + * R.and(true, false); //=> false + * R.and(false, true); //=> false + * R.and(false, false); //=> false + */ +var and = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function and(a, b) { + return a && b; +}); +/* harmony default export */ __webpack_exports__["default"] = (and); + +/***/ }), + +/***/ "./node_modules/ramda/es/any.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/any.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xany_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xany.js */ "./node_modules/ramda/es/internal/_xany.js"); + + + + +/** + * Returns `true` if at least one of the elements of the list match the predicate, + * `false` otherwise. + * + * Dispatches to the `any` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false` + * otherwise. + * @see R.all, R.none, R.transduce + * @example + * + * const lessThan0 = R.flip(R.lt)(0); + * const lessThan2 = R.flip(R.lt)(2); + * R.any(lessThan0)([1, 2]); //=> false + * R.any(lessThan2)([1, 2]); //=> true + */ +var any = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['any'], _internal_xany_js__WEBPACK_IMPORTED_MODULE_2__["default"], function any(fn, list) { + var idx = 0; + while (idx < list.length) { + if (fn(list[idx])) { + return true; + } + idx += 1; + } + return false; +})); +/* harmony default export */ __webpack_exports__["default"] = (any); + +/***/ }), + +/***/ "./node_modules/ramda/es/anyPass.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/anyPass.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); +/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); + + + + + + +/** + * Takes a list of predicates and returns a predicate that returns true for a + * given list of arguments if at least one of the provided predicates is + * satisfied by those arguments. + * + * The function returned is a curried function whose arity matches that of the + * highest-arity predicate. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Logic + * @sig [(*... -> Boolean)] -> (*... -> Boolean) + * @param {Array} predicates An array of predicates to check + * @return {Function} The combined predicate + * @see R.allPass + * @example + * + * const isClub = R.propEq('suit', '♣'); + * const isSpade = R.propEq('suit', '♠'); + * const isBlackCard = R.anyPass([isClub, isSpade]); + * + * isBlackCard({rank: '10', suit: '♣'}); //=> true + * isBlackCard({rank: 'Q', suit: '♠'}); //=> true + * isBlackCard({rank: 'Q', suit: '♦'}); //=> false + */ +var anyPass = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function anyPass(preds) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_2__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_3__["default"])('length', preds)), function () { + var idx = 0; + var len = preds.length; + while (idx < len) { + if (preds[idx].apply(this, arguments)) { + return true; + } + idx += 1; + } + return false; + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (anyPass); + +/***/ }), + +/***/ "./node_modules/ramda/es/ap.js": +/*!*************************************!*\ + !*** ./node_modules/ramda/es/ap.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); + + + + + +/** + * ap applies a list of functions to a list of values. + * + * Dispatches to the `ap` method of the second argument, if present. Also + * treats curried functions as applicatives. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig [a -> b] -> [a] -> [b] + * @sig Apply f => f (a -> b) -> f a -> f b + * @sig (r -> a -> b) -> (r -> a) -> (r -> b) + * @param {*} applyF + * @param {*} applyX + * @return {*} + * @example + * + * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6] + * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"] + * + * // R.ap can also be used as S combinator + * // when only two functions are passed + * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA' + * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)] + */ +var ap = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function ap(applyF, applyX) { + return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) { + return applyF(x)(applyX(x)); + } : Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (acc, f) { + return Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(acc, Object(_map_js__WEBPACK_IMPORTED_MODULE_3__["default"])(f, applyX)); + }, [], applyF); +}); +/* harmony default export */ __webpack_exports__["default"] = (ap); + +/***/ }), + +/***/ "./node_modules/ramda/es/aperture.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/aperture.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_aperture_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_aperture.js */ "./node_modules/ramda/es/internal/_aperture.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xaperture_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xaperture.js */ "./node_modules/ramda/es/internal/_xaperture.js"); + + + + + +/** + * Returns a new list, composed of n-tuples of consecutive elements. If `n` is + * greater than the length of the list, an empty list is returned. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @param {Number} n The size of the tuples to create + * @param {Array} list The list to split into `n`-length tuples + * @return {Array} The resulting list of `n`-length tuples + * @see R.transduce + * @example + * + * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]] + * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]] + * R.aperture(7, [1, 2, 3, 4, 5]); //=> [] + */ +var aperture = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_2__["default"])([], _internal_xaperture_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_aperture_js__WEBPACK_IMPORTED_MODULE_0__["default"])); +/* harmony default export */ __webpack_exports__["default"] = (aperture); + +/***/ }), + +/***/ "./node_modules/ramda/es/append.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/append.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Returns a new list containing the contents of the given list, followed by + * the given element. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The element to add to the end of the new list. + * @param {Array} list The list of elements to add a new item to. + * list. + * @return {Array} A new list containing the elements of the old list followed by `el`. + * @see R.prepend + * @example + * + * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests'] + * R.append('tests', []); //=> ['tests'] + * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']] + */ +var append = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function append(el, list) { + return Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list, [el]); +}); +/* harmony default export */ __webpack_exports__["default"] = (append); + +/***/ }), + +/***/ "./node_modules/ramda/es/apply.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/apply.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Applies function `fn` to the argument list `args`. This is useful for + * creating a fixed-arity function from a variadic function. `fn` should be a + * bound function if context is significant. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> a) -> [*] -> a + * @param {Function} fn The function which will be called with `args` + * @param {Array} args The arguments to call `fn` with + * @return {*} result The result, equivalent to `fn(...args)` + * @see R.call, R.unapply + * @example + * + * const nums = [1, 2, 3, -99, 42, 6, 7]; + * R.apply(Math.max, nums); //=> 42 + * @symb R.apply(f, [a, b, c]) = f(a, b, c) + */ +var apply = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function apply(fn, args) { + return fn.apply(this, args); +}); +/* harmony default export */ __webpack_exports__["default"] = (apply); + +/***/ }), + +/***/ "./node_modules/ramda/es/applySpec.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/applySpec.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _apply_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./apply.js */ "./node_modules/ramda/es/apply.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); +/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); +/* harmony import */ var _values_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./values.js */ "./node_modules/ramda/es/values.js"); + + + + + + + + + +// Use custom mapValues function to avoid issues with specs that include a "map" key and R.map +// delegating calls to .map +function mapValues(fn, obj) { + return Object(_keys_js__WEBPACK_IMPORTED_MODULE_6__["default"])(obj).reduce(function (acc, key) { + acc[key] = fn(obj[key]); + return acc; + }, {}); +} + +/** + * Given a spec object recursively mapping properties to functions, creates a + * function producing an object of the same structure, by mapping each property + * to the result of calling its associated function with the supplied arguments. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v}) + * @param {Object} spec an object recursively mapping properties to functions for + * producing the values for these properties. + * @return {Function} A function that returns an object of the same structure + * as `spec', with each property set to the value returned by calling its + * associated function with the supplied arguments. + * @see R.converge, R.juxt + * @example + * + * const getMetrics = R.applySpec({ + * sum: R.add, + * nested: { mul: R.multiply } + * }); + * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } } + * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } } + */ +var applySpec = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function applySpec(spec) { + spec = mapValues(function (v) { + return typeof v == 'function' ? v : applySpec(v); + }, spec); + + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_3__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_4__["default"])('length', Object(_values_js__WEBPACK_IMPORTED_MODULE_7__["default"])(spec))), function () { + var args = arguments; + return mapValues(function (f) { + return Object(_apply_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f, args); + }, spec); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (applySpec); + +/***/ }), + +/***/ "./node_modules/ramda/es/applyTo.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/applyTo.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Takes a value and applies a function to it. + * + * This function is also known as the `thrush` combinator. + * + * @func + * @memberOf R + * @since v0.25.0 + * @category Function + * @sig a -> (a -> b) -> b + * @param {*} x The value + * @param {Function} f The function to apply + * @return {*} The result of applying `f` to `x` + * @example + * + * const t42 = R.applyTo(42); + * t42(R.identity); //=> 42 + * t42(R.add(1)); //=> 43 + */ +var applyTo = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function applyTo(x, f) { + return f(x); +}); +/* harmony default export */ __webpack_exports__["default"] = (applyTo); + +/***/ }), + +/***/ "./node_modules/ramda/es/ascend.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/ascend.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Makes an ascending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0` + * @see R.descend + * @example + * + * const byAge = R.ascend(R.prop('age')); + * const people = [ + * { name: 'Emma', age: 70 }, + * { name: 'Peter', age: 78 }, + * { name: 'Mikhail', age: 62 }, + * ]; + * const peopleByYoungestFirst = R.sort(byAge, people); + * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] + */ +var ascend = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function ascend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; +}); +/* harmony default export */ __webpack_exports__["default"] = (ascend); + +/***/ }), + +/***/ "./node_modules/ramda/es/assoc.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/assoc.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Makes a shallow clone of an object, setting or overriding the specified + * property with the given value. Note that this copies and flattens prototype + * properties onto the new object as well. All non-primitive properties are + * copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @sig String -> a -> {k: v} -> {k: v} + * @param {String} prop The property name to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except for the changed property. + * @see R.dissoc, R.pick + * @example + * + * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3} + */ +var assoc = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function assoc(prop, val, obj) { + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + result[prop] = val; + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (assoc); + +/***/ }), + +/***/ "./node_modules/ramda/es/assocPath.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/assocPath.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); +/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); +/* harmony import */ var _internal_isInteger_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/es/internal/_isInteger.js"); +/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); +/* harmony import */ var _isNil_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/es/isNil.js"); + + + + + + + +/** + * Makes a shallow clone of an object, setting or overriding the nodes required + * to create the given path, and placing the specific value at the tail end of + * that path. Note that this copies and flattens prototype properties onto the + * new object as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> a -> {a} -> {a} + * @param {Array} path the path to set + * @param {*} val The new value + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original except along the specified path. + * @see R.dissocPath + * @example + * + * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}} + * + * // Any missing or non-object keys in path will be overridden + * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}} + */ +var assocPath = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function assocPath(path, val, obj) { + if (path.length === 0) { + return val; + } + var idx = path[0]; + if (path.length > 1) { + var nextObj = !Object(_isNil_js__WEBPACK_IMPORTED_MODULE_5__["default"])(obj) && Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx, obj) ? obj[idx] : Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_3__["default"])(path[1]) ? [] : {}; + val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj); + } + if (Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_3__["default"])(idx) && Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)) { + var arr = [].concat(obj); + arr[idx] = val; + return arr; + } else { + return Object(_assoc_js__WEBPACK_IMPORTED_MODULE_4__["default"])(idx, val, obj); + } +}); +/* harmony default export */ __webpack_exports__["default"] = (assocPath); + +/***/ }), + +/***/ "./node_modules/ramda/es/binary.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/binary.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); + + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 2 parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (* -> c) -> (a, b -> c) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 2. + * @see R.nAry, R.unary + * @example + * + * const takesThreeArgs = function(a, b, c) { + * return [a, b, c]; + * }; + * takesThreeArgs.length; //=> 3 + * takesThreeArgs(1, 2, 3); //=> [1, 2, 3] + * + * const takesTwoArgs = R.binary(takesThreeArgs); + * takesTwoArgs.length; //=> 2 + * // Only 2 arguments are passed to the wrapped function + * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined] + * @symb R.binary(f)(a, b, c) = f(a, b) + */ +var binary = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function binary(fn) { + return Object(_nAry_js__WEBPACK_IMPORTED_MODULE_1__["default"])(2, fn); +}); +/* harmony default export */ __webpack_exports__["default"] = (binary); + +/***/ }), + +/***/ "./node_modules/ramda/es/bind.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/bind.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Creates a function that is bound to a context. + * Note: `R.bind` does not provide the additional argument-binding capabilities of + * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind). + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Function + * @category Object + * @sig (* -> *) -> {*} -> (* -> *) + * @param {Function} fn The function to bind to context + * @param {Object} thisObj The context to bind `fn` to + * @return {Function} A function that will execute in the context of `thisObj`. + * @see R.partial + * @example + * + * const log = R.bind(console.log, console); + * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3} + * // logs {a: 2} + * @symb R.bind(f, o)(a, b) = f.call(o, a, b) + */ +var bind = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function bind(fn, thisObj) { + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function () { + return fn.apply(thisObj, arguments); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (bind); + +/***/ }), + +/***/ "./node_modules/ramda/es/both.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/both.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); +/* harmony import */ var _and_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./and.js */ "./node_modules/ramda/es/and.js"); +/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); + + + + + +/** + * A function which calls the two provided functions and returns the `&&` + * of the results. + * It returns the result of the first function if it is false-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * false-y value. + * + * In addition to functions, `R.both` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f A predicate + * @param {Function} g Another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together. + * @see R.and + * @example + * + * const gt10 = R.gt(R.__, 10) + * const lt20 = R.lt(R.__, 20) + * const f = R.both(gt10, lt20); + * f(15); //=> true + * f(30); //=> false + * + * R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false) + * R.both([false, false, 'a'], [11]); //=> [false, false, 11] + */ +var both = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function both(f, g) { + return Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f) ? function _both() { + return f.apply(this, arguments) && g.apply(this, arguments); + } : Object(_lift_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_and_js__WEBPACK_IMPORTED_MODULE_2__["default"])(f, g); +}); +/* harmony default export */ __webpack_exports__["default"] = (both); + +/***/ }), + +/***/ "./node_modules/ramda/es/call.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/call.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curry.js */ "./node_modules/ramda/es/curry.js"); + + +/** + * Returns the result of calling its first argument with the remaining + * arguments. This is occasionally useful as a converging function for + * [`R.converge`](#converge): the first branch can produce a function while the + * remaining branches produce values to be passed to that function as its + * arguments. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig (*... -> a),*... -> a + * @param {Function} fn The function to apply to the remaining arguments. + * @param {...*} args Any number of positional arguments. + * @return {*} + * @see R.apply + * @example + * + * R.call(R.add, 1, 2); //=> 3 + * + * const indentN = R.pipe(R.repeat(' '), + * R.join(''), + * R.replace(/^(?!$)/gm)); + * + * const format = R.converge(R.call, [ + * R.pipe(R.prop('indent'), indentN), + * R.prop('value') + * ]); + * + * format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> ' foo\n bar\n baz\n' + * @symb R.call(f, a, b) = f(a, b) + */ +var call = /*#__PURE__*/Object(_curry_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function call(fn) { + return fn.apply(this, Array.prototype.slice.call(arguments, 1)); +}); +/* harmony default export */ __webpack_exports__["default"] = (call); + +/***/ }), + +/***/ "./node_modules/ramda/es/chain.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/chain.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_makeFlat.js */ "./node_modules/ramda/es/internal/_makeFlat.js"); +/* harmony import */ var _internal_xchain_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xchain.js */ "./node_modules/ramda/es/internal/_xchain.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); + + + + + + +/** + * `chain` maps a function over a list and concatenates the results. `chain` + * is also known as `flatMap` in some libraries. + * + * Dispatches to the `chain` method of the second argument, if present, + * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain). + * + * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain m => (a -> m b) -> m a -> m b + * @param {Function} fn The function to map with + * @param {Array} list The list to map over + * @return {Array} The result of flat-mapping `list` with `fn` + * @example + * + * const duplicate = n => [n, n]; + * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3] + * + * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1] + */ +var chain = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['fantasy-land/chain', 'chain'], _internal_xchain_js__WEBPACK_IMPORTED_MODULE_3__["default"], function chain(fn, monad) { + if (typeof monad === 'function') { + return function (x) { + return fn(monad(x))(x); + }; + } + return Object(_internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_2__["default"])(false)(Object(_map_js__WEBPACK_IMPORTED_MODULE_4__["default"])(fn, monad)); +})); +/* harmony default export */ __webpack_exports__["default"] = (chain); + +/***/ }), + +/***/ "./node_modules/ramda/es/clamp.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/clamp.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Restricts a number to be within a range. + * + * Also works for other ordered types such as Strings and Dates. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Relation + * @sig Ord a => a -> a -> a -> a + * @param {Number} minimum The lower limit of the clamp (inclusive) + * @param {Number} maximum The upper limit of the clamp (inclusive) + * @param {Number} value Value to be clamped + * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise + * @example + * + * R.clamp(1, 10, -5) // => 1 + * R.clamp(1, 10, 15) // => 10 + * R.clamp(1, 10, 4) // => 4 + */ +var clamp = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function clamp(min, max, value) { + if (min > max) { + throw new Error('min must not be greater than max in clamp(min, max, value)'); + } + return value < min ? min : value > max ? max : value; +}); +/* harmony default export */ __webpack_exports__["default"] = (clamp); + +/***/ }), + +/***/ "./node_modules/ramda/es/clone.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/clone.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_clone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_clone.js */ "./node_modules/ramda/es/internal/_clone.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + + +/** + * Creates a deep copy of the value which may contain (nested) `Array`s and + * `Object`s, `Number`s, `String`s, `Boolean`s and `Date`s. `Function`s are + * assigned by reference rather than copied + * + * Dispatches to a `clone` method if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {*} -> {*} + * @param {*} value The object or array to clone + * @return {*} A deeply cloned copy of `val` + * @example + * + * const objects = [{}, {}, {}]; + * const objectsClone = R.clone(objects); + * objects === objectsClone; //=> false + * objects[0] === objectsClone[0]; //=> false + */ +var clone = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function clone(value) { + return value != null && typeof value.clone === 'function' ? value.clone() : Object(_internal_clone_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value, [], [], true); +}); +/* harmony default export */ __webpack_exports__["default"] = (clone); + +/***/ }), + +/***/ "./node_modules/ramda/es/comparator.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/comparator.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Makes a comparator function out of a function that reports whether the first + * element is less than the second. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((a, b) -> Boolean) -> ((a, b) -> Number) + * @param {Function} pred A predicate function of arity two which will return `true` if the first argument + * is less than the second, `false` otherwise + * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0` + * @example + * + * const byAge = R.comparator((a, b) => a.age < b.age); + * const people = [ + * { name: 'Emma', age: 70 }, + * { name: 'Peter', age: 78 }, + * { name: 'Mikhail', age: 62 }, + * ]; + * const peopleByIncreasingAge = R.sort(byAge, people); + * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }] + */ +var comparator = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function comparator(pred) { + return function (a, b) { + return pred(a, b) ? -1 : pred(b, a) ? 1 : 0; + }; +}); +/* harmony default export */ __webpack_exports__["default"] = (comparator); + +/***/ }), + +/***/ "./node_modules/ramda/es/complement.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/complement.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); +/* harmony import */ var _not_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./not.js */ "./node_modules/ramda/es/not.js"); + + + +/** + * Takes a function `f` and returns a function `g` such that if called with the same arguments + * when `f` returns a "truthy" value, `g` returns `false` and when `f` returns a "falsy" value `g` returns `true`. + * + * `R.complement` may be applied to any functor + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> *) -> (*... -> Boolean) + * @param {Function} f + * @return {Function} + * @see R.not + * @example + * + * const isNotNil = R.complement(R.isNil); + * isNil(null); //=> true + * isNotNil(null); //=> false + * isNil(7); //=> false + * isNotNil(7); //=> true + */ +var complement = /*#__PURE__*/Object(_lift_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_not_js__WEBPACK_IMPORTED_MODULE_1__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (complement); + +/***/ }), + +/***/ "./node_modules/ramda/es/compose.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/compose.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return compose; }); +/* harmony import */ var _pipe_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pipe.js */ "./node_modules/ramda/es/pipe.js"); +/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); + + + +/** + * Performs right-to-left function composition. The rightmost function may have + * any arity; the remaining functions must be unary. + * + * **Note:** The result of compose is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.pipe + * @example + * + * const classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName + * const yellGreeting = R.compose(R.toUpper, classyGreeting); + * yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7 + * + * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b))) + */ +function compose() { + if (arguments.length === 0) { + throw new Error('compose requires at least one argument'); + } + return _pipe_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(this, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arguments)); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/composeK.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/composeK.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return composeK; }); +/* harmony import */ var _chain_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chain.js */ "./node_modules/ramda/es/chain.js"); +/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compose.js */ "./node_modules/ramda/es/compose.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); + + + + +/** + * Returns the right-to-left Kleisli composition of the provided functions, + * each of which must return a value of a type supported by [`chain`](#chain). + * + * `R.composeK(h, g, f)` is equivalent to `R.compose(R.chain(h), R.chain(g), f)`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Function + * @sig Chain m => ((y -> m z), (x -> m y), ..., (a -> m b)) -> (a -> m z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.pipeK + * @deprecated since v0.26.0 + * @example + * + * // get :: String -> Object -> Maybe * + * const get = R.curry((propName, obj) => Maybe(obj[propName])) + * + * // getStateCode :: Maybe String -> Maybe String + * const getStateCode = R.composeK( + * R.compose(Maybe.of, R.toUpper), + * get('state'), + * get('address'), + * get('user'), + * ); + * getStateCode({"user":{"address":{"state":"ny"}}}); //=> Maybe.Just("NY") + * getStateCode({}); //=> Maybe.Nothing() + * @symb R.composeK(f, g, h)(a) = R.chain(f, R.chain(g, h(a))) + */ +function composeK() { + if (arguments.length === 0) { + throw new Error('composeK requires at least one argument'); + } + var init = Array.prototype.slice.call(arguments); + var last = init.pop(); + return Object(_compose_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_compose_js__WEBPACK_IMPORTED_MODULE_1__["default"].apply(this, Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_chain_js__WEBPACK_IMPORTED_MODULE_0__["default"], init)), last); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/composeP.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/composeP.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return composeP; }); +/* harmony import */ var _pipeP_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./pipeP.js */ "./node_modules/ramda/es/pipeP.js"); +/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); + + + +/** + * Performs right-to-left composition of one or more Promise-returning + * functions. The rightmost function may have any arity; the remaining + * functions must be unary. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((y -> Promise z), (x -> Promise y), ..., (a -> Promise b)) -> (a -> Promise z) + * @param {...Function} functions The functions to compose + * @return {Function} + * @see R.pipeP + * @deprecated since v0.26.0 + * @example + * + * const db = { + * users: { + * JOE: { + * name: 'Joe', + * followers: ['STEVE', 'SUZY'] + * } + * } + * } + * + * // We'll pretend to do a db lookup which returns a promise + * const lookupUser = (userId) => Promise.resolve(db.users[userId]) + * const lookupFollowers = (user) => Promise.resolve(user.followers) + * lookupUser('JOE').then(lookupFollowers) + * + * // followersForUser :: String -> Promise [UserId] + * const followersForUser = R.composeP(lookupFollowers, lookupUser); + * followersForUser('JOE').then(followers => console.log('Followers:', followers)) + * // Followers: ["STEVE","SUZY"] + */ +function composeP() { + if (arguments.length === 0) { + throw new Error('composeP requires at least one argument'); + } + return _pipeP_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(this, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arguments)); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/composeWith.js": +/*!**********************************************!*\ + !*** ./node_modules/ramda/es/composeWith.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _pipeWith_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pipeWith.js */ "./node_modules/ramda/es/pipeWith.js"); +/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); + + + + +/** + * Performs right-to-left function composition using transforming function. The rightmost function may have + * any arity; the remaining functions must be unary. + * + * **Note:** The result of compose is not automatically curried. + * + * @func + * @memberOf R + * @category Function + * @sig ((* -> *), [(y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)]) -> ((a, b, ..., n) -> z) + * @param {...Function} ...functions The functions to compose + * @return {Function} + * @see R.compose, R.pipeWith + * @example + * + * const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res)); + * + * composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2 + * composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined + * + * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, f(i, ...args))) + */ +var composeWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function composeWith(xf, list) { + return _pipeWith_js__WEBPACK_IMPORTED_MODULE_1__["default"].apply(this, [xf, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list)]); +}); +/* harmony default export */ __webpack_exports__["default"] = (composeWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/concat.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/concat.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); +/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); +/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); +/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); + + + + + + +/** + * Returns the result of concatenating the given lists or strings. + * + * Note: `R.concat` expects both arguments to be of the same type, + * unlike the native `Array.prototype.concat` method. It will throw + * an error if you `concat` an Array with a non-Array value. + * + * Dispatches to the `concat` method of the first argument, if present. + * Can also concatenate two members of a [fantasy-land + * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] -> [a] + * @sig String -> String -> String + * @param {Array|String} firstList The first list + * @param {Array|String} secondList The second list + * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of + * `secondList`. + * + * @example + * + * R.concat('ABC', 'DEF'); // 'ABCDEF' + * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + * R.concat([], []); //=> [] + */ +var concat = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function concat(a, b) { + if (Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a)) { + if (Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(b)) { + return a.concat(b); + } + throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(b) + ' is not an array'); + } + if (Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(a)) { + if (Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(b)) { + return a + b; + } + throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(b) + ' is not a string'); + } + if (a != null && Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a['fantasy-land/concat'])) { + return a['fantasy-land/concat'](b); + } + if (a != null && Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a.concat)) { + return a.concat(b); + } + throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a) + ' does not have a method named "concat" or "fantasy-land/concat"'); +}); +/* harmony default export */ __webpack_exports__["default"] = (concat); + +/***/ }), + +/***/ "./node_modules/ramda/es/cond.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/cond.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); +/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); + + + + + + +/** + * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic. + * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments + * to `fn` are applied to each of the predicates in turn until one returns a + * "truthy" value, at which point `fn` returns the result of applying its + * arguments to the corresponding transformer. If none of the predicates + * matches, `fn` returns undefined. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Logic + * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *) + * @param {Array} pairs A list of [predicate, transformer] + * @return {Function} + * @see R.ifElse, R.unless, R.when + * @example + * + * const fn = R.cond([ + * [R.equals(0), R.always('water freezes at 0°C')], + * [R.equals(100), R.always('water boils at 100°C')], + * [R.T, temp => 'nothing special happens at ' + temp + '°C'] + * ]); + * fn(0); //=> 'water freezes at 0°C' + * fn(50); //=> 'nothing special happens at 50°C' + * fn(100); //=> 'water boils at 100°C' + */ +var cond = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function cond(pairs) { + var arity = Object(_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_3__["default"], 0, Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (pair) { + return pair[0].length; + }, pairs)); + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arity, function () { + var idx = 0; + while (idx < pairs.length) { + if (pairs[idx][0].apply(this, arguments)) { + return pairs[idx][1].apply(this, arguments); + } + idx += 1; + } + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (cond); + +/***/ }), + +/***/ "./node_modules/ramda/es/construct.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/construct.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _constructN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constructN.js */ "./node_modules/ramda/es/constructN.js"); + + + +/** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> {*}) -> (* -> {*}) + * @param {Function} fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @see R.invoker + * @example + * + * // Constructor function + * function Animal(kind) { + * this.kind = kind; + * }; + * Animal.prototype.sighting = function() { + * return "It's a " + this.kind + "!"; + * } + * + * const AnimalConstructor = R.construct(Animal) + * + * // Notice we no longer need the 'new' keyword: + * AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}}; + * + * const animalTypes = ["Lion", "Tiger", "Bear"]; + * const animalSighting = R.invoker(0, 'sighting'); + * const sightNewAnimal = R.compose(animalSighting, AnimalConstructor); + * R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"] + */ +var construct = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function construct(Fn) { + return Object(_constructN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Fn.length, Fn); +}); +/* harmony default export */ __webpack_exports__["default"] = (construct); + +/***/ }), + +/***/ "./node_modules/ramda/es/constructN.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/constructN.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _curry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curry.js */ "./node_modules/ramda/es/curry.js"); +/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); + + + + +/** + * Wraps a constructor function inside a curried function that can be called + * with the same arguments and returns the same type. The arity of the function + * returned is specified to allow using variadic constructor functions. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Function + * @sig Number -> (* -> {*}) -> (* -> {*}) + * @param {Number} n The arity of the constructor function. + * @param {Function} Fn The constructor function to wrap. + * @return {Function} A wrapped, curried constructor function. + * @example + * + * // Variadic Constructor function + * function Salad() { + * this.ingredients = arguments; + * } + * + * Salad.prototype.recipe = function() { + * const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients); + * return R.join('\n', instructions); + * }; + * + * const ThreeLayerSalad = R.constructN(3, Salad); + * + * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments. + * const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup'); + * + * console.log(salad.recipe()); + * // Add a dollop of Mayonnaise + * // Add a dollop of Potato Chips + * // Add a dollop of Ketchup + */ +var constructN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function constructN(n, Fn) { + if (n > 10) { + throw new Error('Constructor with greater than ten arguments'); + } + if (n === 0) { + return function () { + return new Fn(); + }; + } + return Object(_curry_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_nAry_js__WEBPACK_IMPORTED_MODULE_2__["default"])(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) { + switch (arguments.length) { + case 1: + return new Fn($0); + case 2: + return new Fn($0, $1); + case 3: + return new Fn($0, $1, $2); + case 4: + return new Fn($0, $1, $2, $3); + case 5: + return new Fn($0, $1, $2, $3, $4); + case 6: + return new Fn($0, $1, $2, $3, $4, $5); + case 7: + return new Fn($0, $1, $2, $3, $4, $5, $6); + case 8: + return new Fn($0, $1, $2, $3, $4, $5, $6, $7); + case 9: + return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8); + case 10: + return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9); + } + })); +}); +/* harmony default export */ __webpack_exports__["default"] = (constructN); + +/***/ }), + +/***/ "./node_modules/ramda/es/contains.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/contains.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Returns `true` if the specified value is equal, in [`R.equals`](#equals) + * terms, to at least one element of the given list; `false` otherwise. + * Works also with strings. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Boolean + * @param {Object} a The item to compare against. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise. + * @see R.includes + * @deprecated since v0.26.0 + * @example + * + * R.contains(3, [1, 2, 3]); //=> true + * R.contains(4, [1, 2, 3]); //=> false + * R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true + * R.contains([42], [[42]]); //=> true + * R.contains('ba', 'banana'); //=>true + */ +var contains = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (contains); + +/***/ }), + +/***/ "./node_modules/ramda/es/converge.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/converge.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/es/internal/_map.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); +/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); + + + + + + + +/** + * Accepts a converging function and a list of branching functions and returns + * a new function. The arity of the new function is the same as the arity of + * the longest branching function. When invoked, this new function is applied + * to some arguments, and each branching function is applied to those same + * arguments. The results of each branching function are passed as arguments + * to the converging function to produce the return value. + * + * @func + * @memberOf R + * @since v0.4.2 + * @category Function + * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} after A function. `after` will be invoked with the return values of + * `fn1` and `fn2` as its arguments. + * @param {Array} functions A list of functions. + * @return {Function} A new function. + * @see R.useWith + * @example + * + * const average = R.converge(R.divide, [R.sum, R.length]) + * average([1, 2, 3, 4, 5, 6, 7]) //=> 4 + * + * const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower]) + * strangeConcat("Yodel") //=> "YODELyodel" + * + * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b)) + */ +var converge = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function converge(after, fns) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_reduce_js__WEBPACK_IMPORTED_MODULE_5__["default"])(_max_js__WEBPACK_IMPORTED_MODULE_3__["default"], 0, Object(_pluck_js__WEBPACK_IMPORTED_MODULE_4__["default"])('length', fns)), function () { + var args = arguments; + var context = this; + return after.apply(context, Object(_internal_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (fn) { + return fn.apply(context, args); + }, fns)); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (converge); + +/***/ }), + +/***/ "./node_modules/ramda/es/countBy.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/countBy.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); + + +/** + * Counts the elements of a list according to how many match each value of a + * key generated by the supplied function. Returns an object mapping the keys + * produced by `fn` to the number of occurrences in the list. Note that all + * keys are coerced to strings because of how JavaScript objects work. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig (a -> String) -> [a] -> {*} + * @param {Function} fn The function used to map values to keys. + * @param {Array} list The list to count elements from. + * @return {Object} An object mapping keys to number of occurrences in the list. + * @example + * + * const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2]; + * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1} + * + * const letters = ['a', 'b', 'A', 'a', 'B', 'c']; + * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1} + */ +var countBy = /*#__PURE__*/Object(_reduceBy_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (acc, elem) { + return acc + 1; +}, 0); +/* harmony default export */ __webpack_exports__["default"] = (countBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/curry.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/curry.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); + + + +/** + * Returns a curried equivalent of the provided function. The curried function + * has two unusual capabilities. First, its arguments needn't be provided one + * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (* -> a) -> (* -> a) + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curryN, R.partial + * @example + * + * const addFourNumbers = (a, b, c, d) => a + b + c + d; + * + * const curriedAddFourNumbers = R.curry(addFourNumbers); + * const f = curriedAddFourNumbers(1, 2); + * const g = f(3); + * g(4); //=> 10 + */ +var curry = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function curry(fn) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn.length, fn); +}); +/* harmony default export */ __webpack_exports__["default"] = (curry); + +/***/ }), + +/***/ "./node_modules/ramda/es/curryN.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/curryN.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_curryN_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); + + + + + +/** + * Returns a curried equivalent of the provided function, with the specified + * arity. The curried function has two unusual capabilities. First, its + * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the + * following are equivalent: + * + * - `g(1)(2)(3)` + * - `g(1)(2, 3)` + * - `g(1, 2)(3)` + * - `g(1, 2, 3)` + * + * Secondly, the special placeholder value [`R.__`](#__) may be used to specify + * "gaps", allowing partial application of any combination of arguments, + * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__), + * the following are equivalent: + * + * - `g(1, 2, 3)` + * - `g(_, 2, 3)(1)` + * - `g(_, _, 3)(1)(2)` + * - `g(_, _, 3)(1, 2)` + * - `g(_, 2)(1)(3)` + * - `g(_, 2)(1, 3)` + * - `g(_, 2)(_, 3)(1)` + * + * @func + * @memberOf R + * @since v0.5.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to curry. + * @return {Function} A new, curried function. + * @see R.curry + * @example + * + * const sumArgs = (...args) => R.sum(args); + * + * const curriedAddFourNumbers = R.curryN(4, sumArgs); + * const f = curriedAddFourNumbers(1, 2); + * const g = f(3); + * g(4); //=> 10 + */ +var curryN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function curryN(length, fn) { + if (length === 1) { + return Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn); + } + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(length, Object(_internal_curryN_js__WEBPACK_IMPORTED_MODULE_3__["default"])(length, [], fn)); +}); +/* harmony default export */ __webpack_exports__["default"] = (curryN); + +/***/ }), + +/***/ "./node_modules/ramda/es/dec.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/dec.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); + + +/** + * Decrements its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n - 1 + * @see R.inc + * @example + * + * R.dec(42); //=> 41 + */ +var dec = /*#__PURE__*/Object(_add_js__WEBPACK_IMPORTED_MODULE_0__["default"])(-1); +/* harmony default export */ __webpack_exports__["default"] = (dec); + +/***/ }), + +/***/ "./node_modules/ramda/es/defaultTo.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/defaultTo.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns the second argument if it is not `null`, `undefined` or `NaN`; + * otherwise the first argument is returned. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Logic + * @sig a -> b -> a | b + * @param {a} default The default value. + * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`. + * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value + * @example + * + * const defaultTo42 = R.defaultTo(42); + * + * defaultTo42(null); //=> 42 + * defaultTo42(undefined); //=> 42 + * defaultTo42(false); //=> false + * defaultTo42('Ramda'); //=> 'Ramda' + * // parseInt('string') results in NaN + * defaultTo42(parseInt('string')); //=> 42 + */ +var defaultTo = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function defaultTo(d, v) { + return v == null || v !== v ? d : v; +}); +/* harmony default export */ __webpack_exports__["default"] = (defaultTo); + +/***/ }), + +/***/ "./node_modules/ramda/es/descend.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/descend.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Makes a descending comparator function out of a function that returns a value + * that can be compared with `<` and `>`. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Function + * @sig Ord b => (a -> b) -> a -> a -> Number + * @param {Function} fn A function of arity one that returns a value that can be compared + * @param {*} a The first item to be compared. + * @param {*} b The second item to be compared. + * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0` + * @see R.ascend + * @example + * + * const byAge = R.descend(R.prop('age')); + * const people = [ + * { name: 'Emma', age: 70 }, + * { name: 'Peter', age: 78 }, + * { name: 'Mikhail', age: 62 }, + * ]; + * const peopleByOldestFirst = R.sort(byAge, people); + * //=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }] + */ +var descend = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function descend(fn, a, b) { + var aa = fn(a); + var bb = fn(b); + return aa > bb ? -1 : aa < bb ? 1 : 0; +}); +/* harmony default export */ __webpack_exports__["default"] = (descend); + +/***/ }), + +/***/ "./node_modules/ramda/es/difference.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/difference.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_Set_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_Set.js */ "./node_modules/ramda/es/internal/_Set.js"); + + + +/** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Objects and Arrays are compared in terms of + * value equality, not reference equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without + * @example + * + * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2] + * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5] + * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}] + */ +var difference = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function difference(first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + var secondLen = second.length; + var toFilterOut = new _internal_Set_js__WEBPACK_IMPORTED_MODULE_1__["default"](); + + for (var i = 0; i < secondLen; i += 1) { + toFilterOut.add(second[i]); + } + + while (idx < firstLen) { + if (toFilterOut.add(first[idx])) { + out[out.length] = first[idx]; + } + idx += 1; + } + return out; +}); +/* harmony default export */ __webpack_exports__["default"] = (difference); + +/***/ }), + +/***/ "./node_modules/ramda/es/differenceWith.js": +/*!*************************************************!*\ + !*** ./node_modules/ramda/es/differenceWith.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + + +/** + * Finds the set (i.e. no duplicates) of all elements in the first list not + * contained in the second list. Duplication is determined according to the + * value returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` that are not in `list2`. + * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith + * @example + * + * const cmp = (x, y) => x.a === y.a; + * const l1 = [{a: 1}, {a: 2}, {a: 3}]; + * const l2 = [{a: 3}, {a: 4}]; + * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}] + */ +var differenceWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function differenceWith(pred, first, second) { + var out = []; + var idx = 0; + var firstLen = first.length; + while (idx < firstLen) { + if (!Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, first[idx], second) && !Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, first[idx], out)) { + out.push(first[idx]); + } + idx += 1; + } + return out; +}); +/* harmony default export */ __webpack_exports__["default"] = (differenceWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/dissoc.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/dissoc.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns a new object that does not contain a `prop` property. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Object + * @sig String -> {k: v} -> {k: v} + * @param {String} prop The name of the property to dissociate + * @param {Object} obj The object to clone + * @return {Object} A new object equivalent to the original but without the specified property + * @see R.assoc, R.omit + * @example + * + * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3} + */ +var dissoc = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function dissoc(prop, obj) { + var result = {}; + for (var p in obj) { + result[p] = obj[p]; + } + delete result[prop]; + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (dissoc); + +/***/ }), + +/***/ "./node_modules/ramda/es/dissocPath.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/dissocPath.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/es/internal/_isInteger.js"); +/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); +/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); +/* harmony import */ var _dissoc_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./dissoc.js */ "./node_modules/ramda/es/dissoc.js"); +/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./remove.js */ "./node_modules/ramda/es/remove.js"); +/* harmony import */ var _update_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./update.js */ "./node_modules/ramda/es/update.js"); + + + + + + + + +/** + * Makes a shallow clone of an object, omitting the property at the given path. + * Note that this copies and flattens prototype properties onto the new object + * as well. All non-primitive properties are copied by reference. + * + * @func + * @memberOf R + * @since v0.11.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> {k: v} -> {k: v} + * @param {Array} path The path to the value to omit + * @param {Object} obj The object to clone + * @return {Object} A new object without the property at path + * @see R.assocPath + * @example + * + * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}} + */ +var dissocPath = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function dissocPath(path, obj) { + switch (path.length) { + case 0: + return obj; + case 1: + return Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(path[0]) && Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj) ? Object(_remove_js__WEBPACK_IMPORTED_MODULE_5__["default"])(path[0], 1, obj) : Object(_dissoc_js__WEBPACK_IMPORTED_MODULE_4__["default"])(path[0], obj); + default: + var head = path[0]; + var tail = Array.prototype.slice.call(path, 1); + if (obj[head] == null) { + return obj; + } else if (Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(head) && Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)) { + return Object(_update_js__WEBPACK_IMPORTED_MODULE_6__["default"])(head, dissocPath(tail, obj[head]), obj); + } else { + return Object(_assoc_js__WEBPACK_IMPORTED_MODULE_3__["default"])(head, dissocPath(tail, obj[head]), obj); + } + } +}); +/* harmony default export */ __webpack_exports__["default"] = (dissocPath); + +/***/ }), + +/***/ "./node_modules/ramda/es/divide.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/divide.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Divides two numbers. Equivalent to `a / b`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a / b`. + * @see R.multiply + * @example + * + * R.divide(71, 100); //=> 0.71 + * + * const half = R.divide(R.__, 2); + * half(42); //=> 21 + * + * const reciprocal = R.divide(1); + * reciprocal(4); //=> 0.25 + */ +var divide = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function divide(a, b) { + return a / b; +}); +/* harmony default export */ __webpack_exports__["default"] = (divide); + +/***/ }), + +/***/ "./node_modules/ramda/es/drop.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/drop.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xdrop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdrop.js */ "./node_modules/ramda/es/internal/_xdrop.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + + + +/** + * Returns all but the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `drop` method). + * + * Dispatches to the `drop` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} A copy of list without the first `n` elements + * @see R.take, R.transduce, R.dropLast, R.dropWhile + * @example + * + * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.drop(3, ['foo', 'bar', 'baz']); //=> [] + * R.drop(4, ['foo', 'bar', 'baz']); //=> [] + * R.drop(3, 'ramda'); //=> 'da' + */ +var drop = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['drop'], _internal_xdrop_js__WEBPACK_IMPORTED_MODULE_2__["default"], function drop(n, xs) { + return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(Math.max(0, n), Infinity, xs); +})); +/* harmony default export */ __webpack_exports__["default"] = (drop); + +/***/ }), + +/***/ "./node_modules/ramda/es/dropLast.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/dropLast.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_dropLast_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_dropLast.js */ "./node_modules/ramda/es/internal/_dropLast.js"); +/* harmony import */ var _internal_xdropLast_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xdropLast.js */ "./node_modules/ramda/es/internal/_xdropLast.js"); + + + + + +/** + * Returns a list containing all but the last `n` elements of the given `list`. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements of `list` to skip. + * @param {Array} list The list of elements to consider. + * @return {Array} A copy of the list with only the first `list.length - n` elements + * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile + * @example + * + * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.dropLast(3, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(4, ['foo', 'bar', 'baz']); //=> [] + * R.dropLast(3, 'ramda'); //=> 'ra' + */ +var dropLast = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xdropLast_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_dropLast_js__WEBPACK_IMPORTED_MODULE_2__["default"])); +/* harmony default export */ __webpack_exports__["default"] = (dropLast); + +/***/ }), + +/***/ "./node_modules/ramda/es/dropLastWhile.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/dropLastWhile.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_dropLastWhile_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_dropLastWhile.js */ "./node_modules/ramda/es/internal/_dropLastWhile.js"); +/* harmony import */ var _internal_xdropLastWhile_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_xdropLastWhile.js */ "./node_modules/ramda/es/internal/_xdropLastWhile.js"); + + + + + +/** + * Returns a new list excluding all the tailing elements of a given list which + * satisfy the supplied predicate function. It passes each value from the right + * to the supplied predicate function, skipping elements until the predicate + * function returns a `falsy` value. The predicate function is applied to one argument: + * *(value)*. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} predicate The function to be called on each element + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`. + * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile + * @example + * + * const lteThree = x => x <= 3; + * + * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4] + * + * R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd' + */ +var dropLastWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xdropLastWhile_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_dropLastWhile_js__WEBPACK_IMPORTED_MODULE_2__["default"])); +/* harmony default export */ __webpack_exports__["default"] = (dropLastWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/dropRepeats.js": +/*!**********************************************!*\ + !*** ./node_modules/ramda/es/dropRepeats.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdropRepeatsWith.js */ "./node_modules/ramda/es/internal/_xdropRepeatsWith.js"); +/* harmony import */ var _dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./dropRepeatsWith.js */ "./node_modules/ramda/es/dropRepeatsWith.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); + + + + + + +/** + * Returns a new list without any consecutively repeating elements. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2] + */ +var dropRepeats = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], /*#__PURE__*/Object(_internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_equals_js__WEBPACK_IMPORTED_MODULE_4__["default"]), /*#__PURE__*/Object(_dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_equals_js__WEBPACK_IMPORTED_MODULE_4__["default"]))); +/* harmony default export */ __webpack_exports__["default"] = (dropRepeats); + +/***/ }), + +/***/ "./node_modules/ramda/es/dropRepeatsWith.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/dropRepeatsWith.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdropRepeatsWith.js */ "./node_modules/ramda/es/internal/_xdropRepeatsWith.js"); +/* harmony import */ var _last_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./last.js */ "./node_modules/ramda/es/last.js"); + + + + + +/** + * Returns a new list without any consecutively repeating elements. Equality is + * determined by applying the supplied predicate to each pair of consecutive elements. The + * first element in a series of equal elements will be preserved. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig ((a, a) -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} `list` without repeating elements. + * @see R.transduce + * @example + * + * const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3]; + * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3] + */ +var dropRepeatsWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xdropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_2__["default"], function dropRepeatsWith(pred, list) { + var result = []; + var idx = 1; + var len = list.length; + if (len !== 0) { + result[0] = list[0]; + while (idx < len) { + if (!pred(Object(_last_js__WEBPACK_IMPORTED_MODULE_3__["default"])(result), list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + } + return result; +})); +/* harmony default export */ __webpack_exports__["default"] = (dropRepeatsWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/dropWhile.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/dropWhile.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xdropWhile_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xdropWhile.js */ "./node_modules/ramda/es/internal/_xdropWhile.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + + + +/** + * Returns a new list excluding the leading elements of a given list which + * satisfy the supplied predicate function. It passes each value to the supplied + * predicate function, skipping elements while the predicate function returns + * `true`. The predicate function is applied to one argument: *(value)*. + * + * Dispatches to the `dropWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} fn The function called per iteration. + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array. + * @see R.takeWhile, R.transduce, R.addIndex + * @example + * + * const lteTwo = x => x <= 2; + * + * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1] + * + * R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da' + */ +var dropWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['dropWhile'], _internal_xdropWhile_js__WEBPACK_IMPORTED_MODULE_2__["default"], function dropWhile(pred, xs) { + var idx = 0; + var len = xs.length; + while (idx < len && pred(xs[idx])) { + idx += 1; + } + return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(idx, Infinity, xs); +})); +/* harmony default export */ __webpack_exports__["default"] = (dropWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/either.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/either.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); +/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); +/* harmony import */ var _or_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./or.js */ "./node_modules/ramda/es/or.js"); + + + + + +/** + * A function wrapping calls to the two functions in an `||` operation, + * returning the result of the first function if it is truth-y and the result + * of the second function otherwise. Note that this is short-circuited, + * meaning that the second function will not be invoked if the first returns a + * truth-y value. + * + * In addition to functions, `R.either` also accepts any fantasy-land compatible + * applicative functor. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean) + * @param {Function} f a predicate + * @param {Function} g another predicate + * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together. + * @see R.or + * @example + * + * const gt10 = x => x > 10; + * const even = x => x % 2 === 0; + * const f = R.either(gt10, even); + * f(101); //=> true + * f(8); //=> true + * + * R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55) + * R.either([false, false, 'a'], [11]) // => [11, 11, "a"] + */ +var either = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function either(f, g) { + return Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f) ? function _either() { + return f.apply(this, arguments) || g.apply(this, arguments); + } : Object(_lift_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_or_js__WEBPACK_IMPORTED_MODULE_3__["default"])(f, g); +}); +/* harmony default export */ __webpack_exports__["default"] = (either); + +/***/ }), + +/***/ "./node_modules/ramda/es/empty.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/empty.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_isArguments_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isArguments.js */ "./node_modules/ramda/es/internal/_isArguments.js"); +/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); +/* harmony import */ var _internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/es/internal/_isObject.js"); +/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); + + + + + + +/** + * Returns the empty value of its argument's type. Ramda defines the empty + * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other + * types are supported if they define `.empty`, + * `.prototype.empty` or implement the + * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid). + * + * Dispatches to the `empty` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> a + * @param {*} x + * @return {*} + * @example + * + * R.empty(Just(42)); //=> Nothing() + * R.empty([1, 2, 3]); //=> [] + * R.empty('unicorns'); //=> '' + * R.empty({x: 1, y: 2}); //=> {} + */ +var empty = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function empty(x) { + return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x) ? [] : Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x) ? '' : Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__["default"])(x) ? {} : Object(_internal_isArguments_js__WEBPACK_IMPORTED_MODULE_1__["default"])(x) ? function () { + return arguments; + }() : void 0 // else + ; +}); +/* harmony default export */ __webpack_exports__["default"] = (empty); + +/***/ }), + +/***/ "./node_modules/ramda/es/endsWith.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/endsWith.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); +/* harmony import */ var _takeLast_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./takeLast.js */ "./node_modules/ramda/es/takeLast.js"); + + + + +/** + * Checks if a list ends with the provided sublist. + * + * Similarly, checks if a string ends with the provided substring. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> [a] -> Boolean + * @sig String -> String -> Boolean + * @param {*} suffix + * @param {*} list + * @return {Boolean} + * @see R.startsWith + * @example + * + * R.endsWith('c', 'abc') //=> true + * R.endsWith('b', 'abc') //=> false + * R.endsWith(['c'], ['a', 'b', 'c']) //=> true + * R.endsWith(['b'], ['a', 'b', 'c']) //=> false + */ +var endsWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (suffix, list) { + return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_takeLast_js__WEBPACK_IMPORTED_MODULE_2__["default"])(suffix.length, list), suffix); +}); +/* harmony default export */ __webpack_exports__["default"] = (endsWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/eqBy.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/eqBy.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); + + + +/** + * Takes a function and two values in its domain and returns `true` if the + * values map to the same value in the codomain; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Relation + * @sig (a -> b) -> a -> a -> Boolean + * @param {Function} f + * @param {*} x + * @param {*} y + * @return {Boolean} + * @example + * + * R.eqBy(Math.abs, 5, -5); //=> true + */ +var eqBy = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function eqBy(f, x, y) { + return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f(x), f(y)); +}); +/* harmony default export */ __webpack_exports__["default"] = (eqBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/eqProps.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/eqProps.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); + + + +/** + * Reports whether two objects have the same value, in [`R.equals`](#equals) + * terms, for the specified property. Useful as a curried predicate. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig k -> {k: v} -> {k: v} -> Boolean + * @param {String} prop The name of the property to compare + * @param {Object} obj1 + * @param {Object} obj2 + * @return {Boolean} + * + * @example + * + * const o1 = { a: 1, b: 2, c: 3, d: 4 }; + * const o2 = { a: 10, b: 20, c: 3, d: 40 }; + * R.eqProps('a', o1, o2); //=> false + * R.eqProps('c', o1, o2); //=> true + */ +var eqProps = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function eqProps(prop, obj1, obj2) { + return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj1[prop], obj2[prop]); +}); +/* harmony default export */ __webpack_exports__["default"] = (eqProps); + +/***/ }), + +/***/ "./node_modules/ramda/es/equals.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/equals.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_equals.js */ "./node_modules/ramda/es/internal/_equals.js"); + + + +/** + * Returns `true` if its arguments are equivalent, `false` otherwise. Handles + * cyclical data structures. + * + * Dispatches symmetrically to the `equals` methods of both arguments, if + * present. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> b -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * R.equals(1, 1); //=> true + * R.equals(1, '1'); //=> false + * R.equals([1, 2, 3], [1, 2, 3]); //=> true + * + * const a = {}; a.v = a; + * const b = {}; b.v = b; + * R.equals(a, b); //=> true + */ +var equals = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function equals(a, b) { + return Object(_internal_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a, b, [], []); +}); +/* harmony default export */ __webpack_exports__["default"] = (equals); + +/***/ }), + +/***/ "./node_modules/ramda/es/evolve.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/evolve.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Creates a new object by recursively evolving a shallow copy of `object`, + * according to the `transformation` functions. All non-primitive properties + * are copied by reference. + * + * A `transformation` function will not be invoked if its corresponding key + * does not exist in the evolved object. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {k: (v -> v)} -> {k: v} -> {k: v} + * @param {Object} transformations The object specifying transformation functions to apply + * to the object. + * @param {Object} object The object to be transformed. + * @return {Object} The transformed object. + * @example + * + * const tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123}; + * const transformations = { + * firstName: R.trim, + * lastName: R.trim, // Will not get invoked. + * data: {elapsed: R.add(1), remaining: R.add(-1)} + * }; + * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123} + */ +var evolve = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function evolve(transformations, object) { + var result = object instanceof Array ? [] : {}; + var transformation, key, type; + for (key in object) { + transformation = transformations[key]; + type = typeof transformation; + result[key] = type === 'function' ? transformation(object[key]) : transformation && type === 'object' ? evolve(transformation, object[key]) : object[key]; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (evolve); + +/***/ }), + +/***/ "./node_modules/ramda/es/filter.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/filter.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/es/internal/_filter.js"); +/* harmony import */ var _internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/es/internal/_isObject.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _internal_xfilter_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/_xfilter.js */ "./node_modules/ramda/es/internal/_xfilter.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); + + + + + + + + +/** + * Takes a predicate and a `Filterable`, and returns a new filterable of the + * same type containing the members of the given filterable which satisfy the + * given predicate. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * Dispatches to the `filter` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} Filterable + * @see R.reject, R.transduce, R.addIndex + * @example + * + * const isEven = n => n % 2 === 0; + * + * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4] + * + * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ +var filter = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['filter'], _internal_xfilter_js__WEBPACK_IMPORTED_MODULE_5__["default"], function (pred, filterable) { + return Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_3__["default"])(filterable) ? Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_4__["default"])(function (acc, key) { + if (pred(filterable[key])) { + acc[key] = filterable[key]; + } + return acc; + }, {}, Object(_keys_js__WEBPACK_IMPORTED_MODULE_6__["default"])(filterable)) : + // else + Object(_internal_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, filterable); +})); +/* harmony default export */ __webpack_exports__["default"] = (filter); + +/***/ }), + +/***/ "./node_modules/ramda/es/find.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/find.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xfind_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfind.js */ "./node_modules/ramda/es/internal/_xfind.js"); + + + + +/** + * Returns the first element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Dispatches to the `find` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * const xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.find(R.propEq('a', 2))(xs); //=> {a: 2} + * R.find(R.propEq('a', 4))(xs); //=> undefined + */ +var find = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['find'], _internal_xfind_js__WEBPACK_IMPORTED_MODULE_2__["default"], function find(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return list[idx]; + } + idx += 1; + } +})); +/* harmony default export */ __webpack_exports__["default"] = (find); + +/***/ }), + +/***/ "./node_modules/ramda/es/findIndex.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/findIndex.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xfindIndex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfindIndex.js */ "./node_modules/ramda/es/internal/_xfindIndex.js"); + + + + +/** + * Returns the index of the first element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * const xs = [{a: 1}, {a: 2}, {a: 3}]; + * R.findIndex(R.propEq('a', 2))(xs); //=> 1 + * R.findIndex(R.propEq('a', 4))(xs); //=> -1 + */ +var findIndex = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xfindIndex_js__WEBPACK_IMPORTED_MODULE_2__["default"], function findIndex(fn, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + if (fn(list[idx])) { + return idx; + } + idx += 1; + } + return -1; +})); +/* harmony default export */ __webpack_exports__["default"] = (findIndex); + +/***/ }), + +/***/ "./node_modules/ramda/es/findLast.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/findLast.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xfindLast_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfindLast.js */ "./node_modules/ramda/es/internal/_xfindLast.js"); + + + + +/** + * Returns the last element of the list which matches the predicate, or + * `undefined` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> a | undefined + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Object} The element found, or `undefined`. + * @see R.transduce + * @example + * + * const xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1} + * R.findLast(R.propEq('a', 4))(xs); //=> undefined + */ +var findLast = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xfindLast_js__WEBPACK_IMPORTED_MODULE_2__["default"], function findLast(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return list[idx]; + } + idx -= 1; + } +})); +/* harmony default export */ __webpack_exports__["default"] = (findLast); + +/***/ }), + +/***/ "./node_modules/ramda/es/findLastIndex.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/findLastIndex.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xfindLastIndex_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xfindLastIndex.js */ "./node_modules/ramda/es/internal/_xfindLastIndex.js"); + + + + +/** + * Returns the index of the last element of the list which matches the + * predicate, or `-1` if no element matches. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> Boolean) -> [a] -> Number + * @param {Function} fn The predicate function used to determine if the element is the + * desired one. + * @param {Array} list The array to consider. + * @return {Number} The index of the element found, or `-1`. + * @see R.transduce + * @example + * + * const xs = [{a: 1, b: 0}, {a:1, b: 1}]; + * R.findLastIndex(R.propEq('a', 1))(xs); //=> 1 + * R.findLastIndex(R.propEq('a', 4))(xs); //=> -1 + */ +var findLastIndex = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xfindLastIndex_js__WEBPACK_IMPORTED_MODULE_2__["default"], function findLastIndex(fn, list) { + var idx = list.length - 1; + while (idx >= 0) { + if (fn(list[idx])) { + return idx; + } + idx -= 1; + } + return -1; +})); +/* harmony default export */ __webpack_exports__["default"] = (findLastIndex); + +/***/ }), + +/***/ "./node_modules/ramda/es/flatten.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/flatten.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_makeFlat.js */ "./node_modules/ramda/es/internal/_makeFlat.js"); + + + +/** + * Returns a new list by pulling every item out of it (and all its sub-arrays) + * and putting them in a new array, depth-first. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] + * @param {Array} list The array to consider. + * @return {Array} The flattened list. + * @see R.unnest + * @example + * + * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]); + * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12] + */ +var flatten = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_makeFlat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(true)); +/* harmony default export */ __webpack_exports__["default"] = (flatten); + +/***/ }), + +/***/ "./node_modules/ramda/es/flip.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/flip.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); + + + +/** + * Returns a new function much like the supplied one, except that the first two + * arguments' order is reversed. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z) + * @param {Function} fn The function to invoke with its first two parameters reversed. + * @return {*} The result of invoking `fn` with its first two parameters' order reversed. + * @example + * + * const mergeThree = (a, b, c) => [].concat(a, b, c); + * + * mergeThree(1, 2, 3); //=> [1, 2, 3] + * + * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3] + * @symb R.flip(f)(a, b, c) = f(b, a, c) + */ +var flip = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function flip(fn) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn.length, function (a, b) { + var args = Array.prototype.slice.call(arguments, 0); + args[0] = b; + args[1] = a; + return fn.apply(this, args); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (flip); + +/***/ }), + +/***/ "./node_modules/ramda/es/forEach.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/forEach.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Iterate over an input `list`, calling a provided function `fn` for each + * element in the list. + * + * `fn` receives one argument: *(value)*. + * + * Note: `R.forEach` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.forEach` method. For more + * details on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description + * + * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns + * the original array. In some libraries this function is named `each`. + * + * Dispatches to the `forEach` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig (a -> *) -> [a] -> [a] + * @param {Function} fn The function to invoke. Receives one argument, `value`. + * @param {Array} list The list to iterate over. + * @return {Array} The original list. + * @see R.addIndex + * @example + * + * const printXPlusFive = x => console.log(x + 5); + * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3] + * // logs 6 + * // logs 7 + * // logs 8 + * @symb R.forEach(f, [a, b, c]) = [a, b, c] + */ +var forEach = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('forEach', function forEach(fn, list) { + var len = list.length; + var idx = 0; + while (idx < len) { + fn(list[idx]); + idx += 1; + } + return list; +})); +/* harmony default export */ __webpack_exports__["default"] = (forEach); + +/***/ }), + +/***/ "./node_modules/ramda/es/forEachObjIndexed.js": +/*!****************************************************!*\ + !*** ./node_modules/ramda/es/forEachObjIndexed.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); + + + +/** + * Iterate over an input `object`, calling a provided function `fn` for each + * key and value in the object. + * + * `fn` receives three argument: *(value, key, obj)*. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Object + * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a + * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`. + * @param {Object} obj The object to iterate over. + * @return {Object} The original object. + * @example + * + * const printKeyConcatValue = (value, key) => console.log(key + ':' + value); + * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2} + * // logs x:1 + * // logs y:2 + * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b} + */ +var forEachObjIndexed = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function forEachObjIndexed(fn, obj) { + var keyList = Object(_keys_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj); + var idx = 0; + while (idx < keyList.length) { + var key = keyList[idx]; + fn(obj[key], key, obj); + idx += 1; + } + return obj; +}); +/* harmony default export */ __webpack_exports__["default"] = (forEachObjIndexed); + +/***/ }), + +/***/ "./node_modules/ramda/es/fromPairs.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/fromPairs.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Creates a new object from a list key-value pairs. If a key appears in + * multiple pairs, the rightmost pair is included in the object. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [[k,v]] -> {k: v} + * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object. + * @return {Object} The object made by pairing up `keys` and `values`. + * @see R.toPairs, R.pair + * @example + * + * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3} + */ +var fromPairs = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function fromPairs(pairs) { + var result = {}; + var idx = 0; + while (idx < pairs.length) { + result[pairs[idx][0]] = pairs[idx][1]; + idx += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (fromPairs); + +/***/ }), + +/***/ "./node_modules/ramda/es/groupBy.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/groupBy.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); + + + + +/** + * Splits a list into sub-lists stored in an object, based on the result of + * calling a String-returning function on each element, and grouping the + * results according to values returned. + * + * Dispatches to the `groupBy` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> String) -> [a] -> {String: [a]} + * @param {Function} fn Function :: a -> String + * @param {Array} list The array to group + * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements + * that produced that key when passed to `fn`. + * @see R.reduceBy, R.transduce + * @example + * + * const byGrade = R.groupBy(function(student) { + * const score = student.score; + * return score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A'; + * }); + * const students = [{name: 'Abby', score: 84}, + * {name: 'Eddy', score: 58}, + * // ... + * {name: 'Jack', score: 69}]; + * byGrade(students); + * // { + * // 'A': [{name: 'Dianne', score: 99}], + * // 'B': [{name: 'Abby', score: 84}] + * // // ..., + * // 'F': [{name: 'Eddy', score: 58}] + * // } + */ +var groupBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('groupBy', /*#__PURE__*/Object(_reduceBy_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (acc, item) { + if (acc == null) { + acc = []; + } + acc.push(item); + return acc; +}, null))); +/* harmony default export */ __webpack_exports__["default"] = (groupBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/groupWith.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/groupWith.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Takes a list and returns a list of lists where each sublist's elements are + * all satisfied pairwise comparison according to the provided function. + * Only adjacent elements are passed to the comparison function. + * + * @func + * @memberOf R + * @since v0.21.0 + * @category List + * @sig ((a, a) → Boolean) → [a] → [[a]] + * @param {Function} fn Function for determining whether two given (adjacent) + * elements should be in the same group + * @param {Array} list The array to group. Also accepts a string, which will be + * treated as a list of characters. + * @return {List} A list that contains sublists of elements, + * whose concatenations are equal to the original list. + * @example + * + * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]] + * + * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21]) + * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]] + * + * R.groupWith(R.eqBy(isVowel), 'aestiou') + * //=> ['ae', 'st', 'iou'] + */ +var groupWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (fn, list) { + var res = []; + var idx = 0; + var len = list.length; + while (idx < len) { + var nextidx = idx + 1; + while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) { + nextidx += 1; + } + res.push(list.slice(idx, nextidx)); + idx = nextidx; + } + return res; +}); +/* harmony default export */ __webpack_exports__["default"] = (groupWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/gt.js": +/*!*************************************!*\ + !*** ./node_modules/ramda/es/gt.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns `true` if the first argument is greater than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.lt + * @example + * + * R.gt(2, 1); //=> true + * R.gt(2, 2); //=> false + * R.gt(2, 3); //=> false + * R.gt('a', 'z'); //=> false + * R.gt('z', 'a'); //=> true + */ +var gt = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function gt(a, b) { + return a > b; +}); +/* harmony default export */ __webpack_exports__["default"] = (gt); + +/***/ }), + +/***/ "./node_modules/ramda/es/gte.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/gte.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns `true` if the first argument is greater than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.lte + * @example + * + * R.gte(2, 1); //=> true + * R.gte(2, 2); //=> true + * R.gte(2, 3); //=> false + * R.gte('a', 'z'); //=> false + * R.gte('z', 'a'); //=> true + */ +var gte = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function gte(a, b) { + return a >= b; +}); +/* harmony default export */ __webpack_exports__["default"] = (gte); + +/***/ }), + +/***/ "./node_modules/ramda/es/has.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/has.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _hasPath_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hasPath.js */ "./node_modules/ramda/es/hasPath.js"); + + + +/** + * Returns whether or not an object has an own property with the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * const hasName = R.has('name'); + * hasName({name: 'alice'}); //=> true + * hasName({name: 'bob'}); //=> true + * hasName({}); //=> false + * + * const point = {x: 0, y: 0}; + * const pointHas = R.has(R.__, point); + * pointHas('x'); //=> true + * pointHas('y'); //=> true + * pointHas('z'); //=> false + */ +var has = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function has(prop, obj) { + return Object(_hasPath_js__WEBPACK_IMPORTED_MODULE_1__["default"])([prop], obj); +}); +/* harmony default export */ __webpack_exports__["default"] = (has); + +/***/ }), + +/***/ "./node_modules/ramda/es/hasIn.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/hasIn.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns whether or not an object or its prototype chain has a property with + * the specified name + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Object + * @sig s -> {s: x} -> Boolean + * @param {String} prop The name of the property to check for. + * @param {Object} obj The object to query. + * @return {Boolean} Whether the property exists. + * @example + * + * function Rectangle(width, height) { + * this.width = width; + * this.height = height; + * } + * Rectangle.prototype.area = function() { + * return this.width * this.height; + * }; + * + * const square = new Rectangle(2, 2); + * R.hasIn('width', square); //=> true + * R.hasIn('area', square); //=> true + */ +var hasIn = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function hasIn(prop, obj) { + return prop in obj; +}); +/* harmony default export */ __webpack_exports__["default"] = (hasIn); + +/***/ }), + +/***/ "./node_modules/ramda/es/hasPath.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/hasPath.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); + + + +/** + * Returns whether or not a path exists in an object. Only the object's + * own properties are checked. + * + * @func + * @memberOf R + * @since v0.26.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> {a} -> Boolean + * @param {Array} path The path to use. + * @param {Object} obj The object to check the path in. + * @return {Boolean} Whether the path exists. + * @see R.has + * @example + * + * R.hasPath(['a', 'b'], {a: {b: 2}}); // => true + * R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true + * R.hasPath(['a', 'b'], {a: {c: 2}}); // => false + * R.hasPath(['a', 'b'], {}); // => false + */ +var hasPath = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function hasPath(_path, obj) { + if (_path.length === 0) { + return false; + } + var val = obj; + var idx = 0; + while (idx < _path.length) { + if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_path[idx], val)) { + val = val[_path[idx]]; + idx += 1; + } else { + return false; + } + } + return true; +}); +/* harmony default export */ __webpack_exports__["default"] = (hasPath); + +/***/ }), + +/***/ "./node_modules/ramda/es/head.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/head.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); + + +/** + * Returns the first element of the given list or string. In some libraries + * this function is named `first`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {Array|String} list + * @return {*} + * @see R.tail, R.init, R.last + * @example + * + * R.head(['fi', 'fo', 'fum']); //=> 'fi' + * R.head([]); //=> undefined + * + * R.head('abc'); //=> 'a' + * R.head(''); //=> '' + */ +var head = /*#__PURE__*/Object(_nth_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0); +/* harmony default export */ __webpack_exports__["default"] = (head); + +/***/ }), + +/***/ "./node_modules/ramda/es/identical.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/identical.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_objectIs_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectIs.js */ "./node_modules/ramda/es/internal/_objectIs.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Returns true if its arguments are identical, false otherwise. Values are + * identical if they reference the same memory. `NaN` is identical to `NaN`; + * `0` and `-0` are not identical. + * + * Note this is merely a curried version of ES6 `Object.is`. + * + * @func + * @memberOf R + * @since v0.15.0 + * @category Relation + * @sig a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @example + * + * const o = {}; + * R.identical(o, o); //=> true + * R.identical(1, 1); //=> true + * R.identical(1, '1'); //=> false + * R.identical([], []); //=> false + * R.identical(0, -0); //=> false + * R.identical(NaN, NaN); //=> true + */ +var identical = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_objectIs_js__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (identical); + +/***/ }), + +/***/ "./node_modules/ramda/es/identity.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/identity.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_identity.js */ "./node_modules/ramda/es/internal/_identity.js"); + + + +/** + * A function that does nothing but return the parameter supplied to it. Good + * as a default or placeholder function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig a -> a + * @param {*} x The value to return. + * @return {*} The input value, `x`. + * @example + * + * R.identity(1); //=> 1 + * + * const obj = {}; + * R.identity(obj) === obj; //=> true + * @symb R.identity(a) = a + */ +var identity = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_identity_js__WEBPACK_IMPORTED_MODULE_1__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (identity); + +/***/ }), + +/***/ "./node_modules/ramda/es/ifElse.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/ifElse.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); + + + +/** + * Creates a function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Logic + * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *) + * @param {Function} condition A predicate function + * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value. + * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value. + * @return {Function} A new function that will process either the `onTrue` or the `onFalse` + * function depending upon the result of the `condition` predicate. + * @see R.unless, R.when, R.cond + * @example + * + * const incCount = R.ifElse( + * R.has('count'), + * R.over(R.lensProp('count'), R.inc), + * R.assoc('count', 1) + * ); + * incCount({}); //=> { count: 1 } + * incCount({ count: 1 }); //=> { count: 2 } + */ +var ifElse = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function ifElse(condition, onTrue, onFalse) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() { + return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (ifElse); + +/***/ }), + +/***/ "./node_modules/ramda/es/inc.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/inc.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); + + +/** + * Increments its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} n + 1 + * @see R.dec + * @example + * + * R.inc(42); //=> 43 + */ +var inc = /*#__PURE__*/Object(_add_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1); +/* harmony default export */ __webpack_exports__["default"] = (inc); + +/***/ }), + +/***/ "./node_modules/ramda/es/includes.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/includes.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Returns `true` if the specified value is equal, in [`R.equals`](#equals) + * terms, to at least one element of the given list; `false` otherwise. + * Works also with strings. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Boolean + * @param {Object} a The item to compare against. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise. + * @see R.any + * @example + * + * R.includes(3, [1, 2, 3]); //=> true + * R.includes(4, [1, 2, 3]); //=> false + * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true + * R.includes([42], [[42]]); //=> true + * R.includes('ba', 'banana'); //=>true + */ +var includes = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (includes); + +/***/ }), + +/***/ "./node_modules/ramda/es/index.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/index.js ***! + \****************************************/ +/*! exports provided: F, T, __, add, addIndex, adjust, all, allPass, always, and, any, anyPass, ap, aperture, append, apply, applySpec, applyTo, ascend, assoc, assocPath, binary, bind, both, call, chain, clamp, clone, comparator, complement, compose, composeK, composeP, composeWith, concat, cond, construct, constructN, contains, converge, countBy, curry, curryN, dec, defaultTo, descend, difference, differenceWith, dissoc, dissocPath, divide, drop, dropLast, dropLastWhile, dropRepeats, dropRepeatsWith, dropWhile, either, empty, endsWith, eqBy, eqProps, equals, evolve, filter, find, findIndex, findLast, findLastIndex, flatten, flip, forEach, forEachObjIndexed, fromPairs, groupBy, groupWith, gt, gte, has, hasIn, hasPath, head, identical, identity, ifElse, inc, includes, indexBy, indexOf, init, innerJoin, insert, insertAll, intersection, intersperse, into, invert, invertObj, invoker, is, isEmpty, isNil, join, juxt, keys, keysIn, last, lastIndexOf, length, lens, lensIndex, lensPath, lensProp, lift, liftN, lt, lte, map, mapAccum, mapAccumRight, mapObjIndexed, match, mathMod, max, maxBy, mean, median, memoizeWith, merge, mergeAll, mergeDeepLeft, mergeDeepRight, mergeDeepWith, mergeDeepWithKey, mergeLeft, mergeRight, mergeWith, mergeWithKey, min, minBy, modulo, move, multiply, nAry, negate, none, not, nth, nthArg, o, objOf, of, omit, once, or, otherwise, over, pair, partial, partialRight, partition, path, pathEq, pathOr, pathSatisfies, pick, pickAll, pickBy, pipe, pipeK, pipeP, pipeWith, pluck, prepend, product, project, prop, propEq, propIs, propOr, propSatisfies, props, range, reduce, reduceBy, reduceRight, reduceWhile, reduced, reject, remove, repeat, replace, reverse, scan, sequence, set, slice, sort, sortBy, sortWith, split, splitAt, splitEvery, splitWhen, startsWith, subtract, sum, symmetricDifference, symmetricDifferenceWith, tail, take, takeLast, takeLastWhile, takeWhile, tap, test, then, times, toLower, toPairs, toPairsIn, toString, toUpper, transduce, transpose, traverse, trim, tryCatch, type, unapply, unary, uncurryN, unfold, union, unionWith, uniq, uniqBy, uniqWith, unless, unnest, until, update, useWith, values, valuesIn, view, when, where, whereEq, without, xprod, zip, zipObj, zipWith, thunkify */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _F_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./F.js */ "./node_modules/ramda/es/F.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "F", function() { return _F_js__WEBPACK_IMPORTED_MODULE_0__["default"]; }); + +/* harmony import */ var _T_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./T.js */ "./node_modules/ramda/es/T.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "T", function() { return _T_js__WEBPACK_IMPORTED_MODULE_1__["default"]; }); + +/* harmony import */ var _js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./__.js */ "./node_modules/ramda/es/__.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "__", function() { return _js__WEBPACK_IMPORTED_MODULE_2__["default"]; }); + +/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "add", function() { return _add_js__WEBPACK_IMPORTED_MODULE_3__["default"]; }); + +/* harmony import */ var _addIndex_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./addIndex.js */ "./node_modules/ramda/es/addIndex.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addIndex", function() { return _addIndex_js__WEBPACK_IMPORTED_MODULE_4__["default"]; }); + +/* harmony import */ var _adjust_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./adjust.js */ "./node_modules/ramda/es/adjust.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "adjust", function() { return _adjust_js__WEBPACK_IMPORTED_MODULE_5__["default"]; }); + +/* harmony import */ var _all_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./all.js */ "./node_modules/ramda/es/all.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "all", function() { return _all_js__WEBPACK_IMPORTED_MODULE_6__["default"]; }); + +/* harmony import */ var _allPass_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./allPass.js */ "./node_modules/ramda/es/allPass.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "allPass", function() { return _allPass_js__WEBPACK_IMPORTED_MODULE_7__["default"]; }); + +/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "always", function() { return _always_js__WEBPACK_IMPORTED_MODULE_8__["default"]; }); + +/* harmony import */ var _and_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./and.js */ "./node_modules/ramda/es/and.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "and", function() { return _and_js__WEBPACK_IMPORTED_MODULE_9__["default"]; }); + +/* harmony import */ var _any_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./any.js */ "./node_modules/ramda/es/any.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "any", function() { return _any_js__WEBPACK_IMPORTED_MODULE_10__["default"]; }); + +/* harmony import */ var _anyPass_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./anyPass.js */ "./node_modules/ramda/es/anyPass.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "anyPass", function() { return _anyPass_js__WEBPACK_IMPORTED_MODULE_11__["default"]; }); + +/* harmony import */ var _ap_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./ap.js */ "./node_modules/ramda/es/ap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ap", function() { return _ap_js__WEBPACK_IMPORTED_MODULE_12__["default"]; }); + +/* harmony import */ var _aperture_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./aperture.js */ "./node_modules/ramda/es/aperture.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "aperture", function() { return _aperture_js__WEBPACK_IMPORTED_MODULE_13__["default"]; }); + +/* harmony import */ var _append_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./append.js */ "./node_modules/ramda/es/append.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "append", function() { return _append_js__WEBPACK_IMPORTED_MODULE_14__["default"]; }); + +/* harmony import */ var _apply_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./apply.js */ "./node_modules/ramda/es/apply.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "apply", function() { return _apply_js__WEBPACK_IMPORTED_MODULE_15__["default"]; }); + +/* harmony import */ var _applySpec_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./applySpec.js */ "./node_modules/ramda/es/applySpec.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applySpec", function() { return _applySpec_js__WEBPACK_IMPORTED_MODULE_16__["default"]; }); + +/* harmony import */ var _applyTo_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./applyTo.js */ "./node_modules/ramda/es/applyTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "applyTo", function() { return _applyTo_js__WEBPACK_IMPORTED_MODULE_17__["default"]; }); + +/* harmony import */ var _ascend_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ascend.js */ "./node_modules/ramda/es/ascend.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ascend", function() { return _ascend_js__WEBPACK_IMPORTED_MODULE_18__["default"]; }); + +/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "assoc", function() { return _assoc_js__WEBPACK_IMPORTED_MODULE_19__["default"]; }); + +/* harmony import */ var _assocPath_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./assocPath.js */ "./node_modules/ramda/es/assocPath.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "assocPath", function() { return _assocPath_js__WEBPACK_IMPORTED_MODULE_20__["default"]; }); + +/* harmony import */ var _binary_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./binary.js */ "./node_modules/ramda/es/binary.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "binary", function() { return _binary_js__WEBPACK_IMPORTED_MODULE_21__["default"]; }); + +/* harmony import */ var _bind_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./bind.js */ "./node_modules/ramda/es/bind.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bind", function() { return _bind_js__WEBPACK_IMPORTED_MODULE_22__["default"]; }); + +/* harmony import */ var _both_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./both.js */ "./node_modules/ramda/es/both.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "both", function() { return _both_js__WEBPACK_IMPORTED_MODULE_23__["default"]; }); + +/* harmony import */ var _call_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./call.js */ "./node_modules/ramda/es/call.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "call", function() { return _call_js__WEBPACK_IMPORTED_MODULE_24__["default"]; }); + +/* harmony import */ var _chain_js__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./chain.js */ "./node_modules/ramda/es/chain.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "chain", function() { return _chain_js__WEBPACK_IMPORTED_MODULE_25__["default"]; }); + +/* harmony import */ var _clamp_js__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./clamp.js */ "./node_modules/ramda/es/clamp.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clamp", function() { return _clamp_js__WEBPACK_IMPORTED_MODULE_26__["default"]; }); + +/* harmony import */ var _clone_js__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./clone.js */ "./node_modules/ramda/es/clone.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "clone", function() { return _clone_js__WEBPACK_IMPORTED_MODULE_27__["default"]; }); + +/* harmony import */ var _comparator_js__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./comparator.js */ "./node_modules/ramda/es/comparator.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "comparator", function() { return _comparator_js__WEBPACK_IMPORTED_MODULE_28__["default"]; }); + +/* harmony import */ var _complement_js__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./complement.js */ "./node_modules/ramda/es/complement.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "complement", function() { return _complement_js__WEBPACK_IMPORTED_MODULE_29__["default"]; }); + +/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./compose.js */ "./node_modules/ramda/es/compose.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "compose", function() { return _compose_js__WEBPACK_IMPORTED_MODULE_30__["default"]; }); + +/* harmony import */ var _composeK_js__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./composeK.js */ "./node_modules/ramda/es/composeK.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "composeK", function() { return _composeK_js__WEBPACK_IMPORTED_MODULE_31__["default"]; }); + +/* harmony import */ var _composeP_js__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./composeP.js */ "./node_modules/ramda/es/composeP.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "composeP", function() { return _composeP_js__WEBPACK_IMPORTED_MODULE_32__["default"]; }); + +/* harmony import */ var _composeWith_js__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./composeWith.js */ "./node_modules/ramda/es/composeWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "composeWith", function() { return _composeWith_js__WEBPACK_IMPORTED_MODULE_33__["default"]; }); + +/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./concat.js */ "./node_modules/ramda/es/concat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _concat_js__WEBPACK_IMPORTED_MODULE_34__["default"]; }); + +/* harmony import */ var _cond_js__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./cond.js */ "./node_modules/ramda/es/cond.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cond", function() { return _cond_js__WEBPACK_IMPORTED_MODULE_35__["default"]; }); + +/* harmony import */ var _construct_js__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./construct.js */ "./node_modules/ramda/es/construct.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "construct", function() { return _construct_js__WEBPACK_IMPORTED_MODULE_36__["default"]; }); + +/* harmony import */ var _constructN_js__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./constructN.js */ "./node_modules/ramda/es/constructN.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "constructN", function() { return _constructN_js__WEBPACK_IMPORTED_MODULE_37__["default"]; }); + +/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./contains.js */ "./node_modules/ramda/es/contains.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "contains", function() { return _contains_js__WEBPACK_IMPORTED_MODULE_38__["default"]; }); + +/* harmony import */ var _converge_js__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./converge.js */ "./node_modules/ramda/es/converge.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "converge", function() { return _converge_js__WEBPACK_IMPORTED_MODULE_39__["default"]; }); + +/* harmony import */ var _countBy_js__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./countBy.js */ "./node_modules/ramda/es/countBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "countBy", function() { return _countBy_js__WEBPACK_IMPORTED_MODULE_40__["default"]; }); + +/* harmony import */ var _curry_js__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./curry.js */ "./node_modules/ramda/es/curry.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curry", function() { return _curry_js__WEBPACK_IMPORTED_MODULE_41__["default"]; }); + +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "curryN", function() { return _curryN_js__WEBPACK_IMPORTED_MODULE_42__["default"]; }); + +/* harmony import */ var _dec_js__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./dec.js */ "./node_modules/ramda/es/dec.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dec", function() { return _dec_js__WEBPACK_IMPORTED_MODULE_43__["default"]; }); + +/* harmony import */ var _defaultTo_js__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./defaultTo.js */ "./node_modules/ramda/es/defaultTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultTo", function() { return _defaultTo_js__WEBPACK_IMPORTED_MODULE_44__["default"]; }); + +/* harmony import */ var _descend_js__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./descend.js */ "./node_modules/ramda/es/descend.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "descend", function() { return _descend_js__WEBPACK_IMPORTED_MODULE_45__["default"]; }); + +/* harmony import */ var _difference_js__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./difference.js */ "./node_modules/ramda/es/difference.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "difference", function() { return _difference_js__WEBPACK_IMPORTED_MODULE_46__["default"]; }); + +/* harmony import */ var _differenceWith_js__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./differenceWith.js */ "./node_modules/ramda/es/differenceWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "differenceWith", function() { return _differenceWith_js__WEBPACK_IMPORTED_MODULE_47__["default"]; }); + +/* harmony import */ var _dissoc_js__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./dissoc.js */ "./node_modules/ramda/es/dissoc.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dissoc", function() { return _dissoc_js__WEBPACK_IMPORTED_MODULE_48__["default"]; }); + +/* harmony import */ var _dissocPath_js__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./dissocPath.js */ "./node_modules/ramda/es/dissocPath.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dissocPath", function() { return _dissocPath_js__WEBPACK_IMPORTED_MODULE_49__["default"]; }); + +/* harmony import */ var _divide_js__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./divide.js */ "./node_modules/ramda/es/divide.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "divide", function() { return _divide_js__WEBPACK_IMPORTED_MODULE_50__["default"]; }); + +/* harmony import */ var _drop_js__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./drop.js */ "./node_modules/ramda/es/drop.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "drop", function() { return _drop_js__WEBPACK_IMPORTED_MODULE_51__["default"]; }); + +/* harmony import */ var _dropLast_js__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./dropLast.js */ "./node_modules/ramda/es/dropLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropLast", function() { return _dropLast_js__WEBPACK_IMPORTED_MODULE_52__["default"]; }); + +/* harmony import */ var _dropLastWhile_js__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ./dropLastWhile.js */ "./node_modules/ramda/es/dropLastWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropLastWhile", function() { return _dropLastWhile_js__WEBPACK_IMPORTED_MODULE_53__["default"]; }); + +/* harmony import */ var _dropRepeats_js__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ./dropRepeats.js */ "./node_modules/ramda/es/dropRepeats.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropRepeats", function() { return _dropRepeats_js__WEBPACK_IMPORTED_MODULE_54__["default"]; }); + +/* harmony import */ var _dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ./dropRepeatsWith.js */ "./node_modules/ramda/es/dropRepeatsWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropRepeatsWith", function() { return _dropRepeatsWith_js__WEBPACK_IMPORTED_MODULE_55__["default"]; }); + +/* harmony import */ var _dropWhile_js__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ./dropWhile.js */ "./node_modules/ramda/es/dropWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dropWhile", function() { return _dropWhile_js__WEBPACK_IMPORTED_MODULE_56__["default"]; }); + +/* harmony import */ var _either_js__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ./either.js */ "./node_modules/ramda/es/either.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "either", function() { return _either_js__WEBPACK_IMPORTED_MODULE_57__["default"]; }); + +/* harmony import */ var _empty_js__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ./empty.js */ "./node_modules/ramda/es/empty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _empty_js__WEBPACK_IMPORTED_MODULE_58__["default"]; }); + +/* harmony import */ var _endsWith_js__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ./endsWith.js */ "./node_modules/ramda/es/endsWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endsWith", function() { return _endsWith_js__WEBPACK_IMPORTED_MODULE_59__["default"]; }); + +/* harmony import */ var _eqBy_js__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ./eqBy.js */ "./node_modules/ramda/es/eqBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "eqBy", function() { return _eqBy_js__WEBPACK_IMPORTED_MODULE_60__["default"]; }); + +/* harmony import */ var _eqProps_js__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ./eqProps.js */ "./node_modules/ramda/es/eqProps.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "eqProps", function() { return _eqProps_js__WEBPACK_IMPORTED_MODULE_61__["default"]; }); + +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "equals", function() { return _equals_js__WEBPACK_IMPORTED_MODULE_62__["default"]; }); + +/* harmony import */ var _evolve_js__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ./evolve.js */ "./node_modules/ramda/es/evolve.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "evolve", function() { return _evolve_js__WEBPACK_IMPORTED_MODULE_63__["default"]; }); + +/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ./filter.js */ "./node_modules/ramda/es/filter.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _filter_js__WEBPACK_IMPORTED_MODULE_64__["default"]; }); + +/* harmony import */ var _find_js__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ./find.js */ "./node_modules/ramda/es/find.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _find_js__WEBPACK_IMPORTED_MODULE_65__["default"]; }); + +/* harmony import */ var _findIndex_js__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ./findIndex.js */ "./node_modules/ramda/es/findIndex.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _findIndex_js__WEBPACK_IMPORTED_MODULE_66__["default"]; }); + +/* harmony import */ var _findLast_js__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ./findLast.js */ "./node_modules/ramda/es/findLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findLast", function() { return _findLast_js__WEBPACK_IMPORTED_MODULE_67__["default"]; }); + +/* harmony import */ var _findLastIndex_js__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ./findLastIndex.js */ "./node_modules/ramda/es/findLastIndex.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findLastIndex", function() { return _findLastIndex_js__WEBPACK_IMPORTED_MODULE_68__["default"]; }); + +/* harmony import */ var _flatten_js__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ./flatten.js */ "./node_modules/ramda/es/flatten.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatten", function() { return _flatten_js__WEBPACK_IMPORTED_MODULE_69__["default"]; }); + +/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flip", function() { return _flip_js__WEBPACK_IMPORTED_MODULE_70__["default"]; }); + +/* harmony import */ var _forEach_js__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ./forEach.js */ "./node_modules/ramda/es/forEach.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forEach", function() { return _forEach_js__WEBPACK_IMPORTED_MODULE_71__["default"]; }); + +/* harmony import */ var _forEachObjIndexed_js__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ./forEachObjIndexed.js */ "./node_modules/ramda/es/forEachObjIndexed.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forEachObjIndexed", function() { return _forEachObjIndexed_js__WEBPACK_IMPORTED_MODULE_72__["default"]; }); + +/* harmony import */ var _fromPairs_js__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ./fromPairs.js */ "./node_modules/ramda/es/fromPairs.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromPairs", function() { return _fromPairs_js__WEBPACK_IMPORTED_MODULE_73__["default"]; }); + +/* harmony import */ var _groupBy_js__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ./groupBy.js */ "./node_modules/ramda/es/groupBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _groupBy_js__WEBPACK_IMPORTED_MODULE_74__["default"]; }); + +/* harmony import */ var _groupWith_js__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ./groupWith.js */ "./node_modules/ramda/es/groupWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupWith", function() { return _groupWith_js__WEBPACK_IMPORTED_MODULE_75__["default"]; }); + +/* harmony import */ var _gt_js__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ./gt.js */ "./node_modules/ramda/es/gt.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "gt", function() { return _gt_js__WEBPACK_IMPORTED_MODULE_76__["default"]; }); + +/* harmony import */ var _gte_js__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ./gte.js */ "./node_modules/ramda/es/gte.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "gte", function() { return _gte_js__WEBPACK_IMPORTED_MODULE_77__["default"]; }); + +/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ./has.js */ "./node_modules/ramda/es/has.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "has", function() { return _has_js__WEBPACK_IMPORTED_MODULE_78__["default"]; }); + +/* harmony import */ var _hasIn_js__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ./hasIn.js */ "./node_modules/ramda/es/hasIn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hasIn", function() { return _hasIn_js__WEBPACK_IMPORTED_MODULE_79__["default"]; }); + +/* harmony import */ var _hasPath_js__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ./hasPath.js */ "./node_modules/ramda/es/hasPath.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hasPath", function() { return _hasPath_js__WEBPACK_IMPORTED_MODULE_80__["default"]; }); + +/* harmony import */ var _head_js__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ./head.js */ "./node_modules/ramda/es/head.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "head", function() { return _head_js__WEBPACK_IMPORTED_MODULE_81__["default"]; }); + +/* harmony import */ var _identical_js__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ./identical.js */ "./node_modules/ramda/es/identical.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identical", function() { return _identical_js__WEBPACK_IMPORTED_MODULE_82__["default"]; }); + +/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _identity_js__WEBPACK_IMPORTED_MODULE_83__["default"]; }); + +/* harmony import */ var _ifElse_js__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ./ifElse.js */ "./node_modules/ramda/es/ifElse.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ifElse", function() { return _ifElse_js__WEBPACK_IMPORTED_MODULE_84__["default"]; }); + +/* harmony import */ var _inc_js__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ./inc.js */ "./node_modules/ramda/es/inc.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "inc", function() { return _inc_js__WEBPACK_IMPORTED_MODULE_85__["default"]; }); + +/* harmony import */ var _includes_js__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ./includes.js */ "./node_modules/ramda/es/includes.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "includes", function() { return _includes_js__WEBPACK_IMPORTED_MODULE_86__["default"]; }); + +/* harmony import */ var _indexBy_js__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ./indexBy.js */ "./node_modules/ramda/es/indexBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indexBy", function() { return _indexBy_js__WEBPACK_IMPORTED_MODULE_87__["default"]; }); + +/* harmony import */ var _indexOf_js__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ./indexOf.js */ "./node_modules/ramda/es/indexOf.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "indexOf", function() { return _indexOf_js__WEBPACK_IMPORTED_MODULE_88__["default"]; }); + +/* harmony import */ var _init_js__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ./init.js */ "./node_modules/ramda/es/init.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "init", function() { return _init_js__WEBPACK_IMPORTED_MODULE_89__["default"]; }); + +/* harmony import */ var _innerJoin_js__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ./innerJoin.js */ "./node_modules/ramda/es/innerJoin.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "innerJoin", function() { return _innerJoin_js__WEBPACK_IMPORTED_MODULE_90__["default"]; }); + +/* harmony import */ var _insert_js__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ./insert.js */ "./node_modules/ramda/es/insert.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "insert", function() { return _insert_js__WEBPACK_IMPORTED_MODULE_91__["default"]; }); + +/* harmony import */ var _insertAll_js__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ./insertAll.js */ "./node_modules/ramda/es/insertAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "insertAll", function() { return _insertAll_js__WEBPACK_IMPORTED_MODULE_92__["default"]; }); + +/* harmony import */ var _intersection_js__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ./intersection.js */ "./node_modules/ramda/es/intersection.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intersection", function() { return _intersection_js__WEBPACK_IMPORTED_MODULE_93__["default"]; }); + +/* harmony import */ var _intersperse_js__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ./intersperse.js */ "./node_modules/ramda/es/intersperse.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "intersperse", function() { return _intersperse_js__WEBPACK_IMPORTED_MODULE_94__["default"]; }); + +/* harmony import */ var _into_js__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ./into.js */ "./node_modules/ramda/es/into.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "into", function() { return _into_js__WEBPACK_IMPORTED_MODULE_95__["default"]; }); + +/* harmony import */ var _invert_js__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ./invert.js */ "./node_modules/ramda/es/invert.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invert", function() { return _invert_js__WEBPACK_IMPORTED_MODULE_96__["default"]; }); + +/* harmony import */ var _invertObj_js__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ./invertObj.js */ "./node_modules/ramda/es/invertObj.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invertObj", function() { return _invertObj_js__WEBPACK_IMPORTED_MODULE_97__["default"]; }); + +/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "invoker", function() { return _invoker_js__WEBPACK_IMPORTED_MODULE_98__["default"]; }); + +/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ./is.js */ "./node_modules/ramda/es/is.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "is", function() { return _is_js__WEBPACK_IMPORTED_MODULE_99__["default"]; }); + +/* harmony import */ var _isEmpty_js__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ./isEmpty.js */ "./node_modules/ramda/es/isEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _isEmpty_js__WEBPACK_IMPORTED_MODULE_100__["default"]; }); + +/* harmony import */ var _isNil_js__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/es/isNil.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isNil", function() { return _isNil_js__WEBPACK_IMPORTED_MODULE_101__["default"]; }); + +/* harmony import */ var _join_js__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ./join.js */ "./node_modules/ramda/es/join.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "join", function() { return _join_js__WEBPACK_IMPORTED_MODULE_102__["default"]; }); + +/* harmony import */ var _juxt_js__WEBPACK_IMPORTED_MODULE_103__ = __webpack_require__(/*! ./juxt.js */ "./node_modules/ramda/es/juxt.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "juxt", function() { return _juxt_js__WEBPACK_IMPORTED_MODULE_103__["default"]; }); + +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_104__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "keys", function() { return _keys_js__WEBPACK_IMPORTED_MODULE_104__["default"]; }); + +/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_105__ = __webpack_require__(/*! ./keysIn.js */ "./node_modules/ramda/es/keysIn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "keysIn", function() { return _keysIn_js__WEBPACK_IMPORTED_MODULE_105__["default"]; }); + +/* harmony import */ var _last_js__WEBPACK_IMPORTED_MODULE_106__ = __webpack_require__(/*! ./last.js */ "./node_modules/ramda/es/last.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _last_js__WEBPACK_IMPORTED_MODULE_106__["default"]; }); + +/* harmony import */ var _lastIndexOf_js__WEBPACK_IMPORTED_MODULE_107__ = __webpack_require__(/*! ./lastIndexOf.js */ "./node_modules/ramda/es/lastIndexOf.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lastIndexOf", function() { return _lastIndexOf_js__WEBPACK_IMPORTED_MODULE_107__["default"]; }); + +/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_108__ = __webpack_require__(/*! ./length.js */ "./node_modules/ramda/es/length.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "length", function() { return _length_js__WEBPACK_IMPORTED_MODULE_108__["default"]; }); + +/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_109__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lens", function() { return _lens_js__WEBPACK_IMPORTED_MODULE_109__["default"]; }); + +/* harmony import */ var _lensIndex_js__WEBPACK_IMPORTED_MODULE_110__ = __webpack_require__(/*! ./lensIndex.js */ "./node_modules/ramda/es/lensIndex.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lensIndex", function() { return _lensIndex_js__WEBPACK_IMPORTED_MODULE_110__["default"]; }); + +/* harmony import */ var _lensPath_js__WEBPACK_IMPORTED_MODULE_111__ = __webpack_require__(/*! ./lensPath.js */ "./node_modules/ramda/es/lensPath.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lensPath", function() { return _lensPath_js__WEBPACK_IMPORTED_MODULE_111__["default"]; }); + +/* harmony import */ var _lensProp_js__WEBPACK_IMPORTED_MODULE_112__ = __webpack_require__(/*! ./lensProp.js */ "./node_modules/ramda/es/lensProp.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lensProp", function() { return _lensProp_js__WEBPACK_IMPORTED_MODULE_112__["default"]; }); + +/* harmony import */ var _lift_js__WEBPACK_IMPORTED_MODULE_113__ = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/es/lift.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lift", function() { return _lift_js__WEBPACK_IMPORTED_MODULE_113__["default"]; }); + +/* harmony import */ var _liftN_js__WEBPACK_IMPORTED_MODULE_114__ = __webpack_require__(/*! ./liftN.js */ "./node_modules/ramda/es/liftN.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "liftN", function() { return _liftN_js__WEBPACK_IMPORTED_MODULE_114__["default"]; }); + +/* harmony import */ var _lt_js__WEBPACK_IMPORTED_MODULE_115__ = __webpack_require__(/*! ./lt.js */ "./node_modules/ramda/es/lt.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lt", function() { return _lt_js__WEBPACK_IMPORTED_MODULE_115__["default"]; }); + +/* harmony import */ var _lte_js__WEBPACK_IMPORTED_MODULE_116__ = __webpack_require__(/*! ./lte.js */ "./node_modules/ramda/es/lte.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "lte", function() { return _lte_js__WEBPACK_IMPORTED_MODULE_116__["default"]; }); + +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_117__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _map_js__WEBPACK_IMPORTED_MODULE_117__["default"]; }); + +/* harmony import */ var _mapAccum_js__WEBPACK_IMPORTED_MODULE_118__ = __webpack_require__(/*! ./mapAccum.js */ "./node_modules/ramda/es/mapAccum.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapAccum", function() { return _mapAccum_js__WEBPACK_IMPORTED_MODULE_118__["default"]; }); + +/* harmony import */ var _mapAccumRight_js__WEBPACK_IMPORTED_MODULE_119__ = __webpack_require__(/*! ./mapAccumRight.js */ "./node_modules/ramda/es/mapAccumRight.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapAccumRight", function() { return _mapAccumRight_js__WEBPACK_IMPORTED_MODULE_119__["default"]; }); + +/* harmony import */ var _mapObjIndexed_js__WEBPACK_IMPORTED_MODULE_120__ = __webpack_require__(/*! ./mapObjIndexed.js */ "./node_modules/ramda/es/mapObjIndexed.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapObjIndexed", function() { return _mapObjIndexed_js__WEBPACK_IMPORTED_MODULE_120__["default"]; }); + +/* harmony import */ var _match_js__WEBPACK_IMPORTED_MODULE_121__ = __webpack_require__(/*! ./match.js */ "./node_modules/ramda/es/match.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "match", function() { return _match_js__WEBPACK_IMPORTED_MODULE_121__["default"]; }); + +/* harmony import */ var _mathMod_js__WEBPACK_IMPORTED_MODULE_122__ = __webpack_require__(/*! ./mathMod.js */ "./node_modules/ramda/es/mathMod.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mathMod", function() { return _mathMod_js__WEBPACK_IMPORTED_MODULE_122__["default"]; }); + +/* harmony import */ var _max_js__WEBPACK_IMPORTED_MODULE_123__ = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/es/max.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _max_js__WEBPACK_IMPORTED_MODULE_123__["default"]; }); + +/* harmony import */ var _maxBy_js__WEBPACK_IMPORTED_MODULE_124__ = __webpack_require__(/*! ./maxBy.js */ "./node_modules/ramda/es/maxBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "maxBy", function() { return _maxBy_js__WEBPACK_IMPORTED_MODULE_124__["default"]; }); + +/* harmony import */ var _mean_js__WEBPACK_IMPORTED_MODULE_125__ = __webpack_require__(/*! ./mean.js */ "./node_modules/ramda/es/mean.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mean", function() { return _mean_js__WEBPACK_IMPORTED_MODULE_125__["default"]; }); + +/* harmony import */ var _median_js__WEBPACK_IMPORTED_MODULE_126__ = __webpack_require__(/*! ./median.js */ "./node_modules/ramda/es/median.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "median", function() { return _median_js__WEBPACK_IMPORTED_MODULE_126__["default"]; }); + +/* harmony import */ var _memoizeWith_js__WEBPACK_IMPORTED_MODULE_127__ = __webpack_require__(/*! ./memoizeWith.js */ "./node_modules/ramda/es/memoizeWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "memoizeWith", function() { return _memoizeWith_js__WEBPACK_IMPORTED_MODULE_127__["default"]; }); + +/* harmony import */ var _merge_js__WEBPACK_IMPORTED_MODULE_128__ = __webpack_require__(/*! ./merge.js */ "./node_modules/ramda/es/merge.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _merge_js__WEBPACK_IMPORTED_MODULE_128__["default"]; }); + +/* harmony import */ var _mergeAll_js__WEBPACK_IMPORTED_MODULE_129__ = __webpack_require__(/*! ./mergeAll.js */ "./node_modules/ramda/es/mergeAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _mergeAll_js__WEBPACK_IMPORTED_MODULE_129__["default"]; }); + +/* harmony import */ var _mergeDeepLeft_js__WEBPACK_IMPORTED_MODULE_130__ = __webpack_require__(/*! ./mergeDeepLeft.js */ "./node_modules/ramda/es/mergeDeepLeft.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepLeft", function() { return _mergeDeepLeft_js__WEBPACK_IMPORTED_MODULE_130__["default"]; }); + +/* harmony import */ var _mergeDeepRight_js__WEBPACK_IMPORTED_MODULE_131__ = __webpack_require__(/*! ./mergeDeepRight.js */ "./node_modules/ramda/es/mergeDeepRight.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepRight", function() { return _mergeDeepRight_js__WEBPACK_IMPORTED_MODULE_131__["default"]; }); + +/* harmony import */ var _mergeDeepWith_js__WEBPACK_IMPORTED_MODULE_132__ = __webpack_require__(/*! ./mergeDeepWith.js */ "./node_modules/ramda/es/mergeDeepWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepWith", function() { return _mergeDeepWith_js__WEBPACK_IMPORTED_MODULE_132__["default"]; }); + +/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_133__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeDeepWithKey", function() { return _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_133__["default"]; }); + +/* harmony import */ var _mergeLeft_js__WEBPACK_IMPORTED_MODULE_134__ = __webpack_require__(/*! ./mergeLeft.js */ "./node_modules/ramda/es/mergeLeft.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeLeft", function() { return _mergeLeft_js__WEBPACK_IMPORTED_MODULE_134__["default"]; }); + +/* harmony import */ var _mergeRight_js__WEBPACK_IMPORTED_MODULE_135__ = __webpack_require__(/*! ./mergeRight.js */ "./node_modules/ramda/es/mergeRight.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeRight", function() { return _mergeRight_js__WEBPACK_IMPORTED_MODULE_135__["default"]; }); + +/* harmony import */ var _mergeWith_js__WEBPACK_IMPORTED_MODULE_136__ = __webpack_require__(/*! ./mergeWith.js */ "./node_modules/ramda/es/mergeWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWith", function() { return _mergeWith_js__WEBPACK_IMPORTED_MODULE_136__["default"]; }); + +/* harmony import */ var _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_137__ = __webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/es/mergeWithKey.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeWithKey", function() { return _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_137__["default"]; }); + +/* harmony import */ var _min_js__WEBPACK_IMPORTED_MODULE_138__ = __webpack_require__(/*! ./min.js */ "./node_modules/ramda/es/min.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _min_js__WEBPACK_IMPORTED_MODULE_138__["default"]; }); + +/* harmony import */ var _minBy_js__WEBPACK_IMPORTED_MODULE_139__ = __webpack_require__(/*! ./minBy.js */ "./node_modules/ramda/es/minBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "minBy", function() { return _minBy_js__WEBPACK_IMPORTED_MODULE_139__["default"]; }); + +/* harmony import */ var _modulo_js__WEBPACK_IMPORTED_MODULE_140__ = __webpack_require__(/*! ./modulo.js */ "./node_modules/ramda/es/modulo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "modulo", function() { return _modulo_js__WEBPACK_IMPORTED_MODULE_140__["default"]; }); + +/* harmony import */ var _move_js__WEBPACK_IMPORTED_MODULE_141__ = __webpack_require__(/*! ./move.js */ "./node_modules/ramda/es/move.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "move", function() { return _move_js__WEBPACK_IMPORTED_MODULE_141__["default"]; }); + +/* harmony import */ var _multiply_js__WEBPACK_IMPORTED_MODULE_142__ = __webpack_require__(/*! ./multiply.js */ "./node_modules/ramda/es/multiply.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multiply", function() { return _multiply_js__WEBPACK_IMPORTED_MODULE_142__["default"]; }); + +/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_143__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nAry", function() { return _nAry_js__WEBPACK_IMPORTED_MODULE_143__["default"]; }); + +/* harmony import */ var _negate_js__WEBPACK_IMPORTED_MODULE_144__ = __webpack_require__(/*! ./negate.js */ "./node_modules/ramda/es/negate.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "negate", function() { return _negate_js__WEBPACK_IMPORTED_MODULE_144__["default"]; }); + +/* harmony import */ var _none_js__WEBPACK_IMPORTED_MODULE_145__ = __webpack_require__(/*! ./none.js */ "./node_modules/ramda/es/none.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "none", function() { return _none_js__WEBPACK_IMPORTED_MODULE_145__["default"]; }); + +/* harmony import */ var _not_js__WEBPACK_IMPORTED_MODULE_146__ = __webpack_require__(/*! ./not.js */ "./node_modules/ramda/es/not.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "not", function() { return _not_js__WEBPACK_IMPORTED_MODULE_146__["default"]; }); + +/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_147__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nth", function() { return _nth_js__WEBPACK_IMPORTED_MODULE_147__["default"]; }); + +/* harmony import */ var _nthArg_js__WEBPACK_IMPORTED_MODULE_148__ = __webpack_require__(/*! ./nthArg.js */ "./node_modules/ramda/es/nthArg.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "nthArg", function() { return _nthArg_js__WEBPACK_IMPORTED_MODULE_148__["default"]; }); + +/* harmony import */ var _o_js__WEBPACK_IMPORTED_MODULE_149__ = __webpack_require__(/*! ./o.js */ "./node_modules/ramda/es/o.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "o", function() { return _o_js__WEBPACK_IMPORTED_MODULE_149__["default"]; }); + +/* harmony import */ var _objOf_js__WEBPACK_IMPORTED_MODULE_150__ = __webpack_require__(/*! ./objOf.js */ "./node_modules/ramda/es/objOf.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "objOf", function() { return _objOf_js__WEBPACK_IMPORTED_MODULE_150__["default"]; }); + +/* harmony import */ var _of_js__WEBPACK_IMPORTED_MODULE_151__ = __webpack_require__(/*! ./of.js */ "./node_modules/ramda/es/of.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _of_js__WEBPACK_IMPORTED_MODULE_151__["default"]; }); + +/* harmony import */ var _omit_js__WEBPACK_IMPORTED_MODULE_152__ = __webpack_require__(/*! ./omit.js */ "./node_modules/ramda/es/omit.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "omit", function() { return _omit_js__WEBPACK_IMPORTED_MODULE_152__["default"]; }); + +/* harmony import */ var _once_js__WEBPACK_IMPORTED_MODULE_153__ = __webpack_require__(/*! ./once.js */ "./node_modules/ramda/es/once.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "once", function() { return _once_js__WEBPACK_IMPORTED_MODULE_153__["default"]; }); + +/* harmony import */ var _or_js__WEBPACK_IMPORTED_MODULE_154__ = __webpack_require__(/*! ./or.js */ "./node_modules/ramda/es/or.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "or", function() { return _or_js__WEBPACK_IMPORTED_MODULE_154__["default"]; }); + +/* harmony import */ var _otherwise_js__WEBPACK_IMPORTED_MODULE_155__ = __webpack_require__(/*! ./otherwise.js */ "./node_modules/ramda/es/otherwise.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "otherwise", function() { return _otherwise_js__WEBPACK_IMPORTED_MODULE_155__["default"]; }); + +/* harmony import */ var _over_js__WEBPACK_IMPORTED_MODULE_156__ = __webpack_require__(/*! ./over.js */ "./node_modules/ramda/es/over.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "over", function() { return _over_js__WEBPACK_IMPORTED_MODULE_156__["default"]; }); + +/* harmony import */ var _pair_js__WEBPACK_IMPORTED_MODULE_157__ = __webpack_require__(/*! ./pair.js */ "./node_modules/ramda/es/pair.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pair", function() { return _pair_js__WEBPACK_IMPORTED_MODULE_157__["default"]; }); + +/* harmony import */ var _partial_js__WEBPACK_IMPORTED_MODULE_158__ = __webpack_require__(/*! ./partial.js */ "./node_modules/ramda/es/partial.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partial", function() { return _partial_js__WEBPACK_IMPORTED_MODULE_158__["default"]; }); + +/* harmony import */ var _partialRight_js__WEBPACK_IMPORTED_MODULE_159__ = __webpack_require__(/*! ./partialRight.js */ "./node_modules/ramda/es/partialRight.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partialRight", function() { return _partialRight_js__WEBPACK_IMPORTED_MODULE_159__["default"]; }); + +/* harmony import */ var _partition_js__WEBPACK_IMPORTED_MODULE_160__ = __webpack_require__(/*! ./partition.js */ "./node_modules/ramda/es/partition.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _partition_js__WEBPACK_IMPORTED_MODULE_160__["default"]; }); + +/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_161__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "path", function() { return _path_js__WEBPACK_IMPORTED_MODULE_161__["default"]; }); + +/* harmony import */ var _pathEq_js__WEBPACK_IMPORTED_MODULE_162__ = __webpack_require__(/*! ./pathEq.js */ "./node_modules/ramda/es/pathEq.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pathEq", function() { return _pathEq_js__WEBPACK_IMPORTED_MODULE_162__["default"]; }); + +/* harmony import */ var _pathOr_js__WEBPACK_IMPORTED_MODULE_163__ = __webpack_require__(/*! ./pathOr.js */ "./node_modules/ramda/es/pathOr.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pathOr", function() { return _pathOr_js__WEBPACK_IMPORTED_MODULE_163__["default"]; }); + +/* harmony import */ var _pathSatisfies_js__WEBPACK_IMPORTED_MODULE_164__ = __webpack_require__(/*! ./pathSatisfies.js */ "./node_modules/ramda/es/pathSatisfies.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pathSatisfies", function() { return _pathSatisfies_js__WEBPACK_IMPORTED_MODULE_164__["default"]; }); + +/* harmony import */ var _pick_js__WEBPACK_IMPORTED_MODULE_165__ = __webpack_require__(/*! ./pick.js */ "./node_modules/ramda/es/pick.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pick", function() { return _pick_js__WEBPACK_IMPORTED_MODULE_165__["default"]; }); + +/* harmony import */ var _pickAll_js__WEBPACK_IMPORTED_MODULE_166__ = __webpack_require__(/*! ./pickAll.js */ "./node_modules/ramda/es/pickAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pickAll", function() { return _pickAll_js__WEBPACK_IMPORTED_MODULE_166__["default"]; }); + +/* harmony import */ var _pickBy_js__WEBPACK_IMPORTED_MODULE_167__ = __webpack_require__(/*! ./pickBy.js */ "./node_modules/ramda/es/pickBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pickBy", function() { return _pickBy_js__WEBPACK_IMPORTED_MODULE_167__["default"]; }); + +/* harmony import */ var _pipe_js__WEBPACK_IMPORTED_MODULE_168__ = __webpack_require__(/*! ./pipe.js */ "./node_modules/ramda/es/pipe.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _pipe_js__WEBPACK_IMPORTED_MODULE_168__["default"]; }); + +/* harmony import */ var _pipeK_js__WEBPACK_IMPORTED_MODULE_169__ = __webpack_require__(/*! ./pipeK.js */ "./node_modules/ramda/es/pipeK.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipeK", function() { return _pipeK_js__WEBPACK_IMPORTED_MODULE_169__["default"]; }); + +/* harmony import */ var _pipeP_js__WEBPACK_IMPORTED_MODULE_170__ = __webpack_require__(/*! ./pipeP.js */ "./node_modules/ramda/es/pipeP.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipeP", function() { return _pipeP_js__WEBPACK_IMPORTED_MODULE_170__["default"]; }); + +/* harmony import */ var _pipeWith_js__WEBPACK_IMPORTED_MODULE_171__ = __webpack_require__(/*! ./pipeWith.js */ "./node_modules/ramda/es/pipeWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipeWith", function() { return _pipeWith_js__WEBPACK_IMPORTED_MODULE_171__["default"]; }); + +/* harmony import */ var _pluck_js__WEBPACK_IMPORTED_MODULE_172__ = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/es/pluck.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _pluck_js__WEBPACK_IMPORTED_MODULE_172__["default"]; }); + +/* harmony import */ var _prepend_js__WEBPACK_IMPORTED_MODULE_173__ = __webpack_require__(/*! ./prepend.js */ "./node_modules/ramda/es/prepend.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "prepend", function() { return _prepend_js__WEBPACK_IMPORTED_MODULE_173__["default"]; }); + +/* harmony import */ var _product_js__WEBPACK_IMPORTED_MODULE_174__ = __webpack_require__(/*! ./product.js */ "./node_modules/ramda/es/product.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "product", function() { return _product_js__WEBPACK_IMPORTED_MODULE_174__["default"]; }); + +/* harmony import */ var _project_js__WEBPACK_IMPORTED_MODULE_175__ = __webpack_require__(/*! ./project.js */ "./node_modules/ramda/es/project.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "project", function() { return _project_js__WEBPACK_IMPORTED_MODULE_175__["default"]; }); + +/* harmony import */ var _prop_js__WEBPACK_IMPORTED_MODULE_176__ = __webpack_require__(/*! ./prop.js */ "./node_modules/ramda/es/prop.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "prop", function() { return _prop_js__WEBPACK_IMPORTED_MODULE_176__["default"]; }); + +/* harmony import */ var _propEq_js__WEBPACK_IMPORTED_MODULE_177__ = __webpack_require__(/*! ./propEq.js */ "./node_modules/ramda/es/propEq.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propEq", function() { return _propEq_js__WEBPACK_IMPORTED_MODULE_177__["default"]; }); + +/* harmony import */ var _propIs_js__WEBPACK_IMPORTED_MODULE_178__ = __webpack_require__(/*! ./propIs.js */ "./node_modules/ramda/es/propIs.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propIs", function() { return _propIs_js__WEBPACK_IMPORTED_MODULE_178__["default"]; }); + +/* harmony import */ var _propOr_js__WEBPACK_IMPORTED_MODULE_179__ = __webpack_require__(/*! ./propOr.js */ "./node_modules/ramda/es/propOr.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propOr", function() { return _propOr_js__WEBPACK_IMPORTED_MODULE_179__["default"]; }); + +/* harmony import */ var _propSatisfies_js__WEBPACK_IMPORTED_MODULE_180__ = __webpack_require__(/*! ./propSatisfies.js */ "./node_modules/ramda/es/propSatisfies.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "propSatisfies", function() { return _propSatisfies_js__WEBPACK_IMPORTED_MODULE_180__["default"]; }); + +/* harmony import */ var _props_js__WEBPACK_IMPORTED_MODULE_181__ = __webpack_require__(/*! ./props.js */ "./node_modules/ramda/es/props.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "props", function() { return _props_js__WEBPACK_IMPORTED_MODULE_181__["default"]; }); + +/* harmony import */ var _range_js__WEBPACK_IMPORTED_MODULE_182__ = __webpack_require__(/*! ./range.js */ "./node_modules/ramda/es/range.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _range_js__WEBPACK_IMPORTED_MODULE_182__["default"]; }); + +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_183__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _reduce_js__WEBPACK_IMPORTED_MODULE_183__["default"]; }); + +/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_184__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduceBy", function() { return _reduceBy_js__WEBPACK_IMPORTED_MODULE_184__["default"]; }); + +/* harmony import */ var _reduceRight_js__WEBPACK_IMPORTED_MODULE_185__ = __webpack_require__(/*! ./reduceRight.js */ "./node_modules/ramda/es/reduceRight.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduceRight", function() { return _reduceRight_js__WEBPACK_IMPORTED_MODULE_185__["default"]; }); + +/* harmony import */ var _reduceWhile_js__WEBPACK_IMPORTED_MODULE_186__ = __webpack_require__(/*! ./reduceWhile.js */ "./node_modules/ramda/es/reduceWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduceWhile", function() { return _reduceWhile_js__WEBPACK_IMPORTED_MODULE_186__["default"]; }); + +/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_187__ = __webpack_require__(/*! ./reduced.js */ "./node_modules/ramda/es/reduced.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduced", function() { return _reduced_js__WEBPACK_IMPORTED_MODULE_187__["default"]; }); + +/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_188__ = __webpack_require__(/*! ./reject.js */ "./node_modules/ramda/es/reject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reject", function() { return _reject_js__WEBPACK_IMPORTED_MODULE_188__["default"]; }); + +/* harmony import */ var _remove_js__WEBPACK_IMPORTED_MODULE_189__ = __webpack_require__(/*! ./remove.js */ "./node_modules/ramda/es/remove.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "remove", function() { return _remove_js__WEBPACK_IMPORTED_MODULE_189__["default"]; }); + +/* harmony import */ var _repeat_js__WEBPACK_IMPORTED_MODULE_190__ = __webpack_require__(/*! ./repeat.js */ "./node_modules/ramda/es/repeat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _repeat_js__WEBPACK_IMPORTED_MODULE_190__["default"]; }); + +/* harmony import */ var _replace_js__WEBPACK_IMPORTED_MODULE_191__ = __webpack_require__(/*! ./replace.js */ "./node_modules/ramda/es/replace.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "replace", function() { return _replace_js__WEBPACK_IMPORTED_MODULE_191__["default"]; }); + +/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_192__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reverse", function() { return _reverse_js__WEBPACK_IMPORTED_MODULE_192__["default"]; }); + +/* harmony import */ var _scan_js__WEBPACK_IMPORTED_MODULE_193__ = __webpack_require__(/*! ./scan.js */ "./node_modules/ramda/es/scan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _scan_js__WEBPACK_IMPORTED_MODULE_193__["default"]; }); + +/* harmony import */ var _sequence_js__WEBPACK_IMPORTED_MODULE_194__ = __webpack_require__(/*! ./sequence.js */ "./node_modules/ramda/es/sequence.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequence", function() { return _sequence_js__WEBPACK_IMPORTED_MODULE_194__["default"]; }); + +/* harmony import */ var _set_js__WEBPACK_IMPORTED_MODULE_195__ = __webpack_require__(/*! ./set.js */ "./node_modules/ramda/es/set.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "set", function() { return _set_js__WEBPACK_IMPORTED_MODULE_195__["default"]; }); + +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_196__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "slice", function() { return _slice_js__WEBPACK_IMPORTED_MODULE_196__["default"]; }); + +/* harmony import */ var _sort_js__WEBPACK_IMPORTED_MODULE_197__ = __webpack_require__(/*! ./sort.js */ "./node_modules/ramda/es/sort.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sort", function() { return _sort_js__WEBPACK_IMPORTED_MODULE_197__["default"]; }); + +/* harmony import */ var _sortBy_js__WEBPACK_IMPORTED_MODULE_198__ = __webpack_require__(/*! ./sortBy.js */ "./node_modules/ramda/es/sortBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sortBy", function() { return _sortBy_js__WEBPACK_IMPORTED_MODULE_198__["default"]; }); + +/* harmony import */ var _sortWith_js__WEBPACK_IMPORTED_MODULE_199__ = __webpack_require__(/*! ./sortWith.js */ "./node_modules/ramda/es/sortWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sortWith", function() { return _sortWith_js__WEBPACK_IMPORTED_MODULE_199__["default"]; }); + +/* harmony import */ var _split_js__WEBPACK_IMPORTED_MODULE_200__ = __webpack_require__(/*! ./split.js */ "./node_modules/ramda/es/split.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "split", function() { return _split_js__WEBPACK_IMPORTED_MODULE_200__["default"]; }); + +/* harmony import */ var _splitAt_js__WEBPACK_IMPORTED_MODULE_201__ = __webpack_require__(/*! ./splitAt.js */ "./node_modules/ramda/es/splitAt.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "splitAt", function() { return _splitAt_js__WEBPACK_IMPORTED_MODULE_201__["default"]; }); + +/* harmony import */ var _splitEvery_js__WEBPACK_IMPORTED_MODULE_202__ = __webpack_require__(/*! ./splitEvery.js */ "./node_modules/ramda/es/splitEvery.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "splitEvery", function() { return _splitEvery_js__WEBPACK_IMPORTED_MODULE_202__["default"]; }); + +/* harmony import */ var _splitWhen_js__WEBPACK_IMPORTED_MODULE_203__ = __webpack_require__(/*! ./splitWhen.js */ "./node_modules/ramda/es/splitWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "splitWhen", function() { return _splitWhen_js__WEBPACK_IMPORTED_MODULE_203__["default"]; }); + +/* harmony import */ var _startsWith_js__WEBPACK_IMPORTED_MODULE_204__ = __webpack_require__(/*! ./startsWith.js */ "./node_modules/ramda/es/startsWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startsWith", function() { return _startsWith_js__WEBPACK_IMPORTED_MODULE_204__["default"]; }); + +/* harmony import */ var _subtract_js__WEBPACK_IMPORTED_MODULE_205__ = __webpack_require__(/*! ./subtract.js */ "./node_modules/ramda/es/subtract.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subtract", function() { return _subtract_js__WEBPACK_IMPORTED_MODULE_205__["default"]; }); + +/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_206__ = __webpack_require__(/*! ./sum.js */ "./node_modules/ramda/es/sum.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sum", function() { return _sum_js__WEBPACK_IMPORTED_MODULE_206__["default"]; }); + +/* harmony import */ var _symmetricDifference_js__WEBPACK_IMPORTED_MODULE_207__ = __webpack_require__(/*! ./symmetricDifference.js */ "./node_modules/ramda/es/symmetricDifference.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symmetricDifference", function() { return _symmetricDifference_js__WEBPACK_IMPORTED_MODULE_207__["default"]; }); + +/* harmony import */ var _symmetricDifferenceWith_js__WEBPACK_IMPORTED_MODULE_208__ = __webpack_require__(/*! ./symmetricDifferenceWith.js */ "./node_modules/ramda/es/symmetricDifferenceWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "symmetricDifferenceWith", function() { return _symmetricDifferenceWith_js__WEBPACK_IMPORTED_MODULE_208__["default"]; }); + +/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_209__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tail", function() { return _tail_js__WEBPACK_IMPORTED_MODULE_209__["default"]; }); + +/* harmony import */ var _take_js__WEBPACK_IMPORTED_MODULE_210__ = __webpack_require__(/*! ./take.js */ "./node_modules/ramda/es/take.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _take_js__WEBPACK_IMPORTED_MODULE_210__["default"]; }); + +/* harmony import */ var _takeLast_js__WEBPACK_IMPORTED_MODULE_211__ = __webpack_require__(/*! ./takeLast.js */ "./node_modules/ramda/es/takeLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _takeLast_js__WEBPACK_IMPORTED_MODULE_211__["default"]; }); + +/* harmony import */ var _takeLastWhile_js__WEBPACK_IMPORTED_MODULE_212__ = __webpack_require__(/*! ./takeLastWhile.js */ "./node_modules/ramda/es/takeLastWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLastWhile", function() { return _takeLastWhile_js__WEBPACK_IMPORTED_MODULE_212__["default"]; }); + +/* harmony import */ var _takeWhile_js__WEBPACK_IMPORTED_MODULE_213__ = __webpack_require__(/*! ./takeWhile.js */ "./node_modules/ramda/es/takeWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _takeWhile_js__WEBPACK_IMPORTED_MODULE_213__["default"]; }); + +/* harmony import */ var _tap_js__WEBPACK_IMPORTED_MODULE_214__ = __webpack_require__(/*! ./tap.js */ "./node_modules/ramda/es/tap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _tap_js__WEBPACK_IMPORTED_MODULE_214__["default"]; }); + +/* harmony import */ var _test_js__WEBPACK_IMPORTED_MODULE_215__ = __webpack_require__(/*! ./test.js */ "./node_modules/ramda/es/test.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "test", function() { return _test_js__WEBPACK_IMPORTED_MODULE_215__["default"]; }); + +/* harmony import */ var _then_js__WEBPACK_IMPORTED_MODULE_216__ = __webpack_require__(/*! ./then.js */ "./node_modules/ramda/es/then.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "then", function() { return _then_js__WEBPACK_IMPORTED_MODULE_216__["default"]; }); + +/* harmony import */ var _times_js__WEBPACK_IMPORTED_MODULE_217__ = __webpack_require__(/*! ./times.js */ "./node_modules/ramda/es/times.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "times", function() { return _times_js__WEBPACK_IMPORTED_MODULE_217__["default"]; }); + +/* harmony import */ var _toLower_js__WEBPACK_IMPORTED_MODULE_218__ = __webpack_require__(/*! ./toLower.js */ "./node_modules/ramda/es/toLower.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toLower", function() { return _toLower_js__WEBPACK_IMPORTED_MODULE_218__["default"]; }); + +/* harmony import */ var _toPairs_js__WEBPACK_IMPORTED_MODULE_219__ = __webpack_require__(/*! ./toPairs.js */ "./node_modules/ramda/es/toPairs.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toPairs", function() { return _toPairs_js__WEBPACK_IMPORTED_MODULE_219__["default"]; }); + +/* harmony import */ var _toPairsIn_js__WEBPACK_IMPORTED_MODULE_220__ = __webpack_require__(/*! ./toPairsIn.js */ "./node_modules/ramda/es/toPairsIn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toPairsIn", function() { return _toPairsIn_js__WEBPACK_IMPORTED_MODULE_220__["default"]; }); + +/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_221__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toString", function() { return _toString_js__WEBPACK_IMPORTED_MODULE_221__["default"]; }); + +/* harmony import */ var _toUpper_js__WEBPACK_IMPORTED_MODULE_222__ = __webpack_require__(/*! ./toUpper.js */ "./node_modules/ramda/es/toUpper.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toUpper", function() { return _toUpper_js__WEBPACK_IMPORTED_MODULE_222__["default"]; }); + +/* harmony import */ var _transduce_js__WEBPACK_IMPORTED_MODULE_223__ = __webpack_require__(/*! ./transduce.js */ "./node_modules/ramda/es/transduce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transduce", function() { return _transduce_js__WEBPACK_IMPORTED_MODULE_223__["default"]; }); + +/* harmony import */ var _transpose_js__WEBPACK_IMPORTED_MODULE_224__ = __webpack_require__(/*! ./transpose.js */ "./node_modules/ramda/es/transpose.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transpose", function() { return _transpose_js__WEBPACK_IMPORTED_MODULE_224__["default"]; }); + +/* harmony import */ var _traverse_js__WEBPACK_IMPORTED_MODULE_225__ = __webpack_require__(/*! ./traverse.js */ "./node_modules/ramda/es/traverse.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "traverse", function() { return _traverse_js__WEBPACK_IMPORTED_MODULE_225__["default"]; }); + +/* harmony import */ var _trim_js__WEBPACK_IMPORTED_MODULE_226__ = __webpack_require__(/*! ./trim.js */ "./node_modules/ramda/es/trim.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "trim", function() { return _trim_js__WEBPACK_IMPORTED_MODULE_226__["default"]; }); + +/* harmony import */ var _tryCatch_js__WEBPACK_IMPORTED_MODULE_227__ = __webpack_require__(/*! ./tryCatch.js */ "./node_modules/ramda/es/tryCatch.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tryCatch", function() { return _tryCatch_js__WEBPACK_IMPORTED_MODULE_227__["default"]; }); + +/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_228__ = __webpack_require__(/*! ./type.js */ "./node_modules/ramda/es/type.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "type", function() { return _type_js__WEBPACK_IMPORTED_MODULE_228__["default"]; }); + +/* harmony import */ var _unapply_js__WEBPACK_IMPORTED_MODULE_229__ = __webpack_require__(/*! ./unapply.js */ "./node_modules/ramda/es/unapply.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unapply", function() { return _unapply_js__WEBPACK_IMPORTED_MODULE_229__["default"]; }); + +/* harmony import */ var _unary_js__WEBPACK_IMPORTED_MODULE_230__ = __webpack_require__(/*! ./unary.js */ "./node_modules/ramda/es/unary.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unary", function() { return _unary_js__WEBPACK_IMPORTED_MODULE_230__["default"]; }); + +/* harmony import */ var _uncurryN_js__WEBPACK_IMPORTED_MODULE_231__ = __webpack_require__(/*! ./uncurryN.js */ "./node_modules/ramda/es/uncurryN.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uncurryN", function() { return _uncurryN_js__WEBPACK_IMPORTED_MODULE_231__["default"]; }); + +/* harmony import */ var _unfold_js__WEBPACK_IMPORTED_MODULE_232__ = __webpack_require__(/*! ./unfold.js */ "./node_modules/ramda/es/unfold.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unfold", function() { return _unfold_js__WEBPACK_IMPORTED_MODULE_232__["default"]; }); + +/* harmony import */ var _union_js__WEBPACK_IMPORTED_MODULE_233__ = __webpack_require__(/*! ./union.js */ "./node_modules/ramda/es/union.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "union", function() { return _union_js__WEBPACK_IMPORTED_MODULE_233__["default"]; }); + +/* harmony import */ var _unionWith_js__WEBPACK_IMPORTED_MODULE_234__ = __webpack_require__(/*! ./unionWith.js */ "./node_modules/ramda/es/unionWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unionWith", function() { return _unionWith_js__WEBPACK_IMPORTED_MODULE_234__["default"]; }); + +/* harmony import */ var _uniq_js__WEBPACK_IMPORTED_MODULE_235__ = __webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/es/uniq.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniq", function() { return _uniq_js__WEBPACK_IMPORTED_MODULE_235__["default"]; }); + +/* harmony import */ var _uniqBy_js__WEBPACK_IMPORTED_MODULE_236__ = __webpack_require__(/*! ./uniqBy.js */ "./node_modules/ramda/es/uniqBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniqBy", function() { return _uniqBy_js__WEBPACK_IMPORTED_MODULE_236__["default"]; }); + +/* harmony import */ var _uniqWith_js__WEBPACK_IMPORTED_MODULE_237__ = __webpack_require__(/*! ./uniqWith.js */ "./node_modules/ramda/es/uniqWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "uniqWith", function() { return _uniqWith_js__WEBPACK_IMPORTED_MODULE_237__["default"]; }); + +/* harmony import */ var _unless_js__WEBPACK_IMPORTED_MODULE_238__ = __webpack_require__(/*! ./unless.js */ "./node_modules/ramda/es/unless.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unless", function() { return _unless_js__WEBPACK_IMPORTED_MODULE_238__["default"]; }); + +/* harmony import */ var _unnest_js__WEBPACK_IMPORTED_MODULE_239__ = __webpack_require__(/*! ./unnest.js */ "./node_modules/ramda/es/unnest.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "unnest", function() { return _unnest_js__WEBPACK_IMPORTED_MODULE_239__["default"]; }); + +/* harmony import */ var _until_js__WEBPACK_IMPORTED_MODULE_240__ = __webpack_require__(/*! ./until.js */ "./node_modules/ramda/es/until.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "until", function() { return _until_js__WEBPACK_IMPORTED_MODULE_240__["default"]; }); + +/* harmony import */ var _update_js__WEBPACK_IMPORTED_MODULE_241__ = __webpack_require__(/*! ./update.js */ "./node_modules/ramda/es/update.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "update", function() { return _update_js__WEBPACK_IMPORTED_MODULE_241__["default"]; }); + +/* harmony import */ var _useWith_js__WEBPACK_IMPORTED_MODULE_242__ = __webpack_require__(/*! ./useWith.js */ "./node_modules/ramda/es/useWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "useWith", function() { return _useWith_js__WEBPACK_IMPORTED_MODULE_242__["default"]; }); + +/* harmony import */ var _values_js__WEBPACK_IMPORTED_MODULE_243__ = __webpack_require__(/*! ./values.js */ "./node_modules/ramda/es/values.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "values", function() { return _values_js__WEBPACK_IMPORTED_MODULE_243__["default"]; }); + +/* harmony import */ var _valuesIn_js__WEBPACK_IMPORTED_MODULE_244__ = __webpack_require__(/*! ./valuesIn.js */ "./node_modules/ramda/es/valuesIn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "valuesIn", function() { return _valuesIn_js__WEBPACK_IMPORTED_MODULE_244__["default"]; }); + +/* harmony import */ var _view_js__WEBPACK_IMPORTED_MODULE_245__ = __webpack_require__(/*! ./view.js */ "./node_modules/ramda/es/view.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "view", function() { return _view_js__WEBPACK_IMPORTED_MODULE_245__["default"]; }); + +/* harmony import */ var _when_js__WEBPACK_IMPORTED_MODULE_246__ = __webpack_require__(/*! ./when.js */ "./node_modules/ramda/es/when.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "when", function() { return _when_js__WEBPACK_IMPORTED_MODULE_246__["default"]; }); + +/* harmony import */ var _where_js__WEBPACK_IMPORTED_MODULE_247__ = __webpack_require__(/*! ./where.js */ "./node_modules/ramda/es/where.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "where", function() { return _where_js__WEBPACK_IMPORTED_MODULE_247__["default"]; }); + +/* harmony import */ var _whereEq_js__WEBPACK_IMPORTED_MODULE_248__ = __webpack_require__(/*! ./whereEq.js */ "./node_modules/ramda/es/whereEq.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "whereEq", function() { return _whereEq_js__WEBPACK_IMPORTED_MODULE_248__["default"]; }); + +/* harmony import */ var _without_js__WEBPACK_IMPORTED_MODULE_249__ = __webpack_require__(/*! ./without.js */ "./node_modules/ramda/es/without.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "without", function() { return _without_js__WEBPACK_IMPORTED_MODULE_249__["default"]; }); + +/* harmony import */ var _xprod_js__WEBPACK_IMPORTED_MODULE_250__ = __webpack_require__(/*! ./xprod.js */ "./node_modules/ramda/es/xprod.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "xprod", function() { return _xprod_js__WEBPACK_IMPORTED_MODULE_250__["default"]; }); + +/* harmony import */ var _zip_js__WEBPACK_IMPORTED_MODULE_251__ = __webpack_require__(/*! ./zip.js */ "./node_modules/ramda/es/zip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _zip_js__WEBPACK_IMPORTED_MODULE_251__["default"]; }); + +/* harmony import */ var _zipObj_js__WEBPACK_IMPORTED_MODULE_252__ = __webpack_require__(/*! ./zipObj.js */ "./node_modules/ramda/es/zipObj.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipObj", function() { return _zipObj_js__WEBPACK_IMPORTED_MODULE_252__["default"]; }); + +/* harmony import */ var _zipWith_js__WEBPACK_IMPORTED_MODULE_253__ = __webpack_require__(/*! ./zipWith.js */ "./node_modules/ramda/es/zipWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipWith", function() { return _zipWith_js__WEBPACK_IMPORTED_MODULE_253__["default"]; }); + +/* harmony import */ var _thunkify_js__WEBPACK_IMPORTED_MODULE_254__ = __webpack_require__(/*! ./thunkify.js */ "./node_modules/ramda/es/thunkify.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "thunkify", function() { return _thunkify_js__WEBPACK_IMPORTED_MODULE_254__["default"]; }); + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +/***/ }), + +/***/ "./node_modules/ramda/es/indexBy.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/indexBy.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _reduceBy_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/es/reduceBy.js"); + + +/** + * Given a function that generates a key, turns a list of objects into an + * object indexing the objects by the given key. Note that if multiple + * objects generate the same value for the indexing key only the last value + * will be included in the generated object. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (a -> String) -> [{k: v}] -> {k: {k: v}} + * @param {Function} fn Function :: a -> String + * @param {Array} array The array of objects to index + * @return {Object} An object indexing each array element by the given property. + * @example + * + * const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}]; + * R.indexBy(R.prop('id'), list); + * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}} + */ +var indexBy = /*#__PURE__*/Object(_reduceBy_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (acc, elem) { + return elem; +}, null); +/* harmony default export */ __webpack_exports__["default"] = (indexBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/indexOf.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/indexOf.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_indexOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_indexOf.js */ "./node_modules/ramda/es/internal/_indexOf.js"); +/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); + + + + +/** + * Returns the position of the first occurrence of an item in an array, or -1 + * if the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.lastIndexOf + * @example + * + * R.indexOf(3, [1,2,3,4]); //=> 2 + * R.indexOf(10, [1,2,3,4]); //=> -1 + */ +var indexOf = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function indexOf(target, xs) { + return typeof xs.indexOf === 'function' && !Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_2__["default"])(xs) ? xs.indexOf(target) : Object(_internal_indexOf_js__WEBPACK_IMPORTED_MODULE_1__["default"])(xs, target, 0); +}); +/* harmony default export */ __webpack_exports__["default"] = (indexOf); + +/***/ }), + +/***/ "./node_modules/ramda/es/init.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/init.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + +/** + * Returns all but the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.last, R.head, R.tail + * @example + * + * R.init([1, 2, 3]); //=> [1, 2] + * R.init([1, 2]); //=> [1] + * R.init([1]); //=> [] + * R.init([]); //=> [] + * + * R.init('abc'); //=> 'ab' + * R.init('ab'); //=> 'a' + * R.init('a'); //=> '' + * R.init(''); //=> '' + */ +var init = /*#__PURE__*/Object(_slice_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, -1); +/* harmony default export */ __webpack_exports__["default"] = (init); + +/***/ }), + +/***/ "./node_modules/ramda/es/innerJoin.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/innerJoin.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _internal_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/es/internal/_filter.js"); + + + + +/** + * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list + * `xs'` comprising each of the elements of `xs` which is equal to one or more + * elements of `ys` according to `pred`. + * + * `pred` must be a binary function expecting an element from each list. + * + * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should + * not be significant, but since `xs'` is ordered the implementation guarantees + * that its values are in the same order as they appear in `xs`. Duplicates are + * not removed, so `xs'` may contain duplicates if `xs` contains duplicates. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Relation + * @sig ((a, b) -> Boolean) -> [a] -> [b] -> [a] + * @param {Function} pred + * @param {Array} xs + * @param {Array} ys + * @return {Array} + * @see R.intersection + * @example + * + * R.innerJoin( + * (record, id) => record.id === id, + * [{id: 824, name: 'Richie Furay'}, + * {id: 956, name: 'Dewey Martin'}, + * {id: 313, name: 'Bruce Palmer'}, + * {id: 456, name: 'Stephen Stills'}, + * {id: 177, name: 'Neil Young'}], + * [177, 456, 999] + * ); + * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}] + */ +var innerJoin = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function innerJoin(pred, xs, ys) { + return Object(_internal_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (x) { + return Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, x, ys); + }, xs); +}); +/* harmony default export */ __webpack_exports__["default"] = (innerJoin); + +/***/ }), + +/***/ "./node_modules/ramda/es/insert.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/insert.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Inserts the supplied element into the list, at the specified `index`. _Note that + + * this is not destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} index The position to insert the element + * @param {*} elt The element to insert into the Array + * @param {Array} list The list to insert into + * @return {Array} A new Array with `elt` inserted at `index`. + * @example + * + * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4] + */ +var insert = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function insert(idx, elt, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + var result = Array.prototype.slice.call(list, 0); + result.splice(idx, 0, elt); + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (insert); + +/***/ }), + +/***/ "./node_modules/ramda/es/insertAll.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/insertAll.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Inserts the sub-list into the list, at the specified `index`. _Note that this is not + * destructive_: it returns a copy of the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category List + * @sig Number -> [a] -> [a] -> [a] + * @param {Number} index The position to insert the sub-list + * @param {Array} elts The sub-list to insert into the Array + * @param {Array} list The list to insert the sub-list into + * @return {Array} A new Array with `elts` inserted starting at `index`. + * @example + * + * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4] + */ +var insertAll = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function insertAll(idx, elts, list) { + idx = idx < list.length && idx >= 0 ? idx : list.length; + return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx)); +}); +/* harmony default export */ __webpack_exports__["default"] = (insertAll); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_Set.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/internal/_Set.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); + + +var _Set = /*#__PURE__*/function () { + function _Set() { + /* globals Set */ + this._nativeSet = typeof Set === 'function' ? new Set() : null; + this._items = {}; + } + + // until we figure out why jsdoc chokes on this + // @param item The item to add to the Set + // @returns {boolean} true if the item did not exist prior, otherwise false + // + _Set.prototype.add = function (item) { + return !hasOrAdd(item, true, this); + }; + + // + // @param item The item to check for existence in the Set + // @returns {boolean} true if the item exists in the Set, otherwise false + // + _Set.prototype.has = function (item) { + return hasOrAdd(item, false, this); + }; + + // + // Combines the logic for checking whether an item is a member of the set and + // for adding a new item to the set. + // + // @param item The item to check or add to the Set instance. + // @param shouldAdd If true, the item will be added to the set if it doesn't + // already exist. + // @param set The set instance to check or add to. + // @return {boolean} true if the item already existed, otherwise false. + // + return _Set; +}(); + +function hasOrAdd(item, shouldAdd, set) { + var type = typeof item; + var prevSize, newSize; + switch (type) { + case 'string': + case 'number': + // distinguish between +0 and -0 + if (item === 0 && 1 / item === -Infinity) { + if (set._items['-0']) { + return true; + } else { + if (shouldAdd) { + set._items['-0'] = true; + } + return false; + } + } + // these types can all utilise the native Set + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = {}; + set._items[type][item] = true; + } + return false; + } else if (item in set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type][item] = true; + } + return false; + } + } + + case 'boolean': + // set._items['boolean'] holds a two element array + // representing [ falseExists, trueExists ] + if (type in set._items) { + var bIdx = item ? 1 : 0; + if (set._items[type][bIdx]) { + return true; + } else { + if (shouldAdd) { + set._items[type][bIdx] = true; + } + return false; + } + } else { + if (shouldAdd) { + set._items[type] = item ? [false, true] : [true, false]; + } + return false; + } + + case 'function': + // compare functions for reference equality + if (set._nativeSet !== null) { + if (shouldAdd) { + prevSize = set._nativeSet.size; + set._nativeSet.add(item); + newSize = set._nativeSet.size; + return newSize === prevSize; + } else { + return set._nativeSet.has(item); + } + } else { + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + if (!Object(_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } + + case 'undefined': + if (set._items[type]) { + return true; + } else { + if (shouldAdd) { + set._items[type] = true; + } + return false; + } + + case 'object': + if (item === null) { + if (!set._items['null']) { + if (shouldAdd) { + set._items['null'] = true; + } + return false; + } + return true; + } + /* falls through */ + default: + // reduce the search size of heterogeneous sets by creating buckets + // for each type. + type = Object.prototype.toString.call(item); + if (!(type in set._items)) { + if (shouldAdd) { + set._items[type] = [item]; + } + return false; + } + // scan through all previously applied items + if (!Object(_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(item, set._items[type])) { + if (shouldAdd) { + set._items[type].push(item); + } + return false; + } + return true; + } +} + +// A simple Set type that honours R.equals semantics +/* harmony default export */ __webpack_exports__["default"] = (_Set); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_aperture.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_aperture.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _aperture; }); +function _aperture(n, list) { + var idx = 0; + var limit = list.length - (n - 1); + var acc = new Array(limit >= 0 ? limit : 0); + while (idx < limit) { + acc[idx] = Array.prototype.slice.call(list, idx, idx + n); + idx += 1; + } + return acc; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_arity.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_arity.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _arity; }); +function _arity(n, fn) { + /* eslint-disable no-unused-vars */ + switch (n) { + case 0: + return function () { + return fn.apply(this, arguments); + }; + case 1: + return function (a0) { + return fn.apply(this, arguments); + }; + case 2: + return function (a0, a1) { + return fn.apply(this, arguments); + }; + case 3: + return function (a0, a1, a2) { + return fn.apply(this, arguments); + }; + case 4: + return function (a0, a1, a2, a3) { + return fn.apply(this, arguments); + }; + case 5: + return function (a0, a1, a2, a3, a4) { + return fn.apply(this, arguments); + }; + case 6: + return function (a0, a1, a2, a3, a4, a5) { + return fn.apply(this, arguments); + }; + case 7: + return function (a0, a1, a2, a3, a4, a5, a6) { + return fn.apply(this, arguments); + }; + case 8: + return function (a0, a1, a2, a3, a4, a5, a6, a7) { + return fn.apply(this, arguments); + }; + case 9: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { + return fn.apply(this, arguments); + }; + case 10: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { + return fn.apply(this, arguments); + }; + default: + throw new Error('First argument to _arity must be a non-negative integer no greater than ten'); + } +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_arrayFromIterator.js": +/*!**************************************************************!*\ + !*** ./node_modules/ramda/es/internal/_arrayFromIterator.js ***! + \**************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _arrayFromIterator; }); +function _arrayFromIterator(iter) { + var list = []; + var next; + while (!(next = iter.next()).done) { + list.push(next.value); + } + return list; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_assertPromise.js": +/*!**********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_assertPromise.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _assertPromise; }); +/* harmony import */ var _isFunction_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); +/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_toString.js */ "./node_modules/ramda/es/internal/_toString.js"); + + + +function _assertPromise(name, p) { + if (p == null || !Object(_isFunction_js__WEBPACK_IMPORTED_MODULE_0__["default"])(p.then)) { + throw new TypeError('`' + name + '` expected a Promise, received ' + Object(_toString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(p, [])); + } +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_checkForMethod.js": +/*!***********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_checkForMethod.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _checkForMethod; }); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); + + +/** + * This checks whether a function has a [methodname] function. If it isn't an + * array it will execute that function otherwise it will default to the ramda + * implementation. + * + * @private + * @param {Function} fn ramda implemtation + * @param {String} methodname property to check for a custom implementation + * @return {Object} Whatever the return value of the method is. + */ +function _checkForMethod(methodname, fn) { + return function () { + var length = arguments.length; + if (length === 0) { + return fn(); + } + var obj = arguments[length - 1]; + return Object(_isArray_js__WEBPACK_IMPORTED_MODULE_0__["default"])(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1)); + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_clone.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_clone.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _clone; }); +/* harmony import */ var _cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_cloneRegExp.js */ "./node_modules/ramda/es/internal/_cloneRegExp.js"); +/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../type.js */ "./node_modules/ramda/es/type.js"); + + + +/** + * Copies an object. + * + * @private + * @param {*} value The value to be copied + * @param {Array} refFrom Array containing the source references + * @param {Array} refTo Array containing the copied source references + * @param {Boolean} deep Whether or not to perform deep cloning. + * @return {*} The copied value. + */ +function _clone(value, refFrom, refTo, deep) { + var copy = function copy(copiedValue) { + var len = refFrom.length; + var idx = 0; + while (idx < len) { + if (value === refFrom[idx]) { + return refTo[idx]; + } + idx += 1; + } + refFrom[idx + 1] = value; + refTo[idx + 1] = copiedValue; + for (var key in value) { + copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key]; + } + return copiedValue; + }; + switch (Object(_type_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value)) { + case 'Object': + return copy({}); + case 'Array': + return copy([]); + case 'Date': + return new Date(value.valueOf()); + case 'RegExp': + return Object(_cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__["default"])(value); + default: + return value; + } +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_cloneRegExp.js": +/*!********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_cloneRegExp.js ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _cloneRegExp; }); +function _cloneRegExp(pattern) { + return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : '')); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_complement.js": +/*!*******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_complement.js ***! + \*******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _complement; }); +function _complement(f) { + return function () { + return !f.apply(this, arguments); + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_concat.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_concat.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _concat; }); +/** + * Private `concat` function to merge two array-like objects. + * + * @private + * @param {Array|Arguments} [set1=[]] An array-like object. + * @param {Array|Arguments} [set2=[]] An array-like object. + * @return {Array} A new, merged array. + * @example + * + * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3] + */ +function _concat(set1, set2) { + set1 = set1 || []; + set2 = set2 || []; + var idx; + var len1 = set1.length; + var len2 = set2.length; + var result = []; + + idx = 0; + while (idx < len1) { + result[result.length] = set1[idx]; + idx += 1; + } + idx = 0; + while (idx < len2) { + result[result.length] = set2[idx]; + idx += 1; + } + return result; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_createPartialApplicator.js": +/*!********************************************************************!*\ + !*** ./node_modules/ramda/es/internal/_createPartialApplicator.js ***! + \********************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _createPartialApplicator; }); +/* harmony import */ var _arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +function _createPartialApplicator(concat) { + return Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (fn, args) { + return Object(_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Math.max(0, fn.length - args.length), function () { + return fn.apply(this, concat(args, arguments)); + }); + }); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_curry1.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_curry1.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curry1; }); +/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); + + +/** + * Optimized internal one-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +function _curry1(fn) { + return function f1(a) { + if (arguments.length === 0 || Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_0__["default"])(a)) { + return f1; + } else { + return fn.apply(this, arguments); + } + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_curry2.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_curry2.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curry2; }); +/* harmony import */ var _curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); + + + +/** + * Optimized internal two-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +function _curry2(fn) { + return function f2(a, b) { + switch (arguments.length) { + case 0: + return f2; + case 1: + return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a) ? f2 : Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_b) { + return fn(a, _b); + }); + default: + return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(b) ? f2 : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(a) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_a) { + return fn(_a, b); + }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(b) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_b) { + return fn(a, _b); + }) : fn(a, b); + } + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_curry3.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_curry3.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curry3; }); +/* harmony import */ var _curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); + + + + +/** + * Optimized internal three-arity curry function. + * + * @private + * @category Function + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +function _curry3(fn) { + return function f3(a, b, c) { + switch (arguments.length) { + case 0: + return f3; + case 1: + return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) ? f3 : Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_b, _c) { + return fn(a, _b, _c); + }); + case 2: + return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? f3 : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_a, _c) { + return fn(_a, b, _c); + }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_b, _c) { + return fn(a, _b, _c); + }) : Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_c) { + return fn(a, b, _c); + }); + default: + return Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? f3 : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_a, _b) { + return fn(_a, _b, c); + }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_a, _c) { + return fn(_a, b, _c); + }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) && Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_b, _c) { + return fn(a, _b, _c); + }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_a) { + return fn(_a, b, c); + }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(b) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_b) { + return fn(a, _b, c); + }) : Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_2__["default"])(c) ? Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (_c) { + return fn(a, b, _c); + }) : fn(a, b, c); + } + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_curryN.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_curryN.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _curryN; }); +/* harmony import */ var _arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/es/internal/_isPlaceholder.js"); + + + +/** + * Internal curryN function. + * + * @private + * @category Function + * @param {Number} length The arity of the curried function. + * @param {Array} received An array of arguments received thus far. + * @param {Function} fn The function to curry. + * @return {Function} The curried function. + */ +function _curryN(length, received, fn) { + return function () { + var combined = []; + var argsIdx = 0; + var left = length; + var combinedIdx = 0; + while (combinedIdx < received.length || argsIdx < arguments.length) { + var result; + if (combinedIdx < received.length && (!Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(received[combinedIdx]) || argsIdx >= arguments.length)) { + result = received[combinedIdx]; + } else { + result = arguments[argsIdx]; + argsIdx += 1; + } + combined[combinedIdx] = result; + if (!Object(_isPlaceholder_js__WEBPACK_IMPORTED_MODULE_1__["default"])(result)) { + left -= 1; + } + combinedIdx += 1; + } + return left <= 0 ? fn.apply(this, combined) : Object(_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(left, _curryN(length, combined, fn)); + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_dispatchable.js": +/*!*********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_dispatchable.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _dispatchable; }); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); +/* harmony import */ var _isTransformer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isTransformer.js */ "./node_modules/ramda/es/internal/_isTransformer.js"); + + + +/** + * Returns a function that dispatches with different strategies based on the + * object in list position (last argument). If it is an array, executes [fn]. + * Otherwise, if it has a function with one of the given method names, it will + * execute that function (functor case). Otherwise, if it is a transformer, + * uses transducer [xf] to return a new transformer (transducer case). + * Otherwise, it will default to executing [fn]. + * + * @private + * @param {Array} methodNames properties to check for a custom implementation + * @param {Function} xf transducer to initialize if object is transformer + * @param {Function} fn default ramda implementation + * @return {Function} A function that dispatches on object in list position + */ +function _dispatchable(methodNames, xf, fn) { + return function () { + if (arguments.length === 0) { + return fn(); + } + var args = Array.prototype.slice.call(arguments, 0); + var obj = args.pop(); + if (!Object(_isArray_js__WEBPACK_IMPORTED_MODULE_0__["default"])(obj)) { + var idx = 0; + while (idx < methodNames.length) { + if (typeof obj[methodNames[idx]] === 'function') { + return obj[methodNames[idx]].apply(obj, args); + } + idx += 1; + } + if (Object(_isTransformer_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj)) { + var transducer = xf.apply(null, args); + return transducer(obj); + } + } + return fn.apply(this, arguments); + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_dropLast.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_dropLast.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return dropLast; }); +/* harmony import */ var _take_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../take.js */ "./node_modules/ramda/es/take.js"); + + +function dropLast(n, xs) { + return Object(_take_js__WEBPACK_IMPORTED_MODULE_0__["default"])(n < xs.length ? xs.length - n : 0, xs); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_dropLastWhile.js": +/*!**********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_dropLastWhile.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return dropLastWhile; }); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../slice.js */ "./node_modules/ramda/es/slice.js"); + + +function dropLastWhile(pred, xs) { + var idx = xs.length - 1; + while (idx >= 0 && pred(xs[idx])) { + idx -= 1; + } + return Object(_slice_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, idx + 1, xs); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_equals.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_equals.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _equals; }); +/* harmony import */ var _arrayFromIterator_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_arrayFromIterator.js */ "./node_modules/ramda/es/internal/_arrayFromIterator.js"); +/* harmony import */ var _includesWith_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); +/* harmony import */ var _functionName_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_functionName.js */ "./node_modules/ramda/es/internal/_functionName.js"); +/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); +/* harmony import */ var _objectIs_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./_objectIs.js */ "./node_modules/ramda/es/internal/_objectIs.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../keys.js */ "./node_modules/ramda/es/keys.js"); +/* harmony import */ var _type_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../type.js */ "./node_modules/ramda/es/type.js"); + + + + + + + + +/** + * private _uniqContentEquals function. + * That function is checking equality of 2 iterator contents with 2 assumptions + * - iterators lengths are the same + * - iterators values are unique + * + * false-positive result will be returned for comparision of, e.g. + * - [1,2,3] and [1,2,3,4] + * - [1,1,1] and [1,2,3] + * */ + +function _uniqContentEquals(aIterator, bIterator, stackA, stackB) { + var a = Object(_arrayFromIterator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(aIterator); + var b = Object(_arrayFromIterator_js__WEBPACK_IMPORTED_MODULE_0__["default"])(bIterator); + + function eq(_a, _b) { + return _equals(_a, _b, stackA.slice(), stackB.slice()); + } + + // if *a* array contains any element that is not included in *b* + return !Object(_includesWith_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (b, aItem) { + return !Object(_includesWith_js__WEBPACK_IMPORTED_MODULE_1__["default"])(eq, aItem, b); + }, b, a); +} + +function _equals(a, b, stackA, stackB) { + if (Object(_objectIs_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a, b)) { + return true; + } + + var typeA = Object(_type_js__WEBPACK_IMPORTED_MODULE_6__["default"])(a); + + if (typeA !== Object(_type_js__WEBPACK_IMPORTED_MODULE_6__["default"])(b)) { + return false; + } + + if (a == null || b == null) { + return false; + } + + if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') { + return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a); + } + + if (typeof a.equals === 'function' || typeof b.equals === 'function') { + return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a); + } + + switch (typeA) { + case 'Arguments': + case 'Array': + case 'Object': + if (typeof a.constructor === 'function' && Object(_functionName_js__WEBPACK_IMPORTED_MODULE_2__["default"])(a.constructor) === 'Promise') { + return a === b; + } + break; + case 'Boolean': + case 'Number': + case 'String': + if (!(typeof a === typeof b && Object(_objectIs_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a.valueOf(), b.valueOf()))) { + return false; + } + break; + case 'Date': + if (!Object(_objectIs_js__WEBPACK_IMPORTED_MODULE_4__["default"])(a.valueOf(), b.valueOf())) { + return false; + } + break; + case 'Error': + return a.name === b.name && a.message === b.message; + case 'RegExp': + if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) { + return false; + } + break; + } + + var idx = stackA.length - 1; + while (idx >= 0) { + if (stackA[idx] === a) { + return stackB[idx] === b; + } + idx -= 1; + } + + switch (typeA) { + case 'Map': + if (a.size !== b.size) { + return false; + } + + return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b])); + case 'Set': + if (a.size !== b.size) { + return false; + } + + return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b])); + case 'Arguments': + case 'Array': + case 'Object': + case 'Boolean': + case 'Number': + case 'String': + case 'Date': + case 'Error': + case 'RegExp': + case 'Int8Array': + case 'Uint8Array': + case 'Uint8ClampedArray': + case 'Int16Array': + case 'Uint16Array': + case 'Int32Array': + case 'Uint32Array': + case 'Float32Array': + case 'Float64Array': + case 'ArrayBuffer': + break; + default: + // Values of other types are only equal if identical. + return false; + } + + var keysA = Object(_keys_js__WEBPACK_IMPORTED_MODULE_5__["default"])(a); + if (keysA.length !== Object(_keys_js__WEBPACK_IMPORTED_MODULE_5__["default"])(b).length) { + return false; + } + + var extendedStackA = stackA.concat([a]); + var extendedStackB = stackB.concat([b]); + + idx = keysA.length - 1; + while (idx >= 0) { + var key = keysA[idx]; + if (!(Object(_has_js__WEBPACK_IMPORTED_MODULE_3__["default"])(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) { + return false; + } + idx -= 1; + } + return true; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_filter.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_filter.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _filter; }); +function _filter(fn, list) { + var idx = 0; + var len = list.length; + var result = []; + + while (idx < len) { + if (fn(list[idx])) { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_flatCat.js": +/*!****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_flatCat.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _forceReduced_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_forceReduced.js */ "./node_modules/ramda/es/internal/_forceReduced.js"); +/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + + +var preservingReduced = function (xf) { + return { + '@@transducer/init': _xfBase_js__WEBPACK_IMPORTED_MODULE_3__["default"].init, + '@@transducer/result': function (result) { + return xf['@@transducer/result'](result); + }, + '@@transducer/step': function (result, input) { + var ret = xf['@@transducer/step'](result, input); + return ret['@@transducer/reduced'] ? Object(_forceReduced_js__WEBPACK_IMPORTED_MODULE_0__["default"])(ret) : ret; + } + }; +}; + +var _flatCat = function _xcat(xf) { + var rxf = preservingReduced(xf); + return { + '@@transducer/init': _xfBase_js__WEBPACK_IMPORTED_MODULE_3__["default"].init, + '@@transducer/result': function (result) { + return rxf['@@transducer/result'](result); + }, + '@@transducer/step': function (result, input) { + return !Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_1__["default"])(input) ? Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(rxf, result, [input]) : Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(rxf, result, input); + } + }; +}; + +/* harmony default export */ __webpack_exports__["default"] = (_flatCat); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_forceReduced.js": +/*!*********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_forceReduced.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _forceReduced; }); +function _forceReduced(x) { + return { + '@@transducer/value': x, + '@@transducer/reduced': true + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_functionName.js": +/*!*********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_functionName.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _functionName; }); +function _functionName(f) { + // String(x => x) evaluates to "x => x", so the pattern may not match. + var match = String(f).match(/^function (\w*)/); + return match == null ? '' : match[1]; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_has.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/internal/_has.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _has; }); +function _has(prop, obj) { + return Object.prototype.hasOwnProperty.call(obj, prop); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_identity.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_identity.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _identity; }); +function _identity(x) { + return x; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_includes.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_includes.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _includes; }); +/* harmony import */ var _indexOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_indexOf.js */ "./node_modules/ramda/es/internal/_indexOf.js"); + + +function _includes(a, list) { + return Object(_indexOf_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list, a, 0) >= 0; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_includesWith.js": +/*!*********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_includesWith.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _includesWith; }); +function _includesWith(pred, x, list) { + var idx = 0; + var len = list.length; + + while (idx < len) { + if (pred(x, list[idx])) { + return true; + } + idx += 1; + } + return false; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_indexOf.js": +/*!****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_indexOf.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _indexOf; }); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../equals.js */ "./node_modules/ramda/es/equals.js"); + + +function _indexOf(list, a, idx) { + var inf, item; + // Array.prototype.indexOf doesn't exist below IE9 + if (typeof list.indexOf === 'function') { + switch (typeof a) { + case 'number': + if (a === 0) { + // manually crawl the list to distinguish between +0 and -0 + inf = 1 / a; + while (idx < list.length) { + item = list[idx]; + if (item === 0 && 1 / item === inf) { + return idx; + } + idx += 1; + } + return -1; + } else if (a !== a) { + // NaN + while (idx < list.length) { + item = list[idx]; + if (typeof item === 'number' && item !== item) { + return idx; + } + idx += 1; + } + return -1; + } + // non-zero numbers can utilise Set + return list.indexOf(a, idx); + + // all these types can utilise Set + case 'string': + case 'boolean': + case 'function': + case 'undefined': + return list.indexOf(a, idx); + + case 'object': + if (a === null) { + // null can utilise Set + return list.indexOf(a, idx); + } + } + } + // anything else not covered above, defer to R.equals + while (idx < list.length) { + if (Object(_equals_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list[idx], a)) { + return idx; + } + idx += 1; + } + return -1; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isArguments.js": +/*!********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isArguments.js ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); + + +var toString = Object.prototype.toString; +var _isArguments = /*#__PURE__*/function () { + return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) { + return toString.call(x) === '[object Arguments]'; + } : function _isArguments(x) { + return Object(_has_js__WEBPACK_IMPORTED_MODULE_0__["default"])('callee', x); + }; +}(); + +/* harmony default export */ __webpack_exports__["default"] = (_isArguments); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isArray.js": +/*!****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isArray.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/** + * Tests whether or not an object is an array. + * + * @private + * @param {*} val The object to test. + * @return {Boolean} `true` if `val` is an array, `false` otherwise. + * @example + * + * _isArray([]); //=> true + * _isArray(null); //=> false + * _isArray({}); //=> false + */ +/* harmony default export */ __webpack_exports__["default"] = (Array.isArray || function _isArray(val) { + return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]'; +}); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isArrayLike.js": +/*!********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isArrayLike.js ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); +/* harmony import */ var _isString_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); + + + + +/** + * Tests whether or not an object is similar to an array. + * + * @private + * @category Type + * @category List + * @sig * -> Boolean + * @param {*} x The object to test. + * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise. + * @example + * + * _isArrayLike([]); //=> true + * _isArrayLike(true); //=> false + * _isArrayLike({}); //=> false + * _isArrayLike({length: 10}); //=> false + * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true + */ +var _isArrayLike = /*#__PURE__*/Object(_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function isArrayLike(x) { + if (Object(_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(x)) { + return true; + } + if (!x) { + return false; + } + if (typeof x !== 'object') { + return false; + } + if (Object(_isString_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x)) { + return false; + } + if (x.nodeType === 1) { + return !!x.length; + } + if (x.length === 0) { + return true; + } + if (x.length > 0) { + return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1); + } + return false; +}); +/* harmony default export */ __webpack_exports__["default"] = (_isArrayLike); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isFunction.js": +/*!*******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isFunction.js ***! + \*******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isFunction; }); +function _isFunction(x) { + return Object.prototype.toString.call(x) === '[object Function]'; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isInteger.js": +/*!******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isInteger.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/** + * Determine if the passed argument is an integer. + * + * @private + * @param {*} n + * @category Type + * @return {Boolean} + */ +/* harmony default export */ __webpack_exports__["default"] = (Number.isInteger || function _isInteger(n) { + return n << 0 === n; +}); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isNumber.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isNumber.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isNumber; }); +function _isNumber(x) { + return Object.prototype.toString.call(x) === '[object Number]'; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isObject.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isObject.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isObject; }); +function _isObject(x) { + return Object.prototype.toString.call(x) === '[object Object]'; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isPlaceholder.js": +/*!**********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isPlaceholder.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isPlaceholder; }); +function _isPlaceholder(a) { + return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isRegExp.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isRegExp.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isRegExp; }); +function _isRegExp(x) { + return Object.prototype.toString.call(x) === '[object RegExp]'; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isString.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isString.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isString; }); +function _isString(x) { + return Object.prototype.toString.call(x) === '[object String]'; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_isTransformer.js": +/*!**********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_isTransformer.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _isTransformer; }); +function _isTransformer(obj) { + return obj != null && typeof obj['@@transducer/step'] === 'function'; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_makeFlat.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_makeFlat.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _makeFlat; }); +/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); + + +/** + * `_makeFlat` is a helper function that returns a one-level or fully recursive + * function based on the flag passed in. + * + * @private + */ +function _makeFlat(recursive) { + return function flatt(list) { + var value, jlen, j; + var result = []; + var idx = 0; + var ilen = list.length; + + while (idx < ilen) { + if (Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list[idx])) { + value = recursive ? flatt(list[idx]) : list[idx]; + j = 0; + jlen = value.length; + while (j < jlen) { + result[result.length] = value[j]; + j += 1; + } + } else { + result[result.length] = list[idx]; + } + idx += 1; + } + return result; + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_map.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/internal/_map.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _map; }); +function _map(fn, functor) { + var idx = 0; + var len = functor.length; + var result = Array(len); + while (idx < len) { + result[idx] = fn(functor[idx]); + idx += 1; + } + return result; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_objectAssign.js": +/*!*********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_objectAssign.js ***! + \*********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); + + +// Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign +function _objectAssign(target) { + if (target == null) { + throw new TypeError('Cannot convert undefined or null to object'); + } + + var output = Object(target); + var idx = 1; + var length = arguments.length; + while (idx < length) { + var source = arguments[idx]; + if (source != null) { + for (var nextKey in source) { + if (Object(_has_js__WEBPACK_IMPORTED_MODULE_0__["default"])(nextKey, source)) { + output[nextKey] = source[nextKey]; + } + } + } + idx += 1; + } + return output; +} + +/* harmony default export */ __webpack_exports__["default"] = (typeof Object.assign === 'function' ? Object.assign : _objectAssign); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_objectIs.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_objectIs.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is +function _objectIs(a, b) { + // SameValue algorithm + if (a === b) { + // Steps 1-5, 7-10 + // Steps 6.b-6.e: +0 != -0 + return a !== 0 || 1 / a === 1 / b; + } else { + // Step 6.a: NaN == NaN + return a !== a && b !== b; + } +} + +/* harmony default export */ __webpack_exports__["default"] = (typeof Object.is === 'function' ? Object.is : _objectIs); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_of.js": +/*!***********************************************!*\ + !*** ./node_modules/ramda/es/internal/_of.js ***! + \***********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _of; }); +function _of(x) { + return [x]; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_pipe.js": +/*!*************************************************!*\ + !*** ./node_modules/ramda/es/internal/_pipe.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _pipe; }); +function _pipe(f, g) { + return function () { + return g.call(this, f.apply(this, arguments)); + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_pipeP.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_pipeP.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _pipeP; }); +function _pipeP(f, g) { + return function () { + var ctx = this; + return f.apply(ctx, arguments).then(function (x) { + return g.call(ctx, x); + }); + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_quote.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_quote.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _quote; }); +function _quote(s) { + var escaped = s.replace(/\\/g, '\\\\').replace(/[\b]/g, '\\b') // \b matches word boundary; [\b] matches backspace + .replace(/\f/g, '\\f').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\t/g, '\\t').replace(/\v/g, '\\v').replace(/\0/g, '\\0'); + + return '"' + escaped.replace(/"/g, '\\"') + '"'; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_reduce.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_reduce.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _reduce; }); +/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); +/* harmony import */ var _xwrap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xwrap.js */ "./node_modules/ramda/es/internal/_xwrap.js"); +/* harmony import */ var _bind_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../bind.js */ "./node_modules/ramda/es/bind.js"); + + + + +function _arrayReduce(xf, acc, list) { + var idx = 0; + var len = list.length; + while (idx < len) { + acc = xf['@@transducer/step'](acc, list[idx]); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + idx += 1; + } + return xf['@@transducer/result'](acc); +} + +function _iterableReduce(xf, acc, iter) { + var step = iter.next(); + while (!step.done) { + acc = xf['@@transducer/step'](acc, step.value); + if (acc && acc['@@transducer/reduced']) { + acc = acc['@@transducer/value']; + break; + } + step = iter.next(); + } + return xf['@@transducer/result'](acc); +} + +function _methodReduce(xf, acc, obj, methodName) { + return xf['@@transducer/result'](obj[methodName](Object(_bind_js__WEBPACK_IMPORTED_MODULE_2__["default"])(xf['@@transducer/step'], xf), acc)); +} + +var symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator'; + +function _reduce(fn, acc, list) { + if (typeof fn === 'function') { + fn = Object(_xwrap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn); + } + if (Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list)) { + return _arrayReduce(fn, acc, list); + } + if (typeof list['fantasy-land/reduce'] === 'function') { + return _methodReduce(fn, acc, list, 'fantasy-land/reduce'); + } + if (list[symIterator] != null) { + return _iterableReduce(fn, acc, list[symIterator]()); + } + if (typeof list.next === 'function') { + return _iterableReduce(fn, acc, list); + } + if (typeof list.reduce === 'function') { + return _methodReduce(fn, acc, list, 'reduce'); + } + + throw new TypeError('reduce: list must be array or iterable'); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_reduced.js": +/*!****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_reduced.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _reduced; }); +function _reduced(x) { + return x && x['@@transducer/reduced'] ? x : { + '@@transducer/value': x, + '@@transducer/reduced': true + }; +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_stepCat.js": +/*!****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_stepCat.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _stepCat; }); +/* harmony import */ var _objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); +/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_identity.js */ "./node_modules/ramda/es/internal/_identity.js"); +/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/es/internal/_isArrayLike.js"); +/* harmony import */ var _isTransformer_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_isTransformer.js */ "./node_modules/ramda/es/internal/_isTransformer.js"); +/* harmony import */ var _objOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../objOf.js */ "./node_modules/ramda/es/objOf.js"); + + + + + + +var _stepCatArray = { + '@@transducer/init': Array, + '@@transducer/step': function (xs, x) { + xs.push(x); + return xs; + }, + '@@transducer/result': _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"] +}; +var _stepCatString = { + '@@transducer/init': String, + '@@transducer/step': function (a, b) { + return a + b; + }, + '@@transducer/result': _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"] +}; +var _stepCatObject = { + '@@transducer/init': Object, + '@@transducer/step': function (result, input) { + return Object(_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])(result, Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(input) ? Object(_objOf_js__WEBPACK_IMPORTED_MODULE_4__["default"])(input[0], input[1]) : input); + }, + '@@transducer/result': _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"] +}; + +function _stepCat(obj) { + if (Object(_isTransformer_js__WEBPACK_IMPORTED_MODULE_3__["default"])(obj)) { + return obj; + } + if (Object(_isArrayLike_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)) { + return _stepCatArray; + } + if (typeof obj === 'string') { + return _stepCatString; + } + if (typeof obj === 'object') { + return _stepCatObject; + } + throw new Error('Cannot create transformer for ' + obj); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_toISOString.js": +/*!********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_toISOString.js ***! + \********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/** + * Polyfill from . + */ +var pad = function pad(n) { + return (n < 10 ? '0' : '') + n; +}; + +var _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) { + return d.toISOString(); +} : function _toISOString(d) { + return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z'; +}; + +/* harmony default export */ __webpack_exports__["default"] = (_toISOString); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_toString.js": +/*!*****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_toString.js ***! + \*****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _toString; }); +/* harmony import */ var _includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_map.js */ "./node_modules/ramda/es/internal/_map.js"); +/* harmony import */ var _quote_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_quote.js */ "./node_modules/ramda/es/internal/_quote.js"); +/* harmony import */ var _toISOString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./_toISOString.js */ "./node_modules/ramda/es/internal/_toISOString.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../keys.js */ "./node_modules/ramda/es/keys.js"); +/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../reject.js */ "./node_modules/ramda/es/reject.js"); + + + + + + + +function _toString(x, seen) { + var recur = function recur(y) { + var xs = seen.concat([x]); + return Object(_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(y, xs) ? '' : _toString(y, xs); + }; + + // mapPairs :: (Object, [String]) -> [String] + var mapPairs = function (obj, keys) { + return Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k) { + return Object(_quote_js__WEBPACK_IMPORTED_MODULE_2__["default"])(k) + ': ' + recur(obj[k]); + }, keys.slice().sort()); + }; + + switch (Object.prototype.toString.call(x)) { + case '[object Arguments]': + return '(function() { return arguments; }(' + Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(recur, x).join(', ') + '))'; + case '[object Array]': + return '[' + Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(recur, x).concat(mapPairs(x, Object(_reject_js__WEBPACK_IMPORTED_MODULE_5__["default"])(function (k) { + return (/^\d+$/.test(k) + ); + }, Object(_keys_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x)))).join(', ') + ']'; + case '[object Boolean]': + return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString(); + case '[object Date]': + return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : Object(_quote_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_toISOString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(x))) + ')'; + case '[object Null]': + return 'null'; + case '[object Number]': + return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10); + case '[object String]': + return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : Object(_quote_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x); + case '[object Undefined]': + return 'undefined'; + default: + if (typeof x.toString === 'function') { + var repr = x.toString(); + if (repr !== '[object Object]') { + return repr; + } + } + return '{' + mapPairs(x, Object(_keys_js__WEBPACK_IMPORTED_MODULE_4__["default"])(x)).join(', ') + '}'; + } +} + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xall.js": +/*!*************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xall.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XAll = /*#__PURE__*/function () { + function XAll(f, xf) { + this.xf = xf; + this.f = f; + this.all = true; + } + XAll.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XAll.prototype['@@transducer/result'] = function (result) { + if (this.all) { + result = this.xf['@@transducer/step'](result, true); + } + return this.xf['@@transducer/result'](result); + }; + XAll.prototype['@@transducer/step'] = function (result, input) { + if (!this.f(input)) { + this.all = false; + result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, false)); + } + return result; + }; + + return XAll; +}(); + +var _xall = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xall(f, xf) { + return new XAll(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xall); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xany.js": +/*!*************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xany.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XAny = /*#__PURE__*/function () { + function XAny(f, xf) { + this.xf = xf; + this.f = f; + this.any = false; + } + XAny.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XAny.prototype['@@transducer/result'] = function (result) { + if (!this.any) { + result = this.xf['@@transducer/step'](result, false); + } + return this.xf['@@transducer/result'](result); + }; + XAny.prototype['@@transducer/step'] = function (result, input) { + if (this.f(input)) { + this.any = true; + result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, true)); + } + return result; + }; + + return XAny; +}(); + +var _xany = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xany(f, xf) { + return new XAny(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xany); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xaperture.js": +/*!******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xaperture.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XAperture = /*#__PURE__*/function () { + function XAperture(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); + } + XAperture.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XAperture.prototype['@@transducer/result'] = function (result) { + this.acc = null; + return this.xf['@@transducer/result'](result); + }; + XAperture.prototype['@@transducer/step'] = function (result, input) { + this.store(input); + return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result; + }; + XAperture.prototype.store = function (input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } + }; + XAperture.prototype.getCopy = function () { + return Object(_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos)); + }; + + return XAperture; +}(); + +var _xaperture = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function _xaperture(n, xf) { + return new XAperture(n, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xaperture); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xchain.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xchain.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _flatCat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_flatCat.js */ "./node_modules/ramda/es/internal/_flatCat.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../map.js */ "./node_modules/ramda/es/map.js"); + + + + +var _xchain = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xchain(f, xf) { + return Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(f, Object(_flatCat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(xf)); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xchain); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xdrop.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xdrop.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XDrop = /*#__PURE__*/function () { + function XDrop(n, xf) { + this.xf = xf; + this.n = n; + } + XDrop.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XDrop.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; + XDrop.prototype['@@transducer/step'] = function (result, input) { + if (this.n > 0) { + this.n -= 1; + return result; + } + return this.xf['@@transducer/step'](result, input); + }; + + return XDrop; +}(); + +var _xdrop = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdrop(n, xf) { + return new XDrop(n, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xdrop); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xdropLast.js": +/*!******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xdropLast.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XDropLast = /*#__PURE__*/function () { + function XDropLast(n, xf) { + this.xf = xf; + this.pos = 0; + this.full = false; + this.acc = new Array(n); + } + XDropLast.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XDropLast.prototype['@@transducer/result'] = function (result) { + this.acc = null; + return this.xf['@@transducer/result'](result); + }; + XDropLast.prototype['@@transducer/step'] = function (result, input) { + if (this.full) { + result = this.xf['@@transducer/step'](result, this.acc[this.pos]); + } + this.store(input); + return result; + }; + XDropLast.prototype.store = function (input) { + this.acc[this.pos] = input; + this.pos += 1; + if (this.pos === this.acc.length) { + this.pos = 0; + this.full = true; + } + }; + + return XDropLast; +}(); + +var _xdropLast = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropLast(n, xf) { + return new XDropLast(n, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xdropLast); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xdropLastWhile.js": +/*!***********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xdropLastWhile.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XDropLastWhile = /*#__PURE__*/function () { + function XDropLastWhile(fn, xf) { + this.f = fn; + this.retained = []; + this.xf = xf; + } + XDropLastWhile.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XDropLastWhile.prototype['@@transducer/result'] = function (result) { + this.retained = null; + return this.xf['@@transducer/result'](result); + }; + XDropLastWhile.prototype['@@transducer/step'] = function (result, input) { + return this.f(input) ? this.retain(result, input) : this.flush(result, input); + }; + XDropLastWhile.prototype.flush = function (result, input) { + result = Object(_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'], result, this.retained); + this.retained = []; + return this.xf['@@transducer/step'](result, input); + }; + XDropLastWhile.prototype.retain = function (result, input) { + this.retained.push(input); + return result; + }; + + return XDropLastWhile; +}(); + +var _xdropLastWhile = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropLastWhile(fn, xf) { + return new XDropLastWhile(fn, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xdropLastWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xdropRepeatsWith.js": +/*!*************************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xdropRepeatsWith.js ***! + \*************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XDropRepeatsWith = /*#__PURE__*/function () { + function XDropRepeatsWith(pred, xf) { + this.xf = xf; + this.pred = pred; + this.lastValue = undefined; + this.seenFirstValue = false; + } + + XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; + XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) { + var sameAsLast = false; + if (!this.seenFirstValue) { + this.seenFirstValue = true; + } else if (this.pred(this.lastValue, input)) { + sameAsLast = true; + } + this.lastValue = input; + return sameAsLast ? result : this.xf['@@transducer/step'](result, input); + }; + + return XDropRepeatsWith; +}(); + +var _xdropRepeatsWith = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropRepeatsWith(pred, xf) { + return new XDropRepeatsWith(pred, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xdropRepeatsWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xdropWhile.js": +/*!*******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xdropWhile.js ***! + \*******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XDropWhile = /*#__PURE__*/function () { + function XDropWhile(f, xf) { + this.xf = xf; + this.f = f; + } + XDropWhile.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XDropWhile.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; + XDropWhile.prototype['@@transducer/step'] = function (result, input) { + if (this.f) { + if (this.f(input)) { + return result; + } + this.f = null; + } + return this.xf['@@transducer/step'](result, input); + }; + + return XDropWhile; +}(); + +var _xdropWhile = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xdropWhile(f, xf) { + return new XDropWhile(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xdropWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xfBase.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xfBase.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ({ + init: function () { + return this.xf['@@transducer/init'](); + }, + result: function (result) { + return this.xf['@@transducer/result'](result); + } +}); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xfilter.js": +/*!****************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xfilter.js ***! + \****************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XFilter = /*#__PURE__*/function () { + function XFilter(f, xf) { + this.xf = xf; + this.f = f; + } + XFilter.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XFilter.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; + XFilter.prototype['@@transducer/step'] = function (result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : result; + }; + + return XFilter; +}(); + +var _xfilter = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfilter(f, xf) { + return new XFilter(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xfilter); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xfind.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xfind.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XFind = /*#__PURE__*/function () { + function XFind(f, xf) { + this.xf = xf; + this.f = f; + this.found = false; + } + XFind.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XFind.prototype['@@transducer/result'] = function (result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, void 0); + } + return this.xf['@@transducer/result'](result); + }; + XFind.prototype['@@transducer/step'] = function (result, input) { + if (this.f(input)) { + this.found = true; + result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, input)); + } + return result; + }; + + return XFind; +}(); + +var _xfind = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfind(f, xf) { + return new XFind(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xfind); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xfindIndex.js": +/*!*******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xfindIndex.js ***! + \*******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XFindIndex = /*#__PURE__*/function () { + function XFindIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.found = false; + } + XFindIndex.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XFindIndex.prototype['@@transducer/result'] = function (result) { + if (!this.found) { + result = this.xf['@@transducer/step'](result, -1); + } + return this.xf['@@transducer/result'](result); + }; + XFindIndex.prototype['@@transducer/step'] = function (result, input) { + this.idx += 1; + if (this.f(input)) { + this.found = true; + result = Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(this.xf['@@transducer/step'](result, this.idx)); + } + return result; + }; + + return XFindIndex; +}(); + +var _xfindIndex = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfindIndex(f, xf) { + return new XFindIndex(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xfindIndex); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xfindLast.js": +/*!******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xfindLast.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XFindLast = /*#__PURE__*/function () { + function XFindLast(f, xf) { + this.xf = xf; + this.f = f; + } + XFindLast.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XFindLast.prototype['@@transducer/result'] = function (result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last)); + }; + XFindLast.prototype['@@transducer/step'] = function (result, input) { + if (this.f(input)) { + this.last = input; + } + return result; + }; + + return XFindLast; +}(); + +var _xfindLast = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfindLast(f, xf) { + return new XFindLast(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xfindLast); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xfindLastIndex.js": +/*!***********************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xfindLastIndex.js ***! + \***********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XFindLastIndex = /*#__PURE__*/function () { + function XFindLastIndex(f, xf) { + this.xf = xf; + this.f = f; + this.idx = -1; + this.lastIdx = -1; + } + XFindLastIndex.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XFindLastIndex.prototype['@@transducer/result'] = function (result) { + return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx)); + }; + XFindLastIndex.prototype['@@transducer/step'] = function (result, input) { + this.idx += 1; + if (this.f(input)) { + this.lastIdx = this.idx; + } + return result; + }; + + return XFindLastIndex; +}(); + +var _xfindLastIndex = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xfindLastIndex(f, xf) { + return new XFindLastIndex(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xfindLastIndex); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xmap.js": +/*!*************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xmap.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XMap = /*#__PURE__*/function () { + function XMap(f, xf) { + this.xf = xf; + this.f = f; + } + XMap.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XMap.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; + XMap.prototype['@@transducer/step'] = function (result, input) { + return this.xf['@@transducer/step'](result, this.f(input)); + }; + + return XMap; +}(); + +var _xmap = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xmap(f, xf) { + return new XMap(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xmap); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xreduceBy.js": +/*!******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xreduceBy.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); +/* harmony import */ var _has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_has.js */ "./node_modules/ramda/es/internal/_has.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XReduceBy = /*#__PURE__*/function () { + function XReduceBy(valueFn, valueAcc, keyFn, xf) { + this.valueFn = valueFn; + this.valueAcc = valueAcc; + this.keyFn = keyFn; + this.xf = xf; + this.inputs = {}; + } + XReduceBy.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XReduceBy.prototype['@@transducer/result'] = function (result) { + var key; + for (key in this.inputs) { + if (Object(_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(key, this.inputs)) { + result = this.xf['@@transducer/step'](result, this.inputs[key]); + if (result['@@transducer/reduced']) { + result = result['@@transducer/value']; + break; + } + } + } + this.inputs = null; + return this.xf['@@transducer/result'](result); + }; + XReduceBy.prototype['@@transducer/step'] = function (result, input) { + var key = this.keyFn(input); + this.inputs[key] = this.inputs[key] || [key, this.valueAcc]; + this.inputs[key][1] = this.valueFn(this.inputs[key][1], input); + return result; + }; + + return XReduceBy; +}(); + +var _xreduceBy = /*#__PURE__*/Object(_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) { + return new XReduceBy(valueFn, valueAcc, keyFn, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xreduceBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xtake.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xtake.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XTake = /*#__PURE__*/function () { + function XTake(n, xf) { + this.xf = xf; + this.n = n; + this.i = 0; + } + XTake.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XTake.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].result; + XTake.prototype['@@transducer/step'] = function (result, input) { + this.i += 1; + var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input); + return this.n >= 0 && this.i >= this.n ? Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(ret) : ret; + }; + + return XTake; +}(); + +var _xtake = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xtake(n, xf) { + return new XTake(n, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xtake); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xtakeWhile.js": +/*!*******************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xtakeWhile.js ***! + \*******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + + +var XTakeWhile = /*#__PURE__*/function () { + function XTakeWhile(f, xf) { + this.xf = xf; + this.f = f; + } + XTakeWhile.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].init; + XTakeWhile.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_2__["default"].result; + XTakeWhile.prototype['@@transducer/step'] = function (result, input) { + return this.f(input) ? this.xf['@@transducer/step'](result, input) : Object(_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"])(result); + }; + + return XTakeWhile; +}(); + +var _xtakeWhile = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xtakeWhile(f, xf) { + return new XTakeWhile(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xtakeWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xtap.js": +/*!*************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xtap.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _xfBase_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/es/internal/_xfBase.js"); + + + +var XTap = /*#__PURE__*/function () { + function XTap(f, xf) { + this.xf = xf; + this.f = f; + } + XTap.prototype['@@transducer/init'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].init; + XTap.prototype['@@transducer/result'] = _xfBase_js__WEBPACK_IMPORTED_MODULE_1__["default"].result; + XTap.prototype['@@transducer/step'] = function (result, input) { + this.f(input); + return this.xf['@@transducer/step'](result, input); + }; + + return XTap; +}(); + +var _xtap = /*#__PURE__*/Object(_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function _xtap(f, xf) { + return new XTap(f, xf); +}); +/* harmony default export */ __webpack_exports__["default"] = (_xtap); + +/***/ }), + +/***/ "./node_modules/ramda/es/internal/_xwrap.js": +/*!**************************************************!*\ + !*** ./node_modules/ramda/es/internal/_xwrap.js ***! + \**************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return _xwrap; }); +var XWrap = /*#__PURE__*/function () { + function XWrap(fn) { + this.f = fn; + } + XWrap.prototype['@@transducer/init'] = function () { + throw new Error('init not implemented on XWrap'); + }; + XWrap.prototype['@@transducer/result'] = function (acc) { + return acc; + }; + XWrap.prototype['@@transducer/step'] = function (acc, x) { + return this.f(acc, x); + }; + + return XWrap; +}(); + +function _xwrap(fn) { + return new XWrap(fn); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/intersection.js": +/*!***********************************************!*\ + !*** ./node_modules/ramda/es/intersection.js ***! + \***********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/es/internal/_filter.js"); +/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); +/* harmony import */ var _uniq_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/es/uniq.js"); + + + + + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of those + * elements common to both lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The list of elements found in both `list1` and `list2`. + * @see R.innerJoin + * @example + * + * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3] + */ +var intersection = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function intersection(list1, list2) { + var lookupList, filteredList; + if (list1.length > list2.length) { + lookupList = list1; + filteredList = list2; + } else { + lookupList = list2; + filteredList = list1; + } + return Object(_uniq_js__WEBPACK_IMPORTED_MODULE_4__["default"])(Object(_internal_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_flip_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(lookupList), filteredList)); +}); +/* harmony default export */ __webpack_exports__["default"] = (intersection); + +/***/ }), + +/***/ "./node_modules/ramda/es/intersperse.js": +/*!**********************************************!*\ + !*** ./node_modules/ramda/es/intersperse.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Creates a new list with the separator interposed between elements. + * + * Dispatches to the `intersperse` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} separator The element to add to the list. + * @param {Array} list The list to be interposed. + * @return {Array} The new list. + * @example + * + * R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's'] + */ +var intersperse = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('intersperse', function intersperse(separator, list) { + var out = []; + var idx = 0; + var length = list.length; + while (idx < length) { + if (idx === length - 1) { + out.push(list[idx]); + } else { + out.push(list[idx], separator); + } + idx += 1; + } + return out; +})); +/* harmony default export */ __webpack_exports__["default"] = (intersperse); + +/***/ }), + +/***/ "./node_modules/ramda/es/into.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/into.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_clone_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_clone.js */ "./node_modules/ramda/es/internal/_clone.js"); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _internal_isTransformer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isTransformer.js */ "./node_modules/ramda/es/internal/_isTransformer.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _internal_stepCat_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_stepCat.js */ "./node_modules/ramda/es/internal/_stepCat.js"); + + + + + + +/** + * Transforms the items of the list with the transducer and appends the + * transformed items to the accumulator using an appropriate iterator function + * based on the accumulator type. + * + * The accumulator can be an array, string, object or a transformer. Iterated + * items will be appended to arrays and concatenated to strings. Objects will + * be merged directly or 2-item arrays will be merged as key, value pairs. + * + * The accumulator can also be a transformer object that provides a 2-arity + * reducing iterator function, step, 0-arity initial value function, init, and + * 1-arity result extraction function result. The step function is used as the + * iterator function in reduce. The result function is used to convert the + * final accumulator into the return type and in most cases is R.identity. The + * init function is used to provide the initial accumulator. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the + * transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig a -> (b -> b) -> [c] -> a + * @param {*} acc The initial accumulator value. + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.transduce + * @example + * + * const numbers = [1, 2, 3, 4]; + * const transducer = R.compose(R.map(R.add(1)), R.take(2)); + * + * R.into([], transducer, numbers); //=> [2, 3] + * + * const intoArray = R.into([]); + * intoArray(transducer, numbers); //=> [2, 3] + */ +var into = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function into(acc, xf, list) { + return Object(_internal_isTransformer_js__WEBPACK_IMPORTED_MODULE_2__["default"])(acc) ? Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(xf(acc), acc['@@transducer/init'](), list) : Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(xf(Object(_internal_stepCat_js__WEBPACK_IMPORTED_MODULE_4__["default"])(acc)), Object(_internal_clone_js__WEBPACK_IMPORTED_MODULE_0__["default"])(acc, [], [], false), list); +}); +/* harmony default export */ __webpack_exports__["default"] = (into); + +/***/ }), + +/***/ "./node_modules/ramda/es/invert.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/invert.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); + + + + +/** + * Same as [`R.invertObj`](#invertObj), however this accounts for objects with + * duplicate values by putting the values into an array. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: [ s, ... ]} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object with keys in an array. + * @see R.invertObj + * @example + * + * const raceResultsByFirstName = { + * first: 'alice', + * second: 'jake', + * third: 'alice', + * }; + * R.invert(raceResultsByFirstName); + * //=> { 'alice': ['first', 'third'], 'jake':['second'] } + */ +var invert = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function invert(obj) { + var props = Object(_keys_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj); + var len = props.length; + var idx = 0; + var out = {}; + + while (idx < len) { + var key = props[idx]; + var val = obj[key]; + var list = Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, out) ? out[val] : out[val] = []; + list[list.length] = key; + idx += 1; + } + return out; +}); +/* harmony default export */ __webpack_exports__["default"] = (invert); + +/***/ }), + +/***/ "./node_modules/ramda/es/invertObj.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/invertObj.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); + + + +/** + * Returns a new object with the keys of the given object as values, and the + * values of the given object, which are coerced to strings, as keys. Note + * that the last key found is preferred when handling the same value. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig {s: x} -> {x: s} + * @param {Object} obj The object or array to invert + * @return {Object} out A new object + * @see R.invert + * @example + * + * const raceResults = { + * first: 'alice', + * second: 'jake' + * }; + * R.invertObj(raceResults); + * //=> { 'alice': 'first', 'jake':'second' } + * + * // Alternatively: + * const raceResults = ['alice', 'jake']; + * R.invertObj(raceResults); + * //=> { 'alice': '0', 'jake':'1' } + */ +var invertObj = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function invertObj(obj) { + var props = Object(_keys_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj); + var len = props.length; + var idx = 0; + var out = {}; + + while (idx < len) { + var key = props[idx]; + out[obj[key]] = key; + idx += 1; + } + return out; +}); +/* harmony default export */ __webpack_exports__["default"] = (invertObj); + +/***/ }), + +/***/ "./node_modules/ramda/es/invoker.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/invoker.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/es/internal/_isFunction.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); + + + + + +/** + * Turns a named method with a specified arity into a function that can be + * called directly supplied with arguments and a target object. + * + * The returned function is curried and accepts `arity + 1` parameters where + * the final parameter is the target object. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *) + * @param {Number} arity Number of arguments the returned function should take + * before the target object. + * @param {String} method Name of the method to call. + * @return {Function} A new curried function. + * @see R.construct + * @example + * + * const sliceFrom = R.invoker(1, 'slice'); + * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm' + * const sliceFrom6 = R.invoker(2, 'slice')(6); + * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh' + * @symb R.invoker(0, 'method')(o) = o['method']() + * @symb R.invoker(1, 'method')(a, o) = o['method'](a) + * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b) + */ +var invoker = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function invoker(arity, method) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(arity + 1, function () { + var target = arguments[arity]; + if (target != null && Object(_internal_isFunction_js__WEBPACK_IMPORTED_MODULE_1__["default"])(target[method])) { + return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity)); + } + throw new TypeError(Object(_toString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target) + ' does not have a method named "' + method + '"'); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (invoker); + +/***/ }), + +/***/ "./node_modules/ramda/es/is.js": +/*!*************************************!*\ + !*** ./node_modules/ramda/es/is.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * See if an object (`val`) is an instance of the supplied constructor. This + * function will check up the inheritance chain, if any. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Type + * @sig (* -> {*}) -> a -> Boolean + * @param {Object} ctor A constructor + * @param {*} val The value to test + * @return {Boolean} + * @example + * + * R.is(Object, {}); //=> true + * R.is(Number, 1); //=> true + * R.is(Object, 1); //=> false + * R.is(String, 's'); //=> true + * R.is(String, new String('')); //=> true + * R.is(Object, new String('')); //=> true + * R.is(Object, 's'); //=> false + * R.is(Number, {}); //=> false + */ +var is = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function is(Ctor, val) { + return val != null && val.constructor === Ctor || val instanceof Ctor; +}); +/* harmony default export */ __webpack_exports__["default"] = (is); + +/***/ }), + +/***/ "./node_modules/ramda/es/isEmpty.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/isEmpty.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _empty_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./empty.js */ "./node_modules/ramda/es/empty.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); + + + + +/** + * Returns `true` if the given value is its type's empty value; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> Boolean + * @param {*} x + * @return {Boolean} + * @see R.empty + * @example + * + * R.isEmpty([1, 2, 3]); //=> false + * R.isEmpty([]); //=> true + * R.isEmpty(''); //=> true + * R.isEmpty(null); //=> false + * R.isEmpty({}); //=> true + * R.isEmpty({length: 0}); //=> false + */ +var isEmpty = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function isEmpty(x) { + return x != null && Object(_equals_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x, Object(_empty_js__WEBPACK_IMPORTED_MODULE_1__["default"])(x)); +}); +/* harmony default export */ __webpack_exports__["default"] = (isEmpty); + +/***/ }), + +/***/ "./node_modules/ramda/es/isNil.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/isNil.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Checks if the input value is `null` or `undefined`. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Type + * @sig * -> Boolean + * @param {*} x The value to test. + * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`. + * @example + * + * R.isNil(null); //=> true + * R.isNil(undefined); //=> true + * R.isNil(0); //=> false + * R.isNil([]); //=> false + */ +var isNil = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function isNil(x) { + return x == null; +}); +/* harmony default export */ __webpack_exports__["default"] = (isNil); + +/***/ }), + +/***/ "./node_modules/ramda/es/join.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/join.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); + + +/** + * Returns a string made by inserting the `separator` between each element and + * concatenating all the elements into a single string. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig String -> [a] -> String + * @param {Number|String} separator The string used to separate the elements. + * @param {Array} xs The elements to join into a string. + * @return {String} str The string made by concatenating `xs` with `separator`. + * @see R.split + * @example + * + * const spacer = R.join(' '); + * spacer(['a', 2, 3.4]); //=> 'a 2 3.4' + * R.join('|', [1, 2, 3]); //=> '1|2|3' + */ +var join = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1, 'join'); +/* harmony default export */ __webpack_exports__["default"] = (join); + +/***/ }), + +/***/ "./node_modules/ramda/es/juxt.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/juxt.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _converge_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./converge.js */ "./node_modules/ramda/es/converge.js"); + + + +/** + * juxt applies a list of functions to a list of values. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Function + * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n]) + * @param {Array} fns An array of functions + * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters. + * @see R.applySpec + * @example + * + * const getRange = R.juxt([Math.min, Math.max]); + * getRange(3, 4, 9, -3); //=> [-3, 9] + * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)] + */ +var juxt = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function juxt(fns) { + return Object(_converge_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function () { + return Array.prototype.slice.call(arguments, 0); + }, fns); +}); +/* harmony default export */ __webpack_exports__["default"] = (juxt); + +/***/ }), + +/***/ "./node_modules/ramda/es/keys.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/keys.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); +/* harmony import */ var _internal_isArguments_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isArguments.js */ "./node_modules/ramda/es/internal/_isArguments.js"); + + + + +// cover IE < 9 keys issues +var hasEnumBug = ! /*#__PURE__*/{ toString: null }.propertyIsEnumerable('toString'); +var nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; +// Safari bug +var hasArgsEnumBug = /*#__PURE__*/function () { + 'use strict'; + + return arguments.propertyIsEnumerable('length'); +}(); + +var contains = function contains(list, item) { + var idx = 0; + while (idx < list.length) { + if (list[idx] === item) { + return true; + } + idx += 1; + } + return false; +}; + +/** + * Returns a list containing the names of all the enumerable own properties of + * the supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own properties. + * @see R.keysIn, R.values + * @example + * + * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c'] + */ +var keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function keys(obj) { + return Object(obj) !== obj ? [] : Object.keys(obj); +}) : /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function keys(obj) { + if (Object(obj) !== obj) { + return []; + } + var prop, nIdx; + var ks = []; + var checkArgsLength = hasArgsEnumBug && Object(_internal_isArguments_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj); + for (prop in obj) { + if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, obj) && (!checkArgsLength || prop !== 'length')) { + ks[ks.length] = prop; + } + } + if (hasEnumBug) { + nIdx = nonEnumerableProps.length - 1; + while (nIdx >= 0) { + prop = nonEnumerableProps[nIdx]; + if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, obj) && !contains(ks, prop)) { + ks[ks.length] = prop; + } + nIdx -= 1; + } + } + return ks; +}); +/* harmony default export */ __webpack_exports__["default"] = (keys); + +/***/ }), + +/***/ "./node_modules/ramda/es/keysIn.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/keysIn.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Returns a list containing the names of all the properties of the supplied + * object, including prototype properties. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [k] + * @param {Object} obj The object to extract properties from + * @return {Array} An array of the object's own and prototype properties. + * @see R.keys, R.valuesIn + * @example + * + * const F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * const f = new F(); + * R.keysIn(f); //=> ['x', 'y'] + */ +var keysIn = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function keysIn(obj) { + var prop; + var ks = []; + for (prop in obj) { + ks[ks.length] = prop; + } + return ks; +}); +/* harmony default export */ __webpack_exports__["default"] = (keysIn); + +/***/ }), + +/***/ "./node_modules/ramda/es/last.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/last.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); + + +/** + * Returns the last element of the given list or string. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig [a] -> a | Undefined + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.init, R.head, R.tail + * @example + * + * R.last(['fi', 'fo', 'fum']); //=> 'fum' + * R.last([]); //=> undefined + * + * R.last('abc'); //=> 'c' + * R.last(''); //=> '' + */ +var last = /*#__PURE__*/Object(_nth_js__WEBPACK_IMPORTED_MODULE_0__["default"])(-1); +/* harmony default export */ __webpack_exports__["default"] = (last); + +/***/ }), + +/***/ "./node_modules/ramda/es/lastIndexOf.js": +/*!**********************************************!*\ + !*** ./node_modules/ramda/es/lastIndexOf.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/es/internal/_isArray.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); + + + + +/** + * Returns the position of the last occurrence of an item in an array, or -1 if + * the item is not included in the array. [`R.equals`](#equals) is used to + * determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> Number + * @param {*} target The item to find. + * @param {Array} xs The array to search in. + * @return {Number} the index of the target, or -1 if the target is not found. + * @see R.indexOf + * @example + * + * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6 + * R.lastIndexOf(10, [1,2,3,4]); //=> -1 + */ +var lastIndexOf = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lastIndexOf(target, xs) { + if (typeof xs.lastIndexOf === 'function' && !Object(_internal_isArray_js__WEBPACK_IMPORTED_MODULE_1__["default"])(xs)) { + return xs.lastIndexOf(target); + } else { + var idx = xs.length - 1; + while (idx >= 0) { + if (Object(_equals_js__WEBPACK_IMPORTED_MODULE_2__["default"])(xs[idx], target)) { + return idx; + } + idx -= 1; + } + return -1; + } +}); +/* harmony default export */ __webpack_exports__["default"] = (lastIndexOf); + +/***/ }), + +/***/ "./node_modules/ramda/es/length.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/length.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isNumber.js */ "./node_modules/ramda/es/internal/_isNumber.js"); + + + +/** + * Returns the number of elements in the array by returning `list.length`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [a] -> Number + * @param {Array} list The array to inspect. + * @return {Number} The length of the array. + * @example + * + * R.length([]); //=> 0 + * R.length([1, 2, 3]); //=> 3 + */ +var length = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function length(list) { + return list != null && Object(_internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list.length) ? list.length : NaN; +}); +/* harmony default export */ __webpack_exports__["default"] = (length); + +/***/ }), + +/***/ "./node_modules/ramda/es/lens.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/lens.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); + + + +/** + * Returns a lens for the given getter and setter functions. The getter "gets" + * the value of the focus; the setter "sets" the value of the focus. The setter + * should not mutate the data structure. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig (s -> a) -> ((a, s) -> s) -> Lens s a + * @param {Function} getter + * @param {Function} setter + * @return {Lens} + * @see R.view, R.set, R.over, R.lensIndex, R.lensProp + * @example + * + * const xLens = R.lens(R.prop('x'), R.assoc('x')); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ +var lens = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lens(getter, setter) { + return function (toFunctorFn) { + return function (target) { + return Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (focus) { + return setter(focus, target); + }, toFunctorFn(getter(target))); + }; + }; +}); +/* harmony default export */ __webpack_exports__["default"] = (lens); + +/***/ }), + +/***/ "./node_modules/ramda/es/lensIndex.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/lensIndex.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); +/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); +/* harmony import */ var _update_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./update.js */ "./node_modules/ramda/es/update.js"); + + + + + +/** + * Returns a lens whose focus is the specified index. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Number -> Lens s a + * @param {Number} n + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * const headLens = R.lensIndex(0); + * + * R.view(headLens, ['a', 'b', 'c']); //=> 'a' + * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c'] + * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c'] + */ +var lensIndex = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lensIndex(n) { + return Object(_lens_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_nth_js__WEBPACK_IMPORTED_MODULE_2__["default"])(n), Object(_update_js__WEBPACK_IMPORTED_MODULE_3__["default"])(n)); +}); +/* harmony default export */ __webpack_exports__["default"] = (lensIndex); + +/***/ }), + +/***/ "./node_modules/ramda/es/lensPath.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/lensPath.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _assocPath_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assocPath.js */ "./node_modules/ramda/es/assocPath.js"); +/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); +/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); + + + + + +/** + * Returns a lens whose focus is the specified path. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @typedefn Idx = String | Int + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig [Idx] -> Lens s a + * @param {Array} path The path to use. + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * const xHeadYLens = R.lensPath(['x', 0, 'y']); + * + * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> 2 + * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]} + * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]}); + * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]} + */ +var lensPath = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lensPath(p) { + return Object(_lens_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_path_js__WEBPACK_IMPORTED_MODULE_3__["default"])(p), Object(_assocPath_js__WEBPACK_IMPORTED_MODULE_1__["default"])(p)); +}); +/* harmony default export */ __webpack_exports__["default"] = (lensPath); + +/***/ }), + +/***/ "./node_modules/ramda/es/lensProp.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/lensProp.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _assoc_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/es/assoc.js"); +/* harmony import */ var _lens_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/es/lens.js"); +/* harmony import */ var _prop_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./prop.js */ "./node_modules/ramda/es/prop.js"); + + + + + +/** + * Returns a lens whose focus is the specified property. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig String -> Lens s a + * @param {String} k + * @return {Lens} + * @see R.view, R.set, R.over + * @example + * + * const xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2} + */ +var lensProp = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lensProp(k) { + return Object(_lens_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_prop_js__WEBPACK_IMPORTED_MODULE_3__["default"])(k), Object(_assoc_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k)); +}); +/* harmony default export */ __webpack_exports__["default"] = (lensProp); + +/***/ }), + +/***/ "./node_modules/ramda/es/lift.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/lift.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _liftN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./liftN.js */ "./node_modules/ramda/es/liftN.js"); + + + +/** + * "lifts" a function of arity > 1 so that it may "map over" a list, Function or other + * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.liftN + * @example + * + * const madd3 = R.lift((a, b, c) => a + b + c); + * + * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] + * + * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e); + * + * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24] + */ +var lift = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lift(fn) { + return Object(_liftN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn.length, fn); +}); +/* harmony default export */ __webpack_exports__["default"] = (lift); + +/***/ }), + +/***/ "./node_modules/ramda/es/liftN.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/liftN.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _ap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ap.js */ "./node_modules/ramda/es/ap.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); + + + + + + +/** + * "lifts" a function to be the specified arity, so that it may "map over" that + * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply). + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Function + * @sig Number -> (*... -> *) -> ([*]... -> [*]) + * @param {Function} fn The function to lift into higher context + * @return {Function} The lifted function. + * @see R.lift, R.ap + * @example + * + * const madd3 = R.liftN(3, (...args) => R.sum(args)); + * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7] + */ +var liftN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function liftN(arity, fn) { + var lifted = Object(_curryN_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arity, fn); + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arity, function () { + return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_ap_js__WEBPACK_IMPORTED_MODULE_2__["default"], Object(_map_js__WEBPACK_IMPORTED_MODULE_4__["default"])(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1)); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (liftN); + +/***/ }), + +/***/ "./node_modules/ramda/es/lt.js": +/*!*************************************!*\ + !*** ./node_modules/ramda/es/lt.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns `true` if the first argument is less than the second; `false` + * otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {*} a + * @param {*} b + * @return {Boolean} + * @see R.gt + * @example + * + * R.lt(2, 1); //=> false + * R.lt(2, 2); //=> false + * R.lt(2, 3); //=> true + * R.lt('a', 'z'); //=> true + * R.lt('z', 'a'); //=> false + */ +var lt = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lt(a, b) { + return a < b; +}); +/* harmony default export */ __webpack_exports__["default"] = (lt); + +/***/ }), + +/***/ "./node_modules/ramda/es/lte.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/lte.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns `true` if the first argument is less than or equal to the second; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> Boolean + * @param {Number} a + * @param {Number} b + * @return {Boolean} + * @see R.gte + * @example + * + * R.lte(2, 1); //=> false + * R.lte(2, 2); //=> true + * R.lte(2, 3); //=> true + * R.lte('a', 'z'); //=> true + * R.lte('z', 'a'); //=> false + */ +var lte = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function lte(a, b) { + return a <= b; +}); +/* harmony default export */ __webpack_exports__["default"] = (lte); + +/***/ }), + +/***/ "./node_modules/ramda/es/map.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/map.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/es/internal/_map.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _internal_xmap_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_xmap.js */ "./node_modules/ramda/es/internal/_xmap.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); + + + + + + + + +/** + * Takes a function and + * a [functor](https://github.com/fantasyland/fantasy-land#functor), + * applies the function to each of the functor's values, and returns + * a functor of the same shape. + * + * Ramda provides suitable `map` implementations for `Array` and `Object`, + * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`. + * + * Dispatches to the `map` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * Also treats functions as functors and will compose them together. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => (a -> b) -> f a -> f b + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {Array} list The list to be iterated over. + * @return {Array} The new list. + * @see R.transduce, R.addIndex + * @example + * + * const double = x => x * 2; + * + * R.map(double, [1, 2, 3]); //=> [2, 4, 6] + * + * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6} + * @symb R.map(f, [a, b]) = [f(a), f(b)] + * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) } + * @symb R.map(f, functor_o) = functor_o.map(f) + */ +var map = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['fantasy-land/map', 'map'], _internal_xmap_js__WEBPACK_IMPORTED_MODULE_4__["default"], function map(fn, functor) { + switch (Object.prototype.toString.call(functor)) { + case '[object Function]': + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_5__["default"])(functor.length, function () { + return fn.call(this, functor.apply(this, arguments)); + }); + case '[object Object]': + return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(function (acc, key) { + acc[key] = fn(functor[key]); + return acc; + }, {}, Object(_keys_js__WEBPACK_IMPORTED_MODULE_6__["default"])(functor)); + default: + return Object(_internal_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(fn, functor); + } +})); +/* harmony default export */ __webpack_exports__["default"] = (map); + +/***/ }), + +/***/ "./node_modules/ramda/es/mapAccum.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/mapAccum.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * The `mapAccum` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from left to right, and returning a final value of this + * accumulator together with the new list. + * + * The iterator function receives two arguments, *acc* and *value*, and should + * return a tuple *[acc, value]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y]) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.scan, R.addIndex, R.mapAccumRight + * @example + * + * const digits = ['1', '2', '3', '4']; + * const appender = (a, b) => [a + b, a + b]; + * + * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']] + * @symb R.mapAccum(f, a, [b, c, d]) = [ + * f(f(f(a, b)[0], c)[0], d)[0], + * [ + * f(a, b)[1], + * f(f(a, b)[0], c)[1], + * f(f(f(a, b)[0], c)[0], d)[1] + * ] + * ] + */ +var mapAccum = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mapAccum(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = []; + var tuple = [acc]; + while (idx < len) { + tuple = fn(tuple[0], list[idx]); + result[idx] = tuple[1]; + idx += 1; + } + return [tuple[0], result]; +}); +/* harmony default export */ __webpack_exports__["default"] = (mapAccum); + +/***/ }), + +/***/ "./node_modules/ramda/es/mapAccumRight.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/mapAccumRight.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * The `mapAccumRight` function behaves like a combination of map and reduce; it + * applies a function to each element of a list, passing an accumulating + * parameter from right to left, and returning a final value of this + * accumulator together with the new list. + * + * Similar to [`mapAccum`](#mapAccum), except moves through the input list from + * the right to the left. + * + * The iterator function receives two arguments, *acc* and *value*, and should + * return a tuple *[acc, value]*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y]) + * @param {Function} fn The function to be called on every element of the input `list`. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.addIndex, R.mapAccum + * @example + * + * const digits = ['1', '2', '3', '4']; + * const appender = (a, b) => [b + a, b + a]; + * + * R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']] + * @symb R.mapAccumRight(f, a, [b, c, d]) = [ + * f(f(f(a, d)[0], c)[0], b)[0], + * [ + * f(a, d)[1], + * f(f(a, d)[0], c)[1], + * f(f(f(a, d)[0], c)[0], b)[1] + * ] + * ] + */ +var mapAccumRight = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mapAccumRight(fn, acc, list) { + var idx = list.length - 1; + var result = []; + var tuple = [acc]; + while (idx >= 0) { + tuple = fn(tuple[0], list[idx]); + result[idx] = tuple[1]; + idx -= 1; + } + return [tuple[0], result]; +}); +/* harmony default export */ __webpack_exports__["default"] = (mapAccumRight); + +/***/ }), + +/***/ "./node_modules/ramda/es/mapObjIndexed.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/mapObjIndexed.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); + + + + +/** + * An Object-specific version of [`map`](#map). The function is applied to three + * arguments: *(value, key, obj)*. If only the value is significant, use + * [`map`](#map) instead. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Object + * @sig ((*, String, Object) -> *) -> Object -> Object + * @param {Function} fn + * @param {Object} obj + * @return {Object} + * @see R.map + * @example + * + * const xyz = { x: 1, y: 2, z: 3 }; + * const prependKeyAndDouble = (num, key, obj) => key + (num * 2); + * + * R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' } + */ +var mapObjIndexed = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mapObjIndexed(fn, obj) { + return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (acc, key) { + acc[key] = fn(obj[key], key, obj); + return acc; + }, {}, Object(_keys_js__WEBPACK_IMPORTED_MODULE_2__["default"])(obj)); +}); +/* harmony default export */ __webpack_exports__["default"] = (mapObjIndexed); + +/***/ }), + +/***/ "./node_modules/ramda/es/match.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/match.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Tests a regular expression against a String. Note that this function will + * return an empty array when there are no matches. This differs from + * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match) + * which returns `null` when there are no matches. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig RegExp -> String -> [String | Undefined] + * @param {RegExp} rx A regular expression. + * @param {String} str The string to match against + * @return {Array} The list of matches or empty array. + * @see R.test + * @example + * + * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na'] + * R.match(/a/, 'b'); //=> [] + * R.match(/a/, null); //=> TypeError: null does not have a method named "match" + */ +var match = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function match(rx, str) { + return str.match(rx) || []; +}); +/* harmony default export */ __webpack_exports__["default"] = (match); + +/***/ }), + +/***/ "./node_modules/ramda/es/mathMod.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/mathMod.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/es/internal/_isInteger.js"); + + + +/** + * `mathMod` behaves like the modulo operator should mathematically, unlike the + * `%` operator (and by extension, [`R.modulo`](#modulo)). So while + * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer + * arguments, and returns NaN when the modulus is zero or negative. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} m The dividend. + * @param {Number} p the modulus. + * @return {Number} The result of `b mod a`. + * @see R.modulo + * @example + * + * R.mathMod(-17, 5); //=> 3 + * R.mathMod(17, 5); //=> 2 + * R.mathMod(17, -5); //=> NaN + * R.mathMod(17, 0); //=> NaN + * R.mathMod(17.2, 5); //=> NaN + * R.mathMod(17, 5.3); //=> NaN + * + * const clock = R.mathMod(R.__, 12); + * clock(15); //=> 3 + * clock(24); //=> 0 + * + * const seventeenMod = R.mathMod(17); + * seventeenMod(3); //=> 2 + * seventeenMod(4); //=> 1 + * seventeenMod(10); //=> 7 + */ +var mathMod = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mathMod(m, p) { + if (!Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(m)) { + return NaN; + } + if (!Object(_internal_isInteger_js__WEBPACK_IMPORTED_MODULE_1__["default"])(p) || p < 1) { + return NaN; + } + return (m % p + p) % p; +}); +/* harmony default export */ __webpack_exports__["default"] = (mathMod); + +/***/ }), + +/***/ "./node_modules/ramda/es/max.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/max.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns the larger of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.maxBy, R.min + * @example + * + * R.max(789, 123); //=> 789 + * R.max('a', 'b'); //=> 'b' + */ +var max = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function max(a, b) { + return b > a ? b : a; +}); +/* harmony default export */ __webpack_exports__["default"] = (max); + +/***/ }), + +/***/ "./node_modules/ramda/es/maxBy.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/maxBy.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Takes a function and two values, and returns whichever value produces the + * larger result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.max, R.minBy + * @example + * + * // square :: Number -> Number + * const square = n => n * n; + * + * R.maxBy(square, -3, 2); //=> -3 + * + * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5 + * R.reduce(R.maxBy(square), 0, []); //=> 0 + */ +var maxBy = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function maxBy(f, a, b) { + return f(b) > f(a) ? b : a; +}); +/* harmony default export */ __webpack_exports__["default"] = (maxBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/mean.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/mean.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _sum_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sum.js */ "./node_modules/ramda/es/sum.js"); + + + +/** + * Returns the mean of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.median + * @example + * + * R.mean([2, 7, 9]); //=> 6 + * R.mean([]); //=> NaN + */ +var mean = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mean(list) { + return Object(_sum_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list) / list.length; +}); +/* harmony default export */ __webpack_exports__["default"] = (mean); + +/***/ }), + +/***/ "./node_modules/ramda/es/median.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/median.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _mean_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mean.js */ "./node_modules/ramda/es/mean.js"); + + + +/** + * Returns the median of the given list of numbers. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list + * @return {Number} + * @see R.mean + * @example + * + * R.median([2, 9, 7]); //=> 7 + * R.median([7, 2, 10, 9]); //=> 8 + * R.median([]); //=> NaN + */ +var median = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function median(list) { + var len = list.length; + if (len === 0) { + return NaN; + } + var width = 2 - len % 2; + var idx = (len - width) / 2; + return Object(_mean_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Array.prototype.slice.call(list, 0).sort(function (a, b) { + return a < b ? -1 : a > b ? 1 : 0; + }).slice(idx, idx + width)); +}); +/* harmony default export */ __webpack_exports__["default"] = (median); + +/***/ }), + +/***/ "./node_modules/ramda/es/memoizeWith.js": +/*!**********************************************!*\ + !*** ./node_modules/ramda/es/memoizeWith.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); + + + + +/** + * Creates a new function that, when invoked, caches the result of calling `fn` + * for a given argument set and returns the result. Subsequent calls to the + * memoized `fn` with the same argument set will not result in an additional + * call to `fn`; instead, the cached result for that set of arguments will be + * returned. + * + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (*... -> String) -> (*... -> a) -> (*... -> a) + * @param {Function} fn The function to generate the cache key. + * @param {Function} fn The function to memoize. + * @return {Function} Memoized version of `fn`. + * @example + * + * let count = 0; + * const factorial = R.memoizeWith(R.identity, n => { + * count += 1; + * return R.product(R.range(1, n + 1)); + * }); + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * factorial(5); //=> 120 + * count; //=> 1 + */ +var memoizeWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function memoizeWith(mFn, fn) { + var cache = {}; + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function () { + var key = mFn.apply(this, arguments); + if (!Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_2__["default"])(key, cache)) { + cache[key] = fn.apply(this, arguments); + } + return cache[key]; + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (memoizeWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/merge.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/merge.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Create a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects, + * the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> {k: v} -> {k: v} + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeRight, R.mergeDeepRight, R.mergeWith, R.mergeWithKey + * @deprecated + * @example + * + * R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 }); + * //=> { 'name': 'fred', 'age': 40 } + * + * const withDefaults = R.merge({x: 0, y: 0}); + * withDefaults({y: 2}); //=> {x: 0, y: 2} + * @symb R.merge(a, b) = {...a, ...b} + */ +var merge = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function merge(l, r) { + return Object(_internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])({}, l, r); +}); +/* harmony default export */ __webpack_exports__["default"] = (merge); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeAll.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/mergeAll.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + + +/** + * Merges a list of objects together into one object. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig [{k: v}] -> {k: v} + * @param {Array} list An array of objects + * @return {Object} A merged object. + * @see R.reduce + * @example + * + * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3} + * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2} + * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 } + */ +var mergeAll = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function mergeAll(list) { + return _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(null, [{}].concat(list)); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeAll); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeDeepLeft.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/mergeDeepLeft.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); + + + +/** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the first object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }} + */ +var mergeDeepLeft = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepLeft(lObj, rObj) { + return Object(_mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k, lVal, rVal) { + return lVal; + }, lObj, rObj); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeDeepLeft); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeDeepRight.js": +/*!*************************************************!*\ + !*** ./node_modules/ramda/es/mergeDeepRight.js ***! + \*************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); + + + +/** + * Creates a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects: + * - and both values are objects, the two values will be recursively merged + * - otherwise the value from the second object will be used. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig {a} -> {a} -> {a} + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }}, + * { age: 40, contact: { email: 'baa@example.com' }}); + * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }} + */ +var mergeDeepRight = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepRight(lObj, rObj) { + return Object(_mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k, lVal, rVal) { + return rVal; + }, lObj, rObj); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeDeepRight); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeDeepWith.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/mergeDeepWith.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/es/mergeDeepWithKey.js"); + + + +/** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to associated values using the + * resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig ((a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWith, R.mergeDeepWithKey + * @example + * + * R.mergeDeepWith(R.concat, + * { a: true, c: { values: [10, 20] }}, + * { b: true, c: { values: [15, 35] }}); + * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }} + */ +var mergeDeepWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepWith(fn, lObj, rObj) { + return Object(_mergeDeepWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (k, lVal, rVal) { + return fn(lVal, rVal); + }, lObj, rObj); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeDeepWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeDeepWithKey.js": +/*!***************************************************!*\ + !*** ./node_modules/ramda/es/mergeDeepWithKey.js ***! + \***************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _internal_isObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/es/internal/_isObject.js"); +/* harmony import */ var _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/es/mergeWithKey.js"); + + + + +/** + * Creates a new object with the own properties of the two provided objects. + * If a key exists in both objects: + * - and both associated values are also objects then the values will be + * recursively merged. + * - otherwise the provided function is applied to the key and associated values + * using the resulting value as the new value associated with the key. + * If a key only exists in one object, the value will be associated with the key + * of the resulting object. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Object + * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} lObj + * @param {Object} rObj + * @return {Object} + * @see R.mergeWithKey, R.mergeDeepWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeDeepWithKey(concatValues, + * { a: true, c: { thing: 'foo', values: [10, 20] }}, + * { b: true, c: { thing: 'bar', values: [15, 35] }}); + * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }} + */ +var mergeDeepWithKey = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeDeepWithKey(fn, lObj, rObj) { + return Object(_mergeWithKey_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function (k, lVal, rVal) { + if (Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(lVal) && Object(_internal_isObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(rVal)) { + return mergeDeepWithKey(fn, lVal, rVal); + } else { + return fn(k, lVal, rVal); + } + }, lObj, rObj); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeDeepWithKey); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeLeft.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/mergeLeft.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Create a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects, + * the value from the first object will be used. + * + * @func + * @memberOf R + * @category Object + * @sig {k: v} -> {k: v} -> {k: v} + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey + * @example + * + * R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 }); + * //=> { 'name': 'fred', 'age': 40 } + * + * const resetToDefault = R.mergeLeft({x: 0}); + * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2} + * @symb R.mergeLeft(a, b) = {...b, ...a} + */ +var mergeLeft = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function mergeLeft(l, r) { + return Object(_internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])({}, r, l); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeLeft); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeRight.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/mergeRight.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/es/internal/_objectAssign.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Create a new object with the own properties of the first object merged with + * the own properties of the second object. If a key exists in both objects, + * the value from the second object will be used. + * + * @func + * @memberOf R + * @category Object + * @sig {k: v} -> {k: v} -> {k: v} + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey + * @example + * + * R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 }); + * //=> { 'name': 'fred', 'age': 40 } + * + * const withDefaults = R.mergeRight({x: 0, y: 0}); + * withDefaults({y: 2}); //=> {x: 0, y: 2} + * @symb R.mergeRight(a, b) = {...a, ...b} + */ +var mergeRight = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function mergeRight(l, r) { + return Object(_internal_objectAssign_js__WEBPACK_IMPORTED_MODULE_0__["default"])({}, l, r); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeRight); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeWith.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/mergeWith.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _mergeWithKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/es/mergeWithKey.js"); + + + +/** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the values + * associated with the key in each object, with the result being used as the + * value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig ((a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWith, R.merge, R.mergeWithKey + * @example + * + * R.mergeWith(R.concat, + * { a: true, values: [10, 20] }, + * { b: true, values: [15, 35] }); + * //=> { a: true, b: true, values: [10, 20, 15, 35] } + */ +var mergeWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeWith(fn, l, r) { + return Object(_mergeWithKey_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (_, _l, _r) { + return fn(_l, _r); + }, l, r); +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/mergeWithKey.js": +/*!***********************************************!*\ + !*** ./node_modules/ramda/es/mergeWithKey.js ***! + \***********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); + + + +/** + * Creates a new object with the own properties of the two provided objects. If + * a key exists in both objects, the provided function is applied to the key + * and the values associated with the key in each object, with the result being + * used as the value associated with the key in the returned object. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Object + * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a} + * @param {Function} fn + * @param {Object} l + * @param {Object} r + * @return {Object} + * @see R.mergeDeepWithKey, R.merge, R.mergeWith + * @example + * + * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r + * R.mergeWithKey(concatValues, + * { a: true, thing: 'foo', values: [10, 20] }, + * { b: true, thing: 'bar', values: [15, 35] }); + * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] } + * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 } + */ +var mergeWithKey = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function mergeWithKey(fn, l, r) { + var result = {}; + var k; + + for (k in l) { + if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, l)) { + result[k] = Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, r) ? fn(k, l[k], r[k]) : l[k]; + } + } + + for (k in r) { + if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, r) && !Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(k, result)) { + result[k] = r[k]; + } + } + + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (mergeWithKey); + +/***/ }), + +/***/ "./node_modules/ramda/es/min.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/min.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns the smaller of its two arguments. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord a => a -> a -> a + * @param {*} a + * @param {*} b + * @return {*} + * @see R.minBy, R.max + * @example + * + * R.min(789, 123); //=> 123 + * R.min('a', 'b'); //=> 'a' + */ +var min = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function min(a, b) { + return b < a ? b : a; +}); +/* harmony default export */ __webpack_exports__["default"] = (min); + +/***/ }), + +/***/ "./node_modules/ramda/es/minBy.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/minBy.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Takes a function and two values, and returns whichever value produces the + * smaller result when passed to the provided function. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Relation + * @sig Ord b => (a -> b) -> a -> a -> a + * @param {Function} f + * @param {*} a + * @param {*} b + * @return {*} + * @see R.min, R.maxBy + * @example + * + * // square :: Number -> Number + * const square = n => n * n; + * + * R.minBy(square, -3, 2); //=> 2 + * + * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1 + * R.reduce(R.minBy(square), Infinity, []); //=> Infinity + */ +var minBy = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function minBy(f, a, b) { + return f(b) < f(a) ? b : a; +}); +/* harmony default export */ __webpack_exports__["default"] = (minBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/modulo.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/modulo.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Divides the first parameter by the second and returns the remainder. Note + * that this function preserves the JavaScript-style behavior for modulo. For + * mathematical modulo see [`mathMod`](#mathMod). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The value to the divide. + * @param {Number} b The pseudo-modulus + * @return {Number} The result of `b % a`. + * @see R.mathMod + * @example + * + * R.modulo(17, 3); //=> 2 + * // JS behavior: + * R.modulo(-17, 3); //=> -2 + * R.modulo(17, -3); //=> 2 + * + * const isOdd = R.modulo(R.__, 2); + * isOdd(42); //=> 0 + * isOdd(21); //=> 1 + */ +var modulo = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function modulo(a, b) { + return a % b; +}); +/* harmony default export */ __webpack_exports__["default"] = (modulo); + +/***/ }), + +/***/ "./node_modules/ramda/es/move.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/move.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Move an item, at index `from`, to index `to`, in a list of elements. + * A new list will be created containing the new elements order. + * + * @func + * @memberOf R + * @category List + * @sig Number -> Number -> [a] -> [a] + * @param {Number} from The source index + * @param {Number} to The destination index + * @param {Array} list The list which will serve to realise the move + * @return {Array} The new list reordered + * @example + * + * R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f'] + * R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation + */ +var move = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (from, to, list) { + var length = list.length; + var result = list.slice(); + var positiveFrom = from < 0 ? length + from : from; + var positiveTo = to < 0 ? length + to : to; + var item = result.splice(positiveFrom, 1); + + return positiveFrom < 0 || positiveFrom >= list.length || positiveTo < 0 || positiveTo >= list.length ? list : [].concat(result.slice(0, positiveTo)).concat(item).concat(result.slice(positiveTo, list.length)); +}); + +/* harmony default export */ __webpack_exports__["default"] = (move); + +/***/ }), + +/***/ "./node_modules/ramda/es/multiply.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/multiply.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Multiplies two numbers. Equivalent to `a * b` but curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a * b`. + * @see R.divide + * @example + * + * const double = R.multiply(2); + * const triple = R.multiply(3); + * double(3); //=> 6 + * triple(4); //=> 12 + * R.multiply(2, 5); //=> 10 + */ +var multiply = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function multiply(a, b) { + return a * b; +}); +/* harmony default export */ __webpack_exports__["default"] = (multiply); + +/***/ }), + +/***/ "./node_modules/ramda/es/nAry.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/nAry.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly `n` parameters. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig Number -> (* -> a) -> (* -> a) + * @param {Number} n The desired arity of the new function. + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity `n`. + * @see R.binary, R.unary + * @example + * + * const takesTwoArgs = (a, b) => [a, b]; + * + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * const takesOneArg = R.nAry(1, takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only `n` arguments are passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.nAry(0, f)(a, b) = f() + * @symb R.nAry(1, f)(a, b) = f(a) + * @symb R.nAry(2, f)(a, b) = f(a, b) + */ +var nAry = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function nAry(n, fn) { + switch (n) { + case 0: + return function () { + return fn.call(this); + }; + case 1: + return function (a0) { + return fn.call(this, a0); + }; + case 2: + return function (a0, a1) { + return fn.call(this, a0, a1); + }; + case 3: + return function (a0, a1, a2) { + return fn.call(this, a0, a1, a2); + }; + case 4: + return function (a0, a1, a2, a3) { + return fn.call(this, a0, a1, a2, a3); + }; + case 5: + return function (a0, a1, a2, a3, a4) { + return fn.call(this, a0, a1, a2, a3, a4); + }; + case 6: + return function (a0, a1, a2, a3, a4, a5) { + return fn.call(this, a0, a1, a2, a3, a4, a5); + }; + case 7: + return function (a0, a1, a2, a3, a4, a5, a6) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6); + }; + case 8: + return function (a0, a1, a2, a3, a4, a5, a6, a7) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7); + }; + case 9: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8); + }; + case 10: + return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) { + return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9); + }; + default: + throw new Error('First argument to nAry must be a non-negative integer no greater than ten'); + } +}); +/* harmony default export */ __webpack_exports__["default"] = (nAry); + +/***/ }), + +/***/ "./node_modules/ramda/es/negate.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/negate.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Negates its argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Math + * @sig Number -> Number + * @param {Number} n + * @return {Number} + * @example + * + * R.negate(42); //=> -42 + */ +var negate = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function negate(n) { + return -n; +}); +/* harmony default export */ __webpack_exports__["default"] = (negate); + +/***/ }), + +/***/ "./node_modules/ramda/es/none.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/none.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_complement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_complement.js */ "./node_modules/ramda/es/internal/_complement.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _all_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./all.js */ "./node_modules/ramda/es/all.js"); + + + + +/** + * Returns `true` if no elements of the list match the predicate, `false` + * otherwise. + * + * Dispatches to the `all` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (a -> Boolean) -> [a] -> Boolean + * @param {Function} fn The predicate function. + * @param {Array} list The array to consider. + * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise. + * @see R.all, R.any + * @example + * + * const isEven = n => n % 2 === 0; + * const isOdd = n => n % 2 === 1; + * + * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true + * R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false + */ +var none = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function none(fn, input) { + return Object(_all_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_internal_complement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn), input); +}); +/* harmony default export */ __webpack_exports__["default"] = (none); + +/***/ }), + +/***/ "./node_modules/ramda/es/not.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/not.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * A function that returns the `!` of its argument. It will return `true` when + * passed false-y value, and `false` when passed a truth-y one. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig * -> Boolean + * @param {*} a any value + * @return {Boolean} the logical inverse of passed argument. + * @see R.complement + * @example + * + * R.not(true); //=> false + * R.not(false); //=> true + * R.not(0); //=> true + * R.not(1); //=> false + */ +var not = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function not(a) { + return !a; +}); +/* harmony default export */ __webpack_exports__["default"] = (not); + +/***/ }), + +/***/ "./node_modules/ramda/es/nth.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/nth.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); + + + +/** + * Returns the nth element of the given list or string. If n is negative the + * element at index length + n is returned. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> a | Undefined + * @sig Number -> String -> String + * @param {Number} offset + * @param {*} list + * @return {*} + * @example + * + * const list = ['foo', 'bar', 'baz', 'quux']; + * R.nth(1, list); //=> 'bar' + * R.nth(-1, list); //=> 'quux' + * R.nth(-99, list); //=> undefined + * + * R.nth(2, 'abc'); //=> 'c' + * R.nth(3, 'abc'); //=> '' + * @symb R.nth(-1, [a, b, c]) = c + * @symb R.nth(0, [a, b, c]) = a + * @symb R.nth(1, [a, b, c]) = b + */ +var nth = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function nth(offset, list) { + var idx = offset < 0 ? list.length + offset : offset; + return Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list) ? list.charAt(idx) : list[idx]; +}); +/* harmony default export */ __webpack_exports__["default"] = (nth); + +/***/ }), + +/***/ "./node_modules/ramda/es/nthArg.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/nthArg.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _nth_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/es/nth.js"); + + + + +/** + * Returns a function which returns its nth argument. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category Function + * @sig Number -> *... -> * + * @param {Number} n + * @return {Function} + * @example + * + * R.nthArg(1)('a', 'b', 'c'); //=> 'b' + * R.nthArg(-1)('a', 'b', 'c'); //=> 'c' + * @symb R.nthArg(-1)(a, b, c) = c + * @symb R.nthArg(0)(a, b, c) = a + * @symb R.nthArg(1)(a, b, c) = b + */ +var nthArg = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function nthArg(n) { + var arity = n < 0 ? 1 : n + 1; + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arity, function () { + return Object(_nth_js__WEBPACK_IMPORTED_MODULE_2__["default"])(n, arguments); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (nthArg); + +/***/ }), + +/***/ "./node_modules/ramda/es/o.js": +/*!************************************!*\ + !*** ./node_modules/ramda/es/o.js ***! + \************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * `o` is a curried composition function that returns a unary function. + * Like [`compose`](#compose), `o` performs right-to-left function composition. + * Unlike [`compose`](#compose), the rightmost function passed to `o` will be + * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is + * limited to accepting only 2 unary functions. The name o was chosen because + * of its similarity to the mathematical composition operator ∘. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category Function + * @sig (b -> c) -> (a -> b) -> a -> c + * @param {Function} f + * @param {Function} g + * @return {Function} + * @see R.compose, R.pipe + * @example + * + * const classyGreeting = name => "The name's " + name.last + ", " + name.first + " " + name.last + * const yellGreeting = R.o(R.toUpper, classyGreeting); + * yellGreeting({first: 'James', last: 'Bond'}); //=> "THE NAME'S BOND, JAMES BOND" + * + * R.o(R.multiply(10), R.add(10))(-4) //=> 60 + * + * @symb R.o(f, g, x) = f(g(x)) + */ +var o = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function o(f, g, x) { + return f(g(x)); +}); +/* harmony default export */ __webpack_exports__["default"] = (o); + +/***/ }), + +/***/ "./node_modules/ramda/es/objOf.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/objOf.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Creates an object containing a single key:value pair. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @sig String -> a -> {String:a} + * @param {String} key + * @param {*} val + * @return {Object} + * @see R.pair + * @example + * + * const matchPhrases = R.compose( + * R.objOf('must'), + * R.map(R.objOf('match_phrase')) + * ); + * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]} + */ +var objOf = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function objOf(key, val) { + var obj = {}; + obj[key] = val; + return obj; +}); +/* harmony default export */ __webpack_exports__["default"] = (objOf); + +/***/ }), + +/***/ "./node_modules/ramda/es/of.js": +/*!*************************************!*\ + !*** ./node_modules/ramda/es/of.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_of_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_of.js */ "./node_modules/ramda/es/internal/_of.js"); + + + +/** + * Returns a singleton array containing the value provided. + * + * Note this `of` is different from the ES6 `of`; See + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of + * + * @func + * @memberOf R + * @since v0.3.0 + * @category Function + * @sig a -> [a] + * @param {*} x any value + * @return {Array} An array wrapping `x`. + * @example + * + * R.of(null); //=> [null] + * R.of([42]); //=> [[42]] + */ +var of = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_of_js__WEBPACK_IMPORTED_MODULE_1__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (of); + +/***/ }), + +/***/ "./node_modules/ramda/es/omit.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/omit.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns a partial copy of an object omitting the keys specified. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [String] -> {String: *} -> {String: *} + * @param {Array} names an array of String property names to omit from the new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with properties from `names` not on it. + * @see R.pick + * @example + * + * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3} + */ +var omit = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function omit(names, obj) { + var result = {}; + var index = {}; + var idx = 0; + var len = names.length; + + while (idx < len) { + index[names[idx]] = 1; + idx += 1; + } + + for (var prop in obj) { + if (!index.hasOwnProperty(prop)) { + result[prop] = obj[prop]; + } + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (omit); + +/***/ }), + +/***/ "./node_modules/ramda/es/once.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/once.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + + +/** + * Accepts a function `fn` and returns a function that guards invocation of + * `fn` such that `fn` can only ever be called once, no matter how many times + * the returned function is invoked. The first value calculated is returned in + * subsequent invocations. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a... -> b) -> (a... -> b) + * @param {Function} fn The function to wrap in a call-only-once wrapper. + * @return {Function} The wrapped function. + * @example + * + * const addOneOnce = R.once(x => x + 1); + * addOneOnce(10); //=> 11 + * addOneOnce(addOneOnce(50)); //=> 11 + */ +var once = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function once(fn) { + var called = false; + var result; + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function () { + if (called) { + return result; + } + called = true; + result = fn.apply(this, arguments); + return result; + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (once); + +/***/ }), + +/***/ "./node_modules/ramda/es/or.js": +/*!*************************************!*\ + !*** ./node_modules/ramda/es/or.js ***! + \*************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns `true` if one or both of its arguments are `true`. Returns `false` + * if both arguments are `false`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Logic + * @sig a -> b -> a | b + * @param {Any} a + * @param {Any} b + * @return {Any} the first argument if truthy, otherwise the second argument. + * @see R.either + * @example + * + * R.or(true, true); //=> true + * R.or(true, false); //=> true + * R.or(false, true); //=> true + * R.or(false, false); //=> false + */ +var or = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function or(a, b) { + return a || b; +}); +/* harmony default export */ __webpack_exports__["default"] = (or); + +/***/ }), + +/***/ "./node_modules/ramda/es/otherwise.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/otherwise.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_assertPromise.js */ "./node_modules/ramda/es/internal/_assertPromise.js"); + + + +/** + * Returns the result of applying the onFailure function to the value inside + * a failed promise. This is useful for handling rejected promises + * inside function compositions. + * + * @func + * @memberOf R + * @category Function + * @sig (e -> b) -> (Promise e a) -> (Promise e b) + * @sig (e -> (Promise f b)) -> (Promise e a) -> (Promise f b) + * @param {Function} onFailure The function to apply. Can return a value or a promise of a value. + * @param {Promise} p + * @return {Promise} The result of calling `p.then(null, onFailure)` + * @see R.then + * @example + * + * var failedFetch = (id) => Promise.reject('bad ID'); + * var useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' }) + * + * //recoverFromFailure :: String -> Promise ({firstName, lastName}) + * var recoverFromFailure = R.pipe( + * failedFetch, + * R.otherwise(useDefault), + * R.then(R.pick(['firstName', 'lastName'])), + * ); + * recoverFromFailure(12345).then(console.log) + */ +var otherwise = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function otherwise(f, p) { + Object(_internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__["default"])('otherwise', p); + + return p.then(null, f); +}); +/* harmony default export */ __webpack_exports__["default"] = (otherwise); + +/***/ }), + +/***/ "./node_modules/ramda/es/over.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/over.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +// `Identity` is a functor that holds a single value, where `map` simply +// transforms the held value with the provided function. +var Identity = function (x) { + return { value: x, map: function (f) { + return Identity(f(x)); + } }; +}; + +/** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the result of applying the given function to + * the focused value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> (a -> a) -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * const headLens = R.lensIndex(0); + * + * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz'] + */ +var over = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function over(lens, f, x) { + // The value returned by the getter function is first transformed with `f`, + // then set as the value of an `Identity`. This is then mapped over with the + // setter function of the lens. + return lens(function (y) { + return Identity(f(y)); + })(x).value; +}); +/* harmony default export */ __webpack_exports__["default"] = (over); + +/***/ }), + +/***/ "./node_modules/ramda/es/pair.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/pair.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category List + * @sig a -> b -> (a,b) + * @param {*} fst + * @param {*} snd + * @return {Array} + * @see R.objOf, R.of + * @example + * + * R.pair('foo', 'bar'); //=> ['foo', 'bar'] + */ +var pair = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pair(fst, snd) { + return [fst, snd]; +}); +/* harmony default export */ __webpack_exports__["default"] = (pair); + +/***/ }), + +/***/ "./node_modules/ramda/es/partial.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/partial.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_createPartialApplicator.js */ "./node_modules/ramda/es/internal/_createPartialApplicator.js"); + + + +/** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided initially followed by the arguments provided to `g`. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partialRight, R.curry + * @example + * + * const multiply2 = (a, b) => a * b; + * const double = R.partial(multiply2, [2]); + * double(2); //=> 4 + * + * const greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * const sayHello = R.partial(greet, ['Hello']); + * const sayHelloToMs = R.partial(sayHello, ['Ms.']); + * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d) + */ +var partial = /*#__PURE__*/Object(_internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (partial); + +/***/ }), + +/***/ "./node_modules/ramda/es/partialRight.js": +/*!***********************************************!*\ + !*** ./node_modules/ramda/es/partialRight.js ***! + \***********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_createPartialApplicator.js */ "./node_modules/ramda/es/internal/_createPartialApplicator.js"); +/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); + + + + +/** + * Takes a function `f` and a list of arguments, and returns a function `g`. + * When applied, `g` returns the result of applying `f` to the arguments + * provided to `g` followed by the arguments provided initially. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x) + * @param {Function} f + * @param {Array} args + * @return {Function} + * @see R.partial + * @example + * + * const greet = (salutation, title, firstName, lastName) => + * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!'; + * + * const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']); + * + * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!' + * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b) + */ +var partialRight = /*#__PURE__*/Object(_internal_createPartialApplicator_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_flip_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])); +/* harmony default export */ __webpack_exports__["default"] = (partialRight); + +/***/ }), + +/***/ "./node_modules/ramda/es/partition.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/partition.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./filter.js */ "./node_modules/ramda/es/filter.js"); +/* harmony import */ var _juxt_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./juxt.js */ "./node_modules/ramda/es/juxt.js"); +/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reject.js */ "./node_modules/ramda/es/reject.js"); + + + + +/** + * Takes a predicate and a list or other `Filterable` object and returns the + * pair of filterable objects of the same type of elements which do and do not + * satisfy, the predicate, respectively. Filterable objects include plain objects or any object + * that has a filter method such as `Array`. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a] + * @param {Function} pred A predicate to determine which side the element belongs to. + * @param {Array} filterable the list (or other filterable) to partition. + * @return {Array} An array, containing first the subset of elements that satisfy the + * predicate, and second the subset of elements that do not satisfy. + * @see R.filter, R.reject + * @example + * + * R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']); + * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ] + * + * R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' }); + * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ] + */ +var partition = /*#__PURE__*/Object(_juxt_js__WEBPACK_IMPORTED_MODULE_1__["default"])([_filter_js__WEBPACK_IMPORTED_MODULE_0__["default"], _reject_js__WEBPACK_IMPORTED_MODULE_2__["default"]]); +/* harmony default export */ __webpack_exports__["default"] = (partition); + +/***/ }), + +/***/ "./node_modules/ramda/es/path.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/path.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Retrieve the value at a given path. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @typedefn Idx = String | Int + * @sig [Idx] -> {a} -> a | Undefined + * @param {Array} path The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path`. + * @see R.prop + * @example + * + * R.path(['a', 'b'], {a: {b: 2}}); //=> 2 + * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined + */ +var path = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function path(paths, obj) { + var val = obj; + var idx = 0; + while (idx < paths.length) { + if (val == null) { + return; + } + val = val[paths[idx]]; + idx += 1; + } + return val; +}); +/* harmony default export */ __webpack_exports__["default"] = (path); + +/***/ }), + +/***/ "./node_modules/ramda/es/pathEq.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/pathEq.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); +/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); + + + + +/** + * Determines whether a nested path on an object has a specific value, in + * [`R.equals`](#equals) terms. Most likely used to filter a list. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category Relation + * @typedefn Idx = String | Int + * @sig [Idx] -> a -> {a} -> Boolean + * @param {Array} path The path of the nested property to use + * @param {*} val The value to compare the nested property with + * @param {Object} obj The object to check the nested property in + * @return {Boolean} `true` if the value equals the nested object property, + * `false` otherwise. + * @example + * + * const user1 = { address: { zipCode: 90210 } }; + * const user2 = { address: { zipCode: 55555 } }; + * const user3 = { name: 'Bob' }; + * const users = [ user1, user2, user3 ]; + * const isFamous = R.pathEq(['address', 'zipCode'], 90210); + * R.filter(isFamous, users); //=> [ user1 ] + */ +var pathEq = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pathEq(_path, val, obj) { + return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_path_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_path, obj), val); +}); +/* harmony default export */ __webpack_exports__["default"] = (pathEq); + +/***/ }), + +/***/ "./node_modules/ramda/es/pathOr.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/pathOr.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _defaultTo_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./defaultTo.js */ "./node_modules/ramda/es/defaultTo.js"); +/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); + + + + +/** + * If the given, non-null object has a value at the given path, returns the + * value at that path. Otherwise returns the provided default value. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Object + * @typedefn Idx = String | Int + * @sig a -> [Idx] -> {a} -> a + * @param {*} d The default value. + * @param {Array} p The path to use. + * @param {Object} obj The object to retrieve the nested property from. + * @return {*} The data at `path` of the supplied object or the default value. + * @example + * + * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2 + * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A" + */ +var pathOr = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pathOr(d, p, obj) { + return Object(_defaultTo_js__WEBPACK_IMPORTED_MODULE_1__["default"])(d, Object(_path_js__WEBPACK_IMPORTED_MODULE_2__["default"])(p, obj)); +}); +/* harmony default export */ __webpack_exports__["default"] = (pathOr); + +/***/ }), + +/***/ "./node_modules/ramda/es/pathSatisfies.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/pathSatisfies.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); + + + +/** + * Returns `true` if the specified object property at given path satisfies the + * given predicate; `false` otherwise. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Logic + * @typedefn Idx = String | Int + * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean + * @param {Function} pred + * @param {Array} propPath + * @param {*} obj + * @return {Boolean} + * @see R.propSatisfies, R.path + * @example + * + * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true + */ +var pathSatisfies = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pathSatisfies(pred, propPath, obj) { + return propPath.length > 0 && pred(Object(_path_js__WEBPACK_IMPORTED_MODULE_1__["default"])(propPath, obj)); +}); +/* harmony default export */ __webpack_exports__["default"] = (pathSatisfies); + +/***/ }), + +/***/ "./node_modules/ramda/es/pick.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/pick.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns a partial copy of an object containing only the keys specified. If + * the key does not exist, the property is ignored. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.omit, R.props + * @example + * + * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1} + */ +var pick = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pick(names, obj) { + var result = {}; + var idx = 0; + while (idx < names.length) { + if (names[idx] in obj) { + result[names[idx]] = obj[names[idx]]; + } + idx += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (pick); + +/***/ }), + +/***/ "./node_modules/ramda/es/pickAll.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/pickAll.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Similar to `pick` except that this one includes a `key: undefined` pair for + * properties that don't exist. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> {k: v} + * @param {Array} names an array of String property names to copy onto a new object + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties from `names` on it. + * @see R.pick + * @example + * + * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4} + * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined} + */ +var pickAll = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pickAll(names, obj) { + var result = {}; + var idx = 0; + var len = names.length; + while (idx < len) { + var name = names[idx]; + result[name] = obj[name]; + idx += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (pickAll); + +/***/ }), + +/***/ "./node_modules/ramda/es/pickBy.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/pickBy.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns a partial copy of an object containing only the keys that satisfy + * the supplied predicate. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Object + * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v} + * @param {Function} pred A predicate to determine whether or not a key + * should be included on the output object. + * @param {Object} obj The object to copy from + * @return {Object} A new object with only properties that satisfy `pred` + * on it. + * @see R.pick, R.filter + * @example + * + * const isUpperCase = (val, key) => key.toUpperCase() === key; + * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4} + */ +var pickBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pickBy(test, obj) { + var result = {}; + for (var prop in obj) { + if (test(obj[prop], prop, obj)) { + result[prop] = obj[prop]; + } + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (pickBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/pipe.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/pipe.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return pipe; }); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_pipe_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_pipe.js */ "./node_modules/ramda/es/internal/_pipe.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); +/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); + + + + + +/** + * Performs left-to-right function composition. The leftmost function may have + * any arity; the remaining functions must be unary. + * + * In some libraries this function is named `sequence`. + * + * **Note:** The result of pipe is not automatically curried. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z) + * @param {...Function} functions + * @return {Function} + * @see R.compose + * @example + * + * const f = R.pipe(Math.pow, R.negate, R.inc); + * + * f(3, 4); // -(3^4) + 1 + * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b))) + */ +function pipe() { + if (arguments.length === 0) { + throw new Error('pipe requires at least one argument'); + } + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments[0].length, Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_pipe_js__WEBPACK_IMPORTED_MODULE_1__["default"], arguments[0], Object(_tail_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arguments))); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/pipeK.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/pipeK.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return pipeK; }); +/* harmony import */ var _composeK_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./composeK.js */ "./node_modules/ramda/es/composeK.js"); +/* harmony import */ var _reverse_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/es/reverse.js"); + + + +/** + * Returns the left-to-right Kleisli composition of the provided functions, + * each of which must return a value of a type supported by [`chain`](#chain). + * + * `R.pipeK(f, g, h)` is equivalent to `R.pipe(f, R.chain(g), R.chain(h))`. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Function + * @sig Chain m => ((a -> m b), (b -> m c), ..., (y -> m z)) -> (a -> m z) + * @param {...Function} + * @return {Function} + * @see R.composeK + * @deprecated since v0.26.0 + * @example + * + * // parseJson :: String -> Maybe * + * // get :: String -> Object -> Maybe * + * + * // getStateCode :: Maybe String -> Maybe String + * const getStateCode = R.pipeK( + * parseJson, + * get('user'), + * get('address'), + * get('state'), + * R.compose(Maybe.of, R.toUpper) + * ); + * + * getStateCode('{"user":{"address":{"state":"ny"}}}'); + * //=> Just('NY') + * getStateCode('[Invalid JSON]'); + * //=> Nothing() + * @symb R.pipeK(f, g, h)(a) = R.chain(h, R.chain(g, f(a))) + */ +function pipeK() { + if (arguments.length === 0) { + throw new Error('pipeK requires at least one argument'); + } + return _composeK_js__WEBPACK_IMPORTED_MODULE_0__["default"].apply(this, Object(_reverse_js__WEBPACK_IMPORTED_MODULE_1__["default"])(arguments)); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/pipeP.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/pipeP.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return pipeP; }); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_pipeP_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_pipeP.js */ "./node_modules/ramda/es/internal/_pipeP.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); +/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); + + + + + +/** + * Performs left-to-right composition of one or more Promise-returning + * functions. The leftmost function may have any arity; the remaining functions + * must be unary. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category Function + * @sig ((a -> Promise b), (b -> Promise c), ..., (y -> Promise z)) -> (a -> Promise z) + * @param {...Function} functions + * @return {Function} + * @see R.composeP + * @deprecated since v0.26.0 + * @example + * + * // followersForUser :: String -> Promise [User] + * const followersForUser = R.pipeP(db.getUserById, db.getFollowers); + */ +function pipeP() { + if (arguments.length === 0) { + throw new Error('pipeP requires at least one argument'); + } + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(arguments[0].length, Object(_reduce_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_pipeP_js__WEBPACK_IMPORTED_MODULE_1__["default"], arguments[0], Object(_tail_js__WEBPACK_IMPORTED_MODULE_3__["default"])(arguments))); +} + +/***/ }), + +/***/ "./node_modules/ramda/es/pipeWith.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/pipeWith.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _head_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./head.js */ "./node_modules/ramda/es/head.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _tail_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/es/tail.js"); +/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); + + + + + + + +/** + * Performs left-to-right function composition using transforming function. The leftmost function may have + * any arity; the remaining functions must be unary. + * + * **Note:** The result of pipeWith is not automatically curried. + * + * @func + * @memberOf R + * @category Function + * @sig ((* -> *), [((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)]) -> ((a, b, ..., n) -> z) + * @param {...Function} functions + * @return {Function} + * @see R.composeWith, R.pipe + * @example + * + * const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res)); + * const f = pipeWhileNotNil([Math.pow, R.negate, R.inc]) + * + * f(3, 4); // -(3^4) + 1 + * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, f(g, ...args))) + */ +var pipeWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function pipeWith(xf, list) { + if (list.length <= 0) { + return _identity_js__WEBPACK_IMPORTED_MODULE_5__["default"]; + } + + var headList = Object(_head_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list); + var tailList = Object(_tail_js__WEBPACK_IMPORTED_MODULE_4__["default"])(list); + + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(headList.length, function () { + return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(function (result, f) { + return xf.call(this, f, result); + }, headList.apply(this, arguments), tailList); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (pipeWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/pluck.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/pluck.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); +/* harmony import */ var _prop_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./prop.js */ "./node_modules/ramda/es/prop.js"); + + + + +/** + * Returns a new list by plucking the same named property off all objects in + * the list supplied. + * + * `pluck` will work on + * any [functor](https://github.com/fantasyland/fantasy-land#functor) in + * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Functor f => k -> f {k: v} -> f v + * @param {Number|String} key The key name to pluck off of each object. + * @param {Array} f The array or functor to consider. + * @return {Array} The list of values for the given key. + * @see R.props + * @example + * + * var getAges = R.pluck('age'); + * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27] + * + * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3] + * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5} + * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5] + * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5] + */ +var pluck = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function pluck(p, list) { + return Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_prop_js__WEBPACK_IMPORTED_MODULE_2__["default"])(p), list); +}); +/* harmony default export */ __webpack_exports__["default"] = (pluck); + +/***/ }), + +/***/ "./node_modules/ramda/es/prepend.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/prepend.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Returns a new list with the given element at the front, followed by the + * contents of the list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig a -> [a] -> [a] + * @param {*} el The item to add to the head of the output list. + * @param {Array} list The array to add to the tail of the output list. + * @return {Array} A new array. + * @see R.append + * @example + * + * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum'] + */ +var prepend = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function prepend(el, list) { + return Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])([el], list); +}); +/* harmony default export */ __webpack_exports__["default"] = (prepend); + +/***/ }), + +/***/ "./node_modules/ramda/es/product.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/product.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _multiply_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./multiply.js */ "./node_modules/ramda/es/multiply.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); + + + +/** + * Multiplies together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The product of all the numbers in the list. + * @see R.reduce + * @example + * + * R.product([2,4,6,8,100,1]); //=> 38400 + */ +var product = /*#__PURE__*/Object(_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_multiply_js__WEBPACK_IMPORTED_MODULE_0__["default"], 1); +/* harmony default export */ __webpack_exports__["default"] = (product); + +/***/ }), + +/***/ "./node_modules/ramda/es/project.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/project.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/es/internal/_map.js"); +/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); +/* harmony import */ var _pickAll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./pickAll.js */ "./node_modules/ramda/es/pickAll.js"); +/* harmony import */ var _useWith_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./useWith.js */ "./node_modules/ramda/es/useWith.js"); + + + + + +/** + * Reasonable analog to SQL `select` statement. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @category Relation + * @sig [k] -> [{k: v}] -> [{k: v}] + * @param {Array} props The property names to project + * @param {Array} objs The objects to query + * @return {Array} An array of objects with just the `props` properties. + * @example + * + * const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2}; + * const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7}; + * const kids = [abby, fred]; + * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}] + */ +var project = /*#__PURE__*/Object(_useWith_js__WEBPACK_IMPORTED_MODULE_3__["default"])(_internal_map_js__WEBPACK_IMPORTED_MODULE_0__["default"], [_pickAll_js__WEBPACK_IMPORTED_MODULE_2__["default"], _identity_js__WEBPACK_IMPORTED_MODULE_1__["default"]]); // passing `identity` gives correct arity +/* harmony default export */ __webpack_exports__["default"] = (project); + +/***/ }), + +/***/ "./node_modules/ramda/es/prop.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/prop.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _path_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/es/path.js"); + + + +/** + * Returns a function that when supplied an object returns the indicated + * property of that object, if it exists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig s -> {s: a} -> a | Undefined + * @param {String} p The property name + * @param {Object} obj The object to query + * @return {*} The value at `obj.p`. + * @see R.path + * @example + * + * R.prop('x', {x: 100}); //=> 100 + * R.prop('x', {}); //=> undefined + * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4 + */ + +var prop = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function prop(p, obj) { + return Object(_path_js__WEBPACK_IMPORTED_MODULE_1__["default"])([p], obj); +}); +/* harmony default export */ __webpack_exports__["default"] = (prop); + +/***/ }), + +/***/ "./node_modules/ramda/es/propEq.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/propEq.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); + + + +/** + * Returns `true` if the specified object property is equal, in + * [`R.equals`](#equals) terms, to the given value; `false` otherwise. + * You can test multiple properties with [`R.whereEq`](#whereEq). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig String -> a -> Object -> Boolean + * @param {String} name + * @param {*} val + * @param {*} obj + * @return {Boolean} + * @see R.whereEq, R.propSatisfies, R.equals + * @example + * + * const abby = {name: 'Abby', age: 7, hair: 'blond'}; + * const fred = {name: 'Fred', age: 12, hair: 'brown'}; + * const rusty = {name: 'Rusty', age: 10, hair: 'brown'}; + * const alois = {name: 'Alois', age: 15, disposition: 'surly'}; + * const kids = [abby, fred, rusty, alois]; + * const hasBrownHair = R.propEq('hair', 'brown'); + * R.filter(hasBrownHair, kids); //=> [fred, rusty] + */ +var propEq = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propEq(name, val, obj) { + return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, obj[name]); +}); +/* harmony default export */ __webpack_exports__["default"] = (propEq); + +/***/ }), + +/***/ "./node_modules/ramda/es/propIs.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/propIs.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _is_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./is.js */ "./node_modules/ramda/es/is.js"); + + + +/** + * Returns `true` if the specified object property is of the given type; + * `false` otherwise. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Type + * @sig Type -> String -> Object -> Boolean + * @param {Function} type + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.is, R.propSatisfies + * @example + * + * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true + * R.propIs(Number, 'x', {x: 'foo'}); //=> false + * R.propIs(Number, 'x', {}); //=> false + */ +var propIs = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propIs(type, name, obj) { + return Object(_is_js__WEBPACK_IMPORTED_MODULE_1__["default"])(type, obj[name]); +}); +/* harmony default export */ __webpack_exports__["default"] = (propIs); + +/***/ }), + +/***/ "./node_modules/ramda/es/propOr.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/propOr.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _pathOr_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./pathOr.js */ "./node_modules/ramda/es/pathOr.js"); + + + +/** + * If the given, non-null object has an own property with the specified name, + * returns the value of that property. Otherwise returns the provided default + * value. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category Object + * @sig a -> String -> Object -> a + * @param {*} val The default value. + * @param {String} p The name of the property to return. + * @param {Object} obj The object to query. + * @return {*} The value of given property of the supplied object or the default value. + * @example + * + * const alice = { + * name: 'ALICE', + * age: 101 + * }; + * const favorite = R.prop('favoriteLibrary'); + * const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary'); + * + * favorite(alice); //=> undefined + * favoriteWithDefault(alice); //=> 'Ramda' + */ +var propOr = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propOr(val, p, obj) { + return Object(_pathOr_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, [p], obj); +}); +/* harmony default export */ __webpack_exports__["default"] = (propOr); + +/***/ }), + +/***/ "./node_modules/ramda/es/propSatisfies.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/propSatisfies.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Returns `true` if the specified object property satisfies the given + * predicate; `false` otherwise. You can test multiple properties with + * [`R.where`](#where). + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Logic + * @sig (a -> Boolean) -> String -> {String: a} -> Boolean + * @param {Function} pred + * @param {String} name + * @param {*} obj + * @return {Boolean} + * @see R.where, R.propEq, R.propIs + * @example + * + * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true + */ +var propSatisfies = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function propSatisfies(pred, name, obj) { + return pred(obj[name]); +}); +/* harmony default export */ __webpack_exports__["default"] = (propSatisfies); + +/***/ }), + +/***/ "./node_modules/ramda/es/props.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/props.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Acts as multiple `prop`: array of keys in, array of values out. Preserves + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig [k] -> {k: v} -> [v] + * @param {Array} ps The property names to fetch + * @param {Object} obj The object to query + * @return {Array} The corresponding values or partially applied function. + * @example + * + * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2] + * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2] + * + * const fullName = R.compose(R.join(' '), R.props(['first', 'last'])); + * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth' + */ +var props = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function props(ps, obj) { + var len = ps.length; + var out = []; + var idx = 0; + + while (idx < len) { + out[idx] = obj[ps[idx]]; + idx += 1; + } + + return out; +}); +/* harmony default export */ __webpack_exports__["default"] = (props); + +/***/ }), + +/***/ "./node_modules/ramda/es/range.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/range.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isNumber.js */ "./node_modules/ramda/es/internal/_isNumber.js"); + + + +/** + * Returns a list of numbers from `from` (inclusive) to `to` (exclusive). + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> Number -> [Number] + * @param {Number} from The first number in the list. + * @param {Number} to One more than the last number in the list. + * @return {Array} The list of numbers in the set `[a, b)`. + * @example + * + * R.range(1, 5); //=> [1, 2, 3, 4] + * R.range(50, 53); //=> [50, 51, 52] + */ +var range = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function range(from, to) { + if (!(Object(_internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__["default"])(from) && Object(_internal_isNumber_js__WEBPACK_IMPORTED_MODULE_1__["default"])(to))) { + throw new TypeError('Both arguments to range must be numbers'); + } + var result = []; + var n = from; + while (n < to) { + result.push(n); + n += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (range); + +/***/ }), + +/***/ "./node_modules/ramda/es/reduce.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/reduce.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); + + + +/** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It may use + * [`R.reduced`](#reduced) to shortcut the iteration. + * + * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function + * is *(value, acc)*. + * + * Note: `R.reduce` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduce` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description + * + * Dispatches to the `reduce` method of the third argument, if present. When + * doing so, it is up to the user to handle the [`R.reduced`](#reduced) + * shortcuting, as this is not implemented by `reduce`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> a) -> a -> [b] -> a + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduced, R.addIndex, R.reduceRight + * @example + * + * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10 + * // - -10 + * // / \ / \ + * // - 4 -6 4 + * // / \ / \ + * // - 3 ==> -3 3 + * // / \ / \ + * // - 2 -1 2 + * // / \ / \ + * // 0 1 0 1 + * + * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d) + */ +var reduce = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (reduce); + +/***/ }), + +/***/ "./node_modules/ramda/es/reduceBy.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/reduceBy.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _internal_xreduceBy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/_xreduceBy.js */ "./node_modules/ramda/es/internal/_xreduceBy.js"); + + + + + + +/** + * Groups the elements of the list according to the result of calling + * the String-returning function `keyFn` on each element and reduces the elements + * of each group to a single value via the reducer function `valueFn`. + * + * This function is basically a more general [`groupBy`](#groupBy) function. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category List + * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a} + * @param {Function} valueFn The function that reduces the elements of each group to a single + * value. Receives two values, accumulator for a particular group and the current element. + * @param {*} acc The (initial) accumulator value for each group. + * @param {Function} keyFn The function that maps the list's element into a key. + * @param {Array} list The array to group. + * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of + * `valueFn` for elements which produced that key when passed to `keyFn`. + * @see R.groupBy, R.reduce + * @example + * + * const groupNames = (acc, {name}) => acc.concat(name) + * const toGrade = ({score}) => + * score < 65 ? 'F' : + * score < 70 ? 'D' : + * score < 80 ? 'C' : + * score < 90 ? 'B' : 'A' + * + * var students = [ + * {name: 'Abby', score: 83}, + * {name: 'Bart', score: 62}, + * {name: 'Curt', score: 88}, + * {name: 'Dora', score: 92}, + * ] + * + * reduceBy(groupNames, [], toGrade, students) + * //=> {"A": ["Dora"], "B": ["Abby", "Curt"], "F": ["Bart"]} + */ +var reduceBy = /*#__PURE__*/Object(_internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(4, [], /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xreduceBy_js__WEBPACK_IMPORTED_MODULE_4__["default"], function reduceBy(valueFn, valueAcc, keyFn, list) { + return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_3__["default"])(function (acc, elt) { + var key = keyFn(elt); + acc[key] = valueFn(Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_2__["default"])(key, acc) ? acc[key] : valueAcc, elt); + return acc; + }, {}, list); +})); +/* harmony default export */ __webpack_exports__["default"] = (reduceBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/reduceRight.js": +/*!**********************************************!*\ + !*** ./node_modules/ramda/es/reduceRight.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Returns a single item by iterating through the list, successively calling + * the iterator function and passing it an accumulator value and the current + * value from the array, and then passing the result to the next call. + * + * Similar to [`reduce`](#reduce), except moves through the input list from the + * right to the left. + * + * The iterator function receives two values: *(value, acc)*, while the arguments' + * order of `reduce`'s iterator function is *(acc, value)*. + * + * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse + * arrays), unlike the native `Array.prototype.reduceRight` method. For more details + * on this behavior, see: + * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> b) -> b -> [a] -> b + * @param {Function} fn The iterator function. Receives two values, the current element from the array + * and the accumulator. + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.addIndex + * @example + * + * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2 + * // - -2 + * // / \ / \ + * // 1 - 1 3 + * // / \ / \ + * // 2 - ==> 2 -1 + * // / \ / \ + * // 3 - 3 4 + * // / \ / \ + * // 4 0 4 0 + * + * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a))) + */ +var reduceRight = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function reduceRight(fn, acc, list) { + var idx = list.length - 1; + while (idx >= 0) { + acc = fn(list[idx], acc); + idx -= 1; + } + return acc; +}); +/* harmony default export */ __webpack_exports__["default"] = (reduceRight); + +/***/ }), + +/***/ "./node_modules/ramda/es/reduceWhile.js": +/*!**********************************************!*\ + !*** ./node_modules/ramda/es/reduceWhile.js ***! + \**********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/es/internal/_curryN.js"); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _internal_reduced_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); + + + + +/** + * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating + * through the list, successively calling the iterator function. `reduceWhile` + * also takes a predicate that is evaluated before each step. If the predicate + * returns `false`, it "short-circuits" the iteration and returns the current + * value of the accumulator. + * + * @func + * @memberOf R + * @since v0.22.0 + * @category List + * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} pred The predicate. It is passed the accumulator and the + * current element. + * @param {Function} fn The iterator function. Receives two values, the + * accumulator and the current element. + * @param {*} a The accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced + * @example + * + * const isOdd = (acc, x) => x % 2 === 1; + * const xs = [1, 3, 5, 60, 777, 800]; + * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9 + * + * const ys = [2, 4, 6] + * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111 + */ +var reduceWhile = /*#__PURE__*/Object(_internal_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(4, [], function _reduceWhile(pred, fn, a, list) { + return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (acc, x) { + return pred(acc, x) ? fn(acc, x) : Object(_internal_reduced_js__WEBPACK_IMPORTED_MODULE_2__["default"])(acc); + }, a, list); +}); +/* harmony default export */ __webpack_exports__["default"] = (reduceWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/reduced.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/reduced.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_reduced_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_reduced.js */ "./node_modules/ramda/es/internal/_reduced.js"); + + + +/** + * Returns a value wrapped to indicate that it is the final value of the reduce + * and transduce functions. The returned value should be considered a black + * box: the internal structure is not guaranteed to be stable. + * + * Note: this optimization is only available to the below functions: + * - [`reduce`](#reduce) + * - [`reduceWhile`](#reduceWhile) + * - [`transduce`](#transduce) + * + * @func + * @memberOf R + * @since v0.15.0 + * @category List + * @sig a -> * + * @param {*} x The final value of the reduce. + * @return {*} The wrapped value. + * @see R.reduce, R.reduceWhile, R.transduce + * @example + * + * R.reduce( + * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item), + * [], + * [1, 2, 3, 4, 5]) // [1, 2, 3] + */ +var reduced = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(_internal_reduced_js__WEBPACK_IMPORTED_MODULE_1__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (reduced); + +/***/ }), + +/***/ "./node_modules/ramda/es/reject.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/reject.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_complement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_complement.js */ "./node_modules/ramda/es/internal/_complement.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _filter_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./filter.js */ "./node_modules/ramda/es/filter.js"); + + + + +/** + * The complement of [`filter`](#filter). + * + * Acts as a transducer if a transformer is given in list position. Filterable + * objects include plain objects or any object that has a filter method such + * as `Array`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Filterable f => (a -> Boolean) -> f a -> f a + * @param {Function} pred + * @param {Array} filterable + * @return {Array} + * @see R.filter, R.transduce, R.addIndex + * @example + * + * const isOdd = (n) => n % 2 === 1; + * + * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4] + * + * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4} + */ +var reject = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function reject(pred, filterable) { + return Object(_filter_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_internal_complement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred), filterable); +}); +/* harmony default export */ __webpack_exports__["default"] = (reject); + +/***/ }), + +/***/ "./node_modules/ramda/es/remove.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/remove.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Removes the sub-list of `list` starting at index `start` and containing + * `count` elements. _Note that this is not destructive_: it returns a copy of + * the list with the changes. + * No lists have been harmed in the application of this function. + * + * @func + * @memberOf R + * @since v0.2.2 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @param {Number} start The position to start removing elements + * @param {Number} count The number of elements to remove + * @param {Array} list The list to remove from + * @return {Array} A new Array with `count` elements from `start` removed. + * @see R.without + * @example + * + * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8] + */ +var remove = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function remove(start, count, list) { + var result = Array.prototype.slice.call(list, 0); + result.splice(start, count); + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (remove); + +/***/ }), + +/***/ "./node_modules/ramda/es/repeat.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/repeat.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); +/* harmony import */ var _times_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./times.js */ "./node_modules/ramda/es/times.js"); + + + + +/** + * Returns a fixed list of size `n` containing a specified identical value. + * + * @func + * @memberOf R + * @since v0.1.1 + * @category List + * @sig a -> n -> [a] + * @param {*} value The value to repeat. + * @param {Number} n The desired size of the output list. + * @return {Array} A new array containing `n` `value`s. + * @see R.times + * @example + * + * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi'] + * + * const obj = {}; + * const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}] + * repeatedObjs[0] === repeatedObjs[1]; //=> true + * @symb R.repeat(a, 0) = [] + * @symb R.repeat(a, 1) = [a] + * @symb R.repeat(a, 2) = [a, a] + */ +var repeat = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function repeat(value, n) { + return Object(_times_js__WEBPACK_IMPORTED_MODULE_2__["default"])(Object(_always_js__WEBPACK_IMPORTED_MODULE_1__["default"])(value), n); +}); +/* harmony default export */ __webpack_exports__["default"] = (repeat); + +/***/ }), + +/***/ "./node_modules/ramda/es/replace.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/replace.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Replace a substring or regex match in a string with a replacement. + * + * The first two parameters correspond to the parameters of the + * `String.prototype.replace()` function, so the second parameter can also be a + * function. + * + * @func + * @memberOf R + * @since v0.7.0 + * @category String + * @sig RegExp|String -> String -> String -> String + * @param {RegExp|String} pattern A regular expression or a substring to match. + * @param {String} replacement The string to replace the matches with. + * @param {String} str The String to do the search and replacement in. + * @return {String} The result. + * @example + * + * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo' + * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo' + * + * // Use the "g" (global) flag to replace all occurrences: + * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar' + */ +var replace = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function replace(regex, replacement, str) { + return str.replace(regex, replacement); +}); +/* harmony default export */ __webpack_exports__["default"] = (replace); + +/***/ }), + +/***/ "./node_modules/ramda/es/reverse.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/reverse.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_isString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/es/internal/_isString.js"); + + + +/** + * Returns a new list or string with the elements or characters in reverse + * order. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {Array|String} list + * @return {Array|String} + * @example + * + * R.reverse([1, 2, 3]); //=> [3, 2, 1] + * R.reverse([1, 2]); //=> [2, 1] + * R.reverse([1]); //=> [1] + * R.reverse([]); //=> [] + * + * R.reverse('abc'); //=> 'cba' + * R.reverse('ab'); //=> 'ba' + * R.reverse('a'); //=> 'a' + * R.reverse(''); //=> '' + */ +var reverse = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function reverse(list) { + return Object(_internal_isString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse(); +}); +/* harmony default export */ __webpack_exports__["default"] = (reverse); + +/***/ }), + +/***/ "./node_modules/ramda/es/scan.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/scan.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Scan is similar to [`reduce`](#reduce), but returns a list of successively + * reduced values from the left + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig ((a, b) -> a) -> a -> [b] -> [a] + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array + * @param {*} acc The accumulator value. + * @param {Array} list The list to iterate over. + * @return {Array} A list of all intermediately reduced values. + * @see R.reduce, R.mapAccum + * @example + * + * const numbers = [1, 2, 3, 4]; + * const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24] + * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)] + */ +var scan = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function scan(fn, acc, list) { + var idx = 0; + var len = list.length; + var result = [acc]; + while (idx < len) { + acc = fn(acc, list[idx]); + result[idx + 1] = acc; + idx += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (scan); + +/***/ }), + +/***/ "./node_modules/ramda/es/sequence.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/sequence.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _ap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ap.js */ "./node_modules/ramda/es/ap.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); +/* harmony import */ var _prepend_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./prepend.js */ "./node_modules/ramda/es/prepend.js"); +/* harmony import */ var _reduceRight_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./reduceRight.js */ "./node_modules/ramda/es/reduceRight.js"); + + + + + + +/** + * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable) + * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an + * Applicative of Traversable. + * + * Dispatches to the `sequence` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a) + * @param {Function} of + * @param {*} traversable + * @return {*} + * @see R.traverse + * @example + * + * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3]) + * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing() + * + * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)] + * R.sequence(R.of, Nothing()); //=> [Nothing()] + */ +var sequence = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sequence(of, traversable) { + return typeof traversable.sequence === 'function' ? traversable.sequence(of) : Object(_reduceRight_js__WEBPACK_IMPORTED_MODULE_4__["default"])(function (x, acc) { + return Object(_ap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_prepend_js__WEBPACK_IMPORTED_MODULE_3__["default"], x), acc); + }, of([]), traversable); +}); +/* harmony default export */ __webpack_exports__["default"] = (sequence); + +/***/ }), + +/***/ "./node_modules/ramda/es/set.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/set.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); +/* harmony import */ var _over_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./over.js */ "./node_modules/ramda/es/over.js"); + + + + +/** + * Returns the result of "setting" the portion of the given data structure + * focused by the given lens to the given value. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> a -> s -> s + * @param {Lens} lens + * @param {*} v + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * const xLens = R.lensProp('x'); + * + * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2} + * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2} + */ +var set = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function set(lens, v, x) { + return Object(_over_js__WEBPACK_IMPORTED_MODULE_2__["default"])(lens, Object(_always_js__WEBPACK_IMPORTED_MODULE_1__["default"])(v), x); +}); +/* harmony default export */ __webpack_exports__["default"] = (set); + +/***/ }), + +/***/ "./node_modules/ramda/es/slice.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/slice.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + + +/** + * Returns the elements of the given list or string (or object with a `slice` + * method) from `fromIndex` (inclusive) to `toIndex` (exclusive). + * + * Dispatches to the `slice` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.1.4 + * @category List + * @sig Number -> Number -> [a] -> [a] + * @sig Number -> Number -> String -> String + * @param {Number} fromIndex The start index (inclusive). + * @param {Number} toIndex The end index (exclusive). + * @param {*} list + * @return {*} + * @example + * + * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd'] + * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c'] + * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c'] + * R.slice(0, 3, 'ramda'); //=> 'ram' + */ +var slice = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('slice', function slice(fromIndex, toIndex, list) { + return Array.prototype.slice.call(list, fromIndex, toIndex); +})); +/* harmony default export */ __webpack_exports__["default"] = (slice); + +/***/ }), + +/***/ "./node_modules/ramda/es/sort.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/sort.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Returns a copy of the list, sorted according to the comparator function, + * which should accept two values at a time and return a negative number if the + * first value is smaller, a positive number if it's larger, and zero if they + * are equal. Please note that this is a **copy** of the list. It does not + * modify the original. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, a) -> Number) -> [a] -> [a] + * @param {Function} comparator A sorting function :: a -> b -> Int + * @param {Array} list The list to sort + * @return {Array} a new array with its elements sorted by the comparator function. + * @example + * + * const diff = function(a, b) { return a - b; }; + * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7] + */ +var sort = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sort(comparator, list) { + return Array.prototype.slice.call(list, 0).sort(comparator); +}); +/* harmony default export */ __webpack_exports__["default"] = (sort); + +/***/ }), + +/***/ "./node_modules/ramda/es/sortBy.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/sortBy.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Sorts the list according to the supplied function. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig Ord b => (a -> b) -> [a] -> [a] + * @param {Function} fn + * @param {Array} list The list to sort. + * @return {Array} A new list sorted by the keys generated by `fn`. + * @example + * + * const sortByFirstItem = R.sortBy(R.prop(0)); + * const pairs = [[-1, 1], [-2, 2], [-3, 3]]; + * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]] + * + * const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name'))); + * const alice = { + * name: 'ALICE', + * age: 101 + * }; + * const bob = { + * name: 'Bob', + * age: -10 + * }; + * const clara = { + * name: 'clara', + * age: 314.159 + * }; + * const people = [clara, bob, alice]; + * sortByNameCaseInsensitive(people); //=> [alice, bob, clara] + */ +var sortBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sortBy(fn, list) { + return Array.prototype.slice.call(list, 0).sort(function (a, b) { + var aa = fn(a); + var bb = fn(b); + return aa < bb ? -1 : aa > bb ? 1 : 0; + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (sortBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/sortWith.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/sortWith.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Sorts a list according to a list of comparators. + * + * @func + * @memberOf R + * @since v0.23.0 + * @category Relation + * @sig [(a, a) -> Number] -> [a] -> [a] + * @param {Array} functions A list of comparator functions. + * @param {Array} list The list to sort. + * @return {Array} A new list sorted according to the comarator functions. + * @example + * + * const alice = { + * name: 'alice', + * age: 40 + * }; + * const bob = { + * name: 'bob', + * age: 30 + * }; + * const clara = { + * name: 'clara', + * age: 40 + * }; + * const people = [clara, bob, alice]; + * const ageNameSort = R.sortWith([ + * R.descend(R.prop('age')), + * R.ascend(R.prop('name')) + * ]); + * ageNameSort(people); //=> [alice, clara, bob] + */ +var sortWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function sortWith(fns, list) { + return Array.prototype.slice.call(list, 0).sort(function (a, b) { + var result = 0; + var i = 0; + while (result === 0 && i < fns.length) { + result = fns[i](a, b); + i += 1; + } + return result; + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (sortWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/split.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/split.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); + + +/** + * Splits a string into an array of strings based on the given + * separator. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category String + * @sig (String | RegExp) -> String -> [String] + * @param {String|RegExp} sep The pattern. + * @param {String} str The string to separate into an array. + * @return {Array} The array of strings from `str` separated by `str`. + * @see R.join + * @example + * + * const pathComponents = R.split('/'); + * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node'] + * + * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd'] + */ +var split = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(1, 'split'); +/* harmony default export */ __webpack_exports__["default"] = (split); + +/***/ }), + +/***/ "./node_modules/ramda/es/splitAt.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/splitAt.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _length_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./length.js */ "./node_modules/ramda/es/length.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + + +/** + * Splits a given list or string at a given index. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig Number -> [a] -> [[a], [a]] + * @sig Number -> String -> [String, String] + * @param {Number} index The index where the array/string is split. + * @param {Array|String} array The array/string to be split. + * @return {Array} + * @example + * + * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]] + * R.splitAt(5, 'hello world'); //=> ['hello', ' world'] + * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r'] + */ +var splitAt = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function splitAt(index, array) { + return [Object(_slice_js__WEBPACK_IMPORTED_MODULE_2__["default"])(0, index, array), Object(_slice_js__WEBPACK_IMPORTED_MODULE_2__["default"])(index, Object(_length_js__WEBPACK_IMPORTED_MODULE_1__["default"])(array), array)]; +}); +/* harmony default export */ __webpack_exports__["default"] = (splitAt); + +/***/ }), + +/***/ "./node_modules/ramda/es/splitEvery.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/splitEvery.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + +/** + * Splits a collection into slices of the specified length. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [[a]] + * @sig Number -> String -> [String] + * @param {Number} n + * @param {Array} list + * @return {Array} + * @example + * + * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]] + * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz'] + */ +var splitEvery = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function splitEvery(n, list) { + if (n <= 0) { + throw new Error('First argument to splitEvery must be a positive integer'); + } + var result = []; + var idx = 0; + while (idx < list.length) { + result.push(Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx, idx += n, list)); + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (splitEvery); + +/***/ }), + +/***/ "./node_modules/ramda/es/splitWhen.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/splitWhen.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Takes a list and a predicate and returns a pair of lists with the following properties: + * + * - the result of concatenating the two output lists is equivalent to the input list; + * - none of the elements of the first output list satisfies the predicate; and + * - if the second output list is non-empty, its first element satisfies the predicate. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [[a], [a]] + * @param {Function} pred The predicate that determines where the array is split. + * @param {Array} list The array to be split. + * @return {Array} + * @example + * + * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]] + */ +var splitWhen = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function splitWhen(pred, list) { + var idx = 0; + var len = list.length; + var prefix = []; + + while (idx < len && !pred(list[idx])) { + prefix.push(list[idx]); + idx += 1; + } + + return [prefix, Array.prototype.slice.call(list, idx)]; +}); +/* harmony default export */ __webpack_exports__["default"] = (splitWhen); + +/***/ }), + +/***/ "./node_modules/ramda/es/startsWith.js": +/*!*********************************************!*\ + !*** ./node_modules/ramda/es/startsWith.js ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); +/* harmony import */ var _take_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./take.js */ "./node_modules/ramda/es/take.js"); + + + + +/** + * Checks if a list starts with the provided sublist. + * + * Similarly, checks if a string starts with the provided substring. + * + * @func + * @memberOf R + * @since v0.24.0 + * @category List + * @sig [a] -> [a] -> Boolean + * @sig String -> String -> Boolean + * @param {*} prefix + * @param {*} list + * @return {Boolean} + * @see R.endsWith + * @example + * + * R.startsWith('a', 'abc') //=> true + * R.startsWith('b', 'abc') //=> false + * R.startsWith(['a'], ['a', 'b', 'c']) //=> true + * R.startsWith(['b'], ['a', 'b', 'c']) //=> false + */ +var startsWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function (prefix, list) { + return Object(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_take_js__WEBPACK_IMPORTED_MODULE_2__["default"])(prefix.length, list), prefix); +}); +/* harmony default export */ __webpack_exports__["default"] = (startsWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/subtract.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/subtract.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Subtracts its second argument from its first argument. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig Number -> Number -> Number + * @param {Number} a The first value. + * @param {Number} b The second value. + * @return {Number} The result of `a - b`. + * @see R.add + * @example + * + * R.subtract(10, 8); //=> 2 + * + * const minus5 = R.subtract(R.__, 5); + * minus5(17); //=> 12 + * + * const complementaryAngle = R.subtract(90); + * complementaryAngle(30); //=> 60 + * complementaryAngle(72); //=> 18 + */ +var subtract = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function subtract(a, b) { + return Number(a) - Number(b); +}); +/* harmony default export */ __webpack_exports__["default"] = (subtract); + +/***/ }), + +/***/ "./node_modules/ramda/es/sum.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/sum.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _add_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/es/add.js"); +/* harmony import */ var _reduce_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/es/reduce.js"); + + + +/** + * Adds together all the elements of a list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Math + * @sig [Number] -> Number + * @param {Array} list An array of numbers + * @return {Number} The sum of all the numbers in the list. + * @see R.reduce + * @example + * + * R.sum([2,4,6,8,100,1]); //=> 121 + */ +var sum = /*#__PURE__*/Object(_reduce_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_add_js__WEBPACK_IMPORTED_MODULE_0__["default"], 0); +/* harmony default export */ __webpack_exports__["default"] = (sum); + +/***/ }), + +/***/ "./node_modules/ramda/es/symmetricDifference.js": +/*!******************************************************!*\ + !*** ./node_modules/ramda/es/symmetricDifference.js ***! + \******************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./concat.js */ "./node_modules/ramda/es/concat.js"); +/* harmony import */ var _difference_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./difference.js */ "./node_modules/ramda/es/difference.js"); + + + + +/** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifferenceWith, R.difference, R.differenceWith + * @example + * + * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5] + * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2] + */ +var symmetricDifference = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function symmetricDifference(list1, list2) { + return Object(_concat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_difference_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list1, list2), Object(_difference_js__WEBPACK_IMPORTED_MODULE_2__["default"])(list2, list1)); +}); +/* harmony default export */ __webpack_exports__["default"] = (symmetricDifference); + +/***/ }), + +/***/ "./node_modules/ramda/es/symmetricDifferenceWith.js": +/*!**********************************************************!*\ + !*** ./node_modules/ramda/es/symmetricDifferenceWith.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./concat.js */ "./node_modules/ramda/es/concat.js"); +/* harmony import */ var _differenceWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./differenceWith.js */ "./node_modules/ramda/es/differenceWith.js"); + + + + +/** + * Finds the set (i.e. no duplicates) of all elements contained in the first or + * second list, but not both. Duplication is determined according to the value + * returned by applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The elements in `list1` or `list2`, but not both. + * @see R.symmetricDifference, R.difference, R.differenceWith + * @example + * + * const eqA = R.eqBy(R.prop('a')); + * const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}]; + * const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}]; + * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}] + */ +var symmetricDifferenceWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function symmetricDifferenceWith(pred, list1, list2) { + return Object(_concat_js__WEBPACK_IMPORTED_MODULE_1__["default"])(Object(_differenceWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, list1, list2), Object(_differenceWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, list2, list1)); +}); +/* harmony default export */ __webpack_exports__["default"] = (symmetricDifferenceWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/tail.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/tail.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/es/internal/_checkForMethod.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + + +/** + * Returns all but the first element of the given list or string (or object + * with a `tail` method). + * + * Dispatches to the `slice` method of the first argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @sig String -> String + * @param {*} list + * @return {*} + * @see R.head, R.init, R.last + * @example + * + * R.tail([1, 2, 3]); //=> [2, 3] + * R.tail([1, 2]); //=> [2] + * R.tail([1]); //=> [] + * R.tail([]); //=> [] + * + * R.tail('abc'); //=> 'bc' + * R.tail('ab'); //=> 'b' + * R.tail('a'); //=> '' + * R.tail(''); //=> '' + */ +var tail = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_internal_checkForMethod_js__WEBPACK_IMPORTED_MODULE_0__["default"])('tail', /*#__PURE__*/Object(_slice_js__WEBPACK_IMPORTED_MODULE_2__["default"])(1, Infinity))); +/* harmony default export */ __webpack_exports__["default"] = (tail); + +/***/ }), + +/***/ "./node_modules/ramda/es/take.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/take.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xtake_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xtake.js */ "./node_modules/ramda/es/internal/_xtake.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + + + +/** + * Returns the first `n` elements of the given list, string, or + * transducer/transformer (or object with a `take` method). + * + * Dispatches to the `take` method of the second argument, if present. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n + * @param {*} list + * @return {*} + * @see R.drop + * @example + * + * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo'] + * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar'] + * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.take(3, 'ramda'); //=> 'ram' + * + * const personnel = [ + * 'Dave Brubeck', + * 'Paul Desmond', + * 'Eugene Wright', + * 'Joe Morello', + * 'Gerry Mulligan', + * 'Bob Bates', + * 'Joe Dodge', + * 'Ron Crotty' + * ]; + * + * const takeFive = R.take(5); + * takeFive(personnel); + * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan'] + * @symb R.take(-1, [a, b]) = [a, b] + * @symb R.take(0, [a, b]) = [] + * @symb R.take(1, [a, b]) = [a] + * @symb R.take(2, [a, b]) = [a, b] + */ +var take = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['take'], _internal_xtake_js__WEBPACK_IMPORTED_MODULE_2__["default"], function take(n, xs) { + return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(0, n < 0 ? Infinity : n, xs); +})); +/* harmony default export */ __webpack_exports__["default"] = (take); + +/***/ }), + +/***/ "./node_modules/ramda/es/takeLast.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/takeLast.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _drop_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./drop.js */ "./node_modules/ramda/es/drop.js"); + + + +/** + * Returns a new list containing the last `n` elements of the given list. + * If `n > list.length`, returns a list of `list.length` elements. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig Number -> [a] -> [a] + * @sig Number -> String -> String + * @param {Number} n The number of elements to return. + * @param {Array} xs The collection to consider. + * @return {Array} + * @see R.dropLast + * @example + * + * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz'] + * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz'] + * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz'] + * R.takeLast(3, 'ramda'); //=> 'mda' + */ +var takeLast = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function takeLast(n, xs) { + return Object(_drop_js__WEBPACK_IMPORTED_MODULE_1__["default"])(n >= 0 ? xs.length - n : 0, xs); +}); +/* harmony default export */ __webpack_exports__["default"] = (takeLast); + +/***/ }), + +/***/ "./node_modules/ramda/es/takeLastWhile.js": +/*!************************************************!*\ + !*** ./node_modules/ramda/es/takeLastWhile.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + +/** + * Returns a new list containing the last `n` elements of a given list, passing + * each value to the supplied predicate function, and terminating when the + * predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} fn The function called per iteration. + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array. + * @see R.dropLastWhile, R.addIndex + * @example + * + * const isNotOne = x => x !== 1; + * + * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4] + * + * R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda' + */ +var takeLastWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function takeLastWhile(fn, xs) { + var idx = xs.length - 1; + while (idx >= 0 && fn(xs[idx])) { + idx -= 1; + } + return Object(_slice_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx + 1, Infinity, xs); +}); +/* harmony default export */ __webpack_exports__["default"] = (takeLastWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/takeWhile.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/takeWhile.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xtakeWhile_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xtakeWhile.js */ "./node_modules/ramda/es/internal/_xtakeWhile.js"); +/* harmony import */ var _slice_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/es/slice.js"); + + + + + +/** + * Returns a new list containing the first `n` elements of a given list, + * passing each value to the supplied predicate function, and terminating when + * the predicate function returns `false`. Excludes the element that caused the + * predicate function to fail. The predicate function is passed one argument: + * *(value)*. + * + * Dispatches to the `takeWhile` method of the second argument, if present. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig (a -> Boolean) -> [a] -> [a] + * @sig (a -> Boolean) -> String -> String + * @param {Function} fn The function called per iteration. + * @param {Array} xs The collection to iterate over. + * @return {Array} A new array. + * @see R.dropWhile, R.transduce, R.addIndex + * @example + * + * const isNotFour = x => x !== 4; + * + * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3] + * + * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram' + */ +var takeWhile = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])(['takeWhile'], _internal_xtakeWhile_js__WEBPACK_IMPORTED_MODULE_2__["default"], function takeWhile(fn, xs) { + var idx = 0; + var len = xs.length; + while (idx < len && fn(xs[idx])) { + idx += 1; + } + return Object(_slice_js__WEBPACK_IMPORTED_MODULE_3__["default"])(0, idx, xs); +})); +/* harmony default export */ __webpack_exports__["default"] = (takeWhile); + +/***/ }), + +/***/ "./node_modules/ramda/es/tap.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/tap.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/es/internal/_dispatchable.js"); +/* harmony import */ var _internal_xtap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_xtap.js */ "./node_modules/ramda/es/internal/_xtap.js"); + + + + +/** + * Runs the given function with the supplied object, then returns the object. + * + * Acts as a transducer if a transformer is given as second parameter. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig (a -> *) -> a -> a + * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away. + * @param {*} x + * @return {*} `x`. + * @example + * + * const sayX = x => console.log('x is ' + x); + * R.tap(sayX, 100); //=> 100 + * // logs 'x is 100' + * @symb R.tap(f, a) = a + */ +var tap = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])( /*#__PURE__*/Object(_internal_dispatchable_js__WEBPACK_IMPORTED_MODULE_1__["default"])([], _internal_xtap_js__WEBPACK_IMPORTED_MODULE_2__["default"], function tap(fn, x) { + fn(x); + return x; +})); +/* harmony default export */ __webpack_exports__["default"] = (tap); + +/***/ }), + +/***/ "./node_modules/ramda/es/test.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/test.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_cloneRegExp.js */ "./node_modules/ramda/es/internal/_cloneRegExp.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_isRegExp_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_isRegExp.js */ "./node_modules/ramda/es/internal/_isRegExp.js"); +/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/es/toString.js"); + + + + + +/** + * Determines whether a given string matches a given regular expression. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category String + * @sig RegExp -> String -> Boolean + * @param {RegExp} pattern + * @param {String} str + * @return {Boolean} + * @see R.match + * @example + * + * R.test(/^x/, 'xyz'); //=> true + * R.test(/^y/, 'xyz'); //=> false + */ +var test = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function test(pattern, str) { + if (!Object(_internal_isRegExp_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pattern)) { + throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + Object(_toString_js__WEBPACK_IMPORTED_MODULE_3__["default"])(pattern)); + } + return Object(_internal_cloneRegExp_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pattern).test(str); +}); +/* harmony default export */ __webpack_exports__["default"] = (test); + +/***/ }), + +/***/ "./node_modules/ramda/es/then.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/then.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_assertPromise.js */ "./node_modules/ramda/es/internal/_assertPromise.js"); + + + +/** + * Returns the result of applying the onSuccess function to the value inside + * a successfully resolved promise. This is useful for working with promises + * inside function compositions. + * + * @func + * @memberOf R + * @category Function + * @sig (a -> b) -> (Promise e a) -> (Promise e b) + * @sig (a -> (Promise e b)) -> (Promise e a) -> (Promise e b) + * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value. + * @param {Promise} p + * @return {Promise} The result of calling `p.then(onSuccess)` + * @see R.otherwise + * @example + * + * var makeQuery = (email) => ({ query: { email }}); + * + * //getMemberName :: String -> Promise ({firstName, lastName}) + * var getMemberName = R.pipe( + * makeQuery, + * fetchMember, + * R.then(R.pick(['firstName', 'lastName'])) + * ); + */ +var then = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function then(f, p) { + Object(_internal_assertPromise_js__WEBPACK_IMPORTED_MODULE_1__["default"])('then', p); + + return p.then(f); +}); +/* harmony default export */ __webpack_exports__["default"] = (then); + +/***/ }), + +/***/ "./node_modules/ramda/es/thunkify.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/thunkify.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + + +/** + * Creates a thunk out of a function. A thunk delays a calculation until + * its result is needed, providing lazy evaluation of arguments. + * + * @func + * @memberOf R + * @category Function + * @sig ((a, b, ..., j) -> k) -> (a, b, ..., j) -> (() -> k) + * @param {Function} fn A function to wrap in a thunk + * @return {Function} Expects arguments for `fn` and returns a new function + * that, when called, applies those arguments to `fn`. + * @see R.partial, R.partialRight + * @example + * + * R.thunkify(R.identity)(42)(); //=> 42 + * R.thunkify((a, b) => a + b)(25, 17)(); //=> 42 + */ +var thunkify = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function thunkify(fn) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_0__["default"])(fn.length, function createThunk() { + var fnArgs = arguments; + return function invokeThunk() { + return fn.apply(this, fnArgs); + }; + }); +}); + +/* harmony default export */ __webpack_exports__["default"] = (thunkify); + +/***/ }), + +/***/ "./node_modules/ramda/es/times.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/times.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Calls an input function `n` times, returning an array containing the results + * of those function calls. + * + * `fn` is passed one argument: The current value of `n`, which begins at `0` + * and is gradually incremented to `n - 1`. + * + * @func + * @memberOf R + * @since v0.2.3 + * @category List + * @sig (Number -> a) -> Number -> [a] + * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`. + * @param {Number} n A value between `0` and `n - 1`. Increments after each function call. + * @return {Array} An array containing the return values of all calls to `fn`. + * @see R.repeat + * @example + * + * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4] + * @symb R.times(f, 0) = [] + * @symb R.times(f, 1) = [f(0)] + * @symb R.times(f, 2) = [f(0), f(1)] + */ +var times = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function times(fn, n) { + var len = Number(n); + var idx = 0; + var list; + + if (len < 0 || isNaN(len)) { + throw new RangeError('n must be a non-negative number'); + } + list = new Array(len); + while (idx < len) { + list[idx] = fn(idx); + idx += 1; + } + return list; +}); +/* harmony default export */ __webpack_exports__["default"] = (times); + +/***/ }), + +/***/ "./node_modules/ramda/es/toLower.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/toLower.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); + + +/** + * The lower case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to lower case. + * @return {String} The lower case version of `str`. + * @see R.toUpper + * @example + * + * R.toLower('XYZ'); //=> 'xyz' + */ +var toLower = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, 'toLowerCase'); +/* harmony default export */ __webpack_exports__["default"] = (toLower); + +/***/ }), + +/***/ "./node_modules/ramda/es/toPairs.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/toPairs.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); + + + +/** + * Converts an object into an array of key, value arrays. Only the object's + * own properties are used. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own properties. + * @see R.fromPairs + * @example + * + * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]] + */ +var toPairs = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function toPairs(obj) { + var pairs = []; + for (var prop in obj) { + if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, obj)) { + pairs[pairs.length] = [prop, obj[prop]]; + } + } + return pairs; +}); +/* harmony default export */ __webpack_exports__["default"] = (toPairs); + +/***/ }), + +/***/ "./node_modules/ramda/es/toPairsIn.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/toPairsIn.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Converts an object into an array of key, value arrays. The object's own + * properties and prototype properties are used. Note that the order of the + * output array is not guaranteed to be consistent across different JS + * platforms. + * + * @func + * @memberOf R + * @since v0.4.0 + * @category Object + * @sig {String: *} -> [[String,*]] + * @param {Object} obj The object to extract from + * @return {Array} An array of key, value arrays from the object's own + * and prototype properties. + * @example + * + * const F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * const f = new F(); + * R.toPairsIn(f); //=> [['x','X'], ['y','Y']] + */ +var toPairsIn = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function toPairsIn(obj) { + var pairs = []; + for (var prop in obj) { + pairs[pairs.length] = [prop, obj[prop]]; + } + return pairs; +}); +/* harmony default export */ __webpack_exports__["default"] = (toPairsIn); + +/***/ }), + +/***/ "./node_modules/ramda/es/toString.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/toString.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _internal_toString_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_toString.js */ "./node_modules/ramda/es/internal/_toString.js"); + + + +/** + * Returns the string representation of the given value. `eval`'ing the output + * should result in a value equivalent to the input value. Many of the built-in + * `toString` methods do not satisfy this requirement. + * + * If the given value is an `[object Object]` with a `toString` method other + * than `Object.prototype.toString`, this method is invoked with no arguments + * to produce the return value. This means user-defined constructor functions + * can provide a suitable `toString` method. For example: + * + * function Point(x, y) { + * this.x = x; + * this.y = y; + * } + * + * Point.prototype.toString = function() { + * return 'new Point(' + this.x + ', ' + this.y + ')'; + * }; + * + * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)' + * + * @func + * @memberOf R + * @since v0.14.0 + * @category String + * @sig * -> String + * @param {*} val + * @return {String} + * @example + * + * R.toString(42); //=> '42' + * R.toString('abc'); //=> '"abc"' + * R.toString([1, 2, 3]); //=> '[1, 2, 3]' + * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{"bar": 2, "baz": 3, "foo": 1}' + * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date("2001-02-03T04:05:06.000Z")' + */ +var toString = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function toString(val) { + return Object(_internal_toString_js__WEBPACK_IMPORTED_MODULE_1__["default"])(val, []); +}); +/* harmony default export */ __webpack_exports__["default"] = (toString); + +/***/ }), + +/***/ "./node_modules/ramda/es/toUpper.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/toUpper.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _invoker_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/es/invoker.js"); + + +/** + * The upper case version of a string. + * + * @func + * @memberOf R + * @since v0.9.0 + * @category String + * @sig String -> String + * @param {String} str The string to upper case. + * @return {String} The upper case version of `str`. + * @see R.toLower + * @example + * + * R.toUpper('abc'); //=> 'ABC' + */ +var toUpper = /*#__PURE__*/Object(_invoker_js__WEBPACK_IMPORTED_MODULE_0__["default"])(0, 'toUpperCase'); +/* harmony default export */ __webpack_exports__["default"] = (toUpper); + +/***/ }), + +/***/ "./node_modules/ramda/es/transduce.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/transduce.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_reduce_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/es/internal/_reduce.js"); +/* harmony import */ var _internal_xwrap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_xwrap.js */ "./node_modules/ramda/es/internal/_xwrap.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); + + + + +/** + * Initializes a transducer using supplied iterator function. Returns a single + * item by iterating through the list, successively calling the transformed + * iterator function and passing it an accumulator value and the current value + * from the array, and then passing the result to the next call. + * + * The iterator function receives two values: *(acc, value)*. It will be + * wrapped as a transformer to initialize the transducer. A transformer can be + * passed directly in place of an iterator function. In both cases, iteration + * may be stopped early with the [`R.reduced`](#reduced) function. + * + * A transducer is a function that accepts a transformer and returns a + * transformer and can be composed directly. + * + * A transformer is an an object that provides a 2-arity reducing iterator + * function, step, 0-arity initial value function, init, and 1-arity result + * extraction function, result. The step function is used as the iterator + * function in reduce. The result function is used to convert the final + * accumulator into the return type and in most cases is + * [`R.identity`](#identity). The init function can be used to provide an + * initial accumulator, but is ignored by transduce. + * + * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer. + * + * @func + * @memberOf R + * @since v0.12.0 + * @category List + * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a + * @param {Function} xf The transducer function. Receives a transformer and returns a transformer. + * @param {Function} fn The iterator function. Receives two values, the accumulator and the + * current element from the array. Wrapped as transformer, if necessary, and used to + * initialize the transducer + * @param {*} acc The initial accumulator value. + * @param {Array} list The list to iterate over. + * @return {*} The final, accumulated value. + * @see R.reduce, R.reduced, R.into + * @example + * + * const numbers = [1, 2, 3, 4]; + * const transducer = R.compose(R.map(R.add(1)), R.take(2)); + * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3] + * + * const isOdd = (x) => x % 2 === 1; + * const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1)); + * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1] + */ +var transduce = /*#__PURE__*/Object(_curryN_js__WEBPACK_IMPORTED_MODULE_2__["default"])(4, function transduce(xf, fn, acc, list) { + return Object(_internal_reduce_js__WEBPACK_IMPORTED_MODULE_0__["default"])(xf(typeof fn === 'function' ? Object(_internal_xwrap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(fn) : fn), acc, list); +}); +/* harmony default export */ __webpack_exports__["default"] = (transduce); + +/***/ }), + +/***/ "./node_modules/ramda/es/transpose.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/transpose.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Transposes the rows and columns of a 2D list. + * When passed a list of `n` lists of length `x`, + * returns a list of `x` lists of length `n`. + * + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [[a]] -> [[a]] + * @param {Array} list A 2D list + * @return {Array} A 2D list + * @example + * + * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']] + * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * + * // If some of the rows are shorter than the following rows, their elements are skipped: + * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]] + * @symb R.transpose([[a], [b], [c]]) = [a, b, c] + * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]] + * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]] + */ +var transpose = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function transpose(outerlist) { + var i = 0; + var result = []; + while (i < outerlist.length) { + var innerlist = outerlist[i]; + var j = 0; + while (j < innerlist.length) { + if (typeof result[j] === 'undefined') { + result[j] = []; + } + result[j].push(innerlist[j]); + j += 1; + } + i += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (transpose); + +/***/ }), + +/***/ "./node_modules/ramda/es/traverse.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/traverse.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); +/* harmony import */ var _sequence_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sequence.js */ "./node_modules/ramda/es/sequence.js"); + + + + +/** + * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning + * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable), + * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative + * into an Applicative of Traversable. + * + * Dispatches to the `traverse` method of the third argument, if present. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b) + * @param {Function} of + * @param {Function} f + * @param {*} traversable + * @return {*} + * @see R.sequence + * @example + * + * // Returns `Maybe.Nothing` if the given divisor is `0` + * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d) + * + * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2]) + * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing + */ +var traverse = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function traverse(of, f, traversable) { + return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : Object(_sequence_js__WEBPACK_IMPORTED_MODULE_2__["default"])(of, Object(_map_js__WEBPACK_IMPORTED_MODULE_1__["default"])(f, traversable)); +}); +/* harmony default export */ __webpack_exports__["default"] = (traverse); + +/***/ }), + +/***/ "./node_modules/ramda/es/trim.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/trim.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u180E\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF'; +var zeroWidth = '\u200b'; +var hasProtoTrim = typeof String.prototype.trim === 'function'; +/** + * Removes (strips) whitespace from both ends of the string. + * + * @func + * @memberOf R + * @since v0.6.0 + * @category String + * @sig String -> String + * @param {String} str The string to trim. + * @return {String} Trimmed version of `str`. + * @example + * + * R.trim(' xyz '); //=> 'xyz' + * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z'] + */ +var trim = !hasProtoTrim || /*#__PURE__*/ws.trim() || ! /*#__PURE__*/zeroWidth.trim() ? /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function trim(str) { + var beginRx = new RegExp('^[' + ws + '][' + ws + ']*'); + var endRx = new RegExp('[' + ws + '][' + ws + ']*$'); + return str.replace(beginRx, '').replace(endRx, ''); +}) : /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function trim(str) { + return str.trim(); +}); +/* harmony default export */ __webpack_exports__["default"] = (trim); + +/***/ }), + +/***/ "./node_modules/ramda/es/tryCatch.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/tryCatch.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_arity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/es/internal/_arity.js"); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + + +/** + * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned + * function evaluates the `tryer`; if it does not throw, it simply returns the + * result. If the `tryer` *does* throw, the returned function evaluates the + * `catcher` function and returns its result. Note that for effective + * composition with this function, both the `tryer` and `catcher` functions + * must return the same type of results. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Function + * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a) + * @param {Function} tryer The function that may throw. + * @param {Function} catcher The function that will be evaluated if `tryer` throws. + * @return {Function} A new function that will catch exceptions and send then to the catcher. + * @example + * + * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true + * R.tryCatch(() => { throw 'foo'}, R.always('catched'))('bar') // => 'catched' + * R.tryCatch(R.times(R.identity), R.always([]))('s') // => [] + `` */ +var tryCatch = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_2__["default"])(function _tryCatch(tryer, catcher) { + return Object(_internal_arity_js__WEBPACK_IMPORTED_MODULE_0__["default"])(tryer.length, function () { + try { + return tryer.apply(this, arguments); + } catch (e) { + return catcher.apply(this, Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_1__["default"])([e], arguments)); + } + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (tryCatch); + +/***/ }), + +/***/ "./node_modules/ramda/es/type.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/type.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Gives a single-word string description of the (native) type of a value, + * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not + * attempt to distinguish user Object types any further, reporting them all as + * 'Object'. + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Type + * @sig (* -> {*}) -> String + * @param {*} val The value to test + * @return {String} + * @example + * + * R.type({}); //=> "Object" + * R.type(1); //=> "Number" + * R.type(false); //=> "Boolean" + * R.type('s'); //=> "String" + * R.type(null); //=> "Null" + * R.type([]); //=> "Array" + * R.type(/[A-z]/); //=> "RegExp" + * R.type(() => {}); //=> "Function" + * R.type(undefined); //=> "Undefined" + */ +var type = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function type(val) { + return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1); +}); +/* harmony default export */ __webpack_exports__["default"] = (type); + +/***/ }), + +/***/ "./node_modules/ramda/es/unapply.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/unapply.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Takes a function `fn`, which takes a single array argument, and returns a + * function which: + * + * - takes any number of positional arguments; + * - passes these arguments to `fn` as an array; and + * - returns the result. + * + * In other words, `R.unapply` derives a variadic function from a function which + * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply). + * + * @func + * @memberOf R + * @since v0.8.0 + * @category Function + * @sig ([*...] -> a) -> (*... -> a) + * @param {Function} fn + * @return {Function} + * @see R.apply + * @example + * + * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]' + * @symb R.unapply(f)(a, b) = f([a, b]) + */ +var unapply = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unapply(fn) { + return function () { + return fn(Array.prototype.slice.call(arguments, 0)); + }; +}); +/* harmony default export */ __webpack_exports__["default"] = (unapply); + +/***/ }), + +/***/ "./node_modules/ramda/es/unary.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/unary.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _nAry_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/es/nAry.js"); + + + +/** + * Wraps a function of any arity (including nullary) in a function that accepts + * exactly 1 parameter. Any extraneous parameters will not be passed to the + * supplied function. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Function + * @sig (* -> b) -> (a -> b) + * @param {Function} fn The function to wrap. + * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of + * arity 1. + * @see R.binary, R.nAry + * @example + * + * const takesTwoArgs = function(a, b) { + * return [a, b]; + * }; + * takesTwoArgs.length; //=> 2 + * takesTwoArgs(1, 2); //=> [1, 2] + * + * const takesOneArg = R.unary(takesTwoArgs); + * takesOneArg.length; //=> 1 + * // Only 1 argument is passed to the wrapped function + * takesOneArg(1, 2); //=> [1, undefined] + * @symb R.unary(f)(a, b, c) = f(a) + */ +var unary = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unary(fn) { + return Object(_nAry_js__WEBPACK_IMPORTED_MODULE_1__["default"])(1, fn); +}); +/* harmony default export */ __webpack_exports__["default"] = (unary); + +/***/ }), + +/***/ "./node_modules/ramda/es/uncurryN.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/uncurryN.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); + + + +/** + * Returns a function of arity `n` from a (manually) curried function. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Function + * @sig Number -> (a -> b) -> (a -> c) + * @param {Number} length The arity for the returned function. + * @param {Function} fn The function to uncurry. + * @return {Function} A new function. + * @see R.curry + * @example + * + * const addFour = a => b => c => d => a + b + c + d; + * + * const uncurriedAddFour = R.uncurryN(4, addFour); + * uncurriedAddFour(1, 2, 3, 4); //=> 10 + */ +var uncurryN = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function uncurryN(depth, fn) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(depth, function () { + var currentDepth = 1; + var value = fn; + var idx = 0; + var endIdx; + while (currentDepth <= depth && typeof value === 'function') { + endIdx = currentDepth === depth ? arguments.length : idx + value.length; + value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx)); + currentDepth += 1; + idx = endIdx; + } + return value; + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (uncurryN); + +/***/ }), + +/***/ "./node_modules/ramda/es/unfold.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/unfold.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Builds a list from a seed value. Accepts an iterator function, which returns + * either false to stop iteration or an array of length 2 containing the value + * to add to the resulting list and the seed to be used in the next call to the + * iterator function. + * + * The iterator function receives one argument: *(seed)*. + * + * @func + * @memberOf R + * @since v0.10.0 + * @category List + * @sig (a -> [b]) -> * -> [b] + * @param {Function} fn The iterator function. receives one argument, `seed`, and returns + * either false to quit iteration or an array of length two to proceed. The element + * at index 0 of this array will be added to the resulting array, and the element + * at index 1 will be passed to the next call to `fn`. + * @param {*} seed The seed value. + * @return {Array} The final list. + * @example + * + * const f = n => n > 50 ? false : [-n, n + 10]; + * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50] + * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...] + */ +var unfold = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unfold(fn, seed) { + var pair = fn(seed); + var result = []; + while (pair && pair.length) { + result[result.length] = pair[0]; + pair = fn(pair[1]); + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (unfold); + +/***/ }), + +/***/ "./node_modules/ramda/es/union.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/union.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _compose_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./compose.js */ "./node_modules/ramda/es/compose.js"); +/* harmony import */ var _uniq_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/es/uniq.js"); + + + + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig [*] -> [*] -> [*] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @example + * + * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4] + */ +var union = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])( /*#__PURE__*/Object(_compose_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_uniq_js__WEBPACK_IMPORTED_MODULE_3__["default"], _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])); +/* harmony default export */ __webpack_exports__["default"] = (union); + +/***/ }), + +/***/ "./node_modules/ramda/es/unionWith.js": +/*!********************************************!*\ + !*** ./node_modules/ramda/es/unionWith.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_concat_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/es/internal/_concat.js"); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _uniqWith_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./uniqWith.js */ "./node_modules/ramda/es/uniqWith.js"); + + + + +/** + * Combines two lists into a set (i.e. no duplicates) composed of the elements + * of each list. Duplication is determined according to the value returned by + * applying the supplied predicate to two list elements. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Relation + * @sig ((a, a) -> Boolean) -> [*] -> [*] -> [*] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list1 The first list. + * @param {Array} list2 The second list. + * @return {Array} The first and second lists concatenated, with + * duplicates removed. + * @see R.union + * @example + * + * const l1 = [{a: 1}, {a: 2}]; + * const l2 = [{a: 1}, {a: 4}]; + * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}] + */ +var unionWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function unionWith(pred, list1, list2) { + return Object(_uniqWith_js__WEBPACK_IMPORTED_MODULE_2__["default"])(pred, Object(_internal_concat_js__WEBPACK_IMPORTED_MODULE_0__["default"])(list1, list2)); +}); +/* harmony default export */ __webpack_exports__["default"] = (unionWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/uniq.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/uniq.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/es/identity.js"); +/* harmony import */ var _uniqBy_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uniqBy.js */ "./node_modules/ramda/es/uniqBy.js"); + + + +/** + * Returns a new list containing only one copy of each element in the original + * list. [`R.equals`](#equals) is used to determine equality. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [a] + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniq([1, 1, 2, 1]); //=> [1, 2] + * R.uniq([1, '1']); //=> [1, '1'] + * R.uniq([[42], [42]]); //=> [[42]] + */ +var uniq = /*#__PURE__*/Object(_uniqBy_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_identity_js__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (uniq); + +/***/ }), + +/***/ "./node_modules/ramda/es/uniqBy.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/uniqBy.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_Set_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_Set.js */ "./node_modules/ramda/es/internal/_Set.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied function to + * each list element. Prefers the first item if the supplied function produces + * the same value on two items. [`R.equals`](#equals) is used for comparison. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category List + * @sig (a -> b) -> [a] -> [a] + * @param {Function} fn A function used to produce a value to use during comparisons. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10] + */ +var uniqBy = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function uniqBy(fn, list) { + var set = new _internal_Set_js__WEBPACK_IMPORTED_MODULE_0__["default"](); + var result = []; + var idx = 0; + var appliedItem, item; + + while (idx < list.length) { + item = list[idx]; + appliedItem = fn(item); + if (set.add(appliedItem)) { + result.push(item); + } + idx += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (uniqBy); + +/***/ }), + +/***/ "./node_modules/ramda/es/uniqWith.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/uniqWith.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/es/internal/_includesWith.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + + +/** + * Returns a new list containing only one copy of each element in the original + * list, based upon the value returned by applying the supplied predicate to + * two list elements. Prefers the first item if two items compare equal based + * on the predicate. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category List + * @sig ((a, a) -> Boolean) -> [a] -> [a] + * @param {Function} pred A predicate used to test whether two items are equal. + * @param {Array} list The array to consider. + * @return {Array} The list of unique items. + * @example + * + * const strEq = R.eqBy(String); + * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2] + * R.uniqWith(strEq)([{}, {}]); //=> [{}] + * R.uniqWith(strEq)([1, '1', 1]); //=> [1] + * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1'] + */ +var uniqWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function uniqWith(pred, list) { + var idx = 0; + var len = list.length; + var result = []; + var item; + while (idx < len) { + item = list[idx]; + if (!Object(_internal_includesWith_js__WEBPACK_IMPORTED_MODULE_0__["default"])(pred, item, result)) { + result[result.length] = item; + } + idx += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (uniqWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/unless.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/unless.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is not satisfied, the function will return the result of + * calling the `whenFalseFn` function with the same argument. If the predicate + * is satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates + * to a falsy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenFalseFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`. + * @see R.ifElse, R.when, R.cond + * @example + * + * let safeInc = R.unless(R.isNil, R.inc); + * safeInc(null); //=> null + * safeInc(1); //=> 2 + */ +var unless = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function unless(pred, whenFalseFn, x) { + return pred(x) ? x : whenFalseFn(x); +}); +/* harmony default export */ __webpack_exports__["default"] = (unless); + +/***/ }), + +/***/ "./node_modules/ramda/es/unnest.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/unnest.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_identity.js */ "./node_modules/ramda/es/internal/_identity.js"); +/* harmony import */ var _chain_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./chain.js */ "./node_modules/ramda/es/chain.js"); + + + +/** + * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from + * any [Chain](https://github.com/fantasyland/fantasy-land#chain). + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig Chain c => c (c a) -> c a + * @param {*} list + * @return {*} + * @see R.flatten, R.chain + * @example + * + * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]] + * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6] + */ +var unnest = /*#__PURE__*/Object(_chain_js__WEBPACK_IMPORTED_MODULE_1__["default"])(_internal_identity_js__WEBPACK_IMPORTED_MODULE_0__["default"]); +/* harmony default export */ __webpack_exports__["default"] = (unnest); + +/***/ }), + +/***/ "./node_modules/ramda/es/until.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/until.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Takes a predicate, a transformation function, and an initial value, + * and returns a value of the same type as the initial value. + * It does so by applying the transformation until the predicate is satisfied, + * at which point it returns the satisfactory value. + * + * @func + * @memberOf R + * @since v0.20.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} fn The iterator function + * @param {*} init Initial value + * @return {*} Final value that satisfies predicate + * @example + * + * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128 + */ +var until = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function until(pred, fn, init) { + var val = init; + while (!pred(val)) { + val = fn(val); + } + return val; +}); +/* harmony default export */ __webpack_exports__["default"] = (until); + +/***/ }), + +/***/ "./node_modules/ramda/es/update.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/update.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); +/* harmony import */ var _adjust_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./adjust.js */ "./node_modules/ramda/es/adjust.js"); +/* harmony import */ var _always_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/es/always.js"); + + + + +/** + * Returns a new copy of the array with the element at the provided index + * replaced with the given value. + * + * @func + * @memberOf R + * @since v0.14.0 + * @category List + * @sig Number -> a -> [a] -> [a] + * @param {Number} idx The index to update. + * @param {*} x The value to exist at the given index of the returned array. + * @param {Array|Arguments} list The source array-like object to be updated. + * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`. + * @see R.adjust + * @example + * + * R.update(1, '_', ['a', 'b', 'c']); //=> ['a', '_', 'c'] + * R.update(-1, '_', ['a', 'b', 'c']); //=> ['a', 'b', '_'] + * @symb R.update(-1, a, [b, c]) = [b, a] + * @symb R.update(0, a, [b, c]) = [a, c] + * @symb R.update(1, a, [b, c]) = [b, a] + */ +var update = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function update(idx, x, list) { + return Object(_adjust_js__WEBPACK_IMPORTED_MODULE_1__["default"])(idx, Object(_always_js__WEBPACK_IMPORTED_MODULE_2__["default"])(x), list); +}); +/* harmony default export */ __webpack_exports__["default"] = (update); + +/***/ }), + +/***/ "./node_modules/ramda/es/useWith.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/useWith.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _curryN_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/es/curryN.js"); + + + +/** + * Accepts a function `fn` and a list of transformer functions and returns a + * new curried function. When the new function is invoked, it calls the + * function `fn` with parameters consisting of the result of calling each + * supplied handler on successive arguments to the new function. + * + * If more arguments are passed to the returned function than transformer + * functions, those arguments are passed directly to `fn` as additional + * parameters. If you expect additional arguments that don't need to be + * transformed, although you can ignore them, it's best to pass an identity + * function so that the new function reports the correct arity. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Function + * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z) + * @param {Function} fn The function to wrap. + * @param {Array} transformers A list of transformer functions + * @return {Function} The wrapped function. + * @see R.converge + * @example + * + * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81 + * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81 + * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32 + * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32 + * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b)) + */ +var useWith = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function useWith(fn, transformers) { + return Object(_curryN_js__WEBPACK_IMPORTED_MODULE_1__["default"])(transformers.length, function () { + var args = []; + var idx = 0; + while (idx < transformers.length) { + args.push(transformers[idx].call(this, arguments[idx])); + idx += 1; + } + return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length))); + }); +}); +/* harmony default export */ __webpack_exports__["default"] = (useWith); + +/***/ }), + +/***/ "./node_modules/ramda/es/values.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/values.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/es/keys.js"); + + + +/** + * Returns a list of all the enumerable own properties of the supplied object. + * Note that the order of the output array is not guaranteed across different + * JS platforms. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own properties. + * @see R.valuesIn, R.keys + * @example + * + * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3] + */ +var values = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function values(obj) { + var props = Object(_keys_js__WEBPACK_IMPORTED_MODULE_1__["default"])(obj); + var len = props.length; + var vals = []; + var idx = 0; + while (idx < len) { + vals[idx] = obj[props[idx]]; + idx += 1; + } + return vals; +}); +/* harmony default export */ __webpack_exports__["default"] = (values); + +/***/ }), + +/***/ "./node_modules/ramda/es/valuesIn.js": +/*!*******************************************!*\ + !*** ./node_modules/ramda/es/valuesIn.js ***! + \*******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/es/internal/_curry1.js"); + + +/** + * Returns a list of all the properties, including prototype properties, of the + * supplied object. + * Note that the order of the output array is not guaranteed to be consistent + * across different JS platforms. + * + * @func + * @memberOf R + * @since v0.2.0 + * @category Object + * @sig {k: v} -> [v] + * @param {Object} obj The object to extract values from + * @return {Array} An array of the values of the object's own and prototype properties. + * @see R.values, R.keysIn + * @example + * + * const F = function() { this.x = 'X'; }; + * F.prototype.y = 'Y'; + * const f = new F(); + * R.valuesIn(f); //=> ['X', 'Y'] + */ +var valuesIn = /*#__PURE__*/Object(_internal_curry1_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function valuesIn(obj) { + var prop; + var vs = []; + for (prop in obj) { + vs[vs.length] = obj[prop]; + } + return vs; +}); +/* harmony default export */ __webpack_exports__["default"] = (valuesIn); + +/***/ }), + +/***/ "./node_modules/ramda/es/view.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/view.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +// `Const` is a functor that effectively ignores the function given to `map`. +var Const = function (x) { + return { value: x, 'fantasy-land/map': function () { + return this; + } }; +}; + +/** + * Returns a "view" of the given data structure, determined by the given lens. + * The lens's focus determines which portion of the data structure is visible. + * + * @func + * @memberOf R + * @since v0.16.0 + * @category Object + * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s + * @sig Lens s a -> s -> a + * @param {Lens} lens + * @param {*} x + * @return {*} + * @see R.prop, R.lensIndex, R.lensProp + * @example + * + * const xLens = R.lensProp('x'); + * + * R.view(xLens, {x: 1, y: 2}); //=> 1 + * R.view(xLens, {x: 4, y: 2}); //=> 4 + */ +var view = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function view(lens, x) { + // Using `Const` effectively ignores the setter function of the `lens`, + // leaving the value returned by the getter function unmodified. + return lens(Const)(x).value; +}); +/* harmony default export */ __webpack_exports__["default"] = (view); + +/***/ }), + +/***/ "./node_modules/ramda/es/when.js": +/*!***************************************!*\ + !*** ./node_modules/ramda/es/when.js ***! + \***************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Tests the final argument by passing it to the given predicate function. If + * the predicate is satisfied, the function will return the result of calling + * the `whenTrueFn` function with the same argument. If the predicate is not + * satisfied, the argument is returned as is. + * + * @func + * @memberOf R + * @since v0.18.0 + * @category Logic + * @sig (a -> Boolean) -> (a -> a) -> a -> a + * @param {Function} pred A predicate function + * @param {Function} whenTrueFn A function to invoke when the `condition` + * evaluates to a truthy value. + * @param {*} x An object to test with the `pred` function and + * pass to `whenTrueFn` if necessary. + * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`. + * @see R.ifElse, R.unless, R.cond + * @example + * + * // truncate :: String -> String + * const truncate = R.when( + * R.propSatisfies(R.gt(R.__, 10), 'length'), + * R.pipe(R.take(10), R.append('…'), R.join('')) + * ); + * truncate('12345'); //=> '12345' + * truncate('0123456789ABC'); //=> '0123456789…' + */ +var when = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function when(pred, whenTrueFn, x) { + return pred(x) ? whenTrueFn(x) : x; +}); +/* harmony default export */ __webpack_exports__["default"] = (when); + +/***/ }), + +/***/ "./node_modules/ramda/es/where.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/where.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _internal_has_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/es/internal/_has.js"); + + + +/** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec. Each of the spec's own properties must be a predicate function. + * Each predicate is applied to the value of the corresponding property of the + * test object. `where` returns true if all the predicates return true, false + * otherwise. + * + * `where` is well suited to declaratively expressing constraints for other + * functions such as [`filter`](#filter) and [`find`](#find). + * + * @func + * @memberOf R + * @since v0.1.1 + * @category Object + * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @see R.propSatisfies, R.whereEq + * @example + * + * // pred :: Object -> Boolean + * const pred = R.where({ + * a: R.equals('foo'), + * b: R.complement(R.equals('bar')), + * x: R.gt(R.__, 10), + * y: R.lt(R.__, 20) + * }); + * + * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true + * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false + * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false + */ +var where = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function where(spec, testObj) { + for (var prop in spec) { + if (Object(_internal_has_js__WEBPACK_IMPORTED_MODULE_1__["default"])(prop, spec) && !spec[prop](testObj[prop])) { + return false; + } + } + return true; +}); +/* harmony default export */ __webpack_exports__["default"] = (where); + +/***/ }), + +/***/ "./node_modules/ramda/es/whereEq.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/whereEq.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _equals_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/es/equals.js"); +/* harmony import */ var _map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/es/map.js"); +/* harmony import */ var _where_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./where.js */ "./node_modules/ramda/es/where.js"); + + + + + +/** + * Takes a spec object and a test object; returns true if the test satisfies + * the spec, false otherwise. An object satisfies the spec if, for each of the + * spec's own properties, accessing that property of the object gives the same + * value (in [`R.equals`](#equals) terms) as accessing that property of the + * spec. + * + * `whereEq` is a specialization of [`where`](#where). + * + * @func + * @memberOf R + * @since v0.14.0 + * @category Object + * @sig {String: *} -> {String: *} -> Boolean + * @param {Object} spec + * @param {Object} testObj + * @return {Boolean} + * @see R.propEq, R.where + * @example + * + * // pred :: Object -> Boolean + * const pred = R.whereEq({a: 1, b: 2}); + * + * pred({a: 1}); //=> false + * pred({a: 1, b: 2}); //=> true + * pred({a: 1, b: 2, c: 3}); //=> true + * pred({a: 1, b: 1}); //=> false + */ +var whereEq = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function whereEq(spec, testObj) { + return Object(_where_js__WEBPACK_IMPORTED_MODULE_3__["default"])(Object(_map_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_equals_js__WEBPACK_IMPORTED_MODULE_1__["default"], spec), testObj); +}); +/* harmony default export */ __webpack_exports__["default"] = (whereEq); + +/***/ }), + +/***/ "./node_modules/ramda/es/without.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/without.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/es/internal/_includes.js"); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); +/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/es/flip.js"); +/* harmony import */ var _reject_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./reject.js */ "./node_modules/ramda/es/reject.js"); + + + + + +/** + * Returns a new list without values in the first argument. + * [`R.equals`](#equals) is used to determine equality. + * + * Acts as a transducer if a transformer is given in list position. + * + * @func + * @memberOf R + * @since v0.19.0 + * @category List + * @sig [a] -> [a] -> [a] + * @param {Array} list1 The values to be removed from `list2`. + * @param {Array} list2 The array to remove values from. + * @return {Array} The new array without values in `list1`. + * @see R.transduce, R.difference, R.remove + * @example + * + * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4] + */ +var without = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_1__["default"])(function (xs, list) { + return Object(_reject_js__WEBPACK_IMPORTED_MODULE_3__["default"])(Object(_flip_js__WEBPACK_IMPORTED_MODULE_2__["default"])(_internal_includes_js__WEBPACK_IMPORTED_MODULE_0__["default"])(xs), list); +}); +/* harmony default export */ __webpack_exports__["default"] = (without); + +/***/ }), + +/***/ "./node_modules/ramda/es/xprod.js": +/*!****************************************!*\ + !*** ./node_modules/ramda/es/xprod.js ***! + \****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Creates a new list out of the two supplied by creating each possible pair + * from the lists. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} as The first list. + * @param {Array} bs The second list. + * @return {Array} The list made by combining each possible pair from + * `as` and `bs` into pairs (`[a, b]`). + * @example + * + * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']] + * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]] + */ +var xprod = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function xprod(a, b) { + // = xprodWith(prepend); (takes about 3 times as long...) + var idx = 0; + var ilen = a.length; + var j; + var jlen = b.length; + var result = []; + while (idx < ilen) { + j = 0; + while (j < jlen) { + result[result.length] = [a[idx], b[j]]; + j += 1; + } + idx += 1; + } + return result; +}); +/* harmony default export */ __webpack_exports__["default"] = (xprod); + +/***/ }), + +/***/ "./node_modules/ramda/es/zip.js": +/*!**************************************!*\ + !*** ./node_modules/ramda/es/zip.js ***! + \**************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Creates a new list out of the two supplied by pairing up equally-positioned + * items from both lists. The returned list is truncated to the length of the + * shorter of the two input lists. + * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`. + * + * @func + * @memberOf R + * @since v0.1.0 + * @category List + * @sig [a] -> [b] -> [[a,b]] + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`. + * @example + * + * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']] + * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]] + */ +var zip = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function zip(a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = [a[idx], b[idx]]; + idx += 1; + } + return rv; +}); +/* harmony default export */ __webpack_exports__["default"] = (zip); + +/***/ }), + +/***/ "./node_modules/ramda/es/zipObj.js": +/*!*****************************************!*\ + !*** ./node_modules/ramda/es/zipObj.js ***! + \*****************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/es/internal/_curry2.js"); + + +/** + * Creates a new object out of a list of keys and a list of values. + * Key/value pairing is truncated to the length of the shorter of the two lists. + * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`. + * + * @func + * @memberOf R + * @since v0.3.0 + * @category List + * @sig [String] -> [*] -> {String: *} + * @param {Array} keys The array that will be properties on the output object. + * @param {Array} values The list of values on the output object. + * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`. + * @example + * + * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3} + */ +var zipObj = /*#__PURE__*/Object(_internal_curry2_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function zipObj(keys, values) { + var idx = 0; + var len = Math.min(keys.length, values.length); + var out = {}; + while (idx < len) { + out[keys[idx]] = values[idx]; + idx += 1; + } + return out; +}); +/* harmony default export */ __webpack_exports__["default"] = (zipObj); + +/***/ }), + +/***/ "./node_modules/ramda/es/zipWith.js": +/*!******************************************!*\ + !*** ./node_modules/ramda/es/zipWith.js ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/es/internal/_curry3.js"); + + +/** + * Creates a new list out of the two supplied by applying the function to each + * equally-positioned pair in the lists. The returned list is truncated to the + * length of the shorter of the two input lists. + * + * @function + * @memberOf R + * @since v0.1.0 + * @category List + * @sig ((a, b) -> c) -> [a] -> [b] -> [c] + * @param {Function} fn The function used to combine the two elements into one value. + * @param {Array} list1 The first array to consider. + * @param {Array} list2 The second array to consider. + * @return {Array} The list made by combining same-indexed elements of `list1` and `list2` + * using `fn`. + * @example + * + * const f = (x, y) => { + * // ... + * }; + * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']); + * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')] + * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)] + */ +var zipWith = /*#__PURE__*/Object(_internal_curry3_js__WEBPACK_IMPORTED_MODULE_0__["default"])(function zipWith(fn, a, b) { + var rv = []; + var idx = 0; + var len = Math.min(a.length, b.length); + while (idx < len) { + rv[idx] = fn(a[idx], b[idx]); + idx += 1; + } + return rv; +}); +/* harmony default export */ __webpack_exports__["default"] = (zipWith); + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/ajax/index.js": +/*!***********************************************!*\ + !*** ./node_modules/rxjs/_esm5/ajax/index.js ***! + \***********************************************/ +/*! exports provided: ajax, AjaxResponse, AjaxError, AjaxTimeoutError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_observable_dom_ajax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/observable/dom/ajax */ "./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ajax", function() { return _internal_observable_dom_ajax__WEBPACK_IMPORTED_MODULE_0__["ajax"]; }); + +/* harmony import */ var _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/observable/dom/AjaxObservable */ "./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AjaxResponse", function() { return _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__["AjaxResponse"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AjaxError", function() { return _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__["AjaxError"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AjaxTimeoutError", function() { return _internal_observable_dom_AjaxObservable__WEBPACK_IMPORTED_MODULE_1__["AjaxTimeoutError"]; }); + +/** PURE_IMPORTS_START PURE_IMPORTS_END */ + + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/index.js": +/*!******************************************!*\ + !*** ./node_modules/rxjs/_esm5/index.js ***! + \******************************************/ +/*! exports provided: Observable, ConnectableObservable, GroupedObservable, observable, Subject, BehaviorSubject, ReplaySubject, AsyncSubject, asapScheduler, asyncScheduler, queueScheduler, animationFrameScheduler, VirtualTimeScheduler, VirtualAction, Scheduler, Subscription, Subscriber, Notification, NotificationKind, pipe, noop, identity, isObservable, ArgumentOutOfRangeError, EmptyError, ObjectUnsubscribedError, UnsubscriptionError, TimeoutError, bindCallback, bindNodeCallback, combineLatest, concat, defer, empty, forkJoin, from, fromEvent, fromEventPattern, generate, iif, interval, merge, never, of, onErrorResumeNext, pairs, partition, race, range, throwError, timer, using, zip, scheduled, EMPTY, NEVER, config */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./internal/Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return _internal_Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]; }); + +/* harmony import */ var _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./internal/observable/ConnectableObservable */ "./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return _internal_observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_1__["ConnectableObservable"]; }); + +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./internal/operators/groupBy */ "./node_modules/rxjs/_esm5/internal/operators/groupBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_2__["GroupedObservable"]; }); + +/* harmony import */ var _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./internal/symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return _internal_symbol_observable__WEBPACK_IMPORTED_MODULE_3__["observable"]; }); + +/* harmony import */ var _internal_Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./internal/Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return _internal_Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]; }); + +/* harmony import */ var _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./internal/BehaviorSubject */ "./node_modules/rxjs/_esm5/internal/BehaviorSubject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return _internal_BehaviorSubject__WEBPACK_IMPORTED_MODULE_5__["BehaviorSubject"]; }); + +/* harmony import */ var _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./internal/ReplaySubject */ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return _internal_ReplaySubject__WEBPACK_IMPORTED_MODULE_6__["ReplaySubject"]; }); + +/* harmony import */ var _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./internal/AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return _internal_AsyncSubject__WEBPACK_IMPORTED_MODULE_7__["AsyncSubject"]; }); + +/* harmony import */ var _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./internal/scheduler/asap */ "./node_modules/rxjs/_esm5/internal/scheduler/asap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asapScheduler", function() { return _internal_scheduler_asap__WEBPACK_IMPORTED_MODULE_8__["asap"]; }); + +/* harmony import */ var _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./internal/scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "asyncScheduler", function() { return _internal_scheduler_async__WEBPACK_IMPORTED_MODULE_9__["async"]; }); + +/* harmony import */ var _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./internal/scheduler/queue */ "./node_modules/rxjs/_esm5/internal/scheduler/queue.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "queueScheduler", function() { return _internal_scheduler_queue__WEBPACK_IMPORTED_MODULE_10__["queue"]; }); + +/* harmony import */ var _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./internal/scheduler/animationFrame */ "./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "animationFrameScheduler", function() { return _internal_scheduler_animationFrame__WEBPACK_IMPORTED_MODULE_11__["animationFrame"]; }); + +/* harmony import */ var _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./internal/scheduler/VirtualTimeScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualTimeScheduler"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return _internal_scheduler_VirtualTimeScheduler__WEBPACK_IMPORTED_MODULE_12__["VirtualAction"]; }); + +/* harmony import */ var _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./internal/Scheduler */ "./node_modules/rxjs/_esm5/internal/Scheduler.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return _internal_Scheduler__WEBPACK_IMPORTED_MODULE_13__["Scheduler"]; }); + +/* harmony import */ var _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./internal/Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return _internal_Subscription__WEBPACK_IMPORTED_MODULE_14__["Subscription"]; }); + +/* harmony import */ var _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./internal/Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return _internal_Subscriber__WEBPACK_IMPORTED_MODULE_15__["Subscriber"]; }); + +/* harmony import */ var _internal_Notification__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./internal/Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["Notification"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return _internal_Notification__WEBPACK_IMPORTED_MODULE_16__["NotificationKind"]; }); + +/* harmony import */ var _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./internal/util/pipe */ "./node_modules/rxjs/_esm5/internal/util/pipe.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return _internal_util_pipe__WEBPACK_IMPORTED_MODULE_17__["pipe"]; }); + +/* harmony import */ var _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./internal/util/noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return _internal_util_noop__WEBPACK_IMPORTED_MODULE_18__["noop"]; }); + +/* harmony import */ var _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./internal/util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return _internal_util_identity__WEBPACK_IMPORTED_MODULE_19__["identity"]; }); + +/* harmony import */ var _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./internal/util/isObservable */ "./node_modules/rxjs/_esm5/internal/util/isObservable.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return _internal_util_isObservable__WEBPACK_IMPORTED_MODULE_20__["isObservable"]; }); + +/* harmony import */ var _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./internal/util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return _internal_util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_21__["ArgumentOutOfRangeError"]; }); + +/* harmony import */ var _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./internal/util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return _internal_util_EmptyError__WEBPACK_IMPORTED_MODULE_22__["EmptyError"]; }); + +/* harmony import */ var _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./internal/util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return _internal_util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_23__["ObjectUnsubscribedError"]; }); + +/* harmony import */ var _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./internal/util/UnsubscriptionError */ "./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return _internal_util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_24__["UnsubscriptionError"]; }); + +/* harmony import */ var _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./internal/util/TimeoutError */ "./node_modules/rxjs/_esm5/internal/util/TimeoutError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return _internal_util_TimeoutError__WEBPACK_IMPORTED_MODULE_25__["TimeoutError"]; }); + +/* harmony import */ var _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./internal/observable/bindCallback */ "./node_modules/rxjs/_esm5/internal/observable/bindCallback.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return _internal_observable_bindCallback__WEBPACK_IMPORTED_MODULE_26__["bindCallback"]; }); + +/* harmony import */ var _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./internal/observable/bindNodeCallback */ "./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return _internal_observable_bindNodeCallback__WEBPACK_IMPORTED_MODULE_27__["bindNodeCallback"]; }); + +/* harmony import */ var _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./internal/observable/combineLatest */ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_observable_combineLatest__WEBPACK_IMPORTED_MODULE_28__["combineLatest"]; }); + +/* harmony import */ var _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./internal/observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_observable_concat__WEBPACK_IMPORTED_MODULE_29__["concat"]; }); + +/* harmony import */ var _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./internal/observable/defer */ "./node_modules/rxjs/_esm5/internal/observable/defer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return _internal_observable_defer__WEBPACK_IMPORTED_MODULE_30__["defer"]; }); + +/* harmony import */ var _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./internal/observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["empty"]; }); + +/* harmony import */ var _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./internal/observable/forkJoin */ "./node_modules/rxjs/_esm5/internal/observable/forkJoin.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return _internal_observable_forkJoin__WEBPACK_IMPORTED_MODULE_32__["forkJoin"]; }); + +/* harmony import */ var _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./internal/observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "from", function() { return _internal_observable_from__WEBPACK_IMPORTED_MODULE_33__["from"]; }); + +/* harmony import */ var _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./internal/observable/fromEvent */ "./node_modules/rxjs/_esm5/internal/observable/fromEvent.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return _internal_observable_fromEvent__WEBPACK_IMPORTED_MODULE_34__["fromEvent"]; }); + +/* harmony import */ var _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./internal/observable/fromEventPattern */ "./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return _internal_observable_fromEventPattern__WEBPACK_IMPORTED_MODULE_35__["fromEventPattern"]; }); + +/* harmony import */ var _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./internal/observable/generate */ "./node_modules/rxjs/_esm5/internal/observable/generate.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return _internal_observable_generate__WEBPACK_IMPORTED_MODULE_36__["generate"]; }); + +/* harmony import */ var _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./internal/observable/iif */ "./node_modules/rxjs/_esm5/internal/observable/iif.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return _internal_observable_iif__WEBPACK_IMPORTED_MODULE_37__["iif"]; }); + +/* harmony import */ var _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./internal/observable/interval */ "./node_modules/rxjs/_esm5/internal/observable/interval.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return _internal_observable_interval__WEBPACK_IMPORTED_MODULE_38__["interval"]; }); + +/* harmony import */ var _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./internal/observable/merge */ "./node_modules/rxjs/_esm5/internal/observable/merge.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_observable_merge__WEBPACK_IMPORTED_MODULE_39__["merge"]; }); + +/* harmony import */ var _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./internal/observable/never */ "./node_modules/rxjs/_esm5/internal/observable/never.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "never", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["never"]; }); + +/* harmony import */ var _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./internal/observable/of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "of", function() { return _internal_observable_of__WEBPACK_IMPORTED_MODULE_41__["of"]; }); + +/* harmony import */ var _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./internal/observable/onErrorResumeNext */ "./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_observable_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_42__["onErrorResumeNext"]; }); + +/* harmony import */ var _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./internal/observable/pairs */ "./node_modules/rxjs/_esm5/internal/observable/pairs.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return _internal_observable_pairs__WEBPACK_IMPORTED_MODULE_43__["pairs"]; }); + +/* harmony import */ var _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./internal/observable/partition */ "./node_modules/rxjs/_esm5/internal/observable/partition.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_observable_partition__WEBPACK_IMPORTED_MODULE_44__["partition"]; }); + +/* harmony import */ var _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./internal/observable/race */ "./node_modules/rxjs/_esm5/internal/observable/race.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_observable_race__WEBPACK_IMPORTED_MODULE_45__["race"]; }); + +/* harmony import */ var _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./internal/observable/range */ "./node_modules/rxjs/_esm5/internal/observable/range.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "range", function() { return _internal_observable_range__WEBPACK_IMPORTED_MODULE_46__["range"]; }); + +/* harmony import */ var _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./internal/observable/throwError */ "./node_modules/rxjs/_esm5/internal/observable/throwError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return _internal_observable_throwError__WEBPACK_IMPORTED_MODULE_47__["throwError"]; }); + +/* harmony import */ var _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./internal/observable/timer */ "./node_modules/rxjs/_esm5/internal/observable/timer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return _internal_observable_timer__WEBPACK_IMPORTED_MODULE_48__["timer"]; }); + +/* harmony import */ var _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ./internal/observable/using */ "./node_modules/rxjs/_esm5/internal/observable/using.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "using", function() { return _internal_observable_using__WEBPACK_IMPORTED_MODULE_49__["using"]; }); + +/* harmony import */ var _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ./internal/observable/zip */ "./node_modules/rxjs/_esm5/internal/observable/zip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_observable_zip__WEBPACK_IMPORTED_MODULE_50__["zip"]; }); + +/* harmony import */ var _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ./internal/scheduled/scheduled */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return _internal_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_51__["scheduled"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return _internal_observable_empty__WEBPACK_IMPORTED_MODULE_31__["EMPTY"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return _internal_observable_never__WEBPACK_IMPORTED_MODULE_40__["NEVER"]; }); + +/* harmony import */ var _internal_config__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ./internal/config */ "./node_modules/rxjs/_esm5/internal/config.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "config", function() { return _internal_config__WEBPACK_IMPORTED_MODULE_52__["config"]; }); + +/** PURE_IMPORTS_START PURE_IMPORTS_END */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js": +/*!**********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/AsyncSubject.js ***! + \**********************************************************/ +/*! exports provided: AsyncSubject */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncSubject", function() { return AsyncSubject; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */ + + + +var AsyncSubject = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncSubject, _super); + function AsyncSubject() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.value = null; + _this.hasNext = false; + _this.hasCompleted = false; + return _this; + } + AsyncSubject.prototype._subscribe = function (subscriber) { + if (this.hasError) { + subscriber.error(this.thrownError); + return _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"].EMPTY; + } + else if (this.hasCompleted && this.hasNext) { + subscriber.next(this.value); + subscriber.complete(); + return _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"].EMPTY; + } + return _super.prototype._subscribe.call(this, subscriber); + }; + AsyncSubject.prototype.next = function (value) { + if (!this.hasCompleted) { + this.value = value; + this.hasNext = true; + } + }; + AsyncSubject.prototype.error = function (error) { + if (!this.hasCompleted) { + _super.prototype.error.call(this, error); + } + }; + AsyncSubject.prototype.complete = function () { + this.hasCompleted = true; + if (this.hasNext) { + _super.prototype.next.call(this, this.value); + } + _super.prototype.complete.call(this); + }; + return AsyncSubject; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); + +//# sourceMappingURL=AsyncSubject.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/BehaviorSubject.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/BehaviorSubject.js ***! + \*************************************************************/ +/*! exports provided: BehaviorSubject */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BehaviorSubject", function() { return BehaviorSubject; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); +/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */ + + + +var BehaviorSubject = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BehaviorSubject, _super); + function BehaviorSubject(_value) { + var _this = _super.call(this) || this; + _this._value = _value; + return _this; + } + Object.defineProperty(BehaviorSubject.prototype, "value", { + get: function () { + return this.getValue(); + }, + enumerable: true, + configurable: true + }); + BehaviorSubject.prototype._subscribe = function (subscriber) { + var subscription = _super.prototype._subscribe.call(this, subscriber); + if (subscription && !subscription.closed) { + subscriber.next(this._value); + } + return subscription; + }; + BehaviorSubject.prototype.getValue = function () { + if (this.hasError) { + throw this.thrownError; + } + else if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_2__["ObjectUnsubscribedError"](); + } + else { + return this._value; + } + }; + BehaviorSubject.prototype.next = function (value) { + _super.prototype.next.call(this, this._value = value); + }; + return BehaviorSubject; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); + +//# sourceMappingURL=BehaviorSubject.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/InnerSubscriber.js ***! + \*************************************************************/ +/*! exports provided: InnerSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "InnerSubscriber", function() { return InnerSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +var InnerSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](InnerSubscriber, _super); + function InnerSubscriber(parent, outerValue, outerIndex) { + var _this = _super.call(this) || this; + _this.parent = parent; + _this.outerValue = outerValue; + _this.outerIndex = outerIndex; + _this.index = 0; + return _this; + } + InnerSubscriber.prototype._next = function (value) { + this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this); + }; + InnerSubscriber.prototype._error = function (error) { + this.parent.notifyError(error, this); + this.unsubscribe(); + }; + InnerSubscriber.prototype._complete = function () { + this.parent.notifyComplete(this); + this.unsubscribe(); + }; + return InnerSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); + +//# sourceMappingURL=InnerSubscriber.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/Notification.js": +/*!**********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/Notification.js ***! + \**********************************************************/ +/*! exports provided: NotificationKind, Notification */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NotificationKind", function() { return NotificationKind; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Notification", function() { return Notification; }); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./observable/of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./observable/throwError */ "./node_modules/rxjs/_esm5/internal/observable/throwError.js"); +/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */ + + + +var NotificationKind; +/*@__PURE__*/ (function (NotificationKind) { + NotificationKind["NEXT"] = "N"; + NotificationKind["ERROR"] = "E"; + NotificationKind["COMPLETE"] = "C"; +})(NotificationKind || (NotificationKind = {})); +var Notification = /*@__PURE__*/ (function () { + function Notification(kind, value, error) { + this.kind = kind; + this.value = value; + this.error = error; + this.hasValue = kind === 'N'; + } + Notification.prototype.observe = function (observer) { + switch (this.kind) { + case 'N': + return observer.next && observer.next(this.value); + case 'E': + return observer.error && observer.error(this.error); + case 'C': + return observer.complete && observer.complete(); + } + }; + Notification.prototype.do = function (next, error, complete) { + var kind = this.kind; + switch (kind) { + case 'N': + return next && next(this.value); + case 'E': + return error && error(this.error); + case 'C': + return complete && complete(); + } + }; + Notification.prototype.accept = function (nextOrObserver, error, complete) { + if (nextOrObserver && typeof nextOrObserver.next === 'function') { + return this.observe(nextOrObserver); + } + else { + return this.do(nextOrObserver, error, complete); + } + }; + Notification.prototype.toObservable = function () { + var kind = this.kind; + switch (kind) { + case 'N': + return Object(_observable_of__WEBPACK_IMPORTED_MODULE_1__["of"])(this.value); + case 'E': + return Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_2__["throwError"])(this.error); + case 'C': + return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_0__["empty"])(); + } + throw new Error('unexpected notification kind value'); + }; + Notification.createNext = function (value) { + if (typeof value !== 'undefined') { + return new Notification('N', value); + } + return Notification.undefinedValueNotification; + }; + Notification.createError = function (err) { + return new Notification('E', undefined, err); + }; + Notification.createComplete = function () { + return Notification.completeNotification; + }; + Notification.completeNotification = new Notification('C'); + Notification.undefinedValueNotification = new Notification('N', undefined); + return Notification; +}()); + +//# sourceMappingURL=Notification.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/Observable.js": +/*!********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/Observable.js ***! + \********************************************************/ +/*! exports provided: Observable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Observable", function() { return Observable; }); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/canReportError */ "./node_modules/rxjs/_esm5/internal/util/canReportError.js"); +/* harmony import */ var _util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/toSubscriber */ "./node_modules/rxjs/_esm5/internal/util/toSubscriber.js"); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/pipe */ "./node_modules/rxjs/_esm5/internal/util/pipe.js"); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./config */ "./node_modules/rxjs/_esm5/internal/config.js"); +/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */ + + + + + +var Observable = /*@__PURE__*/ (function () { + function Observable(subscribe) { + this._isScalar = false; + if (subscribe) { + this._subscribe = subscribe; + } + } + Observable.prototype.lift = function (operator) { + var observable = new Observable(); + observable.source = this; + observable.operator = operator; + return observable; + }; + Observable.prototype.subscribe = function (observerOrNext, error, complete) { + var operator = this.operator; + var sink = Object(_util_toSubscriber__WEBPACK_IMPORTED_MODULE_1__["toSubscriber"])(observerOrNext, error, complete); + if (operator) { + sink.add(operator.call(sink, this.source)); + } + else { + sink.add(this.source || (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ? + this._subscribe(sink) : + this._trySubscribe(sink)); + } + if (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling) { + if (sink.syncErrorThrowable) { + sink.syncErrorThrowable = false; + if (sink.syncErrorThrown) { + throw sink.syncErrorValue; + } + } + } + return sink; + }; + Observable.prototype._trySubscribe = function (sink) { + try { + return this._subscribe(sink); + } + catch (err) { + if (_config__WEBPACK_IMPORTED_MODULE_4__["config"].useDeprecatedSynchronousErrorHandling) { + sink.syncErrorThrown = true; + sink.syncErrorValue = err; + } + if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_0__["canReportError"])(sink)) { + sink.error(err); + } + else { + console.warn(err); + } + } + }; + Observable.prototype.forEach = function (next, promiseCtor) { + var _this = this; + promiseCtor = getPromiseCtor(promiseCtor); + return new promiseCtor(function (resolve, reject) { + var subscription; + subscription = _this.subscribe(function (value) { + try { + next(value); + } + catch (err) { + reject(err); + if (subscription) { + subscription.unsubscribe(); + } + } + }, reject, resolve); + }); + }; + Observable.prototype._subscribe = function (subscriber) { + var source = this.source; + return source && source.subscribe(subscriber); + }; + Observable.prototype[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["observable"]] = function () { + return this; + }; + Observable.prototype.pipe = function () { + var operations = []; + for (var _i = 0; _i < arguments.length; _i++) { + operations[_i] = arguments[_i]; + } + if (operations.length === 0) { + return this; + } + return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipeFromArray"])(operations)(this); + }; + Observable.prototype.toPromise = function (promiseCtor) { + var _this = this; + promiseCtor = getPromiseCtor(promiseCtor); + return new promiseCtor(function (resolve, reject) { + var value; + _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); }); + }); + }; + Observable.create = function (subscribe) { + return new Observable(subscribe); + }; + return Observable; +}()); + +function getPromiseCtor(promiseCtor) { + if (!promiseCtor) { + promiseCtor = _config__WEBPACK_IMPORTED_MODULE_4__["config"].Promise || Promise; + } + if (!promiseCtor) { + throw new Error('no Promise impl found'); + } + return promiseCtor; +} +//# sourceMappingURL=Observable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/Observer.js": +/*!******************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/Observer.js ***! + \******************************************************/ +/*! exports provided: empty */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ "./node_modules/rxjs/_esm5/internal/config.js"); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/hostReportError */ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js"); +/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */ + + +var empty = { + closed: true, + next: function (value) { }, + error: function (err) { + if (_config__WEBPACK_IMPORTED_MODULE_0__["config"].useDeprecatedSynchronousErrorHandling) { + throw err; + } + else { + Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_1__["hostReportError"])(err); + } + }, + complete: function () { } +}; +//# sourceMappingURL=Observer.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/OuterSubscriber.js ***! + \*************************************************************/ +/*! exports provided: OuterSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OuterSubscriber", function() { return OuterSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +var OuterSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](OuterSubscriber, _super); + function OuterSubscriber() { + return _super !== null && _super.apply(this, arguments) || this; + } + OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(innerValue); + }; + OuterSubscriber.prototype.notifyError = function (error, innerSub) { + this.destination.error(error); + }; + OuterSubscriber.prototype.notifyComplete = function (innerSub) { + this.destination.complete(); + }; + return OuterSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); + +//# sourceMappingURL=OuterSubscriber.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/ReplaySubject.js ***! + \***********************************************************/ +/*! exports provided: ReplaySubject */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ReplaySubject", function() { return ReplaySubject; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scheduler/queue */ "./node_modules/rxjs/_esm5/internal/scheduler/queue.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./operators/observeOn */ "./node_modules/rxjs/_esm5/internal/operators/observeOn.js"); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./SubjectSubscription */ "./node_modules/rxjs/_esm5/internal/SubjectSubscription.js"); +/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */ + + + + + + + +var ReplaySubject = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ReplaySubject, _super); + function ReplaySubject(bufferSize, windowTime, scheduler) { + if (bufferSize === void 0) { + bufferSize = Number.POSITIVE_INFINITY; + } + if (windowTime === void 0) { + windowTime = Number.POSITIVE_INFINITY; + } + var _this = _super.call(this) || this; + _this.scheduler = scheduler; + _this._events = []; + _this._infiniteTimeWindow = false; + _this._bufferSize = bufferSize < 1 ? 1 : bufferSize; + _this._windowTime = windowTime < 1 ? 1 : windowTime; + if (windowTime === Number.POSITIVE_INFINITY) { + _this._infiniteTimeWindow = true; + _this.next = _this.nextInfiniteTimeWindow; + } + else { + _this.next = _this.nextTimeWindow; + } + return _this; + } + ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) { + var _events = this._events; + _events.push(value); + if (_events.length > this._bufferSize) { + _events.shift(); + } + _super.prototype.next.call(this, value); + }; + ReplaySubject.prototype.nextTimeWindow = function (value) { + this._events.push(new ReplayEvent(this._getNow(), value)); + this._trimBufferThenGetEvents(); + _super.prototype.next.call(this, value); + }; + ReplaySubject.prototype._subscribe = function (subscriber) { + var _infiniteTimeWindow = this._infiniteTimeWindow; + var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents(); + var scheduler = this.scheduler; + var len = _events.length; + var subscription; + if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_5__["ObjectUnsubscribedError"](); + } + else if (this.isStopped || this.hasError) { + subscription = _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; + } + else { + this.observers.push(subscriber); + subscription = new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_6__["SubjectSubscription"](this, subscriber); + } + if (scheduler) { + subscriber.add(subscriber = new _operators_observeOn__WEBPACK_IMPORTED_MODULE_4__["ObserveOnSubscriber"](subscriber, scheduler)); + } + if (_infiniteTimeWindow) { + for (var i = 0; i < len && !subscriber.closed; i++) { + subscriber.next(_events[i]); + } + } + else { + for (var i = 0; i < len && !subscriber.closed; i++) { + subscriber.next(_events[i].value); + } + } + if (this.hasError) { + subscriber.error(this.thrownError); + } + else if (this.isStopped) { + subscriber.complete(); + } + return subscription; + }; + ReplaySubject.prototype._getNow = function () { + return (this.scheduler || _scheduler_queue__WEBPACK_IMPORTED_MODULE_2__["queue"]).now(); + }; + ReplaySubject.prototype._trimBufferThenGetEvents = function () { + var now = this._getNow(); + var _bufferSize = this._bufferSize; + var _windowTime = this._windowTime; + var _events = this._events; + var eventsCount = _events.length; + var spliceCount = 0; + while (spliceCount < eventsCount) { + if ((now - _events[spliceCount].time) < _windowTime) { + break; + } + spliceCount++; + } + if (eventsCount > _bufferSize) { + spliceCount = Math.max(spliceCount, eventsCount - _bufferSize); + } + if (spliceCount > 0) { + _events.splice(0, spliceCount); + } + return _events; + }; + return ReplaySubject; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); + +var ReplayEvent = /*@__PURE__*/ (function () { + function ReplayEvent(time, value) { + this.time = time; + this.value = value; + } + return ReplayEvent; +}()); +//# sourceMappingURL=ReplaySubject.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/Scheduler.js": +/*!*******************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/Scheduler.js ***! + \*******************************************************/ +/*! exports provided: Scheduler */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Scheduler", function() { return Scheduler; }); +var Scheduler = /*@__PURE__*/ (function () { + function Scheduler(SchedulerAction, now) { + if (now === void 0) { + now = Scheduler.now; + } + this.SchedulerAction = SchedulerAction; + this.now = now; + } + Scheduler.prototype.schedule = function (work, delay, state) { + if (delay === void 0) { + delay = 0; + } + return new this.SchedulerAction(this, work).schedule(state, delay); + }; + Scheduler.now = function () { return Date.now(); }; + return Scheduler; +}()); + +//# sourceMappingURL=Scheduler.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/Subject.js": +/*!*****************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/Subject.js ***! + \*****************************************************/ +/*! exports provided: SubjectSubscriber, Subject, AnonymousSubject */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscriber", function() { return SubjectSubscriber; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subject", function() { return Subject; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnonymousSubject", function() { return AnonymousSubject; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./util/ObjectUnsubscribedError */ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js"); +/* harmony import */ var _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./SubjectSubscription */ "./node_modules/rxjs/_esm5/internal/SubjectSubscription.js"); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js"); +/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */ + + + + + + + +var SubjectSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubjectSubscriber, _super); + function SubjectSubscriber(destination) { + var _this = _super.call(this, destination) || this; + _this.destination = destination; + return _this; + } + return SubjectSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"])); + +var Subject = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Subject, _super); + function Subject() { + var _this = _super.call(this) || this; + _this.observers = []; + _this.closed = false; + _this.isStopped = false; + _this.hasError = false; + _this.thrownError = null; + return _this; + } + Subject.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_6__["rxSubscriber"]] = function () { + return new SubjectSubscriber(this); + }; + Subject.prototype.lift = function (operator) { + var subject = new AnonymousSubject(this, this); + subject.operator = operator; + return subject; + }; + Subject.prototype.next = function (value) { + if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); + } + if (!this.isStopped) { + var observers = this.observers; + var len = observers.length; + var copy = observers.slice(); + for (var i = 0; i < len; i++) { + copy[i].next(value); + } + } + }; + Subject.prototype.error = function (err) { + if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); + } + this.hasError = true; + this.thrownError = err; + this.isStopped = true; + var observers = this.observers; + var len = observers.length; + var copy = observers.slice(); + for (var i = 0; i < len; i++) { + copy[i].error(err); + } + this.observers.length = 0; + }; + Subject.prototype.complete = function () { + if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); + } + this.isStopped = true; + var observers = this.observers; + var len = observers.length; + var copy = observers.slice(); + for (var i = 0; i < len; i++) { + copy[i].complete(); + } + this.observers.length = 0; + }; + Subject.prototype.unsubscribe = function () { + this.isStopped = true; + this.closed = true; + this.observers = null; + }; + Subject.prototype._trySubscribe = function (subscriber) { + if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); + } + else { + return _super.prototype._trySubscribe.call(this, subscriber); + } + }; + Subject.prototype._subscribe = function (subscriber) { + if (this.closed) { + throw new _util_ObjectUnsubscribedError__WEBPACK_IMPORTED_MODULE_4__["ObjectUnsubscribedError"](); + } + else if (this.hasError) { + subscriber.error(this.thrownError); + return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; + } + else if (this.isStopped) { + subscriber.complete(); + return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; + } + else { + this.observers.push(subscriber); + return new _SubjectSubscription__WEBPACK_IMPORTED_MODULE_5__["SubjectSubscription"](this, subscriber); + } + }; + Subject.prototype.asObservable = function () { + var observable = new _Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"](); + observable.source = this; + return observable; + }; + Subject.create = function (destination, source) { + return new AnonymousSubject(destination, source); + }; + return Subject; +}(_Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"])); + +var AnonymousSubject = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnonymousSubject, _super); + function AnonymousSubject(destination, source) { + var _this = _super.call(this) || this; + _this.destination = destination; + _this.source = source; + return _this; + } + AnonymousSubject.prototype.next = function (value) { + var destination = this.destination; + if (destination && destination.next) { + destination.next(value); + } + }; + AnonymousSubject.prototype.error = function (err) { + var destination = this.destination; + if (destination && destination.error) { + this.destination.error(err); + } + }; + AnonymousSubject.prototype.complete = function () { + var destination = this.destination; + if (destination && destination.complete) { + this.destination.complete(); + } + }; + AnonymousSubject.prototype._subscribe = function (subscriber) { + var source = this.source; + if (source) { + return this.source.subscribe(subscriber); + } + else { + return _Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"].EMPTY; + } + }; + return AnonymousSubject; +}(Subject)); + +//# sourceMappingURL=Subject.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/SubjectSubscription.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/SubjectSubscription.js ***! + \*****************************************************************/ +/*! exports provided: SubjectSubscription */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubjectSubscription", function() { return SubjectSubscription; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ + + +var SubjectSubscription = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubjectSubscription, _super); + function SubjectSubscription(subject, subscriber) { + var _this = _super.call(this) || this; + _this.subject = subject; + _this.subscriber = subscriber; + _this.closed = false; + return _this; + } + SubjectSubscription.prototype.unsubscribe = function () { + if (this.closed) { + return; + } + this.closed = true; + var subject = this.subject; + var observers = subject.observers; + this.subject = null; + if (!observers || observers.length === 0 || subject.isStopped || subject.closed) { + return; + } + var subscriberIndex = observers.indexOf(this.subscriber); + if (subscriberIndex !== -1) { + observers.splice(subscriberIndex, 1); + } + }; + return SubjectSubscription; +}(_Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"])); + +//# sourceMappingURL=SubjectSubscription.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/Subscriber.js": +/*!********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/Subscriber.js ***! + \********************************************************/ +/*! exports provided: Subscriber, SafeSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscriber", function() { return Subscriber; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SafeSubscriber", function() { return SafeSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./Observer */ "./node_modules/rxjs/_esm5/internal/Observer.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/symbol/rxSubscriber */ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js"); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./config */ "./node_modules/rxjs/_esm5/internal/config.js"); +/* harmony import */ var _util_hostReportError__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./util/hostReportError */ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js"); +/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */ + + + + + + + +var Subscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Subscriber, _super); + function Subscriber(destinationOrNext, error, complete) { + var _this = _super.call(this) || this; + _this.syncErrorValue = null; + _this.syncErrorThrown = false; + _this.syncErrorThrowable = false; + _this.isStopped = false; + switch (arguments.length) { + case 0: + _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]; + break; + case 1: + if (!destinationOrNext) { + _this.destination = _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]; + break; + } + if (typeof destinationOrNext === 'object') { + if (destinationOrNext instanceof Subscriber) { + _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable; + _this.destination = destinationOrNext; + destinationOrNext.add(_this); + } + else { + _this.syncErrorThrowable = true; + _this.destination = new SafeSubscriber(_this, destinationOrNext); + } + break; + } + default: + _this.syncErrorThrowable = true; + _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete); + break; + } + return _this; + } + Subscriber.prototype[_internal_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_4__["rxSubscriber"]] = function () { return this; }; + Subscriber.create = function (next, error, complete) { + var subscriber = new Subscriber(next, error, complete); + subscriber.syncErrorThrowable = false; + return subscriber; + }; + Subscriber.prototype.next = function (value) { + if (!this.isStopped) { + this._next(value); + } + }; + Subscriber.prototype.error = function (err) { + if (!this.isStopped) { + this.isStopped = true; + this._error(err); + } + }; + Subscriber.prototype.complete = function () { + if (!this.isStopped) { + this.isStopped = true; + this._complete(); + } + }; + Subscriber.prototype.unsubscribe = function () { + if (this.closed) { + return; + } + this.isStopped = true; + _super.prototype.unsubscribe.call(this); + }; + Subscriber.prototype._next = function (value) { + this.destination.next(value); + }; + Subscriber.prototype._error = function (err) { + this.destination.error(err); + this.unsubscribe(); + }; + Subscriber.prototype._complete = function () { + this.destination.complete(); + this.unsubscribe(); + }; + Subscriber.prototype._unsubscribeAndRecycle = function () { + var _parentOrParents = this._parentOrParents; + this._parentOrParents = null; + this.unsubscribe(); + this.closed = false; + this.isStopped = false; + this._parentOrParents = _parentOrParents; + return this; + }; + return Subscriber; +}(_Subscription__WEBPACK_IMPORTED_MODULE_3__["Subscription"])); + +var SafeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SafeSubscriber, _super); + function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) { + var _this = _super.call(this) || this; + _this._parentSubscriber = _parentSubscriber; + var next; + var context = _this; + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(observerOrNext)) { + next = observerOrNext; + } + else if (observerOrNext) { + next = observerOrNext.next; + error = observerOrNext.error; + complete = observerOrNext.complete; + if (observerOrNext !== _Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]) { + context = Object.create(observerOrNext); + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_1__["isFunction"])(context.unsubscribe)) { + _this.add(context.unsubscribe.bind(context)); + } + context.unsubscribe = _this.unsubscribe.bind(_this); + } + } + _this._context = context; + _this._next = next; + _this._error = error; + _this._complete = complete; + return _this; + } + SafeSubscriber.prototype.next = function (value) { + if (!this.isStopped && this._next) { + var _parentSubscriber = this._parentSubscriber; + if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(this._next, value); + } + else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) { + this.unsubscribe(); + } + } + }; + SafeSubscriber.prototype.error = function (err) { + if (!this.isStopped) { + var _parentSubscriber = this._parentSubscriber; + var useDeprecatedSynchronousErrorHandling = _config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling; + if (this._error) { + if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(this._error, err); + this.unsubscribe(); + } + else { + this.__tryOrSetError(_parentSubscriber, this._error, err); + this.unsubscribe(); + } + } + else if (!_parentSubscriber.syncErrorThrowable) { + this.unsubscribe(); + if (useDeprecatedSynchronousErrorHandling) { + throw err; + } + Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); + } + else { + if (useDeprecatedSynchronousErrorHandling) { + _parentSubscriber.syncErrorValue = err; + _parentSubscriber.syncErrorThrown = true; + } + else { + Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); + } + this.unsubscribe(); + } + } + }; + SafeSubscriber.prototype.complete = function () { + var _this = this; + if (!this.isStopped) { + var _parentSubscriber = this._parentSubscriber; + if (this._complete) { + var wrappedComplete = function () { return _this._complete.call(_this._context); }; + if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) { + this.__tryOrUnsub(wrappedComplete); + this.unsubscribe(); + } + else { + this.__tryOrSetError(_parentSubscriber, wrappedComplete); + this.unsubscribe(); + } + } + else { + this.unsubscribe(); + } + } + }; + SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) { + try { + fn.call(this._context, value); + } + catch (err) { + this.unsubscribe(); + if (_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) { + throw err; + } + else { + Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); + } + } + }; + SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) { + if (!_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) { + throw new Error('bad call'); + } + try { + fn.call(this._context, value); + } + catch (err) { + if (_config__WEBPACK_IMPORTED_MODULE_5__["config"].useDeprecatedSynchronousErrorHandling) { + parent.syncErrorValue = err; + parent.syncErrorThrown = true; + return true; + } + else { + Object(_util_hostReportError__WEBPACK_IMPORTED_MODULE_6__["hostReportError"])(err); + return true; + } + } + return false; + }; + SafeSubscriber.prototype._unsubscribe = function () { + var _parentSubscriber = this._parentSubscriber; + this._context = null; + this._parentSubscriber = null; + _parentSubscriber.unsubscribe(); + }; + return SafeSubscriber; +}(Subscriber)); + +//# sourceMappingURL=Subscriber.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/Subscription.js": +/*!**********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/Subscription.js ***! + \**********************************************************/ +/*! exports provided: Subscription */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Subscription", function() { return Subscription; }); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./util/isObject */ "./node_modules/rxjs/_esm5/internal/util/isObject.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); +/* harmony import */ var _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./util/UnsubscriptionError */ "./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js"); +/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */ + + + + +var Subscription = /*@__PURE__*/ (function () { + function Subscription(unsubscribe) { + this.closed = false; + this._parentOrParents = null; + this._subscriptions = null; + if (unsubscribe) { + this._unsubscribe = unsubscribe; + } + } + Subscription.prototype.unsubscribe = function () { + var errors; + if (this.closed) { + return; + } + var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions; + this.closed = true; + this._parentOrParents = null; + this._subscriptions = null; + if (_parentOrParents instanceof Subscription) { + _parentOrParents.remove(this); + } + else if (_parentOrParents !== null) { + for (var index = 0; index < _parentOrParents.length; ++index) { + var parent_1 = _parentOrParents[index]; + parent_1.remove(this); + } + } + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(_unsubscribe)) { + try { + _unsubscribe.call(this); + } + catch (e) { + errors = e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"] ? flattenUnsubscriptionErrors(e.errors) : [e]; + } + } + if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(_subscriptions)) { + var index = -1; + var len = _subscriptions.length; + while (++index < len) { + var sub = _subscriptions[index]; + if (Object(_util_isObject__WEBPACK_IMPORTED_MODULE_1__["isObject"])(sub)) { + try { + sub.unsubscribe(); + } + catch (e) { + errors = errors || []; + if (e instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"]) { + errors = errors.concat(flattenUnsubscriptionErrors(e.errors)); + } + else { + errors.push(e); + } + } + } + } + } + if (errors) { + throw new _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"](errors); + } + }; + Subscription.prototype.add = function (teardown) { + var subscription = teardown; + if (!teardown) { + return Subscription.EMPTY; + } + switch (typeof teardown) { + case 'function': + subscription = new Subscription(teardown); + case 'object': + if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') { + return subscription; + } + else if (this.closed) { + subscription.unsubscribe(); + return subscription; + } + else if (!(subscription instanceof Subscription)) { + var tmp = subscription; + subscription = new Subscription(); + subscription._subscriptions = [tmp]; + } + break; + default: { + throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.'); + } + } + var _parentOrParents = subscription._parentOrParents; + if (_parentOrParents === null) { + subscription._parentOrParents = this; + } + else if (_parentOrParents instanceof Subscription) { + if (_parentOrParents === this) { + return subscription; + } + subscription._parentOrParents = [_parentOrParents, this]; + } + else if (_parentOrParents.indexOf(this) === -1) { + _parentOrParents.push(this); + } + else { + return subscription; + } + var subscriptions = this._subscriptions; + if (subscriptions === null) { + this._subscriptions = [subscription]; + } + else { + subscriptions.push(subscription); + } + return subscription; + }; + Subscription.prototype.remove = function (subscription) { + var subscriptions = this._subscriptions; + if (subscriptions) { + var subscriptionIndex = subscriptions.indexOf(subscription); + if (subscriptionIndex !== -1) { + subscriptions.splice(subscriptionIndex, 1); + } + } + }; + Subscription.EMPTY = (function (empty) { + empty.closed = true; + return empty; + }(new Subscription())); + return Subscription; +}()); + +function flattenUnsubscriptionErrors(errors) { + return errors.reduce(function (errs, err) { return errs.concat((err instanceof _util_UnsubscriptionError__WEBPACK_IMPORTED_MODULE_3__["UnsubscriptionError"]) ? err.errors : err); }, []); +} +//# sourceMappingURL=Subscription.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/config.js": +/*!****************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/config.js ***! + \****************************************************/ +/*! exports provided: config */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "config", function() { return config; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var _enable_super_gross_mode_that_will_cause_bad_things = false; +var config = { + Promise: undefined, + set useDeprecatedSynchronousErrorHandling(value) { + if (value) { + var error = /*@__PURE__*/ new Error(); + /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \n' + error.stack); + } + else if (_enable_super_gross_mode_that_will_cause_bad_things) { + /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3'); + } + _enable_super_gross_mode_that_will_cause_bad_things = value; + }, + get useDeprecatedSynchronousErrorHandling() { + return _enable_super_gross_mode_that_will_cause_bad_things; + }, +}; +//# sourceMappingURL=config.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js": +/*!******************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js ***! + \******************************************************************************/ +/*! exports provided: ConnectableObservable, connectableObservableDescriptor */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ConnectableObservable", function() { return ConnectableObservable; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "connectableObservableDescriptor", function() { return connectableObservableDescriptor; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _operators_refCount__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../operators/refCount */ "./node_modules/rxjs/_esm5/internal/operators/refCount.js"); +/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */ + + + + + + +var ConnectableObservable = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ConnectableObservable, _super); + function ConnectableObservable(source, subjectFactory) { + var _this = _super.call(this) || this; + _this.source = source; + _this.subjectFactory = subjectFactory; + _this._refCount = 0; + _this._isComplete = false; + return _this; + } + ConnectableObservable.prototype._subscribe = function (subscriber) { + return this.getSubject().subscribe(subscriber); + }; + ConnectableObservable.prototype.getSubject = function () { + var subject = this._subject; + if (!subject || subject.isStopped) { + this._subject = this.subjectFactory(); + } + return this._subject; + }; + ConnectableObservable.prototype.connect = function () { + var connection = this._connection; + if (!connection) { + this._isComplete = false; + connection = this._connection = new _Subscription__WEBPACK_IMPORTED_MODULE_4__["Subscription"](); + connection.add(this.source + .subscribe(new ConnectableSubscriber(this.getSubject(), this))); + if (connection.closed) { + this._connection = null; + connection = _Subscription__WEBPACK_IMPORTED_MODULE_4__["Subscription"].EMPTY; + } + } + return connection; + }; + ConnectableObservable.prototype.refCount = function () { + return Object(_operators_refCount__WEBPACK_IMPORTED_MODULE_5__["refCount"])()(this); + }; + return ConnectableObservable; +}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"])); + +var connectableObservableDescriptor = /*@__PURE__*/ (function () { + var connectableProto = ConnectableObservable.prototype; + return { + operator: { value: null }, + _refCount: { value: 0, writable: true }, + _subject: { value: null, writable: true }, + _connection: { value: null, writable: true }, + _subscribe: { value: connectableProto._subscribe }, + _isComplete: { value: connectableProto._isComplete, writable: true }, + getSubject: { value: connectableProto.getSubject }, + connect: { value: connectableProto.connect }, + refCount: { value: connectableProto.refCount } + }; +})(); +var ConnectableSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ConnectableSubscriber, _super); + function ConnectableSubscriber(destination, connectable) { + var _this = _super.call(this, destination) || this; + _this.connectable = connectable; + return _this; + } + ConnectableSubscriber.prototype._error = function (err) { + this._unsubscribe(); + _super.prototype._error.call(this, err); + }; + ConnectableSubscriber.prototype._complete = function () { + this.connectable._isComplete = true; + this._unsubscribe(); + _super.prototype._complete.call(this); + }; + ConnectableSubscriber.prototype._unsubscribe = function () { + var connectable = this.connectable; + if (connectable) { + this.connectable = null; + var connection = connectable._connection; + connectable._refCount = 0; + connectable._subject = null; + connectable._connection = null; + if (connection) { + connection.unsubscribe(); + } + } + }; + return ConnectableSubscriber; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__["SubjectSubscriber"])); +var RefCountOperator = /*@__PURE__*/ (function () { + function RefCountOperator(connectable) { + this.connectable = connectable; + } + RefCountOperator.prototype.call = function (subscriber, source) { + var connectable = this.connectable; + connectable._refCount++; + var refCounter = new RefCountSubscriber(subscriber, connectable); + var subscription = source.subscribe(refCounter); + if (!refCounter.closed) { + refCounter.connection = connectable.connect(); + } + return subscription; + }; + return RefCountOperator; +}()); +var RefCountSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RefCountSubscriber, _super); + function RefCountSubscriber(destination, connectable) { + var _this = _super.call(this, destination) || this; + _this.connectable = connectable; + return _this; + } + RefCountSubscriber.prototype._unsubscribe = function () { + var connectable = this.connectable; + if (!connectable) { + this.connection = null; + return; + } + this.connectable = null; + var refCount = connectable._refCount; + if (refCount <= 0) { + this.connection = null; + return; + } + connectable._refCount = refCount - 1; + if (refCount > 1) { + this.connection = null; + return; + } + var connection = this.connection; + var sharedConnection = connectable._connection; + this.connection = null; + if (sharedConnection && (!connection || sharedConnection === connection)) { + sharedConnection.unsubscribe(); + } + }; + return RefCountSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); +//# sourceMappingURL=ConnectableObservable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js": +/*!******************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js ***! + \******************************************************************************/ +/*! exports provided: SubscribeOnObservable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SubscribeOnObservable", function() { return SubscribeOnObservable; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/asap */ "./node_modules/rxjs/_esm5/internal/scheduler/asap.js"); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); +/** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */ + + + + +var SubscribeOnObservable = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscribeOnObservable, _super); + function SubscribeOnObservable(source, delayTime, scheduler) { + if (delayTime === void 0) { + delayTime = 0; + } + if (scheduler === void 0) { + scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"]; + } + var _this = _super.call(this) || this; + _this.source = source; + _this.delayTime = delayTime; + _this.scheduler = scheduler; + if (!Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_3__["isNumeric"])(delayTime) || delayTime < 0) { + _this.delayTime = 0; + } + if (!scheduler || typeof scheduler.schedule !== 'function') { + _this.scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"]; + } + return _this; + } + SubscribeOnObservable.create = function (source, delay, scheduler) { + if (delay === void 0) { + delay = 0; + } + if (scheduler === void 0) { + scheduler = _scheduler_asap__WEBPACK_IMPORTED_MODULE_2__["asap"]; + } + return new SubscribeOnObservable(source, delay, scheduler); + }; + SubscribeOnObservable.dispatch = function (arg) { + var source = arg.source, subscriber = arg.subscriber; + return this.add(source.subscribe(subscriber)); + }; + SubscribeOnObservable.prototype._subscribe = function (subscriber) { + var delay = this.delayTime; + var source = this.source; + var scheduler = this.scheduler; + return scheduler.schedule(SubscribeOnObservable.dispatch, delay, { + source: source, subscriber: subscriber + }); + }; + return SubscribeOnObservable; +}(_Observable__WEBPACK_IMPORTED_MODULE_1__["Observable"])); + +//# sourceMappingURL=SubscribeOnObservable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/bindCallback.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/bindCallback.js ***! + \*********************************************************************/ +/*! exports provided: bindCallback */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindCallback", function() { return bindCallback; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/canReportError */ "./node_modules/rxjs/_esm5/internal/util/canReportError.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */ + + + + + + +function bindCallback(callbackFunc, resultSelector, scheduler) { + if (resultSelector) { + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(resultSelector)) { + scheduler = resultSelector; + } + else { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_4__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); + }; + } + } + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var context = this; + var subject; + var params = { + context: context, + subject: subject, + callbackFunc: callbackFunc, + scheduler: scheduler, + }; + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + if (!scheduler) { + if (!subject) { + subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); + var handler = function () { + var innerArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + innerArgs[_i] = arguments[_i]; + } + subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs); + subject.complete(); + }; + try { + callbackFunc.apply(context, args.concat([handler])); + } + catch (err) { + if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_3__["canReportError"])(subject)) { + subject.error(err); + } + else { + console.warn(err); + } + } + } + return subject.subscribe(subscriber); + } + else { + var state = { + args: args, subscriber: subscriber, params: params, + }; + return scheduler.schedule(dispatch, 0, state); + } + }); + }; +} +function dispatch(state) { + var _this = this; + var self = this; + var args = state.args, subscriber = state.subscriber, params = state.params; + var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler; + var subject = params.subject; + if (!subject) { + subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); + var handler = function () { + var innerArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + innerArgs[_i] = arguments[_i]; + } + var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs; + _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject })); + }; + try { + callbackFunc.apply(context, args.concat([handler])); + } + catch (err) { + subject.error(err); + } + } + this.add(subject.subscribe(subscriber)); +} +function dispatchNext(state) { + var value = state.value, subject = state.subject; + subject.next(value); + subject.complete(); +} +function dispatchError(state) { + var err = state.err, subject = state.subject; + subject.error(err); +} +//# sourceMappingURL=bindCallback.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js": +/*!*************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js ***! + \*************************************************************************/ +/*! exports provided: bindNodeCallback */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bindNodeCallback", function() { return bindNodeCallback; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/* harmony import */ var _util_canReportError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/canReportError */ "./node_modules/rxjs/_esm5/internal/util/canReportError.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */ + + + + + + +function bindNodeCallback(callbackFunc, resultSelector, scheduler) { + if (resultSelector) { + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_4__["isScheduler"])(resultSelector)) { + scheduler = resultSelector; + } + else { + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_5__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); + }; + } + } + return function () { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var params = { + subject: undefined, + args: args, + callbackFunc: callbackFunc, + scheduler: scheduler, + context: this, + }; + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var context = params.context; + var subject = params.subject; + if (!scheduler) { + if (!subject) { + subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); + var handler = function () { + var innerArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + innerArgs[_i] = arguments[_i]; + } + var err = innerArgs.shift(); + if (err) { + subject.error(err); + return; + } + subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs); + subject.complete(); + }; + try { + callbackFunc.apply(context, args.concat([handler])); + } + catch (err) { + if (Object(_util_canReportError__WEBPACK_IMPORTED_MODULE_3__["canReportError"])(subject)) { + subject.error(err); + } + else { + console.warn(err); + } + } + } + return subject.subscribe(subscriber); + } + else { + return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context }); + } + }); + }; +} +function dispatch(state) { + var _this = this; + var params = state.params, subscriber = state.subscriber, context = state.context; + var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler; + var subject = params.subject; + if (!subject) { + subject = params.subject = new _AsyncSubject__WEBPACK_IMPORTED_MODULE_1__["AsyncSubject"](); + var handler = function () { + var innerArgs = []; + for (var _i = 0; _i < arguments.length; _i++) { + innerArgs[_i] = arguments[_i]; + } + var err = innerArgs.shift(); + if (err) { + _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject })); + } + else { + var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs; + _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject })); + } + }; + try { + callbackFunc.apply(context, args.concat([handler])); + } + catch (err) { + this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject })); + } + } + this.add(subject.subscribe(subscriber)); +} +function dispatchNext(arg) { + var value = arg.value, subject = arg.subject; + subject.next(value); + subject.complete(); +} +function dispatchError(arg) { + var err = arg.err, subject = arg.subject; + subject.error(err); +} +//# sourceMappingURL=bindNodeCallback.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/combineLatest.js ***! + \**********************************************************************/ +/*! exports provided: combineLatest, CombineLatestOperator, CombineLatestSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestOperator", function() { return CombineLatestOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "CombineLatestSubscriber", function() { return CombineLatestSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); +/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */ + + + + + + +var NONE = {}; +function combineLatest() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + var resultSelector = null; + var scheduler = null; + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(observables[observables.length - 1])) { + scheduler = observables.pop(); + } + if (typeof observables[observables.length - 1] === 'function') { + resultSelector = observables.pop(); + } + if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(observables[0])) { + observables = observables[0]; + } + return Object(_fromArray__WEBPACK_IMPORTED_MODULE_5__["fromArray"])(observables, scheduler).lift(new CombineLatestOperator(resultSelector)); +} +var CombineLatestOperator = /*@__PURE__*/ (function () { + function CombineLatestOperator(resultSelector) { + this.resultSelector = resultSelector; + } + CombineLatestOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector)); + }; + return CombineLatestOperator; +}()); + +var CombineLatestSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CombineLatestSubscriber, _super); + function CombineLatestSubscriber(destination, resultSelector) { + var _this = _super.call(this, destination) || this; + _this.resultSelector = resultSelector; + _this.active = 0; + _this.values = []; + _this.observables = []; + return _this; + } + CombineLatestSubscriber.prototype._next = function (observable) { + this.values.push(NONE); + this.observables.push(observable); + }; + CombineLatestSubscriber.prototype._complete = function () { + var observables = this.observables; + var len = observables.length; + if (len === 0) { + this.destination.complete(); + } + else { + this.active = len; + this.toRespond = len; + for (var i = 0; i < len; i++) { + var observable = observables[i]; + this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, observable, observable, i)); + } + } + }; + CombineLatestSubscriber.prototype.notifyComplete = function (unused) { + if ((this.active -= 1) === 0) { + this.destination.complete(); + } + }; + CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + var values = this.values; + var oldVal = values[outerIndex]; + var toRespond = !this.toRespond + ? 0 + : oldVal === NONE ? --this.toRespond : this.toRespond; + values[outerIndex] = innerValue; + if (toRespond === 0) { + if (this.resultSelector) { + this._tryResultSelector(values); + } + else { + this.destination.next(values.slice()); + } + } + }; + CombineLatestSubscriber.prototype._tryResultSelector = function (values) { + var result; + try { + result = this.resultSelector.apply(this, values); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + }; + return CombineLatestSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); + +//# sourceMappingURL=combineLatest.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/concat.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/concat.js ***! + \***************************************************************/ +/*! exports provided: concat */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); +/* harmony import */ var _of__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); +/* harmony import */ var _operators_concatAll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../operators/concatAll */ "./node_modules/rxjs/_esm5/internal/operators/concatAll.js"); +/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */ + + +function concat() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + return Object(_operators_concatAll__WEBPACK_IMPORTED_MODULE_1__["concatAll"])()(_of__WEBPACK_IMPORTED_MODULE_0__["of"].apply(void 0, observables)); +} +//# sourceMappingURL=concat.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/defer.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/defer.js ***! + \**************************************************************/ +/*! exports provided: defer */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defer", function() { return defer; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ + + + +function defer(observableFactory) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var input; + try { + input = observableFactory(); + } + catch (err) { + subscriber.error(err); + return undefined; + } + var source = input ? Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(input) : Object(_empty__WEBPACK_IMPORTED_MODULE_2__["empty"])(); + return source.subscribe(subscriber); + }); +} +//# sourceMappingURL=defer.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js": +/*!***************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js ***! + \***************************************************************************/ +/*! exports provided: ajaxGet, ajaxPost, ajaxDelete, ajaxPut, ajaxPatch, ajaxGetJSON, AjaxObservable, AjaxSubscriber, AjaxResponse, AjaxError, AjaxTimeoutError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxGet", function() { return ajaxGet; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxPost", function() { return ajaxPost; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxDelete", function() { return ajaxDelete; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxPut", function() { return ajaxPut; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxPatch", function() { return ajaxPatch; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajaxGetJSON", function() { return ajaxGetJSON; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxObservable", function() { return AjaxObservable; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxSubscriber", function() { return AjaxSubscriber; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxResponse", function() { return AjaxResponse; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxError", function() { return AjaxError; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AjaxTimeoutError", function() { return AjaxTimeoutError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_root__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../util/root */ "./node_modules/rxjs/_esm5/internal/util/root.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/** PURE_IMPORTS_START tslib,_.._util_root,_.._Observable,_.._Subscriber,_.._operators_map PURE_IMPORTS_END */ + + + + + +function getCORSRequest() { + if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest) { + return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest(); + } + else if (!!_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XDomainRequest) { + return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XDomainRequest(); + } + else { + throw new Error('CORS is not supported by your browser'); + } +} +function getXMLHttpRequest() { + if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest) { + return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XMLHttpRequest(); + } + else { + var progId = void 0; + try { + var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0']; + for (var i = 0; i < 3; i++) { + try { + progId = progIds[i]; + if (new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].ActiveXObject(progId)) { + break; + } + } + catch (e) { + } + } + return new _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].ActiveXObject(progId); + } + catch (e) { + throw new Error('XMLHttpRequest is not supported by your browser'); + } + } +} +function ajaxGet(url, headers) { + if (headers === void 0) { + headers = null; + } + return new AjaxObservable({ method: 'GET', url: url, headers: headers }); +} +function ajaxPost(url, body, headers) { + return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers }); +} +function ajaxDelete(url, headers) { + return new AjaxObservable({ method: 'DELETE', url: url, headers: headers }); +} +function ajaxPut(url, body, headers) { + return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers }); +} +function ajaxPatch(url, body, headers) { + return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers }); +} +var mapResponse = /*@__PURE__*/ Object(_operators_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (x, index) { return x.response; }); +function ajaxGetJSON(url, headers) { + return mapResponse(new AjaxObservable({ + method: 'GET', + url: url, + responseType: 'json', + headers: headers + })); +} +var AjaxObservable = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AjaxObservable, _super); + function AjaxObservable(urlOrRequest) { + var _this = _super.call(this) || this; + var request = { + async: true, + createXHR: function () { + return this.crossDomain ? getCORSRequest() : getXMLHttpRequest(); + }, + crossDomain: true, + withCredentials: false, + headers: {}, + method: 'GET', + responseType: 'json', + timeout: 0 + }; + if (typeof urlOrRequest === 'string') { + request.url = urlOrRequest; + } + else { + for (var prop in urlOrRequest) { + if (urlOrRequest.hasOwnProperty(prop)) { + request[prop] = urlOrRequest[prop]; + } + } + } + _this.request = request; + return _this; + } + AjaxObservable.prototype._subscribe = function (subscriber) { + return new AjaxSubscriber(subscriber, this.request); + }; + AjaxObservable.create = (function () { + var create = function (urlOrRequest) { + return new AjaxObservable(urlOrRequest); + }; + create.get = ajaxGet; + create.post = ajaxPost; + create.delete = ajaxDelete; + create.put = ajaxPut; + create.patch = ajaxPatch; + create.getJSON = ajaxGetJSON; + return create; + })(); + return AjaxObservable; +}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"])); + +var AjaxSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AjaxSubscriber, _super); + function AjaxSubscriber(destination, request) { + var _this = _super.call(this, destination) || this; + _this.request = request; + _this.done = false; + var headers = request.headers = request.headers || {}; + if (!request.crossDomain && !_this.getHeader(headers, 'X-Requested-With')) { + headers['X-Requested-With'] = 'XMLHttpRequest'; + } + var contentTypeHeader = _this.getHeader(headers, 'Content-Type'); + if (!contentTypeHeader && !(_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData && request.body instanceof _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData) && typeof request.body !== 'undefined') { + headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; + } + request.body = _this.serializeBody(request.body, _this.getHeader(request.headers, 'Content-Type')); + _this.send(); + return _this; + } + AjaxSubscriber.prototype.next = function (e) { + this.done = true; + var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination; + var result; + try { + result = new AjaxResponse(e, xhr, request); + } + catch (err) { + return destination.error(err); + } + destination.next(result); + }; + AjaxSubscriber.prototype.send = function () { + var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body; + try { + var xhr = this.xhr = request.createXHR(); + this.setupEvents(xhr, request); + if (user) { + xhr.open(method, url, async, user, password); + } + else { + xhr.open(method, url, async); + } + if (async) { + xhr.timeout = request.timeout; + xhr.responseType = request.responseType; + } + if ('withCredentials' in xhr) { + xhr.withCredentials = !!request.withCredentials; + } + this.setHeaders(xhr, headers); + if (body) { + xhr.send(body); + } + else { + xhr.send(); + } + } + catch (err) { + this.error(err); + } + }; + AjaxSubscriber.prototype.serializeBody = function (body, contentType) { + if (!body || typeof body === 'string') { + return body; + } + else if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData && body instanceof _util_root__WEBPACK_IMPORTED_MODULE_1__["root"].FormData) { + return body; + } + if (contentType) { + var splitIndex = contentType.indexOf(';'); + if (splitIndex !== -1) { + contentType = contentType.substring(0, splitIndex); + } + } + switch (contentType) { + case 'application/x-www-form-urlencoded': + return Object.keys(body).map(function (key) { return encodeURIComponent(key) + "=" + encodeURIComponent(body[key]); }).join('&'); + case 'application/json': + return JSON.stringify(body); + default: + return body; + } + }; + AjaxSubscriber.prototype.setHeaders = function (xhr, headers) { + for (var key in headers) { + if (headers.hasOwnProperty(key)) { + xhr.setRequestHeader(key, headers[key]); + } + } + }; + AjaxSubscriber.prototype.getHeader = function (headers, headerName) { + for (var key in headers) { + if (key.toLowerCase() === headerName.toLowerCase()) { + return headers[key]; + } + } + return undefined; + }; + AjaxSubscriber.prototype.setupEvents = function (xhr, request) { + var progressSubscriber = request.progressSubscriber; + function xhrTimeout(e) { + var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request; + if (progressSubscriber) { + progressSubscriber.error(e); + } + var error; + try { + error = new AjaxTimeoutError(this, request); + } + catch (err) { + error = err; + } + subscriber.error(error); + } + xhr.ontimeout = xhrTimeout; + xhrTimeout.request = request; + xhrTimeout.subscriber = this; + xhrTimeout.progressSubscriber = progressSubscriber; + if (xhr.upload && 'withCredentials' in xhr) { + if (progressSubscriber) { + var xhrProgress_1; + xhrProgress_1 = function (e) { + var progressSubscriber = xhrProgress_1.progressSubscriber; + progressSubscriber.next(e); + }; + if (_util_root__WEBPACK_IMPORTED_MODULE_1__["root"].XDomainRequest) { + xhr.onprogress = xhrProgress_1; + } + else { + xhr.upload.onprogress = xhrProgress_1; + } + xhrProgress_1.progressSubscriber = progressSubscriber; + } + var xhrError_1; + xhrError_1 = function (e) { + var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request; + if (progressSubscriber) { + progressSubscriber.error(e); + } + var error; + try { + error = new AjaxError('ajax error', this, request); + } + catch (err) { + error = err; + } + subscriber.error(error); + }; + xhr.onerror = xhrError_1; + xhrError_1.request = request; + xhrError_1.subscriber = this; + xhrError_1.progressSubscriber = progressSubscriber; + } + function xhrReadyStateChange(e) { + return; + } + xhr.onreadystatechange = xhrReadyStateChange; + xhrReadyStateChange.subscriber = this; + xhrReadyStateChange.progressSubscriber = progressSubscriber; + xhrReadyStateChange.request = request; + function xhrLoad(e) { + var _a = xhrLoad, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request; + if (this.readyState === 4) { + var status_1 = this.status === 1223 ? 204 : this.status; + var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response); + if (status_1 === 0) { + status_1 = response ? 200 : 0; + } + if (status_1 < 400) { + if (progressSubscriber) { + progressSubscriber.complete(); + } + subscriber.next(e); + subscriber.complete(); + } + else { + if (progressSubscriber) { + progressSubscriber.error(e); + } + var error = void 0; + try { + error = new AjaxError('ajax error ' + status_1, this, request); + } + catch (err) { + error = err; + } + subscriber.error(error); + } + } + } + xhr.onload = xhrLoad; + xhrLoad.subscriber = this; + xhrLoad.progressSubscriber = progressSubscriber; + xhrLoad.request = request; + }; + AjaxSubscriber.prototype.unsubscribe = function () { + var _a = this, done = _a.done, xhr = _a.xhr; + if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') { + xhr.abort(); + } + _super.prototype.unsubscribe.call(this); + }; + return AjaxSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); + +var AjaxResponse = /*@__PURE__*/ (function () { + function AjaxResponse(originalEvent, xhr, request) { + this.originalEvent = originalEvent; + this.xhr = xhr; + this.request = request; + this.status = xhr.status; + this.responseType = xhr.responseType || request.responseType; + this.response = parseXhrResponse(this.responseType, xhr); + } + return AjaxResponse; +}()); + +var AjaxErrorImpl = /*@__PURE__*/ (function () { + function AjaxErrorImpl(message, xhr, request) { + Error.call(this); + this.message = message; + this.name = 'AjaxError'; + this.xhr = xhr; + this.request = request; + this.status = xhr.status; + this.responseType = xhr.responseType || request.responseType; + this.response = parseXhrResponse(this.responseType, xhr); + return this; + } + AjaxErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); + return AjaxErrorImpl; +})(); +var AjaxError = AjaxErrorImpl; +function parseJson(xhr) { + if ('response' in xhr) { + return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null'); + } + else { + return JSON.parse(xhr.responseText || 'null'); + } +} +function parseXhrResponse(responseType, xhr) { + switch (responseType) { + case 'json': + return parseJson(xhr); + case 'xml': + return xhr.responseXML; + case 'text': + default: + return ('response' in xhr) ? xhr.response : xhr.responseText; + } +} +function AjaxTimeoutErrorImpl(xhr, request) { + AjaxError.call(this, 'ajax timeout', xhr, request); + this.name = 'AjaxTimeoutError'; + return this; +} +var AjaxTimeoutError = AjaxTimeoutErrorImpl; +//# sourceMappingURL=AjaxObservable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js ***! + \*****************************************************************/ +/*! exports provided: ajax */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ajax", function() { return ajax; }); +/* harmony import */ var _AjaxObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AjaxObservable */ "./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js"); +/** PURE_IMPORTS_START _AjaxObservable PURE_IMPORTS_END */ + +var ajax = /*@__PURE__*/ (function () { return _AjaxObservable__WEBPACK_IMPORTED_MODULE_0__["AjaxObservable"].create; })(); +//# sourceMappingURL=ajax.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/empty.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/empty.js ***! + \**************************************************************/ +/*! exports provided: EMPTY, empty */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EMPTY", function() { return EMPTY; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "empty", function() { return empty; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ + +var EMPTY = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.complete(); }); +function empty(scheduler) { + return scheduler ? emptyScheduled(scheduler) : EMPTY; +} +function emptyScheduled(scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); }); +} +//# sourceMappingURL=empty.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/forkJoin.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/forkJoin.js ***! + \*****************************************************************/ +/*! exports provided: forkJoin */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "forkJoin", function() { return forkJoin; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/* harmony import */ var _util_isObject__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isObject */ "./node_modules/rxjs/_esm5/internal/util/isObject.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */ + + + + + +function forkJoin() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + if (sources.length === 1) { + var first_1 = sources[0]; + if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(first_1)) { + return forkJoinInternal(first_1, null); + } + if (Object(_util_isObject__WEBPACK_IMPORTED_MODULE_3__["isObject"])(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) { + var keys = Object.keys(first_1); + return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys); + } + } + if (typeof sources[sources.length - 1] === 'function') { + var resultSelector_1 = sources.pop(); + sources = (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(sources[0])) ? sources[0] : sources; + return forkJoinInternal(sources, null).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_2__["map"])(function (args) { return resultSelector_1.apply(void 0, args); })); + } + return forkJoinInternal(sources, null); +} +function forkJoinInternal(sources, keys) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var len = sources.length; + if (len === 0) { + subscriber.complete(); + return; + } + var values = new Array(len); + var completed = 0; + var emitted = 0; + var _loop_1 = function (i) { + var source = Object(_from__WEBPACK_IMPORTED_MODULE_4__["from"])(sources[i]); + var hasValue = false; + subscriber.add(source.subscribe({ + next: function (value) { + if (!hasValue) { + hasValue = true; + emitted++; + } + values[i] = value; + }, + error: function (err) { return subscriber.error(err); }, + complete: function () { + completed++; + if (completed === len || !hasValue) { + if (emitted === len) { + subscriber.next(keys ? + keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) : + values); + } + subscriber.complete(); + } + } + })); + }; + for (var i = 0; i < len; i++) { + _loop_1(i); + } + }); +} +//# sourceMappingURL=forkJoin.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/from.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/from.js ***! + \*************************************************************/ +/*! exports provided: from */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "from", function() { return from; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeTo */ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js"); +/* harmony import */ var _scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduled */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js"); +/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */ + + + +function from(input, scheduler) { + if (!scheduler) { + if (input instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]) { + return input; + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(input)); + } + else { + return Object(_scheduled_scheduled__WEBPACK_IMPORTED_MODULE_2__["scheduled"])(input, scheduler); + } +} +//# sourceMappingURL=from.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/fromArray.js ***! + \******************************************************************/ +/*! exports provided: fromArray */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromArray", function() { return fromArray; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToArray */ "./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js"); +/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduleArray */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js"); +/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */ + + + +function fromArray(input, scheduler) { + if (!scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](Object(_util_subscribeToArray__WEBPACK_IMPORTED_MODULE_1__["subscribeToArray"])(input)); + } + else { + return Object(_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(input, scheduler); + } +} +//# sourceMappingURL=fromArray.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/fromEvent.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/fromEvent.js ***! + \******************************************************************/ +/*! exports provided: fromEvent */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEvent", function() { return fromEvent; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ + + + + +var toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })(); +function fromEvent(target, eventName, options, resultSelector) { + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(options)) { + resultSelector = options; + options = undefined; + } + if (resultSelector) { + return fromEvent(target, eventName, options).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + function handler(e) { + if (arguments.length > 1) { + subscriber.next(Array.prototype.slice.call(arguments)); + } + else { + subscriber.next(e); + } + } + setupSubscription(target, eventName, handler, subscriber, options); + }); +} +function setupSubscription(sourceObj, eventName, handler, subscriber, options) { + var unsubscribe; + if (isEventTarget(sourceObj)) { + var source_1 = sourceObj; + sourceObj.addEventListener(eventName, handler, options); + unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); }; + } + else if (isJQueryStyleEventEmitter(sourceObj)) { + var source_2 = sourceObj; + sourceObj.on(eventName, handler); + unsubscribe = function () { return source_2.off(eventName, handler); }; + } + else if (isNodeStyleEventEmitter(sourceObj)) { + var source_3 = sourceObj; + sourceObj.addListener(eventName, handler); + unsubscribe = function () { return source_3.removeListener(eventName, handler); }; + } + else if (sourceObj && sourceObj.length) { + for (var i = 0, len = sourceObj.length; i < len; i++) { + setupSubscription(sourceObj[i], eventName, handler, subscriber, options); + } + } + else { + throw new TypeError('Invalid event target'); + } + subscriber.add(unsubscribe); +} +function isNodeStyleEventEmitter(sourceObj) { + return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function'; +} +function isJQueryStyleEventEmitter(sourceObj) { + return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function'; +} +function isEventTarget(sourceObj) { + return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function'; +} +//# sourceMappingURL=fromEvent.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js": +/*!*************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js ***! + \*************************************************************************/ +/*! exports provided: fromEventPattern */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fromEventPattern", function() { return fromEventPattern; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); +/* harmony import */ var _operators_map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */ + + + + +function fromEventPattern(addHandler, removeHandler, resultSelector) { + if (resultSelector) { + return fromEventPattern(addHandler, removeHandler).pipe(Object(_operators_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (args) { return Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(args) ? resultSelector.apply(void 0, args) : resultSelector(args); })); + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var handler = function () { + var e = []; + for (var _i = 0; _i < arguments.length; _i++) { + e[_i] = arguments[_i]; + } + return subscriber.next(e.length === 1 ? e[0] : e); + }; + var retValue; + try { + retValue = addHandler(handler); + } + catch (err) { + subscriber.error(err); + return undefined; + } + if (!Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_2__["isFunction"])(removeHandler)) { + return undefined; + } + return function () { return removeHandler(handler, retValue); }; + }); +} +//# sourceMappingURL=fromEventPattern.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/generate.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/generate.js ***! + \*****************************************************************/ +/*! exports provided: generate */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "generate", function() { return generate; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */ + + + +function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) { + var resultSelector; + var initialState; + if (arguments.length == 1) { + var options = initialStateOrOptions; + initialState = options.initialState; + condition = options.condition; + iterate = options.iterate; + resultSelector = options.resultSelector || _util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]; + scheduler = options.scheduler; + } + else if (resultSelectorOrObservable === undefined || Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_2__["isScheduler"])(resultSelectorOrObservable)) { + initialState = initialStateOrOptions; + resultSelector = _util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]; + scheduler = resultSelectorOrObservable; + } + else { + initialState = initialStateOrOptions; + resultSelector = resultSelectorOrObservable; + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var state = initialState; + if (scheduler) { + return scheduler.schedule(dispatch, 0, { + subscriber: subscriber, + iterate: iterate, + condition: condition, + resultSelector: resultSelector, + state: state + }); + } + do { + if (condition) { + var conditionResult = void 0; + try { + conditionResult = condition(state); + } + catch (err) { + subscriber.error(err); + return undefined; + } + if (!conditionResult) { + subscriber.complete(); + break; + } + } + var value = void 0; + try { + value = resultSelector(state); + } + catch (err) { + subscriber.error(err); + return undefined; + } + subscriber.next(value); + if (subscriber.closed) { + break; + } + try { + state = iterate(state); + } + catch (err) { + subscriber.error(err); + return undefined; + } + } while (true); + return undefined; + }); +} +function dispatch(state) { + var subscriber = state.subscriber, condition = state.condition; + if (subscriber.closed) { + return undefined; + } + if (state.needIterate) { + try { + state.state = state.iterate(state.state); + } + catch (err) { + subscriber.error(err); + return undefined; + } + } + else { + state.needIterate = true; + } + if (condition) { + var conditionResult = void 0; + try { + conditionResult = condition(state.state); + } + catch (err) { + subscriber.error(err); + return undefined; + } + if (!conditionResult) { + subscriber.complete(); + return undefined; + } + if (subscriber.closed) { + return undefined; + } + } + var value; + try { + value = state.resultSelector(state.state); + } + catch (err) { + subscriber.error(err); + return undefined; + } + if (subscriber.closed) { + return undefined; + } + subscriber.next(value); + if (subscriber.closed) { + return undefined; + } + return this.schedule(state); +} +//# sourceMappingURL=generate.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/iif.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/iif.js ***! + \************************************************************/ +/*! exports provided: iif */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iif", function() { return iif; }); +/* harmony import */ var _defer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./defer */ "./node_modules/rxjs/_esm5/internal/observable/defer.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */ + + +function iif(condition, trueResult, falseResult) { + if (trueResult === void 0) { + trueResult = _empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"]; + } + if (falseResult === void 0) { + falseResult = _empty__WEBPACK_IMPORTED_MODULE_1__["EMPTY"]; + } + return Object(_defer__WEBPACK_IMPORTED_MODULE_0__["defer"])(function () { return condition() ? trueResult : falseResult; }); +} +//# sourceMappingURL=iif.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/interval.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/interval.js ***! + \*****************************************************************/ +/*! exports provided: interval */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "interval", function() { return interval; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); +/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */ + + + +function interval(period, scheduler) { + if (period === void 0) { + period = 0; + } + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; + } + if (!Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(period) || period < 0) { + period = 0; + } + if (!scheduler || typeof scheduler.schedule !== 'function') { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period })); + return subscriber; + }); +} +function dispatch(state) { + var subscriber = state.subscriber, counter = state.counter, period = state.period; + subscriber.next(counter); + this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period); +} +//# sourceMappingURL=interval.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/merge.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/merge.js ***! + \**************************************************************/ +/*! exports provided: merge */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/* harmony import */ var _operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/mergeAll */ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js"); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); +/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */ + + + + +function merge() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + var concurrent = Number.POSITIVE_INFINITY; + var scheduler = null; + var last = observables[observables.length - 1]; + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(last)) { + scheduler = observables.pop(); + if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') { + concurrent = observables.pop(); + } + } + else if (typeof last === 'number') { + concurrent = observables.pop(); + } + if (scheduler === null && observables.length === 1 && observables[0] instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"]) { + return observables[0]; + } + return Object(_operators_mergeAll__WEBPACK_IMPORTED_MODULE_2__["mergeAll"])(concurrent)(Object(_fromArray__WEBPACK_IMPORTED_MODULE_3__["fromArray"])(observables, scheduler)); +} +//# sourceMappingURL=merge.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/never.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/never.js ***! + \**************************************************************/ +/*! exports provided: NEVER, never */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "NEVER", function() { return NEVER; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "never", function() { return never; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); +/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */ + + +var NEVER = /*@__PURE__*/ new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](_util_noop__WEBPACK_IMPORTED_MODULE_1__["noop"]); +function never() { + return NEVER; +} +//# sourceMappingURL=never.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/of.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/of.js ***! + \***********************************************************/ +/*! exports provided: of */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "of", function() { return of; }); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); +/* harmony import */ var _scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduled/scheduleArray */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js"); +/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */ + + + +function of() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + var scheduler = args[args.length - 1]; + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_0__["isScheduler"])(scheduler)) { + args.pop(); + return Object(_scheduled_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(args, scheduler); + } + else { + return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__["fromArray"])(args); + } +} +//# sourceMappingURL=of.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js": +/*!**************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js ***! + \**************************************************************************/ +/*! exports provided: onErrorResumeNext */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */ + + + + +function onErrorResumeNext() { + var sources = []; + for (var _i = 0; _i < arguments.length; _i++) { + sources[_i] = arguments[_i]; + } + if (sources.length === 0) { + return _empty__WEBPACK_IMPORTED_MODULE_3__["EMPTY"]; + } + var first = sources[0], remainder = sources.slice(1); + if (sources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(first)) { + return onErrorResumeNext.apply(void 0, first); + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); }; + return Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(first).subscribe({ + next: function (value) { subscriber.next(value); }, + error: subNext, + complete: subNext, + }); + }); +} +//# sourceMappingURL=onErrorResumeNext.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/pairs.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/pairs.js ***! + \**************************************************************/ +/*! exports provided: pairs, dispatch */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairs", function() { return pairs; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ + + +function pairs(obj, scheduler) { + if (!scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var keys = Object.keys(obj); + for (var i = 0; i < keys.length && !subscriber.closed; i++) { + var key = keys[i]; + if (obj.hasOwnProperty(key)) { + subscriber.next([key, obj[key]]); + } + } + subscriber.complete(); + }); + } + else { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var keys = Object.keys(obj); + var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); + subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj })); + return subscription; + }); + } +} +function dispatch(state) { + var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj; + if (!subscriber.closed) { + if (index < keys.length) { + var key = keys[index]; + subscriber.next([key, obj[key]]); + subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj })); + } + else { + subscriber.complete(); + } + } +} +//# sourceMappingURL=pairs.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/partition.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/partition.js ***! + \******************************************************************/ +/*! exports provided: partition */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/not */ "./node_modules/rxjs/_esm5/internal/util/not.js"); +/* harmony import */ var _util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeTo */ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js"); +/* harmony import */ var _operators_filter__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../operators/filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */ + + + + +function partition(source, predicate, thisArg) { + return [ + Object(_operators_filter__WEBPACK_IMPORTED_MODULE_2__["filter"])(predicate, thisArg)(new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(source))), + Object(_operators_filter__WEBPACK_IMPORTED_MODULE_2__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(new _Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"](Object(_util_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(source))) + ]; +} +//# sourceMappingURL=partition.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/race.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/race.js ***! + \*************************************************************/ +/*! exports provided: race, RaceOperator, RaceSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceOperator", function() { return RaceOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RaceSubscriber", function() { return RaceSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + + +function race() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + if (observables.length === 1) { + if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_1__["isArray"])(observables[0])) { + observables = observables[0]; + } + else { + return observables[0]; + } + } + return Object(_fromArray__WEBPACK_IMPORTED_MODULE_2__["fromArray"])(observables, undefined).lift(new RaceOperator()); +} +var RaceOperator = /*@__PURE__*/ (function () { + function RaceOperator() { + } + RaceOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new RaceSubscriber(subscriber)); + }; + return RaceOperator; +}()); + +var RaceSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RaceSubscriber, _super); + function RaceSubscriber(destination) { + var _this = _super.call(this, destination) || this; + _this.hasFirst = false; + _this.observables = []; + _this.subscriptions = []; + return _this; + } + RaceSubscriber.prototype._next = function (observable) { + this.observables.push(observable); + }; + RaceSubscriber.prototype._complete = function () { + var observables = this.observables; + var len = observables.length; + if (len === 0) { + this.destination.complete(); + } + else { + for (var i = 0; i < len && !this.hasFirst; i++) { + var observable = observables[i]; + var subscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, observable, observable, i); + if (this.subscriptions) { + this.subscriptions.push(subscription); + } + this.add(subscription); + } + this.observables = null; + } + }; + RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + if (!this.hasFirst) { + this.hasFirst = true; + for (var i = 0; i < this.subscriptions.length; i++) { + if (i !== outerIndex) { + var subscription = this.subscriptions[i]; + subscription.unsubscribe(); + this.remove(subscription); + } + } + this.subscriptions = null; + } + this.destination.next(innerValue); + }; + return RaceSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); + +//# sourceMappingURL=race.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/range.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/range.js ***! + \**************************************************************/ +/*! exports provided: range, dispatch */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "range", function() { return range; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dispatch", function() { return dispatch; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ + +function range(start, count, scheduler) { + if (start === void 0) { + start = 0; + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + if (count === undefined) { + count = start; + start = 0; + } + var index = 0; + var current = start; + if (scheduler) { + return scheduler.schedule(dispatch, 0, { + index: index, count: count, start: start, subscriber: subscriber + }); + } + else { + do { + if (index++ >= count) { + subscriber.complete(); + break; + } + subscriber.next(current++); + if (subscriber.closed) { + break; + } + } while (true); + } + return undefined; + }); +} +function dispatch(state) { + var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber; + if (index >= count) { + subscriber.complete(); + return; + } + subscriber.next(start); + if (subscriber.closed) { + return; + } + state.index = index + 1; + state.start = start + 1; + this.schedule(state); +} +//# sourceMappingURL=range.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/throwError.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/throwError.js ***! + \*******************************************************************/ +/*! exports provided: throwError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwError", function() { return throwError; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ + +function throwError(error, scheduler) { + if (!scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return subscriber.error(error); }); + } + else { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); }); + } +} +function dispatch(_a) { + var error = _a.error, subscriber = _a.subscriber; + subscriber.error(error); +} +//# sourceMappingURL=throwError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/timer.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/timer.js ***! + \**************************************************************/ +/*! exports provided: timer */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timer", function() { return timer; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ + + + + +function timer(dueTime, periodOrScheduler, scheduler) { + if (dueTime === void 0) { + dueTime = 0; + } + var period = -1; + if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(periodOrScheduler)) { + period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler); + } + else if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(periodOrScheduler)) { + scheduler = periodOrScheduler; + } + if (!Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(scheduler)) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var due = Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_2__["isNumeric"])(dueTime) + ? dueTime + : (+dueTime - scheduler.now()); + return scheduler.schedule(dispatch, due, { + index: 0, period: period, subscriber: subscriber + }); + }); +} +function dispatch(state) { + var index = state.index, period = state.period, subscriber = state.subscriber; + subscriber.next(index); + if (subscriber.closed) { + return; + } + else if (period === -1) { + return subscriber.complete(); + } + state.index = index + 1; + this.schedule(state, period); +} +//# sourceMappingURL=timer.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/using.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/using.js ***! + \**************************************************************/ +/*! exports provided: using */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "using", function() { return using; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/* harmony import */ var _empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */ + + + +function using(resourceFactory, observableFactory) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var resource; + try { + resource = resourceFactory(); + } + catch (err) { + subscriber.error(err); + return undefined; + } + var result; + try { + result = observableFactory(resource); + } + catch (err) { + subscriber.error(err); + return undefined; + } + var source = result ? Object(_from__WEBPACK_IMPORTED_MODULE_1__["from"])(result) : _empty__WEBPACK_IMPORTED_MODULE_2__["EMPTY"]; + var subscription = source.subscribe(subscriber); + return function () { + subscription.unsubscribe(); + if (resource) { + resource.unsubscribe(); + } + }; + }); +} +//# sourceMappingURL=using.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/observable/zip.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/observable/zip.js ***! + \************************************************************/ +/*! exports provided: zip, ZipOperator, ZipSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipOperator", function() { return ZipOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ZipSubscriber", function() { return ZipSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _fromArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./fromArray */ "./node_modules/rxjs/_esm5/internal/observable/fromArray.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/* harmony import */ var _internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../internal/symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); +/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_OuterSubscriber,_util_subscribeToResult,_.._internal_symbol_iterator PURE_IMPORTS_END */ + + + + + + + +function zip() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + var resultSelector = observables[observables.length - 1]; + if (typeof resultSelector === 'function') { + observables.pop(); + } + return Object(_fromArray__WEBPACK_IMPORTED_MODULE_1__["fromArray"])(observables, undefined).lift(new ZipOperator(resultSelector)); +} +var ZipOperator = /*@__PURE__*/ (function () { + function ZipOperator(resultSelector) { + this.resultSelector = resultSelector; + } + ZipOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector)); + }; + return ZipOperator; +}()); + +var ZipSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ZipSubscriber, _super); + function ZipSubscriber(destination, resultSelector, values) { + if (values === void 0) { + values = Object.create(null); + } + var _this = _super.call(this, destination) || this; + _this.iterators = []; + _this.active = 0; + _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : null; + _this.values = values; + return _this; + } + ZipSubscriber.prototype._next = function (value) { + var iterators = this.iterators; + if (Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(value)) { + iterators.push(new StaticArrayIterator(value)); + } + else if (typeof value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]] === 'function') { + iterators.push(new StaticIterator(value[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]]())); + } + else { + iterators.push(new ZipBufferIterator(this.destination, this, value)); + } + }; + ZipSubscriber.prototype._complete = function () { + var iterators = this.iterators; + var len = iterators.length; + this.unsubscribe(); + if (len === 0) { + this.destination.complete(); + return; + } + this.active = len; + for (var i = 0; i < len; i++) { + var iterator = iterators[i]; + if (iterator.stillUnsubscribed) { + var destination = this.destination; + destination.add(iterator.subscribe(iterator, i)); + } + else { + this.active--; + } + } + }; + ZipSubscriber.prototype.notifyInactive = function () { + this.active--; + if (this.active === 0) { + this.destination.complete(); + } + }; + ZipSubscriber.prototype.checkIterators = function () { + var iterators = this.iterators; + var len = iterators.length; + var destination = this.destination; + for (var i = 0; i < len; i++) { + var iterator = iterators[i]; + if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) { + return; + } + } + var shouldComplete = false; + var args = []; + for (var i = 0; i < len; i++) { + var iterator = iterators[i]; + var result = iterator.next(); + if (iterator.hasCompleted()) { + shouldComplete = true; + } + if (result.done) { + destination.complete(); + return; + } + args.push(result.value); + } + if (this.resultSelector) { + this._tryresultSelector(args); + } + else { + destination.next(args); + } + if (shouldComplete) { + destination.complete(); + } + }; + ZipSubscriber.prototype._tryresultSelector = function (args) { + var result; + try { + result = this.resultSelector.apply(this, args); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + }; + return ZipSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); + +var StaticIterator = /*@__PURE__*/ (function () { + function StaticIterator(iterator) { + this.iterator = iterator; + this.nextResult = iterator.next(); + } + StaticIterator.prototype.hasValue = function () { + return true; + }; + StaticIterator.prototype.next = function () { + var result = this.nextResult; + this.nextResult = this.iterator.next(); + return result; + }; + StaticIterator.prototype.hasCompleted = function () { + var nextResult = this.nextResult; + return nextResult && nextResult.done; + }; + return StaticIterator; +}()); +var StaticArrayIterator = /*@__PURE__*/ (function () { + function StaticArrayIterator(array) { + this.array = array; + this.index = 0; + this.length = 0; + this.length = array.length; + } + StaticArrayIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]] = function () { + return this; + }; + StaticArrayIterator.prototype.next = function (value) { + var i = this.index++; + var array = this.array; + return i < this.length ? { value: array[i], done: false } : { value: null, done: true }; + }; + StaticArrayIterator.prototype.hasValue = function () { + return this.array.length > this.index; + }; + StaticArrayIterator.prototype.hasCompleted = function () { + return this.array.length === this.index; + }; + return StaticArrayIterator; +}()); +var ZipBufferIterator = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ZipBufferIterator, _super); + function ZipBufferIterator(destination, parent, observable) { + var _this = _super.call(this, destination) || this; + _this.parent = parent; + _this.observable = observable; + _this.stillUnsubscribed = true; + _this.buffer = []; + _this.isComplete = false; + return _this; + } + ZipBufferIterator.prototype[_internal_symbol_iterator__WEBPACK_IMPORTED_MODULE_6__["iterator"]] = function () { + return this; + }; + ZipBufferIterator.prototype.next = function () { + var buffer = this.buffer; + if (buffer.length === 0 && this.isComplete) { + return { value: null, done: true }; + } + else { + return { value: buffer.shift(), done: false }; + } + }; + ZipBufferIterator.prototype.hasValue = function () { + return this.buffer.length > 0; + }; + ZipBufferIterator.prototype.hasCompleted = function () { + return this.buffer.length === 0 && this.isComplete; + }; + ZipBufferIterator.prototype.notifyComplete = function () { + if (this.buffer.length > 0) { + this.isComplete = true; + this.parent.notifyInactive(); + } + else { + this.destination.complete(); + } + }; + ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.buffer.push(innerValue); + this.parent.checkIterators(); + }; + ZipBufferIterator.prototype.subscribe = function (value, index) { + return Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__["subscribeToResult"])(this, this.observable, this, index); + }; + return ZipBufferIterator; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_4__["OuterSubscriber"])); +//# sourceMappingURL=zip.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/audit.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/audit.js ***! + \*************************************************************/ +/*! exports provided: audit */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return audit; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function audit(durationSelector) { + return function auditOperatorFunction(source) { + return source.lift(new AuditOperator(durationSelector)); + }; +} +var AuditOperator = /*@__PURE__*/ (function () { + function AuditOperator(durationSelector) { + this.durationSelector = durationSelector; + } + AuditOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector)); + }; + return AuditOperator; +}()); +var AuditSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AuditSubscriber, _super); + function AuditSubscriber(destination, durationSelector) { + var _this = _super.call(this, destination) || this; + _this.durationSelector = durationSelector; + _this.hasValue = false; + return _this; + } + AuditSubscriber.prototype._next = function (value) { + this.value = value; + this.hasValue = true; + if (!this.throttled) { + var duration = void 0; + try { + var durationSelector = this.durationSelector; + duration = durationSelector(value); + } + catch (err) { + return this.destination.error(err); + } + var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, duration); + if (!innerSubscription || innerSubscription.closed) { + this.clearThrottle(); + } + else { + this.add(this.throttled = innerSubscription); + } + } + }; + AuditSubscriber.prototype.clearThrottle = function () { + var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled; + if (throttled) { + this.remove(throttled); + this.throttled = null; + throttled.unsubscribe(); + } + if (hasValue) { + this.value = null; + this.hasValue = false; + this.destination.next(value); + } + }; + AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) { + this.clearThrottle(); + }; + AuditSubscriber.prototype.notifyComplete = function () { + this.clearThrottle(); + }; + return AuditSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=audit.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/auditTime.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/auditTime.js ***! + \*****************************************************************/ +/*! exports provided: auditTime */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return auditTime; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _audit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./audit */ "./node_modules/rxjs/_esm5/internal/operators/audit.js"); +/* harmony import */ var _observable_timer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/timer */ "./node_modules/rxjs/_esm5/internal/observable/timer.js"); +/** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */ + + + +function auditTime(duration, scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; + } + return Object(_audit__WEBPACK_IMPORTED_MODULE_1__["audit"])(function () { return Object(_observable_timer__WEBPACK_IMPORTED_MODULE_2__["timer"])(duration, scheduler); }); +} +//# sourceMappingURL=auditTime.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/buffer.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/buffer.js ***! + \**************************************************************/ +/*! exports provided: buffer */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return buffer; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function buffer(closingNotifier) { + return function bufferOperatorFunction(source) { + return source.lift(new BufferOperator(closingNotifier)); + }; +} +var BufferOperator = /*@__PURE__*/ (function () { + function BufferOperator(closingNotifier) { + this.closingNotifier = closingNotifier; + } + BufferOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier)); + }; + return BufferOperator; +}()); +var BufferSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferSubscriber, _super); + function BufferSubscriber(destination, closingNotifier) { + var _this = _super.call(this, destination) || this; + _this.buffer = []; + _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, closingNotifier)); + return _this; + } + BufferSubscriber.prototype._next = function (value) { + this.buffer.push(value); + }; + BufferSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + var buffer = this.buffer; + this.buffer = []; + this.destination.next(buffer); + }; + return BufferSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=buffer.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferCount.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/bufferCount.js ***! + \*******************************************************************/ +/*! exports provided: bufferCount */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return bufferCount; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function bufferCount(bufferSize, startBufferEvery) { + if (startBufferEvery === void 0) { + startBufferEvery = null; + } + return function bufferCountOperatorFunction(source) { + return source.lift(new BufferCountOperator(bufferSize, startBufferEvery)); + }; +} +var BufferCountOperator = /*@__PURE__*/ (function () { + function BufferCountOperator(bufferSize, startBufferEvery) { + this.bufferSize = bufferSize; + this.startBufferEvery = startBufferEvery; + if (!startBufferEvery || bufferSize === startBufferEvery) { + this.subscriberClass = BufferCountSubscriber; + } + else { + this.subscriberClass = BufferSkipCountSubscriber; + } + } + BufferCountOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery)); + }; + return BufferCountOperator; +}()); +var BufferCountSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferCountSubscriber, _super); + function BufferCountSubscriber(destination, bufferSize) { + var _this = _super.call(this, destination) || this; + _this.bufferSize = bufferSize; + _this.buffer = []; + return _this; + } + BufferCountSubscriber.prototype._next = function (value) { + var buffer = this.buffer; + buffer.push(value); + if (buffer.length == this.bufferSize) { + this.destination.next(buffer); + this.buffer = []; + } + }; + BufferCountSubscriber.prototype._complete = function () { + var buffer = this.buffer; + if (buffer.length > 0) { + this.destination.next(buffer); + } + _super.prototype._complete.call(this); + }; + return BufferCountSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +var BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferSkipCountSubscriber, _super); + function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) { + var _this = _super.call(this, destination) || this; + _this.bufferSize = bufferSize; + _this.startBufferEvery = startBufferEvery; + _this.buffers = []; + _this.count = 0; + return _this; + } + BufferSkipCountSubscriber.prototype._next = function (value) { + var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count; + this.count++; + if (count % startBufferEvery === 0) { + buffers.push([]); + } + for (var i = buffers.length; i--;) { + var buffer = buffers[i]; + buffer.push(value); + if (buffer.length === bufferSize) { + buffers.splice(i, 1); + this.destination.next(buffer); + } + } + }; + BufferSkipCountSubscriber.prototype._complete = function () { + var _a = this, buffers = _a.buffers, destination = _a.destination; + while (buffers.length > 0) { + var buffer = buffers.shift(); + if (buffer.length > 0) { + destination.next(buffer); + } + } + _super.prototype._complete.call(this); + }; + return BufferSkipCountSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=bufferCount.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferTime.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/bufferTime.js ***! + \******************************************************************/ +/*! exports provided: bufferTime */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return bufferTime; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */ + + + + +function bufferTime(bufferTimeSpan) { + var length = arguments.length; + var scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_3__["isScheduler"])(arguments[arguments.length - 1])) { + scheduler = arguments[arguments.length - 1]; + length--; + } + var bufferCreationInterval = null; + if (length >= 2) { + bufferCreationInterval = arguments[1]; + } + var maxBufferSize = Number.POSITIVE_INFINITY; + if (length >= 3) { + maxBufferSize = arguments[2]; + } + return function bufferTimeOperatorFunction(source) { + return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler)); + }; +} +var BufferTimeOperator = /*@__PURE__*/ (function () { + function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) { + this.bufferTimeSpan = bufferTimeSpan; + this.bufferCreationInterval = bufferCreationInterval; + this.maxBufferSize = maxBufferSize; + this.scheduler = scheduler; + } + BufferTimeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler)); + }; + return BufferTimeOperator; +}()); +var Context = /*@__PURE__*/ (function () { + function Context() { + this.buffer = []; + } + return Context; +}()); +var BufferTimeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferTimeSubscriber, _super); + function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) { + var _this = _super.call(this, destination) || this; + _this.bufferTimeSpan = bufferTimeSpan; + _this.bufferCreationInterval = bufferCreationInterval; + _this.maxBufferSize = maxBufferSize; + _this.scheduler = scheduler; + _this.contexts = []; + var context = _this.openContext(); + _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0; + if (_this.timespanOnly) { + var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan }; + _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState)); + } + else { + var closeState = { subscriber: _this, context: context }; + var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler }; + _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState)); + _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState)); + } + return _this; + } + BufferTimeSubscriber.prototype._next = function (value) { + var contexts = this.contexts; + var len = contexts.length; + var filledBufferContext; + for (var i = 0; i < len; i++) { + var context_1 = contexts[i]; + var buffer = context_1.buffer; + buffer.push(value); + if (buffer.length == this.maxBufferSize) { + filledBufferContext = context_1; + } + } + if (filledBufferContext) { + this.onBufferFull(filledBufferContext); + } + }; + BufferTimeSubscriber.prototype._error = function (err) { + this.contexts.length = 0; + _super.prototype._error.call(this, err); + }; + BufferTimeSubscriber.prototype._complete = function () { + var _a = this, contexts = _a.contexts, destination = _a.destination; + while (contexts.length > 0) { + var context_2 = contexts.shift(); + destination.next(context_2.buffer); + } + _super.prototype._complete.call(this); + }; + BufferTimeSubscriber.prototype._unsubscribe = function () { + this.contexts = null; + }; + BufferTimeSubscriber.prototype.onBufferFull = function (context) { + this.closeContext(context); + var closeAction = context.closeAction; + closeAction.unsubscribe(); + this.remove(closeAction); + if (!this.closed && this.timespanOnly) { + context = this.openContext(); + var bufferTimeSpan = this.bufferTimeSpan; + var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan }; + this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState)); + } + }; + BufferTimeSubscriber.prototype.openContext = function () { + var context = new Context(); + this.contexts.push(context); + return context; + }; + BufferTimeSubscriber.prototype.closeContext = function (context) { + this.destination.next(context.buffer); + var contexts = this.contexts; + var spliceIndex = contexts ? contexts.indexOf(context) : -1; + if (spliceIndex >= 0) { + contexts.splice(contexts.indexOf(context), 1); + } + }; + return BufferTimeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"])); +function dispatchBufferTimeSpanOnly(state) { + var subscriber = state.subscriber; + var prevContext = state.context; + if (prevContext) { + subscriber.closeContext(prevContext); + } + if (!subscriber.closed) { + state.context = subscriber.openContext(); + state.context.closeAction = this.schedule(state, state.bufferTimeSpan); + } +} +function dispatchBufferCreation(state) { + var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler; + var context = subscriber.openContext(); + var action = this; + if (!subscriber.closed) { + subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context })); + action.schedule(state, bufferCreationInterval); + } +} +function dispatchBufferClose(arg) { + var subscriber = arg.subscriber, context = arg.context; + subscriber.closeContext(context); +} +//# sourceMappingURL=bufferTime.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js": +/*!********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js ***! + \********************************************************************/ +/*! exports provided: bufferToggle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return bufferToggle; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */ + + + + +function bufferToggle(openings, closingSelector) { + return function bufferToggleOperatorFunction(source) { + return source.lift(new BufferToggleOperator(openings, closingSelector)); + }; +} +var BufferToggleOperator = /*@__PURE__*/ (function () { + function BufferToggleOperator(openings, closingSelector) { + this.openings = openings; + this.closingSelector = closingSelector; + } + BufferToggleOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector)); + }; + return BufferToggleOperator; +}()); +var BufferToggleSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferToggleSubscriber, _super); + function BufferToggleSubscriber(destination, openings, closingSelector) { + var _this = _super.call(this, destination) || this; + _this.openings = openings; + _this.closingSelector = closingSelector; + _this.contexts = []; + _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, openings)); + return _this; + } + BufferToggleSubscriber.prototype._next = function (value) { + var contexts = this.contexts; + var len = contexts.length; + for (var i = 0; i < len; i++) { + contexts[i].buffer.push(value); + } + }; + BufferToggleSubscriber.prototype._error = function (err) { + var contexts = this.contexts; + while (contexts.length > 0) { + var context_1 = contexts.shift(); + context_1.subscription.unsubscribe(); + context_1.buffer = null; + context_1.subscription = null; + } + this.contexts = null; + _super.prototype._error.call(this, err); + }; + BufferToggleSubscriber.prototype._complete = function () { + var contexts = this.contexts; + while (contexts.length > 0) { + var context_2 = contexts.shift(); + this.destination.next(context_2.buffer); + context_2.subscription.unsubscribe(); + context_2.buffer = null; + context_2.subscription = null; + } + this.contexts = null; + _super.prototype._complete.call(this); + }; + BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue); + }; + BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) { + this.closeBuffer(innerSub.context); + }; + BufferToggleSubscriber.prototype.openBuffer = function (value) { + try { + var closingSelector = this.closingSelector; + var closingNotifier = closingSelector.call(this, value); + if (closingNotifier) { + this.trySubscribe(closingNotifier); + } + } + catch (err) { + this._error(err); + } + }; + BufferToggleSubscriber.prototype.closeBuffer = function (context) { + var contexts = this.contexts; + if (contexts && context) { + var buffer = context.buffer, subscription = context.subscription; + this.destination.next(buffer); + contexts.splice(contexts.indexOf(context), 1); + this.remove(subscription); + subscription.unsubscribe(); + } + }; + BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) { + var contexts = this.contexts; + var buffer = []; + var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); + var context = { buffer: buffer, subscription: subscription }; + contexts.push(context); + var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, closingNotifier, context); + if (!innerSubscription || innerSubscription.closed) { + this.closeBuffer(context); + } + else { + innerSubscription.context = context; + this.add(innerSubscription); + subscription.add(innerSubscription); + } + }; + return BufferToggleSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); +//# sourceMappingURL=bufferToggle.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js ***! + \******************************************************************/ +/*! exports provided: bufferWhen */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return bufferWhen; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + +function bufferWhen(closingSelector) { + return function (source) { + return source.lift(new BufferWhenOperator(closingSelector)); + }; +} +var BufferWhenOperator = /*@__PURE__*/ (function () { + function BufferWhenOperator(closingSelector) { + this.closingSelector = closingSelector; + } + BufferWhenOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector)); + }; + return BufferWhenOperator; +}()); +var BufferWhenSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](BufferWhenSubscriber, _super); + function BufferWhenSubscriber(destination, closingSelector) { + var _this = _super.call(this, destination) || this; + _this.closingSelector = closingSelector; + _this.subscribing = false; + _this.openBuffer(); + return _this; + } + BufferWhenSubscriber.prototype._next = function (value) { + this.buffer.push(value); + }; + BufferWhenSubscriber.prototype._complete = function () { + var buffer = this.buffer; + if (buffer) { + this.destination.next(buffer); + } + _super.prototype._complete.call(this); + }; + BufferWhenSubscriber.prototype._unsubscribe = function () { + this.buffer = null; + this.subscribing = false; + }; + BufferWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.openBuffer(); + }; + BufferWhenSubscriber.prototype.notifyComplete = function () { + if (this.subscribing) { + this.complete(); + } + else { + this.openBuffer(); + } + }; + BufferWhenSubscriber.prototype.openBuffer = function () { + var closingSubscription = this.closingSubscription; + if (closingSubscription) { + this.remove(closingSubscription); + closingSubscription.unsubscribe(); + } + var buffer = this.buffer; + if (this.buffer) { + this.destination.next(buffer); + } + this.buffer = []; + var closingNotifier; + try { + var closingSelector = this.closingSelector; + closingNotifier = closingSelector(); + } + catch (err) { + return this.error(err); + } + closingSubscription = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); + this.closingSubscription = closingSubscription; + this.add(closingSubscription); + this.subscribing = true; + closingSubscription.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, closingNotifier)); + this.subscribing = false; + }; + return BufferWhenSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); +//# sourceMappingURL=bufferWhen.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/catchError.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/catchError.js ***! + \******************************************************************/ +/*! exports provided: catchError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return catchError; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + +function catchError(selector) { + return function catchErrorOperatorFunction(source) { + var operator = new CatchOperator(selector); + var caught = source.lift(operator); + return (operator.caught = caught); + }; +} +var CatchOperator = /*@__PURE__*/ (function () { + function CatchOperator(selector) { + this.selector = selector; + } + CatchOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught)); + }; + return CatchOperator; +}()); +var CatchSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CatchSubscriber, _super); + function CatchSubscriber(destination, selector, caught) { + var _this = _super.call(this, destination) || this; + _this.selector = selector; + _this.caught = caught; + return _this; + } + CatchSubscriber.prototype.error = function (err) { + if (!this.isStopped) { + var result = void 0; + try { + result = this.selector(err, this.caught); + } + catch (err2) { + _super.prototype.error.call(this, err2); + return; + } + this._unsubscribeAndRecycle(); + var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](this, undefined, undefined); + this.add(innerSubscriber); + Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, result, undefined, undefined, innerSubscriber); + } + }; + return CatchSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=catchError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/combineAll.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/combineAll.js ***! + \******************************************************************/ +/*! exports provided: combineAll */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return combineAll; }); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/combineLatest */ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js"); +/** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */ + +function combineAll(project) { + return function (source) { return source.lift(new _observable_combineLatest__WEBPACK_IMPORTED_MODULE_0__["CombineLatestOperator"](project)); }; +} +//# sourceMappingURL=combineAll.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/combineLatest.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/combineLatest.js ***! + \*********************************************************************/ +/*! exports provided: combineLatest */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return combineLatest; }); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/combineLatest */ "./node_modules/rxjs/_esm5/internal/observable/combineLatest.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */ + + + +var none = {}; +function combineLatest() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + var project = null; + if (typeof observables[observables.length - 1] === 'function') { + project = observables.pop(); + } + if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(observables[0])) { + observables = observables[0].slice(); + } + return function (source) { return source.lift.call(Object(_observable_from__WEBPACK_IMPORTED_MODULE_2__["from"])([source].concat(observables)), new _observable_combineLatest__WEBPACK_IMPORTED_MODULE_1__["CombineLatestOperator"](project)); }; +} +//# sourceMappingURL=combineLatest.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/concat.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/concat.js ***! + \**************************************************************/ +/*! exports provided: concat */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return concat; }); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); +/** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */ + +function concat() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + return function (source) { return source.lift.call(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"].apply(void 0, [source].concat(observables))); }; +} +//# sourceMappingURL=concat.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/concatAll.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/concatAll.js ***! + \*****************************************************************/ +/*! exports provided: concatAll */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return concatAll; }); +/* harmony import */ var _mergeAll__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeAll */ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js"); +/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */ + +function concatAll() { + return Object(_mergeAll__WEBPACK_IMPORTED_MODULE_0__["mergeAll"])(1); +} +//# sourceMappingURL=concatAll.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/concatMap.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/concatMap.js ***! + \*****************************************************************/ +/*! exports provided: concatMap */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return concatMap; }); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); +/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ + +function concatMap(project, resultSelector) { + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(project, resultSelector, 1); +} +//# sourceMappingURL=concatMap.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js ***! + \*******************************************************************/ +/*! exports provided: concatMapTo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return concatMapTo; }); +/* harmony import */ var _concatMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./concatMap */ "./node_modules/rxjs/_esm5/internal/operators/concatMap.js"); +/** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */ + +function concatMapTo(innerObservable, resultSelector) { + return Object(_concatMap__WEBPACK_IMPORTED_MODULE_0__["concatMap"])(function () { return innerObservable; }, resultSelector); +} +//# sourceMappingURL=concatMapTo.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/count.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/count.js ***! + \*************************************************************/ +/*! exports provided: count */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "count", function() { return count; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function count(predicate) { + return function (source) { return source.lift(new CountOperator(predicate, source)); }; +} +var CountOperator = /*@__PURE__*/ (function () { + function CountOperator(predicate, source) { + this.predicate = predicate; + this.source = source; + } + CountOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source)); + }; + return CountOperator; +}()); +var CountSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CountSubscriber, _super); + function CountSubscriber(destination, predicate, source) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.source = source; + _this.count = 0; + _this.index = 0; + return _this; + } + CountSubscriber.prototype._next = function (value) { + if (this.predicate) { + this._tryPredicate(value); + } + else { + this.count++; + } + }; + CountSubscriber.prototype._tryPredicate = function (value) { + var result; + try { + result = this.predicate(value, this.index++, this.source); + } + catch (err) { + this.destination.error(err); + return; + } + if (result) { + this.count++; + } + }; + CountSubscriber.prototype._complete = function () { + this.destination.next(this.count); + this.destination.complete(); + }; + return CountSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=count.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/debounce.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/debounce.js ***! + \****************************************************************/ +/*! exports provided: debounce */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return debounce; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function debounce(durationSelector) { + return function (source) { return source.lift(new DebounceOperator(durationSelector)); }; +} +var DebounceOperator = /*@__PURE__*/ (function () { + function DebounceOperator(durationSelector) { + this.durationSelector = durationSelector; + } + DebounceOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector)); + }; + return DebounceOperator; +}()); +var DebounceSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DebounceSubscriber, _super); + function DebounceSubscriber(destination, durationSelector) { + var _this = _super.call(this, destination) || this; + _this.durationSelector = durationSelector; + _this.hasValue = false; + _this.durationSubscription = null; + return _this; + } + DebounceSubscriber.prototype._next = function (value) { + try { + var result = this.durationSelector.call(this, value); + if (result) { + this._tryNext(value, result); + } + } + catch (err) { + this.destination.error(err); + } + }; + DebounceSubscriber.prototype._complete = function () { + this.emitValue(); + this.destination.complete(); + }; + DebounceSubscriber.prototype._tryNext = function (value, duration) { + var subscription = this.durationSubscription; + this.value = value; + this.hasValue = true; + if (subscription) { + subscription.unsubscribe(); + this.remove(subscription); + } + subscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, duration); + if (subscription && !subscription.closed) { + this.add(this.durationSubscription = subscription); + } + }; + DebounceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.emitValue(); + }; + DebounceSubscriber.prototype.notifyComplete = function () { + this.emitValue(); + }; + DebounceSubscriber.prototype.emitValue = function () { + if (this.hasValue) { + var value = this.value; + var subscription = this.durationSubscription; + if (subscription) { + this.durationSubscription = null; + subscription.unsubscribe(); + this.remove(subscription); + } + this.value = null; + this.hasValue = false; + _super.prototype._next.call(this, value); + } + }; + return DebounceSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=debounce.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/debounceTime.js": +/*!********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/debounceTime.js ***! + \********************************************************************/ +/*! exports provided: debounceTime */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return debounceTime; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ + + + +function debounceTime(dueTime, scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; + } + return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); }; +} +var DebounceTimeOperator = /*@__PURE__*/ (function () { + function DebounceTimeOperator(dueTime, scheduler) { + this.dueTime = dueTime; + this.scheduler = scheduler; + } + DebounceTimeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler)); + }; + return DebounceTimeOperator; +}()); +var DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DebounceTimeSubscriber, _super); + function DebounceTimeSubscriber(destination, dueTime, scheduler) { + var _this = _super.call(this, destination) || this; + _this.dueTime = dueTime; + _this.scheduler = scheduler; + _this.debouncedSubscription = null; + _this.lastValue = null; + _this.hasValue = false; + return _this; + } + DebounceTimeSubscriber.prototype._next = function (value) { + this.clearDebounce(); + this.lastValue = value; + this.hasValue = true; + this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this)); + }; + DebounceTimeSubscriber.prototype._complete = function () { + this.debouncedNext(); + this.destination.complete(); + }; + DebounceTimeSubscriber.prototype.debouncedNext = function () { + this.clearDebounce(); + if (this.hasValue) { + var lastValue = this.lastValue; + this.lastValue = null; + this.hasValue = false; + this.destination.next(lastValue); + } + }; + DebounceTimeSubscriber.prototype.clearDebounce = function () { + var debouncedSubscription = this.debouncedSubscription; + if (debouncedSubscription !== null) { + this.remove(debouncedSubscription); + debouncedSubscription.unsubscribe(); + this.debouncedSubscription = null; + } + }; + return DebounceTimeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +function dispatchNext(subscriber) { + subscriber.debouncedNext(); +} +//# sourceMappingURL=debounceTime.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js ***! + \**********************************************************************/ +/*! exports provided: defaultIfEmpty */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return defaultIfEmpty; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function defaultIfEmpty(defaultValue) { + if (defaultValue === void 0) { + defaultValue = null; + } + return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); }; +} +var DefaultIfEmptyOperator = /*@__PURE__*/ (function () { + function DefaultIfEmptyOperator(defaultValue) { + this.defaultValue = defaultValue; + } + DefaultIfEmptyOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue)); + }; + return DefaultIfEmptyOperator; +}()); +var DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DefaultIfEmptySubscriber, _super); + function DefaultIfEmptySubscriber(destination, defaultValue) { + var _this = _super.call(this, destination) || this; + _this.defaultValue = defaultValue; + _this.isEmpty = true; + return _this; + } + DefaultIfEmptySubscriber.prototype._next = function (value) { + this.isEmpty = false; + this.destination.next(value); + }; + DefaultIfEmptySubscriber.prototype._complete = function () { + if (this.isEmpty) { + this.destination.next(this.defaultValue); + } + this.destination.complete(); + }; + return DefaultIfEmptySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=defaultIfEmpty.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/delay.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/delay.js ***! + \*************************************************************/ +/*! exports provided: delay */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return delay; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isDate */ "./node_modules/rxjs/_esm5/internal/util/isDate.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); +/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */ + + + + + +function delay(delay, scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; + } + var absoluteDelay = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_2__["isDate"])(delay); + var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay); + return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); }; +} +var DelayOperator = /*@__PURE__*/ (function () { + function DelayOperator(delay, scheduler) { + this.delay = delay; + this.scheduler = scheduler; + } + DelayOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler)); + }; + return DelayOperator; +}()); +var DelaySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DelaySubscriber, _super); + function DelaySubscriber(destination, delay, scheduler) { + var _this = _super.call(this, destination) || this; + _this.delay = delay; + _this.scheduler = scheduler; + _this.queue = []; + _this.active = false; + _this.errored = false; + return _this; + } + DelaySubscriber.dispatch = function (state) { + var source = state.source; + var queue = source.queue; + var scheduler = state.scheduler; + var destination = state.destination; + while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) { + queue.shift().notification.observe(destination); + } + if (queue.length > 0) { + var delay_1 = Math.max(0, queue[0].time - scheduler.now()); + this.schedule(state, delay_1); + } + else { + this.unsubscribe(); + source.active = false; + } + }; + DelaySubscriber.prototype._schedule = function (scheduler) { + this.active = true; + var destination = this.destination; + destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, { + source: this, destination: this.destination, scheduler: scheduler + })); + }; + DelaySubscriber.prototype.scheduleNotification = function (notification) { + if (this.errored === true) { + return; + } + var scheduler = this.scheduler; + var message = new DelayMessage(scheduler.now() + this.delay, notification); + this.queue.push(message); + if (this.active === false) { + this._schedule(scheduler); + } + }; + DelaySubscriber.prototype._next = function (value) { + this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_4__["Notification"].createNext(value)); + }; + DelaySubscriber.prototype._error = function (err) { + this.errored = true; + this.queue = []; + this.destination.error(err); + this.unsubscribe(); + }; + DelaySubscriber.prototype._complete = function () { + this.scheduleNotification(_Notification__WEBPACK_IMPORTED_MODULE_4__["Notification"].createComplete()); + this.unsubscribe(); + }; + return DelaySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); +var DelayMessage = /*@__PURE__*/ (function () { + function DelayMessage(time, notification) { + this.time = time; + this.notification = notification; + } + return DelayMessage; +}()); +//# sourceMappingURL=delay.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/delayWhen.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/delayWhen.js ***! + \*****************************************************************/ +/*! exports provided: delayWhen */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return delayWhen; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + + +function delayWhen(delayDurationSelector, subscriptionDelay) { + if (subscriptionDelay) { + return function (source) { + return new SubscriptionDelayObservable(source, subscriptionDelay) + .lift(new DelayWhenOperator(delayDurationSelector)); + }; + } + return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); }; +} +var DelayWhenOperator = /*@__PURE__*/ (function () { + function DelayWhenOperator(delayDurationSelector) { + this.delayDurationSelector = delayDurationSelector; + } + DelayWhenOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector)); + }; + return DelayWhenOperator; +}()); +var DelayWhenSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DelayWhenSubscriber, _super); + function DelayWhenSubscriber(destination, delayDurationSelector) { + var _this = _super.call(this, destination) || this; + _this.delayDurationSelector = delayDurationSelector; + _this.completed = false; + _this.delayNotifierSubscriptions = []; + _this.index = 0; + return _this; + } + DelayWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(outerValue); + this.removeSubscription(innerSub); + this.tryComplete(); + }; + DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) { + this._error(error); + }; + DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) { + var value = this.removeSubscription(innerSub); + if (value) { + this.destination.next(value); + } + this.tryComplete(); + }; + DelayWhenSubscriber.prototype._next = function (value) { + var index = this.index++; + try { + var delayNotifier = this.delayDurationSelector(value, index); + if (delayNotifier) { + this.tryDelay(delayNotifier, value); + } + } + catch (err) { + this.destination.error(err); + } + }; + DelayWhenSubscriber.prototype._complete = function () { + this.completed = true; + this.tryComplete(); + this.unsubscribe(); + }; + DelayWhenSubscriber.prototype.removeSubscription = function (subscription) { + subscription.unsubscribe(); + var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription); + if (subscriptionIdx !== -1) { + this.delayNotifierSubscriptions.splice(subscriptionIdx, 1); + } + return subscription.outerValue; + }; + DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) { + var notifierSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, delayNotifier, value); + if (notifierSubscription && !notifierSubscription.closed) { + var destination = this.destination; + destination.add(notifierSubscription); + this.delayNotifierSubscriptions.push(notifierSubscription); + } + }; + DelayWhenSubscriber.prototype.tryComplete = function () { + if (this.completed && this.delayNotifierSubscriptions.length === 0) { + this.destination.complete(); + } + }; + return DelayWhenSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); +var SubscriptionDelayObservable = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscriptionDelayObservable, _super); + function SubscriptionDelayObservable(source, subscriptionDelay) { + var _this = _super.call(this) || this; + _this.source = source; + _this.subscriptionDelay = subscriptionDelay; + return _this; + } + SubscriptionDelayObservable.prototype._subscribe = function (subscriber) { + this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source)); + }; + return SubscriptionDelayObservable; +}(_Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"])); +var SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SubscriptionDelaySubscriber, _super); + function SubscriptionDelaySubscriber(parent, source) { + var _this = _super.call(this) || this; + _this.parent = parent; + _this.source = source; + _this.sourceSubscribed = false; + return _this; + } + SubscriptionDelaySubscriber.prototype._next = function (unused) { + this.subscribeToSource(); + }; + SubscriptionDelaySubscriber.prototype._error = function (err) { + this.unsubscribe(); + this.parent.error(err); + }; + SubscriptionDelaySubscriber.prototype._complete = function () { + this.unsubscribe(); + this.subscribeToSource(); + }; + SubscriptionDelaySubscriber.prototype.subscribeToSource = function () { + if (!this.sourceSubscribed) { + this.sourceSubscribed = true; + this.unsubscribe(); + this.source.subscribe(this.parent); + } + }; + return SubscriptionDelaySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=delayWhen.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/dematerialize.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/dematerialize.js ***! + \*********************************************************************/ +/*! exports provided: dematerialize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return dematerialize; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function dematerialize() { + return function dematerializeOperatorFunction(source) { + return source.lift(new DeMaterializeOperator()); + }; +} +var DeMaterializeOperator = /*@__PURE__*/ (function () { + function DeMaterializeOperator() { + } + DeMaterializeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DeMaterializeSubscriber(subscriber)); + }; + return DeMaterializeOperator; +}()); +var DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DeMaterializeSubscriber, _super); + function DeMaterializeSubscriber(destination) { + return _super.call(this, destination) || this; + } + DeMaterializeSubscriber.prototype._next = function (value) { + value.observe(this.destination); + }; + return DeMaterializeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=dematerialize.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/distinct.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/distinct.js ***! + \****************************************************************/ +/*! exports provided: distinct, DistinctSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return distinct; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DistinctSubscriber", function() { return DistinctSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function distinct(keySelector, flushes) { + return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); }; +} +var DistinctOperator = /*@__PURE__*/ (function () { + function DistinctOperator(keySelector, flushes) { + this.keySelector = keySelector; + this.flushes = flushes; + } + DistinctOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes)); + }; + return DistinctOperator; +}()); +var DistinctSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DistinctSubscriber, _super); + function DistinctSubscriber(destination, keySelector, flushes) { + var _this = _super.call(this, destination) || this; + _this.keySelector = keySelector; + _this.values = new Set(); + if (flushes) { + _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, flushes)); + } + return _this; + } + DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.values.clear(); + }; + DistinctSubscriber.prototype.notifyError = function (error, innerSub) { + this._error(error); + }; + DistinctSubscriber.prototype._next = function (value) { + if (this.keySelector) { + this._useKeySelector(value); + } + else { + this._finalizeNext(value, value); + } + }; + DistinctSubscriber.prototype._useKeySelector = function (value) { + var key; + var destination = this.destination; + try { + key = this.keySelector(value); + } + catch (err) { + destination.error(err); + return; + } + this._finalizeNext(key, value); + }; + DistinctSubscriber.prototype._finalizeNext = function (key, value) { + var values = this.values; + if (!values.has(key)) { + values.add(key); + this.destination.next(value); + } + }; + return DistinctSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); + +//# sourceMappingURL=distinct.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js": +/*!****************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js ***! + \****************************************************************************/ +/*! exports provided: distinctUntilChanged */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return distinctUntilChanged; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function distinctUntilChanged(compare, keySelector) { + return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); }; +} +var DistinctUntilChangedOperator = /*@__PURE__*/ (function () { + function DistinctUntilChangedOperator(compare, keySelector) { + this.compare = compare; + this.keySelector = keySelector; + } + DistinctUntilChangedOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector)); + }; + return DistinctUntilChangedOperator; +}()); +var DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](DistinctUntilChangedSubscriber, _super); + function DistinctUntilChangedSubscriber(destination, compare, keySelector) { + var _this = _super.call(this, destination) || this; + _this.keySelector = keySelector; + _this.hasKey = false; + if (typeof compare === 'function') { + _this.compare = compare; + } + return _this; + } + DistinctUntilChangedSubscriber.prototype.compare = function (x, y) { + return x === y; + }; + DistinctUntilChangedSubscriber.prototype._next = function (value) { + var key; + try { + var keySelector = this.keySelector; + key = keySelector ? keySelector(value) : value; + } + catch (err) { + return this.destination.error(err); + } + var result = false; + if (this.hasKey) { + try { + var compare = this.compare; + result = compare(this.key, key); + } + catch (err) { + return this.destination.error(err); + } + } + else { + this.hasKey = true; + } + if (!result) { + this.key = key; + this.destination.next(value); + } + }; + return DistinctUntilChangedSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=distinctUntilChanged.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js ***! + \*******************************************************************************/ +/*! exports provided: distinctUntilKeyChanged */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return distinctUntilKeyChanged; }); +/* harmony import */ var _distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./distinctUntilChanged */ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js"); +/** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */ + +function distinctUntilKeyChanged(key, compare) { + return Object(_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_0__["distinctUntilChanged"])(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; }); +} +//# sourceMappingURL=distinctUntilKeyChanged.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/elementAt.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/elementAt.js ***! + \*****************************************************************/ +/*! exports provided: elementAt */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return elementAt; }); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./take */ "./node_modules/rxjs/_esm5/internal/operators/take.js"); +/** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */ + + + + + +function elementAt(index, defaultValue) { + if (index < 0) { + throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"](); + } + var hasDefaultValue = arguments.length >= 2; + return function (source) { + return source.pipe(Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return i === index; }), Object(_take__WEBPACK_IMPORTED_MODULE_4__["take"])(1), hasDefaultValue + ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue) + : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_2__["throwIfEmpty"])(function () { return new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_0__["ArgumentOutOfRangeError"](); })); + }; +} +//# sourceMappingURL=elementAt.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/endWith.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/endWith.js ***! + \***************************************************************/ +/*! exports provided: endWith */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return endWith; }); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); +/* harmony import */ var _observable_of__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/of */ "./node_modules/rxjs/_esm5/internal/observable/of.js"); +/** PURE_IMPORTS_START _observable_concat,_observable_of PURE_IMPORTS_END */ + + +function endWith() { + var array = []; + for (var _i = 0; _i < arguments.length; _i++) { + array[_i] = arguments[_i]; + } + return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(source, _observable_of__WEBPACK_IMPORTED_MODULE_1__["of"].apply(void 0, array)); }; +} +//# sourceMappingURL=endWith.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/every.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/every.js ***! + \*************************************************************/ +/*! exports provided: every */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "every", function() { return every; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function every(predicate, thisArg) { + return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); }; +} +var EveryOperator = /*@__PURE__*/ (function () { + function EveryOperator(predicate, thisArg, source) { + this.predicate = predicate; + this.thisArg = thisArg; + this.source = source; + } + EveryOperator.prototype.call = function (observer, source) { + return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source)); + }; + return EveryOperator; +}()); +var EverySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](EverySubscriber, _super); + function EverySubscriber(destination, predicate, thisArg, source) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.thisArg = thisArg; + _this.source = source; + _this.index = 0; + _this.thisArg = thisArg || _this; + return _this; + } + EverySubscriber.prototype.notifyComplete = function (everyValueMatch) { + this.destination.next(everyValueMatch); + this.destination.complete(); + }; + EverySubscriber.prototype._next = function (value) { + var result = false; + try { + result = this.predicate.call(this.thisArg, value, this.index++, this.source); + } + catch (err) { + this.destination.error(err); + return; + } + if (!result) { + this.notifyComplete(false); + } + }; + EverySubscriber.prototype._complete = function () { + this.notifyComplete(true); + }; + return EverySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=every.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/exhaust.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/exhaust.js ***! + \***************************************************************/ +/*! exports provided: exhaust */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return exhaust; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function exhaust() { + return function (source) { return source.lift(new SwitchFirstOperator()); }; +} +var SwitchFirstOperator = /*@__PURE__*/ (function () { + function SwitchFirstOperator() { + } + SwitchFirstOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new SwitchFirstSubscriber(subscriber)); + }; + return SwitchFirstOperator; +}()); +var SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SwitchFirstSubscriber, _super); + function SwitchFirstSubscriber(destination) { + var _this = _super.call(this, destination) || this; + _this.hasCompleted = false; + _this.hasSubscription = false; + return _this; + } + SwitchFirstSubscriber.prototype._next = function (value) { + if (!this.hasSubscription) { + this.hasSubscription = true; + this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, value)); + } + }; + SwitchFirstSubscriber.prototype._complete = function () { + this.hasCompleted = true; + if (!this.hasSubscription) { + this.destination.complete(); + } + }; + SwitchFirstSubscriber.prototype.notifyComplete = function (innerSub) { + this.remove(innerSub); + this.hasSubscription = false; + if (this.hasCompleted) { + this.destination.complete(); + } + }; + return SwitchFirstSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=exhaust.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js ***! + \******************************************************************/ +/*! exports provided: exhaustMap */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return exhaustMap; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */ + + + + + + +function exhaustMap(project, resultSelector) { + if (resultSelector) { + return function (source) { return source.pipe(exhaustMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); }; + } + return function (source) { + return source.lift(new ExhaustMapOperator(project)); + }; +} +var ExhaustMapOperator = /*@__PURE__*/ (function () { + function ExhaustMapOperator(project) { + this.project = project; + } + ExhaustMapOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project)); + }; + return ExhaustMapOperator; +}()); +var ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ExhaustMapSubscriber, _super); + function ExhaustMapSubscriber(destination, project) { + var _this = _super.call(this, destination) || this; + _this.project = project; + _this.hasSubscription = false; + _this.hasCompleted = false; + _this.index = 0; + return _this; + } + ExhaustMapSubscriber.prototype._next = function (value) { + if (!this.hasSubscription) { + this.tryNext(value); + } + }; + ExhaustMapSubscriber.prototype.tryNext = function (value) { + var result; + var index = this.index++; + try { + result = this.project(value, index); + } + catch (err) { + this.destination.error(err); + return; + } + this.hasSubscription = true; + this._innerSub(result, value, index); + }; + ExhaustMapSubscriber.prototype._innerSub = function (result, value, index) { + var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](this, undefined, undefined); + var destination = this.destination; + destination.add(innerSubscriber); + Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, result, value, index, innerSubscriber); + }; + ExhaustMapSubscriber.prototype._complete = function () { + this.hasCompleted = true; + if (!this.hasSubscription) { + this.destination.complete(); + } + this.unsubscribe(); + }; + ExhaustMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(innerValue); + }; + ExhaustMapSubscriber.prototype.notifyError = function (err) { + this.destination.error(err); + }; + ExhaustMapSubscriber.prototype.notifyComplete = function (innerSub) { + var destination = this.destination; + destination.remove(innerSub); + this.hasSubscription = false; + if (this.hasCompleted) { + this.destination.complete(); + } + }; + return ExhaustMapSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=exhaustMap.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/expand.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/expand.js ***! + \**************************************************************/ +/*! exports provided: expand, ExpandOperator, ExpandSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return expand; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandOperator", function() { return ExpandOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ExpandSubscriber", function() { return ExpandSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function expand(project, concurrent, scheduler) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + if (scheduler === void 0) { + scheduler = undefined; + } + concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent; + return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); }; +} +var ExpandOperator = /*@__PURE__*/ (function () { + function ExpandOperator(project, concurrent, scheduler) { + this.project = project; + this.concurrent = concurrent; + this.scheduler = scheduler; + } + ExpandOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler)); + }; + return ExpandOperator; +}()); + +var ExpandSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ExpandSubscriber, _super); + function ExpandSubscriber(destination, project, concurrent, scheduler) { + var _this = _super.call(this, destination) || this; + _this.project = project; + _this.concurrent = concurrent; + _this.scheduler = scheduler; + _this.index = 0; + _this.active = 0; + _this.hasCompleted = false; + if (concurrent < Number.POSITIVE_INFINITY) { + _this.buffer = []; + } + return _this; + } + ExpandSubscriber.dispatch = function (arg) { + var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index; + subscriber.subscribeToProjection(result, value, index); + }; + ExpandSubscriber.prototype._next = function (value) { + var destination = this.destination; + if (destination.closed) { + this._complete(); + return; + } + var index = this.index++; + if (this.active < this.concurrent) { + destination.next(value); + try { + var project = this.project; + var result = project(value, index); + if (!this.scheduler) { + this.subscribeToProjection(result, value, index); + } + else { + var state = { subscriber: this, result: result, value: value, index: index }; + var destination_1 = this.destination; + destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state)); + } + } + catch (e) { + destination.error(e); + } + } + else { + this.buffer.push(value); + } + }; + ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) { + this.active++; + var destination = this.destination; + destination.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, result, value, index)); + }; + ExpandSubscriber.prototype._complete = function () { + this.hasCompleted = true; + if (this.hasCompleted && this.active === 0) { + this.destination.complete(); + } + this.unsubscribe(); + }; + ExpandSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this._next(innerValue); + }; + ExpandSubscriber.prototype.notifyComplete = function (innerSub) { + var buffer = this.buffer; + var destination = this.destination; + destination.remove(innerSub); + this.active--; + if (buffer && buffer.length > 0) { + this._next(buffer.shift()); + } + if (this.hasCompleted && this.active === 0) { + this.destination.complete(); + } + }; + return ExpandSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); + +//# sourceMappingURL=expand.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/filter.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/filter.js ***! + \**************************************************************/ +/*! exports provided: filter */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return filter; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function filter(predicate, thisArg) { + return function filterOperatorFunction(source) { + return source.lift(new FilterOperator(predicate, thisArg)); + }; +} +var FilterOperator = /*@__PURE__*/ (function () { + function FilterOperator(predicate, thisArg) { + this.predicate = predicate; + this.thisArg = thisArg; + } + FilterOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg)); + }; + return FilterOperator; +}()); +var FilterSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FilterSubscriber, _super); + function FilterSubscriber(destination, predicate, thisArg) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.thisArg = thisArg; + _this.count = 0; + return _this; + } + FilterSubscriber.prototype._next = function (value) { + var result; + try { + result = this.predicate.call(this.thisArg, value, this.count++); + } + catch (err) { + this.destination.error(err); + return; + } + if (result) { + this.destination.next(value); + } + }; + return FilterSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=filter.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/finalize.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/finalize.js ***! + \****************************************************************/ +/*! exports provided: finalize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return finalize; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */ + + + +function finalize(callback) { + return function (source) { return source.lift(new FinallyOperator(callback)); }; +} +var FinallyOperator = /*@__PURE__*/ (function () { + function FinallyOperator(callback) { + this.callback = callback; + } + FinallyOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new FinallySubscriber(subscriber, this.callback)); + }; + return FinallyOperator; +}()); +var FinallySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FinallySubscriber, _super); + function FinallySubscriber(destination, callback) { + var _this = _super.call(this, destination) || this; + _this.add(new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](callback)); + return _this; + } + return FinallySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=finalize.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/find.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/find.js ***! + \************************************************************/ +/*! exports provided: find, FindValueOperator, FindValueSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "find", function() { return find; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueOperator", function() { return FindValueOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "FindValueSubscriber", function() { return FindValueSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function find(predicate, thisArg) { + if (typeof predicate !== 'function') { + throw new TypeError('predicate is not a function'); + } + return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); }; +} +var FindValueOperator = /*@__PURE__*/ (function () { + function FindValueOperator(predicate, source, yieldIndex, thisArg) { + this.predicate = predicate; + this.source = source; + this.yieldIndex = yieldIndex; + this.thisArg = thisArg; + } + FindValueOperator.prototype.call = function (observer, source) { + return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg)); + }; + return FindValueOperator; +}()); + +var FindValueSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](FindValueSubscriber, _super); + function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.source = source; + _this.yieldIndex = yieldIndex; + _this.thisArg = thisArg; + _this.index = 0; + return _this; + } + FindValueSubscriber.prototype.notifyComplete = function (value) { + var destination = this.destination; + destination.next(value); + destination.complete(); + this.unsubscribe(); + }; + FindValueSubscriber.prototype._next = function (value) { + var _a = this, predicate = _a.predicate, thisArg = _a.thisArg; + var index = this.index++; + try { + var result = predicate.call(thisArg || this, value, index, this.source); + if (result) { + this.notifyComplete(this.yieldIndex ? index : value); + } + } + catch (err) { + this.destination.error(err); + } + }; + FindValueSubscriber.prototype._complete = function () { + this.notifyComplete(this.yieldIndex ? -1 : undefined); + }; + return FindValueSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); + +//# sourceMappingURL=find.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/findIndex.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/findIndex.js ***! + \*****************************************************************/ +/*! exports provided: findIndex */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return findIndex; }); +/* harmony import */ var _operators_find__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../operators/find */ "./node_modules/rxjs/_esm5/internal/operators/find.js"); +/** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */ + +function findIndex(predicate, thisArg) { + return function (source) { return source.lift(new _operators_find__WEBPACK_IMPORTED_MODULE_0__["FindValueOperator"](predicate, source, true, thisArg)); }; +} +//# sourceMappingURL=findIndex.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/first.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/first.js ***! + \*************************************************************/ +/*! exports provided: first */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "first", function() { return first; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); +/* harmony import */ var _take__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./take */ "./node_modules/rxjs/_esm5/internal/operators/take.js"); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); +/** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */ + + + + + + +function first(predicate, defaultValue) { + var hasDefaultValue = arguments.length >= 2; + return function (source) { return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_take__WEBPACK_IMPORTED_MODULE_2__["take"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_3__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_4__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); })); }; +} +//# sourceMappingURL=first.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/groupBy.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/groupBy.js ***! + \***************************************************************/ +/*! exports provided: groupBy, GroupedObservable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return groupBy; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GroupedObservable", function() { return GroupedObservable; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */ + + + + + +function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) { + return function (source) { + return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector)); + }; +} +var GroupByOperator = /*@__PURE__*/ (function () { + function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) { + this.keySelector = keySelector; + this.elementSelector = elementSelector; + this.durationSelector = durationSelector; + this.subjectSelector = subjectSelector; + } + GroupByOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector)); + }; + return GroupByOperator; +}()); +var GroupBySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupBySubscriber, _super); + function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) { + var _this = _super.call(this, destination) || this; + _this.keySelector = keySelector; + _this.elementSelector = elementSelector; + _this.durationSelector = durationSelector; + _this.subjectSelector = subjectSelector; + _this.groups = null; + _this.attemptedToUnsubscribe = false; + _this.count = 0; + return _this; + } + GroupBySubscriber.prototype._next = function (value) { + var key; + try { + key = this.keySelector(value); + } + catch (err) { + this.error(err); + return; + } + this._group(value, key); + }; + GroupBySubscriber.prototype._group = function (value, key) { + var groups = this.groups; + if (!groups) { + groups = this.groups = new Map(); + } + var group = groups.get(key); + var element; + if (this.elementSelector) { + try { + element = this.elementSelector(value); + } + catch (err) { + this.error(err); + } + } + else { + element = value; + } + if (!group) { + group = (this.subjectSelector ? this.subjectSelector() : new _Subject__WEBPACK_IMPORTED_MODULE_4__["Subject"]()); + groups.set(key, group); + var groupedObservable = new GroupedObservable(key, group, this); + this.destination.next(groupedObservable); + if (this.durationSelector) { + var duration = void 0; + try { + duration = this.durationSelector(new GroupedObservable(key, group)); + } + catch (err) { + this.error(err); + return; + } + this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this))); + } + } + if (!group.closed) { + group.next(element); + } + }; + GroupBySubscriber.prototype._error = function (err) { + var groups = this.groups; + if (groups) { + groups.forEach(function (group, key) { + group.error(err); + }); + groups.clear(); + } + this.destination.error(err); + }; + GroupBySubscriber.prototype._complete = function () { + var groups = this.groups; + if (groups) { + groups.forEach(function (group, key) { + group.complete(); + }); + groups.clear(); + } + this.destination.complete(); + }; + GroupBySubscriber.prototype.removeGroup = function (key) { + this.groups.delete(key); + }; + GroupBySubscriber.prototype.unsubscribe = function () { + if (!this.closed) { + this.attemptedToUnsubscribe = true; + if (this.count === 0) { + _super.prototype.unsubscribe.call(this); + } + } + }; + return GroupBySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +var GroupDurationSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupDurationSubscriber, _super); + function GroupDurationSubscriber(key, group, parent) { + var _this = _super.call(this, group) || this; + _this.key = key; + _this.group = group; + _this.parent = parent; + return _this; + } + GroupDurationSubscriber.prototype._next = function (value) { + this.complete(); + }; + GroupDurationSubscriber.prototype._unsubscribe = function () { + var _a = this, parent = _a.parent, key = _a.key; + this.key = this.parent = null; + if (parent) { + parent.removeGroup(key); + } + }; + return GroupDurationSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +var GroupedObservable = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](GroupedObservable, _super); + function GroupedObservable(key, groupSubject, refCountSubscription) { + var _this = _super.call(this) || this; + _this.key = key; + _this.groupSubject = groupSubject; + _this.refCountSubscription = refCountSubscription; + return _this; + } + GroupedObservable.prototype._subscribe = function (subscriber) { + var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](); + var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject; + if (refCountSubscription && !refCountSubscription.closed) { + subscription.add(new InnerRefCountSubscription(refCountSubscription)); + } + subscription.add(groupSubject.subscribe(subscriber)); + return subscription; + }; + return GroupedObservable; +}(_Observable__WEBPACK_IMPORTED_MODULE_3__["Observable"])); + +var InnerRefCountSubscription = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](InnerRefCountSubscription, _super); + function InnerRefCountSubscription(parent) { + var _this = _super.call(this) || this; + _this.parent = parent; + parent.count++; + return _this; + } + InnerRefCountSubscription.prototype.unsubscribe = function () { + var parent = this.parent; + if (!parent.closed && !this.closed) { + _super.prototype.unsubscribe.call(this); + parent.count -= 1; + if (parent.count === 0 && parent.attemptedToUnsubscribe) { + parent.unsubscribe(); + } + } + }; + return InnerRefCountSubscription; +}(_Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"])); +//# sourceMappingURL=groupBy.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js ***! + \**********************************************************************/ +/*! exports provided: ignoreElements */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return ignoreElements; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function ignoreElements() { + return function ignoreElementsOperatorFunction(source) { + return source.lift(new IgnoreElementsOperator()); + }; +} +var IgnoreElementsOperator = /*@__PURE__*/ (function () { + function IgnoreElementsOperator() { + } + IgnoreElementsOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new IgnoreElementsSubscriber(subscriber)); + }; + return IgnoreElementsOperator; +}()); +var IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](IgnoreElementsSubscriber, _super); + function IgnoreElementsSubscriber() { + return _super !== null && _super.apply(this, arguments) || this; + } + IgnoreElementsSubscriber.prototype._next = function (unused) { + }; + return IgnoreElementsSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=ignoreElements.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/isEmpty.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/isEmpty.js ***! + \***************************************************************/ +/*! exports provided: isEmpty */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return isEmpty; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function isEmpty() { + return function (source) { return source.lift(new IsEmptyOperator()); }; +} +var IsEmptyOperator = /*@__PURE__*/ (function () { + function IsEmptyOperator() { + } + IsEmptyOperator.prototype.call = function (observer, source) { + return source.subscribe(new IsEmptySubscriber(observer)); + }; + return IsEmptyOperator; +}()); +var IsEmptySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](IsEmptySubscriber, _super); + function IsEmptySubscriber(destination) { + return _super.call(this, destination) || this; + } + IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) { + var destination = this.destination; + destination.next(isEmpty); + destination.complete(); + }; + IsEmptySubscriber.prototype._next = function (value) { + this.notifyComplete(false); + }; + IsEmptySubscriber.prototype._complete = function () { + this.notifyComplete(true); + }; + return IsEmptySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=isEmpty.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/last.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/last.js ***! + \************************************************************/ +/*! exports provided: last */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "last", function() { return last; }); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./takeLast */ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js"); +/* harmony import */ var _throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); +/** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */ + + + + + + +function last(predicate, defaultValue) { + var hasDefaultValue = arguments.length >= 2; + return function (source) { return source.pipe(predicate ? Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (v, i) { return predicate(v, i, source); }) : _util_identity__WEBPACK_IMPORTED_MODULE_5__["identity"], Object(_takeLast__WEBPACK_IMPORTED_MODULE_2__["takeLast"])(1), hasDefaultValue ? Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_4__["defaultIfEmpty"])(defaultValue) : Object(_throwIfEmpty__WEBPACK_IMPORTED_MODULE_3__["throwIfEmpty"])(function () { return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_0__["EmptyError"](); })); }; +} +//# sourceMappingURL=last.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/map.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/map.js ***! + \***********************************************************/ +/*! exports provided: map, MapOperator */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "map", function() { return map; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MapOperator", function() { return MapOperator; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function map(project, thisArg) { + return function mapOperation(source) { + if (typeof project !== 'function') { + throw new TypeError('argument is not a function. Are you looking for `mapTo()`?'); + } + return source.lift(new MapOperator(project, thisArg)); + }; +} +var MapOperator = /*@__PURE__*/ (function () { + function MapOperator(project, thisArg) { + this.project = project; + this.thisArg = thisArg; + } + MapOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg)); + }; + return MapOperator; +}()); + +var MapSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MapSubscriber, _super); + function MapSubscriber(destination, project, thisArg) { + var _this = _super.call(this, destination) || this; + _this.project = project; + _this.count = 0; + _this.thisArg = thisArg || _this; + return _this; + } + MapSubscriber.prototype._next = function (value) { + var result; + try { + result = this.project.call(this.thisArg, value, this.count++); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + }; + return MapSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=map.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/mapTo.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/mapTo.js ***! + \*************************************************************/ +/*! exports provided: mapTo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return mapTo; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function mapTo(value) { + return function (source) { return source.lift(new MapToOperator(value)); }; +} +var MapToOperator = /*@__PURE__*/ (function () { + function MapToOperator(value) { + this.value = value; + } + MapToOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new MapToSubscriber(subscriber, this.value)); + }; + return MapToOperator; +}()); +var MapToSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MapToSubscriber, _super); + function MapToSubscriber(destination, value) { + var _this = _super.call(this, destination) || this; + _this.value = value; + return _this; + } + MapToSubscriber.prototype._next = function (x) { + this.destination.next(this.value); + }; + return MapToSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=mapTo.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/materialize.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/materialize.js ***! + \*******************************************************************/ +/*! exports provided: materialize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return materialize; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ + + + +function materialize() { + return function materializeOperatorFunction(source) { + return source.lift(new MaterializeOperator()); + }; +} +var MaterializeOperator = /*@__PURE__*/ (function () { + function MaterializeOperator() { + } + MaterializeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new MaterializeSubscriber(subscriber)); + }; + return MaterializeOperator; +}()); +var MaterializeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MaterializeSubscriber, _super); + function MaterializeSubscriber(destination) { + return _super.call(this, destination) || this; + } + MaterializeSubscriber.prototype._next = function (value) { + this.destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createNext(value)); + }; + MaterializeSubscriber.prototype._error = function (err) { + var destination = this.destination; + destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createError(err)); + destination.complete(); + }; + MaterializeSubscriber.prototype._complete = function () { + var destination = this.destination; + destination.next(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createComplete()); + destination.complete(); + }; + return MaterializeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=materialize.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/max.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/max.js ***! + \***********************************************************/ +/*! exports provided: max */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "max", function() { return max; }); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); +/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ + +function max(comparer) { + var max = (typeof comparer === 'function') + ? function (x, y) { return comparer(x, y) > 0 ? x : y; } + : function (x, y) { return x > y ? x : y; }; + return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(max); +} +//# sourceMappingURL=max.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/merge.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/merge.js ***! + \*************************************************************/ +/*! exports provided: merge */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return merge; }); +/* harmony import */ var _observable_merge__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/merge */ "./node_modules/rxjs/_esm5/internal/observable/merge.js"); +/** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */ + +function merge() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + return function (source) { return source.lift.call(_observable_merge__WEBPACK_IMPORTED_MODULE_0__["merge"].apply(void 0, [source].concat(observables))); }; +} +//# sourceMappingURL=merge.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/mergeAll.js ***! + \****************************************************************/ +/*! exports provided: mergeAll */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return mergeAll; }); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); +/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */ + + +function mergeAll(concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"], concurrent); +} +//# sourceMappingURL=mergeAll.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/mergeMap.js ***! + \****************************************************************/ +/*! exports provided: mergeMap, MergeMapOperator, MergeMapSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return mergeMap; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapOperator", function() { return MergeMapOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeMapSubscriber", function() { return MergeMapSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */ + + + + + + +function mergeMap(project, resultSelector, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + if (typeof resultSelector === 'function') { + return function (source) { return source.pipe(mergeMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); }; + } + else if (typeof resultSelector === 'number') { + concurrent = resultSelector; + } + return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); }; +} +var MergeMapOperator = /*@__PURE__*/ (function () { + function MergeMapOperator(project, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + this.project = project; + this.concurrent = concurrent; + } + MergeMapOperator.prototype.call = function (observer, source) { + return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent)); + }; + return MergeMapOperator; +}()); + +var MergeMapSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MergeMapSubscriber, _super); + function MergeMapSubscriber(destination, project, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + var _this = _super.call(this, destination) || this; + _this.project = project; + _this.concurrent = concurrent; + _this.hasCompleted = false; + _this.buffer = []; + _this.active = 0; + _this.index = 0; + return _this; + } + MergeMapSubscriber.prototype._next = function (value) { + if (this.active < this.concurrent) { + this._tryNext(value); + } + else { + this.buffer.push(value); + } + }; + MergeMapSubscriber.prototype._tryNext = function (value) { + var result; + var index = this.index++; + try { + result = this.project(value, index); + } + catch (err) { + this.destination.error(err); + return; + } + this.active++; + this._innerSub(result, value, index); + }; + MergeMapSubscriber.prototype._innerSub = function (ish, value, index) { + var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__["InnerSubscriber"](this, undefined, undefined); + var destination = this.destination; + destination.add(innerSubscriber); + Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__["subscribeToResult"])(this, ish, value, index, innerSubscriber); + }; + MergeMapSubscriber.prototype._complete = function () { + this.hasCompleted = true; + if (this.active === 0 && this.buffer.length === 0) { + this.destination.complete(); + } + this.unsubscribe(); + }; + MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(innerValue); + }; + MergeMapSubscriber.prototype.notifyComplete = function (innerSub) { + var buffer = this.buffer; + this.remove(innerSub); + this.active--; + if (buffer.length > 0) { + this._next(buffer.shift()); + } + else if (this.active === 0 && this.hasCompleted) { + this.destination.complete(); + } + }; + return MergeMapSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); + +//# sourceMappingURL=mergeMap.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js ***! + \******************************************************************/ +/*! exports provided: mergeMapTo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return mergeMapTo; }); +/* harmony import */ var _mergeMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); +/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */ + +function mergeMapTo(innerObservable, resultSelector, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + if (typeof resultSelector === 'function') { + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, resultSelector, concurrent); + } + if (typeof resultSelector === 'number') { + concurrent = resultSelector; + } + return Object(_mergeMap__WEBPACK_IMPORTED_MODULE_0__["mergeMap"])(function () { return innerObservable; }, concurrent); +} +//# sourceMappingURL=mergeMapTo.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/mergeScan.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/mergeScan.js ***! + \*****************************************************************/ +/*! exports provided: mergeScan, MergeScanOperator, MergeScanSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return mergeScan; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanOperator", function() { return MergeScanOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MergeScanSubscriber", function() { return MergeScanSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber PURE_IMPORTS_END */ + + + + +function mergeScan(accumulator, seed, concurrent) { + if (concurrent === void 0) { + concurrent = Number.POSITIVE_INFINITY; + } + return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); }; +} +var MergeScanOperator = /*@__PURE__*/ (function () { + function MergeScanOperator(accumulator, seed, concurrent) { + this.accumulator = accumulator; + this.seed = seed; + this.concurrent = concurrent; + } + MergeScanOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent)); + }; + return MergeScanOperator; +}()); + +var MergeScanSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](MergeScanSubscriber, _super); + function MergeScanSubscriber(destination, accumulator, acc, concurrent) { + var _this = _super.call(this, destination) || this; + _this.accumulator = accumulator; + _this.acc = acc; + _this.concurrent = concurrent; + _this.hasValue = false; + _this.hasCompleted = false; + _this.buffer = []; + _this.active = 0; + _this.index = 0; + return _this; + } + MergeScanSubscriber.prototype._next = function (value) { + if (this.active < this.concurrent) { + var index = this.index++; + var destination = this.destination; + var ish = void 0; + try { + var accumulator = this.accumulator; + ish = accumulator(this.acc, value, index); + } + catch (e) { + return destination.error(e); + } + this.active++; + this._innerSub(ish, value, index); + } + else { + this.buffer.push(value); + } + }; + MergeScanSubscriber.prototype._innerSub = function (ish, value, index) { + var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_3__["InnerSubscriber"](this, undefined, undefined); + var destination = this.destination; + destination.add(innerSubscriber); + Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_1__["subscribeToResult"])(this, ish, value, index, innerSubscriber); + }; + MergeScanSubscriber.prototype._complete = function () { + this.hasCompleted = true; + if (this.active === 0 && this.buffer.length === 0) { + if (this.hasValue === false) { + this.destination.next(this.acc); + } + this.destination.complete(); + } + this.unsubscribe(); + }; + MergeScanSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + var destination = this.destination; + this.acc = innerValue; + this.hasValue = true; + destination.next(innerValue); + }; + MergeScanSubscriber.prototype.notifyComplete = function (innerSub) { + var buffer = this.buffer; + var destination = this.destination; + destination.remove(innerSub); + this.active--; + if (buffer.length > 0) { + this._next(buffer.shift()); + } + else if (this.active === 0 && this.hasCompleted) { + if (this.hasValue === false) { + this.destination.next(this.acc); + } + this.destination.complete(); + } + }; + return MergeScanSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); + +//# sourceMappingURL=mergeScan.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/min.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/min.js ***! + \***********************************************************/ +/*! exports provided: min */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "min", function() { return min; }); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); +/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ + +function min(comparer) { + var min = (typeof comparer === 'function') + ? function (x, y) { return comparer(x, y) < 0 ? x : y; } + : function (x, y) { return x < y ? x : y; }; + return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(min); +} +//# sourceMappingURL=min.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/multicast.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/multicast.js ***! + \*****************************************************************/ +/*! exports provided: multicast, MulticastOperator */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return multicast; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MulticastOperator", function() { return MulticastOperator; }); +/* harmony import */ var _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/ConnectableObservable */ "./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js"); +/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */ + +function multicast(subjectOrSubjectFactory, selector) { + return function multicastOperatorFunction(source) { + var subjectFactory; + if (typeof subjectOrSubjectFactory === 'function') { + subjectFactory = subjectOrSubjectFactory; + } + else { + subjectFactory = function subjectFactory() { + return subjectOrSubjectFactory; + }; + } + if (typeof selector === 'function') { + return source.lift(new MulticastOperator(subjectFactory, selector)); + } + var connectable = Object.create(source, _observable_ConnectableObservable__WEBPACK_IMPORTED_MODULE_0__["connectableObservableDescriptor"]); + connectable.source = source; + connectable.subjectFactory = subjectFactory; + return connectable; + }; +} +var MulticastOperator = /*@__PURE__*/ (function () { + function MulticastOperator(subjectFactory, selector) { + this.subjectFactory = subjectFactory; + this.selector = selector; + } + MulticastOperator.prototype.call = function (subscriber, source) { + var selector = this.selector; + var subject = this.subjectFactory(); + var subscription = selector(subject).subscribe(subscriber); + subscription.add(source.subscribe(subject)); + return subscription; + }; + return MulticastOperator; +}()); + +//# sourceMappingURL=multicast.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/observeOn.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/observeOn.js ***! + \*****************************************************************/ +/*! exports provided: observeOn, ObserveOnOperator, ObserveOnSubscriber, ObserveOnMessage */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return observeOn; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnOperator", function() { return ObserveOnOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnSubscriber", function() { return ObserveOnSubscriber; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObserveOnMessage", function() { return ObserveOnMessage; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Notification__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Notification */ "./node_modules/rxjs/_esm5/internal/Notification.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */ + + + +function observeOn(scheduler, delay) { + if (delay === void 0) { + delay = 0; + } + return function observeOnOperatorFunction(source) { + return source.lift(new ObserveOnOperator(scheduler, delay)); + }; +} +var ObserveOnOperator = /*@__PURE__*/ (function () { + function ObserveOnOperator(scheduler, delay) { + if (delay === void 0) { + delay = 0; + } + this.scheduler = scheduler; + this.delay = delay; + } + ObserveOnOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay)); + }; + return ObserveOnOperator; +}()); + +var ObserveOnSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ObserveOnSubscriber, _super); + function ObserveOnSubscriber(destination, scheduler, delay) { + if (delay === void 0) { + delay = 0; + } + var _this = _super.call(this, destination) || this; + _this.scheduler = scheduler; + _this.delay = delay; + return _this; + } + ObserveOnSubscriber.dispatch = function (arg) { + var notification = arg.notification, destination = arg.destination; + notification.observe(destination); + this.unsubscribe(); + }; + ObserveOnSubscriber.prototype.scheduleMessage = function (notification) { + var destination = this.destination; + destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination))); + }; + ObserveOnSubscriber.prototype._next = function (value) { + this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createNext(value)); + }; + ObserveOnSubscriber.prototype._error = function (err) { + this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createError(err)); + this.unsubscribe(); + }; + ObserveOnSubscriber.prototype._complete = function () { + this.scheduleMessage(_Notification__WEBPACK_IMPORTED_MODULE_2__["Notification"].createComplete()); + this.unsubscribe(); + }; + return ObserveOnSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); + +var ObserveOnMessage = /*@__PURE__*/ (function () { + function ObserveOnMessage(notification, destination) { + this.notification = notification; + this.destination = destination; + } + return ObserveOnMessage; +}()); + +//# sourceMappingURL=observeOn.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js": +/*!*************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js ***! + \*************************************************************************/ +/*! exports provided: onErrorResumeNext, onErrorResumeNextStatic */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return onErrorResumeNext; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNextStatic", function() { return onErrorResumeNextStatic; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + + + +function onErrorResumeNext() { + var nextSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + nextSources[_i] = arguments[_i]; + } + if (nextSources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(nextSources[0])) { + nextSources = nextSources[0]; + } + return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); }; +} +function onErrorResumeNextStatic() { + var nextSources = []; + for (var _i = 0; _i < arguments.length; _i++) { + nextSources[_i] = arguments[_i]; + } + var source = null; + if (nextSources.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_2__["isArray"])(nextSources[0])) { + nextSources = nextSources[0]; + } + source = nextSources.shift(); + return Object(_observable_from__WEBPACK_IMPORTED_MODULE_1__["from"])(source, null).lift(new OnErrorResumeNextOperator(nextSources)); +} +var OnErrorResumeNextOperator = /*@__PURE__*/ (function () { + function OnErrorResumeNextOperator(nextSources) { + this.nextSources = nextSources; + } + OnErrorResumeNextOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources)); + }; + return OnErrorResumeNextOperator; +}()); +var OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](OnErrorResumeNextSubscriber, _super); + function OnErrorResumeNextSubscriber(destination, nextSources) { + var _this = _super.call(this, destination) || this; + _this.destination = destination; + _this.nextSources = nextSources; + return _this; + } + OnErrorResumeNextSubscriber.prototype.notifyError = function (error, innerSub) { + this.subscribeToNextSource(); + }; + OnErrorResumeNextSubscriber.prototype.notifyComplete = function (innerSub) { + this.subscribeToNextSource(); + }; + OnErrorResumeNextSubscriber.prototype._error = function (err) { + this.subscribeToNextSource(); + this.unsubscribe(); + }; + OnErrorResumeNextSubscriber.prototype._complete = function () { + this.subscribeToNextSource(); + this.unsubscribe(); + }; + OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () { + var next = this.nextSources.shift(); + if (!!next) { + var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_4__["InnerSubscriber"](this, undefined, undefined); + var destination = this.destination; + destination.add(innerSubscriber); + Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_5__["subscribeToResult"])(this, next, undefined, undefined, innerSubscriber); + } + else { + this.destination.complete(); + } + }; + return OnErrorResumeNextSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); +//# sourceMappingURL=onErrorResumeNext.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/pairwise.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/pairwise.js ***! + \****************************************************************/ +/*! exports provided: pairwise */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return pairwise; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function pairwise() { + return function (source) { return source.lift(new PairwiseOperator()); }; +} +var PairwiseOperator = /*@__PURE__*/ (function () { + function PairwiseOperator() { + } + PairwiseOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new PairwiseSubscriber(subscriber)); + }; + return PairwiseOperator; +}()); +var PairwiseSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](PairwiseSubscriber, _super); + function PairwiseSubscriber(destination) { + var _this = _super.call(this, destination) || this; + _this.hasPrev = false; + return _this; + } + PairwiseSubscriber.prototype._next = function (value) { + var pair; + if (this.hasPrev) { + pair = [this.prev, value]; + } + else { + this.hasPrev = true; + } + this.prev = value; + if (pair) { + this.destination.next(pair); + } + }; + return PairwiseSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=pairwise.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/partition.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/partition.js ***! + \*****************************************************************/ +/*! exports provided: partition */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return partition; }); +/* harmony import */ var _util_not__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/not */ "./node_modules/rxjs/_esm5/internal/util/not.js"); +/* harmony import */ var _filter__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); +/** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */ + + +function partition(predicate, thisArg) { + return function (source) { + return [ + Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(predicate, thisArg)(source), + Object(_filter__WEBPACK_IMPORTED_MODULE_1__["filter"])(Object(_util_not__WEBPACK_IMPORTED_MODULE_0__["not"])(predicate, thisArg))(source) + ]; + }; +} +//# sourceMappingURL=partition.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/pluck.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/pluck.js ***! + \*************************************************************/ +/*! exports provided: pluck */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return pluck; }); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/** PURE_IMPORTS_START _map PURE_IMPORTS_END */ + +function pluck() { + var properties = []; + for (var _i = 0; _i < arguments.length; _i++) { + properties[_i] = arguments[_i]; + } + var length = properties.length; + if (length === 0) { + throw new Error('list of properties cannot be empty.'); + } + return function (source) { return Object(_map__WEBPACK_IMPORTED_MODULE_0__["map"])(plucker(properties, length))(source); }; +} +function plucker(props, length) { + var mapper = function (x) { + var currentProp = x; + for (var i = 0; i < length; i++) { + var p = currentProp[props[i]]; + if (typeof p !== 'undefined') { + currentProp = p; + } + else { + return undefined; + } + } + return currentProp; + }; + return mapper; +} +//# sourceMappingURL=pluck.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/publish.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/publish.js ***! + \***************************************************************/ +/*! exports provided: publish */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return publish; }); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); +/** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */ + + +function publish(selector) { + return selector ? + Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(function () { return new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"](); }, selector) : + Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _Subject__WEBPACK_IMPORTED_MODULE_0__["Subject"]()); +} +//# sourceMappingURL=publish.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js": +/*!***********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js ***! + \***********************************************************************/ +/*! exports provided: publishBehavior */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return publishBehavior; }); +/* harmony import */ var _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../BehaviorSubject */ "./node_modules/rxjs/_esm5/internal/BehaviorSubject.js"); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); +/** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */ + + +function publishBehavior(value) { + return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _BehaviorSubject__WEBPACK_IMPORTED_MODULE_0__["BehaviorSubject"](value))(source); }; +} +//# sourceMappingURL=publishBehavior.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/publishLast.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/publishLast.js ***! + \*******************************************************************/ +/*! exports provided: publishLast */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return publishLast; }); +/* harmony import */ var _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../AsyncSubject */ "./node_modules/rxjs/_esm5/internal/AsyncSubject.js"); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); +/** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */ + + +function publishLast() { + return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(new _AsyncSubject__WEBPACK_IMPORTED_MODULE_0__["AsyncSubject"]())(source); }; +} +//# sourceMappingURL=publishLast.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/publishReplay.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/publishReplay.js ***! + \*********************************************************************/ +/*! exports provided: publishReplay */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return publishReplay; }); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ReplaySubject */ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js"); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); +/** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */ + + +function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) { + if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') { + scheduler = selectorOrScheduler; + } + var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined; + var subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler); + return function (source) { return Object(_multicast__WEBPACK_IMPORTED_MODULE_1__["multicast"])(function () { return subject; }, selector)(source); }; +} +//# sourceMappingURL=publishReplay.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/race.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/race.js ***! + \************************************************************/ +/*! exports provided: race */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "race", function() { return race; }); +/* harmony import */ var _util_isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../util/isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/* harmony import */ var _observable_race__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../observable/race */ "./node_modules/rxjs/_esm5/internal/observable/race.js"); +/** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */ + + +function race() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + return function raceOperatorFunction(source) { + if (observables.length === 1 && Object(_util_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(observables[0])) { + observables = observables[0]; + } + return source.lift.call(_observable_race__WEBPACK_IMPORTED_MODULE_1__["race"].apply(void 0, [source].concat(observables))); + }; +} +//# sourceMappingURL=race.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/reduce.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/reduce.js ***! + \**************************************************************/ +/*! exports provided: reduce */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return reduce; }); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scan */ "./node_modules/rxjs/_esm5/internal/operators/scan.js"); +/* harmony import */ var _takeLast__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./takeLast */ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js"); +/* harmony import */ var _defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); +/* harmony import */ var _util_pipe__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/pipe */ "./node_modules/rxjs/_esm5/internal/util/pipe.js"); +/** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */ + + + + +function reduce(accumulator, seed) { + if (arguments.length >= 2) { + return function reduceOperatorFunctionWithSeed(source) { + return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(accumulator, seed), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1), Object(_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_2__["defaultIfEmpty"])(seed))(source); + }; + } + return function reduceOperatorFunction(source) { + return Object(_util_pipe__WEBPACK_IMPORTED_MODULE_3__["pipe"])(Object(_scan__WEBPACK_IMPORTED_MODULE_0__["scan"])(function (acc, value, index) { return accumulator(acc, value, index + 1); }), Object(_takeLast__WEBPACK_IMPORTED_MODULE_1__["takeLast"])(1))(source); + }; +} +//# sourceMappingURL=reduce.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/refCount.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/refCount.js ***! + \****************************************************************/ +/*! exports provided: refCount */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return refCount; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function refCount() { + return function refCountOperatorFunction(source) { + return source.lift(new RefCountOperator(source)); + }; +} +var RefCountOperator = /*@__PURE__*/ (function () { + function RefCountOperator(connectable) { + this.connectable = connectable; + } + RefCountOperator.prototype.call = function (subscriber, source) { + var connectable = this.connectable; + connectable._refCount++; + var refCounter = new RefCountSubscriber(subscriber, connectable); + var subscription = source.subscribe(refCounter); + if (!refCounter.closed) { + refCounter.connection = connectable.connect(); + } + return subscription; + }; + return RefCountOperator; +}()); +var RefCountSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RefCountSubscriber, _super); + function RefCountSubscriber(destination, connectable) { + var _this = _super.call(this, destination) || this; + _this.connectable = connectable; + return _this; + } + RefCountSubscriber.prototype._unsubscribe = function () { + var connectable = this.connectable; + if (!connectable) { + this.connection = null; + return; + } + this.connectable = null; + var refCount = connectable._refCount; + if (refCount <= 0) { + this.connection = null; + return; + } + connectable._refCount = refCount - 1; + if (refCount > 1) { + this.connection = null; + return; + } + var connection = this.connection; + var sharedConnection = connectable._connection; + this.connection = null; + if (sharedConnection && (!connection || sharedConnection === connection)) { + sharedConnection.unsubscribe(); + } + }; + return RefCountSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=refCount.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/repeat.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/repeat.js ***! + \**************************************************************/ +/*! exports provided: repeat */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return repeat; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */ + + + +function repeat(count) { + if (count === void 0) { + count = -1; + } + return function (source) { + if (count === 0) { + return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_2__["empty"])(); + } + else if (count < 0) { + return source.lift(new RepeatOperator(-1, source)); + } + else { + return source.lift(new RepeatOperator(count - 1, source)); + } + }; +} +var RepeatOperator = /*@__PURE__*/ (function () { + function RepeatOperator(count, source) { + this.count = count; + this.source = source; + } + RepeatOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source)); + }; + return RepeatOperator; +}()); +var RepeatSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RepeatSubscriber, _super); + function RepeatSubscriber(destination, count, source) { + var _this = _super.call(this, destination) || this; + _this.count = count; + _this.source = source; + return _this; + } + RepeatSubscriber.prototype.complete = function () { + if (!this.isStopped) { + var _a = this, source = _a.source, count = _a.count; + if (count === 0) { + return _super.prototype.complete.call(this); + } + else if (count > -1) { + this.count = count - 1; + } + source.subscribe(this._unsubscribeAndRecycle()); + } + }; + return RepeatSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=repeat.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js ***! + \******************************************************************/ +/*! exports provided: repeatWhen */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return repeatWhen; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + +function repeatWhen(notifier) { + return function (source) { return source.lift(new RepeatWhenOperator(notifier)); }; +} +var RepeatWhenOperator = /*@__PURE__*/ (function () { + function RepeatWhenOperator(notifier) { + this.notifier = notifier; + } + RepeatWhenOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source)); + }; + return RepeatWhenOperator; +}()); +var RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RepeatWhenSubscriber, _super); + function RepeatWhenSubscriber(destination, notifier, source) { + var _this = _super.call(this, destination) || this; + _this.notifier = notifier; + _this.source = source; + _this.sourceIsBeingSubscribedTo = true; + return _this; + } + RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.sourceIsBeingSubscribedTo = true; + this.source.subscribe(this); + }; + RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) { + if (this.sourceIsBeingSubscribedTo === false) { + return _super.prototype.complete.call(this); + } + }; + RepeatWhenSubscriber.prototype.complete = function () { + this.sourceIsBeingSubscribedTo = false; + if (!this.isStopped) { + if (!this.retries) { + this.subscribeToRetries(); + } + if (!this.retriesSubscription || this.retriesSubscription.closed) { + return _super.prototype.complete.call(this); + } + this._unsubscribeAndRecycle(); + this.notifications.next(); + } + }; + RepeatWhenSubscriber.prototype._unsubscribe = function () { + var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription; + if (notifications) { + notifications.unsubscribe(); + this.notifications = null; + } + if (retriesSubscription) { + retriesSubscription.unsubscribe(); + this.retriesSubscription = null; + } + this.retries = null; + }; + RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () { + var _unsubscribe = this._unsubscribe; + this._unsubscribe = null; + _super.prototype._unsubscribeAndRecycle.call(this); + this._unsubscribe = _unsubscribe; + return this; + }; + RepeatWhenSubscriber.prototype.subscribeToRetries = function () { + this.notifications = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); + var retries; + try { + var notifier = this.notifier; + retries = notifier(this.notifications); + } + catch (e) { + return _super.prototype.complete.call(this); + } + this.retries = retries; + this.retriesSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, retries); + }; + return RepeatWhenSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); +//# sourceMappingURL=repeatWhen.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/retry.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/retry.js ***! + \*************************************************************/ +/*! exports provided: retry */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return retry; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function retry(count) { + if (count === void 0) { + count = -1; + } + return function (source) { return source.lift(new RetryOperator(count, source)); }; +} +var RetryOperator = /*@__PURE__*/ (function () { + function RetryOperator(count, source) { + this.count = count; + this.source = source; + } + RetryOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source)); + }; + return RetryOperator; +}()); +var RetrySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RetrySubscriber, _super); + function RetrySubscriber(destination, count, source) { + var _this = _super.call(this, destination) || this; + _this.count = count; + _this.source = source; + return _this; + } + RetrySubscriber.prototype.error = function (err) { + if (!this.isStopped) { + var _a = this, source = _a.source, count = _a.count; + if (count === 0) { + return _super.prototype.error.call(this, err); + } + else if (count > -1) { + this.count = count - 1; + } + source.subscribe(this._unsubscribeAndRecycle()); + } + }; + return RetrySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=retry.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/retryWhen.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/retryWhen.js ***! + \*****************************************************************/ +/*! exports provided: retryWhen */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return retryWhen; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + +function retryWhen(notifier) { + return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); }; +} +var RetryWhenOperator = /*@__PURE__*/ (function () { + function RetryWhenOperator(notifier, source) { + this.notifier = notifier; + this.source = source; + } + RetryWhenOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source)); + }; + return RetryWhenOperator; +}()); +var RetryWhenSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](RetryWhenSubscriber, _super); + function RetryWhenSubscriber(destination, notifier, source) { + var _this = _super.call(this, destination) || this; + _this.notifier = notifier; + _this.source = source; + return _this; + } + RetryWhenSubscriber.prototype.error = function (err) { + if (!this.isStopped) { + var errors = this.errors; + var retries = this.retries; + var retriesSubscription = this.retriesSubscription; + if (!retries) { + errors = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); + try { + var notifier = this.notifier; + retries = notifier(errors); + } + catch (e) { + return _super.prototype.error.call(this, e); + } + retriesSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, retries); + } + else { + this.errors = null; + this.retriesSubscription = null; + } + this._unsubscribeAndRecycle(); + this.errors = errors; + this.retries = retries; + this.retriesSubscription = retriesSubscription; + errors.next(err); + } + }; + RetryWhenSubscriber.prototype._unsubscribe = function () { + var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription; + if (errors) { + errors.unsubscribe(); + this.errors = null; + } + if (retriesSubscription) { + retriesSubscription.unsubscribe(); + this.retriesSubscription = null; + } + this.retries = null; + }; + RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + var _unsubscribe = this._unsubscribe; + this._unsubscribe = null; + this._unsubscribeAndRecycle(); + this._unsubscribe = _unsubscribe; + this.source.subscribe(this); + }; + return RetryWhenSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); +//# sourceMappingURL=retryWhen.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/sample.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/sample.js ***! + \**************************************************************/ +/*! exports provided: sample */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return sample; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function sample(notifier) { + return function (source) { return source.lift(new SampleOperator(notifier)); }; +} +var SampleOperator = /*@__PURE__*/ (function () { + function SampleOperator(notifier) { + this.notifier = notifier; + } + SampleOperator.prototype.call = function (subscriber, source) { + var sampleSubscriber = new SampleSubscriber(subscriber); + var subscription = source.subscribe(sampleSubscriber); + subscription.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(sampleSubscriber, this.notifier)); + return subscription; + }; + return SampleOperator; +}()); +var SampleSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SampleSubscriber, _super); + function SampleSubscriber() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.hasValue = false; + return _this; + } + SampleSubscriber.prototype._next = function (value) { + this.value = value; + this.hasValue = true; + }; + SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.emitValue(); + }; + SampleSubscriber.prototype.notifyComplete = function () { + this.emitValue(); + }; + SampleSubscriber.prototype.emitValue = function () { + if (this.hasValue) { + this.hasValue = false; + this.destination.next(this.value); + } + }; + return SampleSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=sample.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/sampleTime.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/sampleTime.js ***! + \******************************************************************/ +/*! exports provided: sampleTime */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return sampleTime; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */ + + + +function sampleTime(period, scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; + } + return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); }; +} +var SampleTimeOperator = /*@__PURE__*/ (function () { + function SampleTimeOperator(period, scheduler) { + this.period = period; + this.scheduler = scheduler; + } + SampleTimeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler)); + }; + return SampleTimeOperator; +}()); +var SampleTimeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SampleTimeSubscriber, _super); + function SampleTimeSubscriber(destination, period, scheduler) { + var _this = _super.call(this, destination) || this; + _this.period = period; + _this.scheduler = scheduler; + _this.hasValue = false; + _this.add(scheduler.schedule(dispatchNotification, period, { subscriber: _this, period: period })); + return _this; + } + SampleTimeSubscriber.prototype._next = function (value) { + this.lastValue = value; + this.hasValue = true; + }; + SampleTimeSubscriber.prototype.notifyNext = function () { + if (this.hasValue) { + this.hasValue = false; + this.destination.next(this.lastValue); + } + }; + return SampleTimeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +function dispatchNotification(state) { + var subscriber = state.subscriber, period = state.period; + subscriber.notifyNext(); + this.schedule(state, period); +} +//# sourceMappingURL=sampleTime.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/scan.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/scan.js ***! + \************************************************************/ +/*! exports provided: scan */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return scan; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function scan(accumulator, seed) { + var hasSeed = false; + if (arguments.length >= 2) { + hasSeed = true; + } + return function scanOperatorFunction(source) { + return source.lift(new ScanOperator(accumulator, seed, hasSeed)); + }; +} +var ScanOperator = /*@__PURE__*/ (function () { + function ScanOperator(accumulator, seed, hasSeed) { + if (hasSeed === void 0) { + hasSeed = false; + } + this.accumulator = accumulator; + this.seed = seed; + this.hasSeed = hasSeed; + } + ScanOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed)); + }; + return ScanOperator; +}()); +var ScanSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ScanSubscriber, _super); + function ScanSubscriber(destination, accumulator, _seed, hasSeed) { + var _this = _super.call(this, destination) || this; + _this.accumulator = accumulator; + _this._seed = _seed; + _this.hasSeed = hasSeed; + _this.index = 0; + return _this; + } + Object.defineProperty(ScanSubscriber.prototype, "seed", { + get: function () { + return this._seed; + }, + set: function (value) { + this.hasSeed = true; + this._seed = value; + }, + enumerable: true, + configurable: true + }); + ScanSubscriber.prototype._next = function (value) { + if (!this.hasSeed) { + this.seed = value; + this.destination.next(value); + } + else { + return this._tryNext(value); + } + }; + ScanSubscriber.prototype._tryNext = function (value) { + var index = this.index++; + var result; + try { + result = this.accumulator(this.seed, value, index); + } + catch (err) { + this.destination.error(err); + } + this.seed = result; + this.destination.next(result); + }; + return ScanSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=scan.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js ***! + \*********************************************************************/ +/*! exports provided: sequenceEqual, SequenceEqualOperator, SequenceEqualSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return sequenceEqual; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualOperator", function() { return SequenceEqualOperator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SequenceEqualSubscriber", function() { return SequenceEqualSubscriber; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function sequenceEqual(compareTo, comparator) { + return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparator)); }; +} +var SequenceEqualOperator = /*@__PURE__*/ (function () { + function SequenceEqualOperator(compareTo, comparator) { + this.compareTo = compareTo; + this.comparator = comparator; + } + SequenceEqualOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator)); + }; + return SequenceEqualOperator; +}()); + +var SequenceEqualSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SequenceEqualSubscriber, _super); + function SequenceEqualSubscriber(destination, compareTo, comparator) { + var _this = _super.call(this, destination) || this; + _this.compareTo = compareTo; + _this.comparator = comparator; + _this._a = []; + _this._b = []; + _this._oneComplete = false; + _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this))); + return _this; + } + SequenceEqualSubscriber.prototype._next = function (value) { + if (this._oneComplete && this._b.length === 0) { + this.emit(false); + } + else { + this._a.push(value); + this.checkValues(); + } + }; + SequenceEqualSubscriber.prototype._complete = function () { + if (this._oneComplete) { + this.emit(this._a.length === 0 && this._b.length === 0); + } + else { + this._oneComplete = true; + } + this.unsubscribe(); + }; + SequenceEqualSubscriber.prototype.checkValues = function () { + var _c = this, _a = _c._a, _b = _c._b, comparator = _c.comparator; + while (_a.length > 0 && _b.length > 0) { + var a = _a.shift(); + var b = _b.shift(); + var areEqual = false; + try { + areEqual = comparator ? comparator(a, b) : a === b; + } + catch (e) { + this.destination.error(e); + } + if (!areEqual) { + this.emit(false); + } + } + }; + SequenceEqualSubscriber.prototype.emit = function (value) { + var destination = this.destination; + destination.next(value); + destination.complete(); + }; + SequenceEqualSubscriber.prototype.nextB = function (value) { + if (this._oneComplete && this._a.length === 0) { + this.emit(false); + } + else { + this._b.push(value); + this.checkValues(); + } + }; + SequenceEqualSubscriber.prototype.completeB = function () { + if (this._oneComplete) { + this.emit(this._a.length === 0 && this._b.length === 0); + } + else { + this._oneComplete = true; + } + }; + return SequenceEqualSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); + +var SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SequenceEqualCompareToSubscriber, _super); + function SequenceEqualCompareToSubscriber(destination, parent) { + var _this = _super.call(this, destination) || this; + _this.parent = parent; + return _this; + } + SequenceEqualCompareToSubscriber.prototype._next = function (value) { + this.parent.nextB(value); + }; + SequenceEqualCompareToSubscriber.prototype._error = function (err) { + this.parent.error(err); + this.unsubscribe(); + }; + SequenceEqualCompareToSubscriber.prototype._complete = function () { + this.parent.completeB(); + this.unsubscribe(); + }; + return SequenceEqualCompareToSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=sequenceEqual.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/share.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/share.js ***! + \*************************************************************/ +/*! exports provided: share */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "share", function() { return share; }); +/* harmony import */ var _multicast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); +/* harmony import */ var _refCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./refCount */ "./node_modules/rxjs/_esm5/internal/operators/refCount.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */ + + + +function shareSubjectFactory() { + return new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"](); +} +function share() { + return function (source) { return Object(_refCount__WEBPACK_IMPORTED_MODULE_1__["refCount"])()(Object(_multicast__WEBPACK_IMPORTED_MODULE_0__["multicast"])(shareSubjectFactory)(source)); }; +} +//# sourceMappingURL=share.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/shareReplay.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/shareReplay.js ***! + \*******************************************************************/ +/*! exports provided: shareReplay */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return shareReplay; }); +/* harmony import */ var _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../ReplaySubject */ "./node_modules/rxjs/_esm5/internal/ReplaySubject.js"); +/** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */ + +function shareReplay(configOrBufferSize, windowTime, scheduler) { + var config; + if (configOrBufferSize && typeof configOrBufferSize === 'object') { + config = configOrBufferSize; + } + else { + config = { + bufferSize: configOrBufferSize, + windowTime: windowTime, + refCount: false, + scheduler: scheduler + }; + } + return function (source) { return source.lift(shareReplayOperator(config)); }; +} +function shareReplayOperator(_a) { + var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler; + var subject; + var refCount = 0; + var subscription; + var hasError = false; + var isComplete = false; + return function shareReplayOperation(source) { + refCount++; + if (!subject || hasError) { + hasError = false; + subject = new _ReplaySubject__WEBPACK_IMPORTED_MODULE_0__["ReplaySubject"](bufferSize, windowTime, scheduler); + subscription = source.subscribe({ + next: function (value) { subject.next(value); }, + error: function (err) { + hasError = true; + subject.error(err); + }, + complete: function () { + isComplete = true; + subject.complete(); + }, + }); + } + var innerSub = subject.subscribe(this); + this.add(function () { + refCount--; + innerSub.unsubscribe(); + if (subscription && !isComplete && useRefCount && refCount === 0) { + subscription.unsubscribe(); + subscription = undefined; + subject = undefined; + } + }); + }; +} +//# sourceMappingURL=shareReplay.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/single.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/single.js ***! + \**************************************************************/ +/*! exports provided: single */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "single", function() { return single; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */ + + + +function single(predicate) { + return function (source) { return source.lift(new SingleOperator(predicate, source)); }; +} +var SingleOperator = /*@__PURE__*/ (function () { + function SingleOperator(predicate, source) { + this.predicate = predicate; + this.source = source; + } + SingleOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source)); + }; + return SingleOperator; +}()); +var SingleSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SingleSubscriber, _super); + function SingleSubscriber(destination, predicate, source) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.source = source; + _this.seenValue = false; + _this.index = 0; + return _this; + } + SingleSubscriber.prototype.applySingleValue = function (value) { + if (this.seenValue) { + this.destination.error('Sequence contains more than one element'); + } + else { + this.seenValue = true; + this.singleValue = value; + } + }; + SingleSubscriber.prototype._next = function (value) { + var index = this.index++; + if (this.predicate) { + this.tryNext(value, index); + } + else { + this.applySingleValue(value); + } + }; + SingleSubscriber.prototype.tryNext = function (value, index) { + try { + if (this.predicate(value, index, this.source)) { + this.applySingleValue(value); + } + } + catch (err) { + this.destination.error(err); + } + }; + SingleSubscriber.prototype._complete = function () { + var destination = this.destination; + if (this.index > 0) { + destination.next(this.seenValue ? this.singleValue : undefined); + destination.complete(); + } + else { + destination.error(new _util_EmptyError__WEBPACK_IMPORTED_MODULE_2__["EmptyError"]); + } + }; + return SingleSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=single.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/skip.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/skip.js ***! + \************************************************************/ +/*! exports provided: skip */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return skip; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function skip(count) { + return function (source) { return source.lift(new SkipOperator(count)); }; +} +var SkipOperator = /*@__PURE__*/ (function () { + function SkipOperator(total) { + this.total = total; + } + SkipOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new SkipSubscriber(subscriber, this.total)); + }; + return SkipOperator; +}()); +var SkipSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipSubscriber, _super); + function SkipSubscriber(destination, total) { + var _this = _super.call(this, destination) || this; + _this.total = total; + _this.count = 0; + return _this; + } + SkipSubscriber.prototype._next = function (x) { + if (++this.count > this.total) { + this.destination.next(x); + } + }; + return SkipSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=skip.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/skipLast.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/skipLast.js ***! + \****************************************************************/ +/*! exports provided: skipLast */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return skipLast; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */ + + + +function skipLast(count) { + return function (source) { return source.lift(new SkipLastOperator(count)); }; +} +var SkipLastOperator = /*@__PURE__*/ (function () { + function SkipLastOperator(_skipCount) { + this._skipCount = _skipCount; + if (this._skipCount < 0) { + throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"]; + } + } + SkipLastOperator.prototype.call = function (subscriber, source) { + if (this._skipCount === 0) { + return source.subscribe(new _Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"](subscriber)); + } + else { + return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount)); + } + }; + return SkipLastOperator; +}()); +var SkipLastSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipLastSubscriber, _super); + function SkipLastSubscriber(destination, _skipCount) { + var _this = _super.call(this, destination) || this; + _this._skipCount = _skipCount; + _this._count = 0; + _this._ring = new Array(_skipCount); + return _this; + } + SkipLastSubscriber.prototype._next = function (value) { + var skipCount = this._skipCount; + var count = this._count++; + if (count < skipCount) { + this._ring[count] = value; + } + else { + var currentIndex = count % skipCount; + var ring = this._ring; + var oldValue = ring[currentIndex]; + ring[currentIndex] = value; + this.destination.next(oldValue); + } + }; + return SkipLastSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=skipLast.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/skipUntil.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/skipUntil.js ***! + \*****************************************************************/ +/*! exports provided: skipUntil */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return skipUntil; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + +function skipUntil(notifier) { + return function (source) { return source.lift(new SkipUntilOperator(notifier)); }; +} +var SkipUntilOperator = /*@__PURE__*/ (function () { + function SkipUntilOperator(notifier) { + this.notifier = notifier; + } + SkipUntilOperator.prototype.call = function (destination, source) { + return source.subscribe(new SkipUntilSubscriber(destination, this.notifier)); + }; + return SkipUntilOperator; +}()); +var SkipUntilSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipUntilSubscriber, _super); + function SkipUntilSubscriber(destination, notifier) { + var _this = _super.call(this, destination) || this; + _this.hasValue = false; + var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](_this, undefined, undefined); + _this.add(innerSubscriber); + _this.innerSubscription = innerSubscriber; + Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(_this, notifier, undefined, undefined, innerSubscriber); + return _this; + } + SkipUntilSubscriber.prototype._next = function (value) { + if (this.hasValue) { + _super.prototype._next.call(this, value); + } + }; + SkipUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.hasValue = true; + if (this.innerSubscription) { + this.innerSubscription.unsubscribe(); + } + }; + SkipUntilSubscriber.prototype.notifyComplete = function () { + }; + return SkipUntilSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=skipUntil.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/skipWhile.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/skipWhile.js ***! + \*****************************************************************/ +/*! exports provided: skipWhile */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return skipWhile; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function skipWhile(predicate) { + return function (source) { return source.lift(new SkipWhileOperator(predicate)); }; +} +var SkipWhileOperator = /*@__PURE__*/ (function () { + function SkipWhileOperator(predicate) { + this.predicate = predicate; + } + SkipWhileOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate)); + }; + return SkipWhileOperator; +}()); +var SkipWhileSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SkipWhileSubscriber, _super); + function SkipWhileSubscriber(destination, predicate) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.skipping = true; + _this.index = 0; + return _this; + } + SkipWhileSubscriber.prototype._next = function (value) { + var destination = this.destination; + if (this.skipping) { + this.tryCallPredicate(value); + } + if (!this.skipping) { + destination.next(value); + } + }; + SkipWhileSubscriber.prototype.tryCallPredicate = function (value) { + try { + var result = this.predicate(value, this.index++); + this.skipping = Boolean(result); + } + catch (err) { + this.destination.error(err); + } + }; + return SkipWhileSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=skipWhile.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/startWith.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/startWith.js ***! + \*****************************************************************/ +/*! exports provided: startWith */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return startWith; }); +/* harmony import */ var _observable_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/concat */ "./node_modules/rxjs/_esm5/internal/observable/concat.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */ + + +function startWith() { + var array = []; + for (var _i = 0; _i < arguments.length; _i++) { + array[_i] = arguments[_i]; + } + var scheduler = array[array.length - 1]; + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_1__["isScheduler"])(scheduler)) { + array.pop(); + return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(array, source, scheduler); }; + } + else { + return function (source) { return Object(_observable_concat__WEBPACK_IMPORTED_MODULE_0__["concat"])(array, source); }; + } +} +//# sourceMappingURL=startWith.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js ***! + \*******************************************************************/ +/*! exports provided: subscribeOn */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return subscribeOn; }); +/* harmony import */ var _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/SubscribeOnObservable */ "./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js"); +/** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */ + +function subscribeOn(scheduler, delay) { + if (delay === void 0) { + delay = 0; + } + return function subscribeOnOperatorFunction(source) { + return source.lift(new SubscribeOnOperator(scheduler, delay)); + }; +} +var SubscribeOnOperator = /*@__PURE__*/ (function () { + function SubscribeOnOperator(scheduler, delay) { + this.scheduler = scheduler; + this.delay = delay; + } + SubscribeOnOperator.prototype.call = function (subscriber, source) { + return new _observable_SubscribeOnObservable__WEBPACK_IMPORTED_MODULE_0__["SubscribeOnObservable"](source, this.delay, this.scheduler).subscribe(subscriber); + }; + return SubscribeOnOperator; +}()); +//# sourceMappingURL=subscribeOn.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/switchAll.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/switchAll.js ***! + \*****************************************************************/ +/*! exports provided: switchAll */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return switchAll; }); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./switchMap */ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js"); +/* harmony import */ var _util_identity__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/identity */ "./node_modules/rxjs/_esm5/internal/util/identity.js"); +/** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */ + + +function switchAll() { + return Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(_util_identity__WEBPACK_IMPORTED_MODULE_1__["identity"]); +} +//# sourceMappingURL=switchAll.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/switchMap.js ***! + \*****************************************************************/ +/*! exports provided: switchMap */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return switchMap; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/* harmony import */ var _observable_from__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../observable/from */ "./node_modules/rxjs/_esm5/internal/observable/from.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */ + + + + + + +function switchMap(project, resultSelector) { + if (typeof resultSelector === 'function') { + return function (source) { return source.pipe(switchMap(function (a, i) { return Object(_observable_from__WEBPACK_IMPORTED_MODULE_5__["from"])(project(a, i)).pipe(Object(_map__WEBPACK_IMPORTED_MODULE_4__["map"])(function (b, ii) { return resultSelector(a, b, i, ii); })); })); }; + } + return function (source) { return source.lift(new SwitchMapOperator(project)); }; +} +var SwitchMapOperator = /*@__PURE__*/ (function () { + function SwitchMapOperator(project) { + this.project = project; + } + SwitchMapOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new SwitchMapSubscriber(subscriber, this.project)); + }; + return SwitchMapOperator; +}()); +var SwitchMapSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](SwitchMapSubscriber, _super); + function SwitchMapSubscriber(destination, project) { + var _this = _super.call(this, destination) || this; + _this.project = project; + _this.index = 0; + return _this; + } + SwitchMapSubscriber.prototype._next = function (value) { + var result; + var index = this.index++; + try { + result = this.project(value, index); + } + catch (error) { + this.destination.error(error); + return; + } + this._innerSub(result, value, index); + }; + SwitchMapSubscriber.prototype._innerSub = function (result, value, index) { + var innerSubscription = this.innerSubscription; + if (innerSubscription) { + innerSubscription.unsubscribe(); + } + var innerSubscriber = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_2__["InnerSubscriber"](this, undefined, undefined); + var destination = this.destination; + destination.add(innerSubscriber); + this.innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, result, value, index, innerSubscriber); + }; + SwitchMapSubscriber.prototype._complete = function () { + var innerSubscription = this.innerSubscription; + if (!innerSubscription || innerSubscription.closed) { + _super.prototype._complete.call(this); + } + this.unsubscribe(); + }; + SwitchMapSubscriber.prototype._unsubscribe = function () { + this.innerSubscription = null; + }; + SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) { + var destination = this.destination; + destination.remove(innerSub); + this.innerSubscription = null; + if (this.isStopped) { + _super.prototype._complete.call(this); + } + }; + SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.destination.next(innerValue); + }; + return SwitchMapSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=switchMap.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js ***! + \*******************************************************************/ +/*! exports provided: switchMapTo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return switchMapTo; }); +/* harmony import */ var _switchMap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./switchMap */ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js"); +/** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */ + +function switchMapTo(innerObservable, resultSelector) { + return resultSelector ? Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; }, resultSelector) : Object(_switchMap__WEBPACK_IMPORTED_MODULE_0__["switchMap"])(function () { return innerObservable; }); +} +//# sourceMappingURL=switchMapTo.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/take.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/take.js ***! + \************************************************************/ +/*! exports provided: take */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "take", function() { return take; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ + + + + +function take(count) { + return function (source) { + if (count === 0) { + return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_3__["empty"])(); + } + else { + return source.lift(new TakeOperator(count)); + } + }; +} +var TakeOperator = /*@__PURE__*/ (function () { + function TakeOperator(total) { + this.total = total; + if (this.total < 0) { + throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"]; + } + } + TakeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new TakeSubscriber(subscriber, this.total)); + }; + return TakeOperator; +}()); +var TakeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeSubscriber, _super); + function TakeSubscriber(destination, total) { + var _this = _super.call(this, destination) || this; + _this.total = total; + _this.count = 0; + return _this; + } + TakeSubscriber.prototype._next = function (value) { + var total = this.total; + var count = ++this.count; + if (count <= total) { + this.destination.next(value); + if (count === total) { + this.destination.complete(); + this.unsubscribe(); + } + } + }; + return TakeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=take.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/takeLast.js ***! + \****************************************************************/ +/*! exports provided: takeLast */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return takeLast; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/ArgumentOutOfRangeError */ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js"); +/* harmony import */ var _observable_empty__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../observable/empty */ "./node_modules/rxjs/_esm5/internal/observable/empty.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */ + + + + +function takeLast(count) { + return function takeLastOperatorFunction(source) { + if (count === 0) { + return Object(_observable_empty__WEBPACK_IMPORTED_MODULE_3__["empty"])(); + } + else { + return source.lift(new TakeLastOperator(count)); + } + }; +} +var TakeLastOperator = /*@__PURE__*/ (function () { + function TakeLastOperator(total) { + this.total = total; + if (this.total < 0) { + throw new _util_ArgumentOutOfRangeError__WEBPACK_IMPORTED_MODULE_2__["ArgumentOutOfRangeError"]; + } + } + TakeLastOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new TakeLastSubscriber(subscriber, this.total)); + }; + return TakeLastOperator; +}()); +var TakeLastSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeLastSubscriber, _super); + function TakeLastSubscriber(destination, total) { + var _this = _super.call(this, destination) || this; + _this.total = total; + _this.ring = new Array(); + _this.count = 0; + return _this; + } + TakeLastSubscriber.prototype._next = function (value) { + var ring = this.ring; + var total = this.total; + var count = this.count++; + if (ring.length < total) { + ring.push(value); + } + else { + var index = count % total; + ring[index] = value; + } + }; + TakeLastSubscriber.prototype._complete = function () { + var destination = this.destination; + var count = this.count; + if (count > 0) { + var total = this.count >= this.total ? this.total : this.count; + var ring = this.ring; + for (var i = 0; i < total; i++) { + var idx = (count++) % total; + destination.next(ring[idx]); + } + } + destination.complete(); + }; + return TakeLastSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=takeLast.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/takeUntil.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/takeUntil.js ***! + \*****************************************************************/ +/*! exports provided: takeUntil */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return takeUntil; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function takeUntil(notifier) { + return function (source) { return source.lift(new TakeUntilOperator(notifier)); }; +} +var TakeUntilOperator = /*@__PURE__*/ (function () { + function TakeUntilOperator(notifier) { + this.notifier = notifier; + } + TakeUntilOperator.prototype.call = function (subscriber, source) { + var takeUntilSubscriber = new TakeUntilSubscriber(subscriber); + var notifierSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(takeUntilSubscriber, this.notifier); + if (notifierSubscription && !takeUntilSubscriber.seenValue) { + takeUntilSubscriber.add(notifierSubscription); + return source.subscribe(takeUntilSubscriber); + } + return takeUntilSubscriber; + }; + return TakeUntilOperator; +}()); +var TakeUntilSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeUntilSubscriber, _super); + function TakeUntilSubscriber(destination) { + var _this = _super.call(this, destination) || this; + _this.seenValue = false; + return _this; + } + TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.seenValue = true; + this.complete(); + }; + TakeUntilSubscriber.prototype.notifyComplete = function () { + }; + return TakeUntilSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=takeUntil.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/takeWhile.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/takeWhile.js ***! + \*****************************************************************/ +/*! exports provided: takeWhile */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return takeWhile; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */ + + +function takeWhile(predicate, inclusive) { + if (inclusive === void 0) { + inclusive = false; + } + return function (source) { + return source.lift(new TakeWhileOperator(predicate, inclusive)); + }; +} +var TakeWhileOperator = /*@__PURE__*/ (function () { + function TakeWhileOperator(predicate, inclusive) { + this.predicate = predicate; + this.inclusive = inclusive; + } + TakeWhileOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive)); + }; + return TakeWhileOperator; +}()); +var TakeWhileSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TakeWhileSubscriber, _super); + function TakeWhileSubscriber(destination, predicate, inclusive) { + var _this = _super.call(this, destination) || this; + _this.predicate = predicate; + _this.inclusive = inclusive; + _this.index = 0; + return _this; + } + TakeWhileSubscriber.prototype._next = function (value) { + var destination = this.destination; + var result; + try { + result = this.predicate(value, this.index++); + } + catch (err) { + destination.error(err); + return; + } + this.nextOrComplete(value, result); + }; + TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) { + var destination = this.destination; + if (Boolean(predicateResult)) { + destination.next(value); + } + else { + if (this.inclusive) { + destination.next(value); + } + destination.complete(); + } + }; + return TakeWhileSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=takeWhile.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/tap.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/tap.js ***! + \***********************************************************/ +/*! exports provided: tap */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return tap; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _util_noop__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); +/* harmony import */ var _util_isFunction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/isFunction */ "./node_modules/rxjs/_esm5/internal/util/isFunction.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */ + + + + +function tap(nextOrObserver, error, complete) { + return function tapOperatorFunction(source) { + return source.lift(new DoOperator(nextOrObserver, error, complete)); + }; +} +var DoOperator = /*@__PURE__*/ (function () { + function DoOperator(nextOrObserver, error, complete) { + this.nextOrObserver = nextOrObserver; + this.error = error; + this.complete = complete; + } + DoOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete)); + }; + return DoOperator; +}()); +var TapSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TapSubscriber, _super); + function TapSubscriber(destination, observerOrNext, error, complete) { + var _this = _super.call(this, destination) || this; + _this._tapNext = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + _this._tapError = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + _this._tapComplete = _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + _this._tapError = error || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + _this._tapComplete = complete || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + if (Object(_util_isFunction__WEBPACK_IMPORTED_MODULE_3__["isFunction"])(observerOrNext)) { + _this._context = _this; + _this._tapNext = observerOrNext; + } + else if (observerOrNext) { + _this._context = observerOrNext; + _this._tapNext = observerOrNext.next || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + _this._tapError = observerOrNext.error || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + _this._tapComplete = observerOrNext.complete || _util_noop__WEBPACK_IMPORTED_MODULE_2__["noop"]; + } + return _this; + } + TapSubscriber.prototype._next = function (value) { + try { + this._tapNext.call(this._context, value); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(value); + }; + TapSubscriber.prototype._error = function (err) { + try { + this._tapError.call(this._context, err); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.error(err); + }; + TapSubscriber.prototype._complete = function () { + try { + this._tapComplete.call(this._context); + } + catch (err) { + this.destination.error(err); + return; + } + return this.destination.complete(); + }; + return TapSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=tap.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/throttle.js": +/*!****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/throttle.js ***! + \****************************************************************/ +/*! exports provided: defaultThrottleConfig, throttle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "defaultThrottleConfig", function() { return defaultThrottleConfig; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return throttle; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +var defaultThrottleConfig = { + leading: true, + trailing: false +}; +function throttle(durationSelector, config) { + if (config === void 0) { + config = defaultThrottleConfig; + } + return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); }; +} +var ThrottleOperator = /*@__PURE__*/ (function () { + function ThrottleOperator(durationSelector, leading, trailing) { + this.durationSelector = durationSelector; + this.leading = leading; + this.trailing = trailing; + } + ThrottleOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing)); + }; + return ThrottleOperator; +}()); +var ThrottleSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrottleSubscriber, _super); + function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) { + var _this = _super.call(this, destination) || this; + _this.destination = destination; + _this.durationSelector = durationSelector; + _this._leading = _leading; + _this._trailing = _trailing; + _this._hasValue = false; + return _this; + } + ThrottleSubscriber.prototype._next = function (value) { + this._hasValue = true; + this._sendValue = value; + if (!this._throttled) { + if (this._leading) { + this.send(); + } + else { + this.throttle(value); + } + } + }; + ThrottleSubscriber.prototype.send = function () { + var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue; + if (_hasValue) { + this.destination.next(_sendValue); + this.throttle(_sendValue); + } + this._hasValue = false; + this._sendValue = null; + }; + ThrottleSubscriber.prototype.throttle = function (value) { + var duration = this.tryDurationSelector(value); + if (!!duration) { + this.add(this._throttled = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(this, duration)); + } + }; + ThrottleSubscriber.prototype.tryDurationSelector = function (value) { + try { + return this.durationSelector(value); + } + catch (err) { + this.destination.error(err); + return null; + } + }; + ThrottleSubscriber.prototype.throttlingDone = function () { + var _a = this, _throttled = _a._throttled, _trailing = _a._trailing; + if (_throttled) { + _throttled.unsubscribe(); + } + this._throttled = null; + if (_trailing) { + this.send(); + } + }; + ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.throttlingDone(); + }; + ThrottleSubscriber.prototype.notifyComplete = function () { + this.throttlingDone(); + }; + return ThrottleSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=throttle.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/throttleTime.js": +/*!********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/throttleTime.js ***! + \********************************************************************/ +/*! exports provided: throttleTime */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return throttleTime; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./throttle */ "./node_modules/rxjs/_esm5/internal/operators/throttle.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */ + + + + +function throttleTime(duration, scheduler, config) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; + } + if (config === void 0) { + config = _throttle__WEBPACK_IMPORTED_MODULE_3__["defaultThrottleConfig"]; + } + return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); }; +} +var ThrottleTimeOperator = /*@__PURE__*/ (function () { + function ThrottleTimeOperator(duration, scheduler, leading, trailing) { + this.duration = duration; + this.scheduler = scheduler; + this.leading = leading; + this.trailing = trailing; + } + ThrottleTimeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing)); + }; + return ThrottleTimeOperator; +}()); +var ThrottleTimeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrottleTimeSubscriber, _super); + function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) { + var _this = _super.call(this, destination) || this; + _this.duration = duration; + _this.scheduler = scheduler; + _this.leading = leading; + _this.trailing = trailing; + _this._hasTrailingValue = false; + _this._trailingValue = null; + return _this; + } + ThrottleTimeSubscriber.prototype._next = function (value) { + if (this.throttled) { + if (this.trailing) { + this._trailingValue = value; + this._hasTrailingValue = true; + } + } + else { + this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this })); + if (this.leading) { + this.destination.next(value); + } + else if (this.trailing) { + this._trailingValue = value; + this._hasTrailingValue = true; + } + } + }; + ThrottleTimeSubscriber.prototype._complete = function () { + if (this._hasTrailingValue) { + this.destination.next(this._trailingValue); + this.destination.complete(); + } + else { + this.destination.complete(); + } + }; + ThrottleTimeSubscriber.prototype.clearThrottle = function () { + var throttled = this.throttled; + if (throttled) { + if (this.trailing && this._hasTrailingValue) { + this.destination.next(this._trailingValue); + this._trailingValue = null; + this._hasTrailingValue = false; + } + throttled.unsubscribe(); + this.remove(throttled); + this.throttled = null; + } + }; + return ThrottleTimeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +function dispatchNext(arg) { + var subscriber = arg.subscriber; + subscriber.clearThrottle(); +} +//# sourceMappingURL=throttleTime.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js": +/*!********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js ***! + \********************************************************************/ +/*! exports provided: throwIfEmpty */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return throwIfEmpty; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/EmptyError */ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */ + + + +function throwIfEmpty(errorFactory) { + if (errorFactory === void 0) { + errorFactory = defaultErrorFactory; + } + return function (source) { + return source.lift(new ThrowIfEmptyOperator(errorFactory)); + }; +} +var ThrowIfEmptyOperator = /*@__PURE__*/ (function () { + function ThrowIfEmptyOperator(errorFactory) { + this.errorFactory = errorFactory; + } + ThrowIfEmptyOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory)); + }; + return ThrowIfEmptyOperator; +}()); +var ThrowIfEmptySubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](ThrowIfEmptySubscriber, _super); + function ThrowIfEmptySubscriber(destination, errorFactory) { + var _this = _super.call(this, destination) || this; + _this.errorFactory = errorFactory; + _this.hasValue = false; + return _this; + } + ThrowIfEmptySubscriber.prototype._next = function (value) { + this.hasValue = true; + this.destination.next(value); + }; + ThrowIfEmptySubscriber.prototype._complete = function () { + if (!this.hasValue) { + var err = void 0; + try { + err = this.errorFactory(); + } + catch (e) { + err = e; + } + this.destination.error(err); + } + else { + return this.destination.complete(); + } + }; + return ThrowIfEmptySubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_2__["Subscriber"])); +function defaultErrorFactory() { + return new _util_EmptyError__WEBPACK_IMPORTED_MODULE_1__["EmptyError"](); +} +//# sourceMappingURL=throwIfEmpty.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/timeInterval.js": +/*!********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/timeInterval.js ***! + \********************************************************************/ +/*! exports provided: timeInterval, TimeInterval */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return timeInterval; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeInterval", function() { return TimeInterval; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _scan__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scan */ "./node_modules/rxjs/_esm5/internal/operators/scan.js"); +/* harmony import */ var _observable_defer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../observable/defer */ "./node_modules/rxjs/_esm5/internal/observable/defer.js"); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */ + + + + +function timeInterval(scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; + } + return function (source) { + return Object(_observable_defer__WEBPACK_IMPORTED_MODULE_2__["defer"])(function () { + return source.pipe(Object(_scan__WEBPACK_IMPORTED_MODULE_1__["scan"])(function (_a, value) { + var current = _a.current; + return ({ value: value, current: scheduler.now(), last: current }); + }, { current: scheduler.now(), value: undefined, last: undefined }), Object(_map__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { + var current = _a.current, last = _a.last, value = _a.value; + return new TimeInterval(value, current - last); + })); + }); + }; +} +var TimeInterval = /*@__PURE__*/ (function () { + function TimeInterval(value, interval) { + this.value = value; + this.interval = interval; + } + return TimeInterval; +}()); + +//# sourceMappingURL=timeInterval.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/timeout.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/timeout.js ***! + \***************************************************************/ +/*! exports provided: timeout */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return timeout; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/TimeoutError */ "./node_modules/rxjs/_esm5/internal/util/TimeoutError.js"); +/* harmony import */ var _timeoutWith__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./timeoutWith */ "./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js"); +/* harmony import */ var _observable_throwError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../observable/throwError */ "./node_modules/rxjs/_esm5/internal/observable/throwError.js"); +/** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */ + + + + +function timeout(due, scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; + } + return Object(_timeoutWith__WEBPACK_IMPORTED_MODULE_2__["timeoutWith"])(due, Object(_observable_throwError__WEBPACK_IMPORTED_MODULE_3__["throwError"])(new _util_TimeoutError__WEBPACK_IMPORTED_MODULE_1__["TimeoutError"]()), scheduler); +} +//# sourceMappingURL=timeout.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js ***! + \*******************************************************************/ +/*! exports provided: timeoutWith */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return timeoutWith; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _util_isDate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/isDate */ "./node_modules/rxjs/_esm5/internal/util/isDate.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + + +function timeoutWith(due, withObservable, scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_1__["async"]; + } + return function (source) { + var absoluteTimeout = Object(_util_isDate__WEBPACK_IMPORTED_MODULE_2__["isDate"])(due); + var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due); + return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler)); + }; +} +var TimeoutWithOperator = /*@__PURE__*/ (function () { + function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) { + this.waitFor = waitFor; + this.absoluteTimeout = absoluteTimeout; + this.withObservable = withObservable; + this.scheduler = scheduler; + } + TimeoutWithOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler)); + }; + return TimeoutWithOperator; +}()); +var TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](TimeoutWithSubscriber, _super); + function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) { + var _this = _super.call(this, destination) || this; + _this.absoluteTimeout = absoluteTimeout; + _this.waitFor = waitFor; + _this.withObservable = withObservable; + _this.scheduler = scheduler; + _this.action = null; + _this.scheduleTimeout(); + return _this; + } + TimeoutWithSubscriber.dispatchTimeout = function (subscriber) { + var withObservable = subscriber.withObservable; + subscriber._unsubscribeAndRecycle(); + subscriber.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(subscriber, withObservable)); + }; + TimeoutWithSubscriber.prototype.scheduleTimeout = function () { + var action = this.action; + if (action) { + this.action = action.schedule(this, this.waitFor); + } + else { + this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this)); + } + }; + TimeoutWithSubscriber.prototype._next = function (value) { + if (!this.absoluteTimeout) { + this.scheduleTimeout(); + } + _super.prototype._next.call(this, value); + }; + TimeoutWithSubscriber.prototype._unsubscribe = function () { + this.action = null; + this.scheduler = null; + this.withObservable = null; + }; + return TimeoutWithSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); +//# sourceMappingURL=timeoutWith.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/timestamp.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/timestamp.js ***! + \*****************************************************************/ +/*! exports provided: timestamp, Timestamp */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return timestamp; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timestamp", function() { return Timestamp; }); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */ + + +function timestamp(scheduler) { + if (scheduler === void 0) { + scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_0__["async"]; + } + return Object(_map__WEBPACK_IMPORTED_MODULE_1__["map"])(function (value) { return new Timestamp(value, scheduler.now()); }); +} +var Timestamp = /*@__PURE__*/ (function () { + function Timestamp(value, timestamp) { + this.value = value; + this.timestamp = timestamp; + } + return Timestamp; +}()); + +//# sourceMappingURL=timestamp.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/toArray.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/toArray.js ***! + \***************************************************************/ +/*! exports provided: toArray */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return toArray; }); +/* harmony import */ var _reduce__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); +/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */ + +function toArrayReducer(arr, item, index) { + if (index === 0) { + return [item]; + } + arr.push(item); + return arr; +} +function toArray() { + return Object(_reduce__WEBPACK_IMPORTED_MODULE_0__["reduce"])(toArrayReducer, []); +} +//# sourceMappingURL=toArray.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/window.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/window.js ***! + \**************************************************************/ +/*! exports provided: window */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "window", function() { return window; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + +function window(windowBoundaries) { + return function windowOperatorFunction(source) { + return source.lift(new WindowOperator(windowBoundaries)); + }; +} +var WindowOperator = /*@__PURE__*/ (function () { + function WindowOperator(windowBoundaries) { + this.windowBoundaries = windowBoundaries; + } + WindowOperator.prototype.call = function (subscriber, source) { + var windowSubscriber = new WindowSubscriber(subscriber); + var sourceSubscription = source.subscribe(windowSubscriber); + if (!sourceSubscription.closed) { + windowSubscriber.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(windowSubscriber, this.windowBoundaries)); + } + return sourceSubscription; + }; + return WindowOperator; +}()); +var WindowSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowSubscriber, _super); + function WindowSubscriber(destination) { + var _this = _super.call(this, destination) || this; + _this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); + destination.next(_this.window); + return _this; + } + WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.openWindow(); + }; + WindowSubscriber.prototype.notifyError = function (error, innerSub) { + this._error(error); + }; + WindowSubscriber.prototype.notifyComplete = function (innerSub) { + this._complete(); + }; + WindowSubscriber.prototype._next = function (value) { + this.window.next(value); + }; + WindowSubscriber.prototype._error = function (err) { + this.window.error(err); + this.destination.error(err); + }; + WindowSubscriber.prototype._complete = function () { + this.window.complete(); + this.destination.complete(); + }; + WindowSubscriber.prototype._unsubscribe = function () { + this.window = null; + }; + WindowSubscriber.prototype.openWindow = function () { + var prevWindow = this.window; + if (prevWindow) { + prevWindow.complete(); + } + var destination = this.destination; + var newWindow = this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); + destination.next(newWindow); + }; + return WindowSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); +//# sourceMappingURL=window.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/windowCount.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/windowCount.js ***! + \*******************************************************************/ +/*! exports provided: windowCount */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return windowCount; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */ + + + +function windowCount(windowSize, startWindowEvery) { + if (startWindowEvery === void 0) { + startWindowEvery = 0; + } + return function windowCountOperatorFunction(source) { + return source.lift(new WindowCountOperator(windowSize, startWindowEvery)); + }; +} +var WindowCountOperator = /*@__PURE__*/ (function () { + function WindowCountOperator(windowSize, startWindowEvery) { + this.windowSize = windowSize; + this.startWindowEvery = startWindowEvery; + } + WindowCountOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery)); + }; + return WindowCountOperator; +}()); +var WindowCountSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowCountSubscriber, _super); + function WindowCountSubscriber(destination, windowSize, startWindowEvery) { + var _this = _super.call(this, destination) || this; + _this.destination = destination; + _this.windowSize = windowSize; + _this.startWindowEvery = startWindowEvery; + _this.windows = [new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"]()]; + _this.count = 0; + destination.next(_this.windows[0]); + return _this; + } + WindowCountSubscriber.prototype._next = function (value) { + var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize; + var destination = this.destination; + var windowSize = this.windowSize; + var windows = this.windows; + var len = windows.length; + for (var i = 0; i < len && !this.closed; i++) { + windows[i].next(value); + } + var c = this.count - windowSize + 1; + if (c >= 0 && c % startWindowEvery === 0 && !this.closed) { + windows.shift().complete(); + } + if (++this.count % startWindowEvery === 0 && !this.closed) { + var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_2__["Subject"](); + windows.push(window_1); + destination.next(window_1); + } + }; + WindowCountSubscriber.prototype._error = function (err) { + var windows = this.windows; + if (windows) { + while (windows.length > 0 && !this.closed) { + windows.shift().error(err); + } + } + this.destination.error(err); + }; + WindowCountSubscriber.prototype._complete = function () { + var windows = this.windows; + if (windows) { + while (windows.length > 0 && !this.closed) { + windows.shift().complete(); + } + } + this.destination.complete(); + }; + WindowCountSubscriber.prototype._unsubscribe = function () { + this.count = 0; + this.windows = null; + }; + return WindowCountSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_1__["Subscriber"])); +//# sourceMappingURL=windowCount.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/windowTime.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/windowTime.js ***! + \******************************************************************/ +/*! exports provided: windowTime */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return windowTime; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _scheduler_async__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../scheduler/async */ "./node_modules/rxjs/_esm5/internal/scheduler/async.js"); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _util_isNumeric__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isNumeric */ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js"); +/* harmony import */ var _util_isScheduler__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isScheduler */ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js"); +/** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */ + + + + + + +function windowTime(windowTimeSpan) { + var scheduler = _scheduler_async__WEBPACK_IMPORTED_MODULE_2__["async"]; + var windowCreationInterval = null; + var maxWindowSize = Number.POSITIVE_INFINITY; + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[3])) { + scheduler = arguments[3]; + } + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[2])) { + scheduler = arguments[2]; + } + else if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(arguments[2])) { + maxWindowSize = arguments[2]; + } + if (Object(_util_isScheduler__WEBPACK_IMPORTED_MODULE_5__["isScheduler"])(arguments[1])) { + scheduler = arguments[1]; + } + else if (Object(_util_isNumeric__WEBPACK_IMPORTED_MODULE_4__["isNumeric"])(arguments[1])) { + windowCreationInterval = arguments[1]; + } + return function windowTimeOperatorFunction(source) { + return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler)); + }; +} +var WindowTimeOperator = /*@__PURE__*/ (function () { + function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) { + this.windowTimeSpan = windowTimeSpan; + this.windowCreationInterval = windowCreationInterval; + this.maxWindowSize = maxWindowSize; + this.scheduler = scheduler; + } + WindowTimeOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler)); + }; + return WindowTimeOperator; +}()); +var CountedSubject = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](CountedSubject, _super); + function CountedSubject() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this._numberOfNextedValues = 0; + return _this; + } + CountedSubject.prototype.next = function (value) { + this._numberOfNextedValues++; + _super.prototype.next.call(this, value); + }; + Object.defineProperty(CountedSubject.prototype, "numberOfNextedValues", { + get: function () { + return this._numberOfNextedValues; + }, + enumerable: true, + configurable: true + }); + return CountedSubject; +}(_Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"])); +var WindowTimeSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowTimeSubscriber, _super); + function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) { + var _this = _super.call(this, destination) || this; + _this.destination = destination; + _this.windowTimeSpan = windowTimeSpan; + _this.windowCreationInterval = windowCreationInterval; + _this.maxWindowSize = maxWindowSize; + _this.scheduler = scheduler; + _this.windows = []; + var window = _this.openWindow(); + if (windowCreationInterval !== null && windowCreationInterval >= 0) { + var closeState = { subscriber: _this, window: window, context: null }; + var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: _this, scheduler: scheduler }; + _this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState)); + _this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState)); + } + else { + var timeSpanOnlyState = { subscriber: _this, window: window, windowTimeSpan: windowTimeSpan }; + _this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState)); + } + return _this; + } + WindowTimeSubscriber.prototype._next = function (value) { + var windows = this.windows; + var len = windows.length; + for (var i = 0; i < len; i++) { + var window_1 = windows[i]; + if (!window_1.closed) { + window_1.next(value); + if (window_1.numberOfNextedValues >= this.maxWindowSize) { + this.closeWindow(window_1); + } + } + } + }; + WindowTimeSubscriber.prototype._error = function (err) { + var windows = this.windows; + while (windows.length > 0) { + windows.shift().error(err); + } + this.destination.error(err); + }; + WindowTimeSubscriber.prototype._complete = function () { + var windows = this.windows; + while (windows.length > 0) { + var window_2 = windows.shift(); + if (!window_2.closed) { + window_2.complete(); + } + } + this.destination.complete(); + }; + WindowTimeSubscriber.prototype.openWindow = function () { + var window = new CountedSubject(); + this.windows.push(window); + var destination = this.destination; + destination.next(window); + return window; + }; + WindowTimeSubscriber.prototype.closeWindow = function (window) { + window.complete(); + var windows = this.windows; + windows.splice(windows.indexOf(window), 1); + }; + return WindowTimeSubscriber; +}(_Subscriber__WEBPACK_IMPORTED_MODULE_3__["Subscriber"])); +function dispatchWindowTimeSpanOnly(state) { + var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window; + if (window) { + subscriber.closeWindow(window); + } + state.window = subscriber.openWindow(); + this.schedule(state, windowTimeSpan); +} +function dispatchWindowCreation(state) { + var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval; + var window = subscriber.openWindow(); + var action = this; + var context = { action: action, subscription: null }; + var timeSpanState = { subscriber: subscriber, window: window, context: context }; + context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState); + action.add(context.subscription); + action.schedule(state, windowCreationInterval); +} +function dispatchWindowClose(state) { + var subscriber = state.subscriber, window = state.window, context = state.context; + if (context && context.action && context.subscription) { + context.action.remove(context.subscription); + } + subscriber.closeWindow(window); +} +//# sourceMappingURL=windowTime.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/windowToggle.js": +/*!********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/windowToggle.js ***! + \********************************************************************/ +/*! exports provided: windowToggle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return windowToggle; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_Subject,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + + +function windowToggle(openings, closingSelector) { + return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); }; +} +var WindowToggleOperator = /*@__PURE__*/ (function () { + function WindowToggleOperator(openings, closingSelector) { + this.openings = openings; + this.closingSelector = closingSelector; + } + WindowToggleOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector)); + }; + return WindowToggleOperator; +}()); +var WindowToggleSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowToggleSubscriber, _super); + function WindowToggleSubscriber(destination, openings, closingSelector) { + var _this = _super.call(this, destination) || this; + _this.openings = openings; + _this.closingSelector = closingSelector; + _this.contexts = []; + _this.add(_this.openSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(_this, openings, openings)); + return _this; + } + WindowToggleSubscriber.prototype._next = function (value) { + var contexts = this.contexts; + if (contexts) { + var len = contexts.length; + for (var i = 0; i < len; i++) { + contexts[i].window.next(value); + } + } + }; + WindowToggleSubscriber.prototype._error = function (err) { + var contexts = this.contexts; + this.contexts = null; + if (contexts) { + var len = contexts.length; + var index = -1; + while (++index < len) { + var context_1 = contexts[index]; + context_1.window.error(err); + context_1.subscription.unsubscribe(); + } + } + _super.prototype._error.call(this, err); + }; + WindowToggleSubscriber.prototype._complete = function () { + var contexts = this.contexts; + this.contexts = null; + if (contexts) { + var len = contexts.length; + var index = -1; + while (++index < len) { + var context_2 = contexts[index]; + context_2.window.complete(); + context_2.subscription.unsubscribe(); + } + } + _super.prototype._complete.call(this); + }; + WindowToggleSubscriber.prototype._unsubscribe = function () { + var contexts = this.contexts; + this.contexts = null; + if (contexts) { + var len = contexts.length; + var index = -1; + while (++index < len) { + var context_3 = contexts[index]; + context_3.window.unsubscribe(); + context_3.subscription.unsubscribe(); + } + } + }; + WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + if (outerValue === this.openings) { + var closingNotifier = void 0; + try { + var closingSelector = this.closingSelector; + closingNotifier = closingSelector(innerValue); + } + catch (e) { + return this.error(e); + } + var window_1 = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); + var subscription = new _Subscription__WEBPACK_IMPORTED_MODULE_2__["Subscription"](); + var context_4 = { window: window_1, subscription: subscription }; + this.contexts.push(context_4); + var innerSubscription = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_4__["subscribeToResult"])(this, closingNotifier, context_4); + if (innerSubscription.closed) { + this.closeWindow(this.contexts.length - 1); + } + else { + innerSubscription.context = context_4; + subscription.add(innerSubscription); + } + this.destination.next(window_1); + } + else { + this.closeWindow(this.contexts.indexOf(outerValue)); + } + }; + WindowToggleSubscriber.prototype.notifyError = function (err) { + this.error(err); + }; + WindowToggleSubscriber.prototype.notifyComplete = function (inner) { + if (inner !== this.openSubscription) { + this.closeWindow(this.contexts.indexOf(inner.context)); + } + }; + WindowToggleSubscriber.prototype.closeWindow = function (index) { + if (index === -1) { + return; + } + var contexts = this.contexts; + var context = contexts[index]; + var window = context.window, subscription = context.subscription; + contexts.splice(index, 1); + window.complete(); + subscription.unsubscribe(); + }; + return WindowToggleSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_3__["OuterSubscriber"])); +//# sourceMappingURL=windowToggle.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/windowWhen.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/windowWhen.js ***! + \******************************************************************/ +/*! exports provided: windowWhen */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return windowWhen; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subject__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subject */ "./node_modules/rxjs/_esm5/internal/Subject.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + + +function windowWhen(closingSelector) { + return function windowWhenOperatorFunction(source) { + return source.lift(new WindowOperator(closingSelector)); + }; +} +var WindowOperator = /*@__PURE__*/ (function () { + function WindowOperator(closingSelector) { + this.closingSelector = closingSelector; + } + WindowOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector)); + }; + return WindowOperator; +}()); +var WindowSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WindowSubscriber, _super); + function WindowSubscriber(destination, closingSelector) { + var _this = _super.call(this, destination) || this; + _this.destination = destination; + _this.closingSelector = closingSelector; + _this.openWindow(); + return _this; + } + WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.openWindow(innerSub); + }; + WindowSubscriber.prototype.notifyError = function (error, innerSub) { + this._error(error); + }; + WindowSubscriber.prototype.notifyComplete = function (innerSub) { + this.openWindow(innerSub); + }; + WindowSubscriber.prototype._next = function (value) { + this.window.next(value); + }; + WindowSubscriber.prototype._error = function (err) { + this.window.error(err); + this.destination.error(err); + this.unsubscribeClosingNotification(); + }; + WindowSubscriber.prototype._complete = function () { + this.window.complete(); + this.destination.complete(); + this.unsubscribeClosingNotification(); + }; + WindowSubscriber.prototype.unsubscribeClosingNotification = function () { + if (this.closingNotification) { + this.closingNotification.unsubscribe(); + } + }; + WindowSubscriber.prototype.openWindow = function (innerSub) { + if (innerSub === void 0) { + innerSub = null; + } + if (innerSub) { + this.remove(innerSub); + innerSub.unsubscribe(); + } + var prevWindow = this.window; + if (prevWindow) { + prevWindow.complete(); + } + var window = this.window = new _Subject__WEBPACK_IMPORTED_MODULE_1__["Subject"](); + this.destination.next(window); + var closingNotifier; + try { + var closingSelector = this.closingSelector; + closingNotifier = closingSelector(); + } + catch (e) { + this.destination.error(e); + this.window.error(e); + return; + } + this.add(this.closingNotification = Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_3__["subscribeToResult"])(this, closingNotifier)); + }; + return WindowSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_2__["OuterSubscriber"])); +//# sourceMappingURL=windowWhen.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js ***! + \**********************************************************************/ +/*! exports provided: withLatestFrom */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return withLatestFrom; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../OuterSubscriber */ "./node_modules/rxjs/_esm5/internal/OuterSubscriber.js"); +/* harmony import */ var _util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../util/subscribeToResult */ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js"); +/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */ + + + +function withLatestFrom() { + var args = []; + for (var _i = 0; _i < arguments.length; _i++) { + args[_i] = arguments[_i]; + } + return function (source) { + var project; + if (typeof args[args.length - 1] === 'function') { + project = args.pop(); + } + var observables = args; + return source.lift(new WithLatestFromOperator(observables, project)); + }; +} +var WithLatestFromOperator = /*@__PURE__*/ (function () { + function WithLatestFromOperator(observables, project) { + this.observables = observables; + this.project = project; + } + WithLatestFromOperator.prototype.call = function (subscriber, source) { + return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project)); + }; + return WithLatestFromOperator; +}()); +var WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](WithLatestFromSubscriber, _super); + function WithLatestFromSubscriber(destination, observables, project) { + var _this = _super.call(this, destination) || this; + _this.observables = observables; + _this.project = project; + _this.toRespond = []; + var len = observables.length; + _this.values = new Array(len); + for (var i = 0; i < len; i++) { + _this.toRespond.push(i); + } + for (var i = 0; i < len; i++) { + var observable = observables[i]; + _this.add(Object(_util_subscribeToResult__WEBPACK_IMPORTED_MODULE_2__["subscribeToResult"])(_this, observable, observable, i)); + } + return _this; + } + WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) { + this.values[outerIndex] = innerValue; + var toRespond = this.toRespond; + if (toRespond.length > 0) { + var found = toRespond.indexOf(outerIndex); + if (found !== -1) { + toRespond.splice(found, 1); + } + } + }; + WithLatestFromSubscriber.prototype.notifyComplete = function () { + }; + WithLatestFromSubscriber.prototype._next = function (value) { + if (this.toRespond.length === 0) { + var args = [value].concat(this.values); + if (this.project) { + this._tryProject(args); + } + else { + this.destination.next(args); + } + } + }; + WithLatestFromSubscriber.prototype._tryProject = function (args) { + var result; + try { + result = this.project.apply(this, args); + } + catch (err) { + this.destination.error(err); + return; + } + this.destination.next(result); + }; + return WithLatestFromSubscriber; +}(_OuterSubscriber__WEBPACK_IMPORTED_MODULE_1__["OuterSubscriber"])); +//# sourceMappingURL=withLatestFrom.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/zip.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/zip.js ***! + \***********************************************************/ +/*! exports provided: zip */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return zip; }); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/zip */ "./node_modules/rxjs/_esm5/internal/observable/zip.js"); +/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ + +function zip() { + var observables = []; + for (var _i = 0; _i < arguments.length; _i++) { + observables[_i] = arguments[_i]; + } + return function zipOperatorFunction(source) { + return source.lift.call(_observable_zip__WEBPACK_IMPORTED_MODULE_0__["zip"].apply(void 0, [source].concat(observables))); + }; +} +//# sourceMappingURL=zip.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/operators/zipAll.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/operators/zipAll.js ***! + \**************************************************************/ +/*! exports provided: zipAll */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return zipAll; }); +/* harmony import */ var _observable_zip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../observable/zip */ "./node_modules/rxjs/_esm5/internal/observable/zip.js"); +/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */ + +function zipAll(project) { + return function (source) { return source.lift(new _observable_zip__WEBPACK_IMPORTED_MODULE_0__["ZipOperator"](project)); }; +} +//# sourceMappingURL=zipAll.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js ***! + \*********************************************************************/ +/*! exports provided: scheduleArray */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleArray", function() { return scheduleArray; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ + + +function scheduleArray(input, scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); + var i = 0; + sub.add(scheduler.schedule(function () { + if (i === input.length) { + subscriber.complete(); + return; + } + subscriber.next(input[i++]); + if (!subscriber.closed) { + sub.add(this.schedule()); + } + })); + return sub; + }); +} +//# sourceMappingURL=scheduleArray.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js": +/*!************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js ***! + \************************************************************************/ +/*! exports provided: scheduleIterable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleIterable", function() { return scheduleIterable; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); +/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */ + + + +function scheduleIterable(input, scheduler) { + if (!input) { + throw new Error('Iterable cannot be null'); + } + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); + var iterator; + sub.add(function () { + if (iterator && typeof iterator.return === 'function') { + iterator.return(); + } + }); + sub.add(scheduler.schedule(function () { + iterator = input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_2__["iterator"]](); + sub.add(scheduler.schedule(function () { + if (subscriber.closed) { + return; + } + var value; + var done; + try { + var result = iterator.next(); + value = result.value; + done = result.done; + } + catch (err) { + subscriber.error(err); + return; + } + if (done) { + subscriber.complete(); + } + else { + subscriber.next(value); + this.schedule(); + } + })); + })); + return sub; + }); +} +//# sourceMappingURL=scheduleIterable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js": +/*!**************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js ***! + \**************************************************************************/ +/*! exports provided: scheduleObservable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduleObservable", function() { return scheduleObservable; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); +/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */ + + + +function scheduleObservable(input, scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); + sub.add(scheduler.schedule(function () { + var observable = input[_symbol_observable__WEBPACK_IMPORTED_MODULE_2__["observable"]](); + sub.add(observable.subscribe({ + next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); }, + error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); }, + complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); }, + })); + })); + return sub; + }); +} +//# sourceMappingURL=scheduleObservable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js": +/*!***********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js ***! + \***********************************************************************/ +/*! exports provided: schedulePromise */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "schedulePromise", function() { return schedulePromise; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */ + + +function schedulePromise(input, scheduler) { + return new _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"](function (subscriber) { + var sub = new _Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"](); + sub.add(scheduler.schedule(function () { + return input.then(function (value) { + sub.add(scheduler.schedule(function () { + subscriber.next(value); + sub.add(scheduler.schedule(function () { return subscriber.complete(); })); + })); + }, function (err) { + sub.add(scheduler.schedule(function () { return subscriber.error(err); })); + }); + })); + return sub; + }); +} +//# sourceMappingURL=schedulePromise.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js ***! + \*****************************************************************/ +/*! exports provided: scheduled */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "scheduled", function() { return scheduled; }); +/* harmony import */ var _scheduleObservable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./scheduleObservable */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js"); +/* harmony import */ var _schedulePromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./schedulePromise */ "./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js"); +/* harmony import */ var _scheduleArray__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scheduleArray */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js"); +/* harmony import */ var _scheduleIterable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./scheduleIterable */ "./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js"); +/* harmony import */ var _util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../util/isInteropObservable */ "./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js"); +/* harmony import */ var _util_isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../util/isPromise */ "./node_modules/rxjs/_esm5/internal/util/isPromise.js"); +/* harmony import */ var _util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../util/isArrayLike */ "./node_modules/rxjs/_esm5/internal/util/isArrayLike.js"); +/* harmony import */ var _util_isIterable__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../util/isIterable */ "./node_modules/rxjs/_esm5/internal/util/isIterable.js"); +/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */ + + + + + + + + +function scheduled(input, scheduler) { + if (input != null) { + if (Object(_util_isInteropObservable__WEBPACK_IMPORTED_MODULE_4__["isInteropObservable"])(input)) { + return Object(_scheduleObservable__WEBPACK_IMPORTED_MODULE_0__["scheduleObservable"])(input, scheduler); + } + else if (Object(_util_isPromise__WEBPACK_IMPORTED_MODULE_5__["isPromise"])(input)) { + return Object(_schedulePromise__WEBPACK_IMPORTED_MODULE_1__["schedulePromise"])(input, scheduler); + } + else if (Object(_util_isArrayLike__WEBPACK_IMPORTED_MODULE_6__["isArrayLike"])(input)) { + return Object(_scheduleArray__WEBPACK_IMPORTED_MODULE_2__["scheduleArray"])(input, scheduler); + } + else if (Object(_util_isIterable__WEBPACK_IMPORTED_MODULE_7__["isIterable"])(input) || typeof input === 'string') { + return Object(_scheduleIterable__WEBPACK_IMPORTED_MODULE_3__["scheduleIterable"])(input, scheduler); + } + } + throw new TypeError((input !== null && typeof input || input) + ' is not observable'); +} +//# sourceMappingURL=scheduled.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/Action.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/Action.js ***! + \**************************************************************/ +/*! exports provided: Action */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Action", function() { return Action; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Subscription__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Subscription */ "./node_modules/rxjs/_esm5/internal/Subscription.js"); +/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */ + + +var Action = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](Action, _super); + function Action(scheduler, work) { + return _super.call(this) || this; + } + Action.prototype.schedule = function (state, delay) { + if (delay === void 0) { + delay = 0; + } + return this; + }; + return Action; +}(_Subscription__WEBPACK_IMPORTED_MODULE_1__["Subscription"])); + +//# sourceMappingURL=Action.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js": +/*!****************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js ***! + \****************************************************************************/ +/*! exports provided: AnimationFrameAction */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameAction", function() { return AnimationFrameAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); +/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ + + +var AnimationFrameAction = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnimationFrameAction, _super); + function AnimationFrameAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay !== null && delay > 0) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + scheduler.actions.push(this); + return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); })); + }; + AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { + return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + } + if (scheduler.actions.length === 0) { + cancelAnimationFrame(id); + scheduler.scheduled = undefined; + } + return undefined; + }; + return AnimationFrameAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"])); + +//# sourceMappingURL=AnimationFrameAction.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js ***! + \*******************************************************************************/ +/*! exports provided: AnimationFrameScheduler */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AnimationFrameScheduler", function() { return AnimationFrameScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); +/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ + + +var AnimationFrameScheduler = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AnimationFrameScheduler, _super); + function AnimationFrameScheduler() { + return _super !== null && _super.apply(this, arguments) || this; + } + AnimationFrameScheduler.prototype.flush = function (action) { + this.active = true; + this.scheduled = undefined; + var actions = this.actions; + var error; + var index = -1; + var count = actions.length; + action = action || actions.shift(); + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (++index < count && (action = actions.shift())); + this.active = false; + if (error) { + while (++index < count && (action = actions.shift())) { + action.unsubscribe(); + } + throw error; + } + }; + return AnimationFrameScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"])); + +//# sourceMappingURL=AnimationFrameScheduler.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js ***! + \******************************************************************/ +/*! exports provided: AsapAction */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapAction", function() { return AsapAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _util_Immediate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../util/Immediate */ "./node_modules/rxjs/_esm5/internal/util/Immediate.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); +/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */ + + + +var AsapAction = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsapAction, _super); + function AsapAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay !== null && delay > 0) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + scheduler.actions.push(this); + return scheduler.scheduled || (scheduler.scheduled = _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].setImmediate(scheduler.flush.bind(scheduler, null))); + }; + AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { + return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay); + } + if (scheduler.actions.length === 0) { + _util_Immediate__WEBPACK_IMPORTED_MODULE_1__["Immediate"].clearImmediate(id); + scheduler.scheduled = undefined; + } + return undefined; + }; + return AsapAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_2__["AsyncAction"])); + +//# sourceMappingURL=AsapAction.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js ***! + \*********************************************************************/ +/*! exports provided: AsapScheduler */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsapScheduler", function() { return AsapScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); +/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ + + +var AsapScheduler = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsapScheduler, _super); + function AsapScheduler() { + return _super !== null && _super.apply(this, arguments) || this; + } + AsapScheduler.prototype.flush = function (action) { + this.active = true; + this.scheduled = undefined; + var actions = this.actions; + var error; + var index = -1; + var count = actions.length; + action = action || actions.shift(); + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (++index < count && (action = actions.shift())); + this.active = false; + if (error) { + while (++index < count && (action = actions.shift())) { + action.unsubscribe(); + } + throw error; + } + }; + return AsapScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"])); + +//# sourceMappingURL=AsapScheduler.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js ***! + \*******************************************************************/ +/*! exports provided: AsyncAction */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncAction", function() { return AsyncAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Action__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./Action */ "./node_modules/rxjs/_esm5/internal/scheduler/Action.js"); +/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */ + + +var AsyncAction = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncAction, _super); + function AsyncAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + _this.pending = false; + return _this; + } + AsyncAction.prototype.schedule = function (state, delay) { + if (delay === void 0) { + delay = 0; + } + if (this.closed) { + return this; + } + this.state = state; + var id = this.id; + var scheduler = this.scheduler; + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, delay); + } + this.pending = true; + this.delay = delay; + this.id = this.id || this.requestAsyncId(scheduler, this.id, delay); + return this; + }; + AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + return setInterval(scheduler.flush.bind(scheduler, this), delay); + }; + AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay !== null && this.delay === delay && this.pending === false) { + return id; + } + clearInterval(id); + return undefined; + }; + AsyncAction.prototype.execute = function (state, delay) { + if (this.closed) { + return new Error('executing a cancelled action'); + } + this.pending = false; + var error = this._execute(state, delay); + if (error) { + return error; + } + else if (this.pending === false && this.id != null) { + this.id = this.recycleAsyncId(this.scheduler, this.id, null); + } + }; + AsyncAction.prototype._execute = function (state, delay) { + var errored = false; + var errorValue = undefined; + try { + this.work(state); + } + catch (e) { + errored = true; + errorValue = !!e && e || new Error(e); + } + if (errored) { + this.unsubscribe(); + return errorValue; + } + }; + AsyncAction.prototype._unsubscribe = function () { + var id = this.id; + var scheduler = this.scheduler; + var actions = scheduler.actions; + var index = actions.indexOf(this); + this.work = null; + this.state = null; + this.pending = false; + this.scheduler = null; + if (index !== -1) { + actions.splice(index, 1); + } + if (id != null) { + this.id = this.recycleAsyncId(scheduler, id, null); + } + this.delay = null; + }; + return AsyncAction; +}(_Action__WEBPACK_IMPORTED_MODULE_1__["Action"])); + +//# sourceMappingURL=AsyncAction.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js ***! + \**********************************************************************/ +/*! exports provided: AsyncScheduler */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AsyncScheduler", function() { return AsyncScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _Scheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../Scheduler */ "./node_modules/rxjs/_esm5/internal/Scheduler.js"); +/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */ + + +var AsyncScheduler = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](AsyncScheduler, _super); + function AsyncScheduler(SchedulerAction, now) { + if (now === void 0) { + now = _Scheduler__WEBPACK_IMPORTED_MODULE_1__["Scheduler"].now; + } + var _this = _super.call(this, SchedulerAction, function () { + if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) { + return AsyncScheduler.delegate.now(); + } + else { + return now(); + } + }) || this; + _this.actions = []; + _this.active = false; + _this.scheduled = undefined; + return _this; + } + AsyncScheduler.prototype.schedule = function (work, delay, state) { + if (delay === void 0) { + delay = 0; + } + if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) { + return AsyncScheduler.delegate.schedule(work, delay, state); + } + else { + return _super.prototype.schedule.call(this, work, delay, state); + } + }; + AsyncScheduler.prototype.flush = function (action) { + var actions = this.actions; + if (this.active) { + actions.push(action); + return; + } + var error; + this.active = true; + do { + if (error = action.execute(action.state, action.delay)) { + break; + } + } while (action = actions.shift()); + this.active = false; + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + return AsyncScheduler; +}(_Scheduler__WEBPACK_IMPORTED_MODULE_1__["Scheduler"])); + +//# sourceMappingURL=AsyncScheduler.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js ***! + \*******************************************************************/ +/*! exports provided: QueueAction */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueAction", function() { return QueueAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); +/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */ + + +var QueueAction = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](QueueAction, _super); + function QueueAction(scheduler, work) { + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + return _this; + } + QueueAction.prototype.schedule = function (state, delay) { + if (delay === void 0) { + delay = 0; + } + if (delay > 0) { + return _super.prototype.schedule.call(this, state, delay); + } + this.delay = delay; + this.state = state; + this.scheduler.flush(this); + return this; + }; + QueueAction.prototype.execute = function (state, delay) { + return (delay > 0 || this.closed) ? + _super.prototype.execute.call(this, state, delay) : + this._execute(state, delay); + }; + QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) { + return _super.prototype.requestAsyncId.call(this, scheduler, id, delay); + } + return scheduler.flush(this); + }; + return QueueAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"])); + +//# sourceMappingURL=QueueAction.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js ***! + \**********************************************************************/ +/*! exports provided: QueueScheduler */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "QueueScheduler", function() { return QueueScheduler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); +/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */ + + +var QueueScheduler = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](QueueScheduler, _super); + function QueueScheduler() { + return _super !== null && _super.apply(this, arguments) || this; + } + return QueueScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"])); + +//# sourceMappingURL=QueueScheduler.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js": +/*!****************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js ***! + \****************************************************************************/ +/*! exports provided: VirtualTimeScheduler, VirtualAction */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualTimeScheduler", function() { return VirtualTimeScheduler; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "VirtualAction", function() { return VirtualAction; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); +/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ + + + +var VirtualTimeScheduler = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](VirtualTimeScheduler, _super); + function VirtualTimeScheduler(SchedulerAction, maxFrames) { + if (SchedulerAction === void 0) { + SchedulerAction = VirtualAction; + } + if (maxFrames === void 0) { + maxFrames = Number.POSITIVE_INFINITY; + } + var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this; + _this.maxFrames = maxFrames; + _this.frame = 0; + _this.index = -1; + return _this; + } + VirtualTimeScheduler.prototype.flush = function () { + var _a = this, actions = _a.actions, maxFrames = _a.maxFrames; + var error, action; + while ((action = actions[0]) && action.delay <= maxFrames) { + actions.shift(); + this.frame = action.delay; + if (error = action.execute(action.state, action.delay)) { + break; + } + } + if (error) { + while (action = actions.shift()) { + action.unsubscribe(); + } + throw error; + } + }; + VirtualTimeScheduler.frameTimeFactor = 10; + return VirtualTimeScheduler; +}(_AsyncScheduler__WEBPACK_IMPORTED_MODULE_2__["AsyncScheduler"])); + +var VirtualAction = /*@__PURE__*/ (function (_super) { + tslib__WEBPACK_IMPORTED_MODULE_0__["__extends"](VirtualAction, _super); + function VirtualAction(scheduler, work, index) { + if (index === void 0) { + index = scheduler.index += 1; + } + var _this = _super.call(this, scheduler, work) || this; + _this.scheduler = scheduler; + _this.work = work; + _this.index = index; + _this.active = true; + _this.index = scheduler.index = index; + return _this; + } + VirtualAction.prototype.schedule = function (state, delay) { + if (delay === void 0) { + delay = 0; + } + if (!this.id) { + return _super.prototype.schedule.call(this, state, delay); + } + this.active = false; + var action = new VirtualAction(this.scheduler, this.work); + this.add(action); + return action.schedule(state, delay); + }; + VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + this.delay = scheduler.frame + delay; + var actions = scheduler.actions; + actions.push(this); + actions.sort(VirtualAction.sortActions); + return true; + }; + VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) { + if (delay === void 0) { + delay = 0; + } + return undefined; + }; + VirtualAction.prototype._execute = function (state, delay) { + if (this.active === true) { + return _super.prototype._execute.call(this, state, delay); + } + }; + VirtualAction.sortActions = function (a, b) { + if (a.delay === b.delay) { + if (a.index === b.index) { + return 0; + } + else if (a.index > b.index) { + return 1; + } + else { + return -1; + } + } + else if (a.delay > b.delay) { + return 1; + } + else { + return -1; + } + }; + return VirtualAction; +}(_AsyncAction__WEBPACK_IMPORTED_MODULE_1__["AsyncAction"])); + +//# sourceMappingURL=VirtualTimeScheduler.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js ***! + \**********************************************************************/ +/*! exports provided: animationFrame */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "animationFrame", function() { return animationFrame; }); +/* harmony import */ var _AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AnimationFrameAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js"); +/* harmony import */ var _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AnimationFrameScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js"); +/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */ + + +var animationFrame = /*@__PURE__*/ new _AnimationFrameScheduler__WEBPACK_IMPORTED_MODULE_1__["AnimationFrameScheduler"](_AnimationFrameAction__WEBPACK_IMPORTED_MODULE_0__["AnimationFrameAction"]); +//# sourceMappingURL=animationFrame.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/asap.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/asap.js ***! + \************************************************************/ +/*! exports provided: asap */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "asap", function() { return asap; }); +/* harmony import */ var _AsapAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsapAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js"); +/* harmony import */ var _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsapScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js"); +/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */ + + +var asap = /*@__PURE__*/ new _AsapScheduler__WEBPACK_IMPORTED_MODULE_1__["AsapScheduler"](_AsapAction__WEBPACK_IMPORTED_MODULE_0__["AsapAction"]); +//# sourceMappingURL=asap.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/async.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/async.js ***! + \*************************************************************/ +/*! exports provided: async */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "async", function() { return async; }); +/* harmony import */ var _AsyncAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AsyncAction */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js"); +/* harmony import */ var _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AsyncScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js"); +/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */ + + +var async = /*@__PURE__*/ new _AsyncScheduler__WEBPACK_IMPORTED_MODULE_1__["AsyncScheduler"](_AsyncAction__WEBPACK_IMPORTED_MODULE_0__["AsyncAction"]); +//# sourceMappingURL=async.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/scheduler/queue.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/scheduler/queue.js ***! + \*************************************************************/ +/*! exports provided: queue */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "queue", function() { return queue; }); +/* harmony import */ var _QueueAction__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./QueueAction */ "./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js"); +/* harmony import */ var _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./QueueScheduler */ "./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js"); +/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */ + + +var queue = /*@__PURE__*/ new _QueueScheduler__WEBPACK_IMPORTED_MODULE_1__["QueueScheduler"](_QueueAction__WEBPACK_IMPORTED_MODULE_0__["QueueAction"]); +//# sourceMappingURL=queue.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/symbol/iterator.js ***! + \*************************************************************/ +/*! exports provided: getSymbolIterator, iterator, $$iterator */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getSymbolIterator", function() { return getSymbolIterator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "iterator", function() { return iterator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$$iterator", function() { return $$iterator; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function getSymbolIterator() { + if (typeof Symbol !== 'function' || !Symbol.iterator) { + return '@@iterator'; + } + return Symbol.iterator; +} +var iterator = /*@__PURE__*/ getSymbolIterator(); +var $$iterator = iterator; +//# sourceMappingURL=iterator.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/symbol/observable.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/symbol/observable.js ***! + \***************************************************************/ +/*! exports provided: observable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "observable", function() { return observable; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })(); +//# sourceMappingURL=observable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js ***! + \*****************************************************************/ +/*! exports provided: rxSubscriber, $$rxSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rxSubscriber", function() { return rxSubscriber; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "$$rxSubscriber", function() { return $$rxSubscriber; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var rxSubscriber = /*@__PURE__*/ (function () { + return typeof Symbol === 'function' + ? /*@__PURE__*/ Symbol('rxSubscriber') + : '@@rxSubscriber_' + /*@__PURE__*/ Math.random(); +})(); +var $$rxSubscriber = rxSubscriber; +//# sourceMappingURL=rxSubscriber.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js": +/*!**************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js ***! + \**************************************************************************/ +/*! exports provided: ArgumentOutOfRangeError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ArgumentOutOfRangeError", function() { return ArgumentOutOfRangeError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () { + function ArgumentOutOfRangeErrorImpl() { + Error.call(this); + this.message = 'argument out of range'; + this.name = 'ArgumentOutOfRangeError'; + return this; + } + ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); + return ArgumentOutOfRangeErrorImpl; +})(); +var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl; +//# sourceMappingURL=ArgumentOutOfRangeError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/EmptyError.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/EmptyError.js ***! + \*************************************************************/ +/*! exports provided: EmptyError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "EmptyError", function() { return EmptyError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var EmptyErrorImpl = /*@__PURE__*/ (function () { + function EmptyErrorImpl() { + Error.call(this); + this.message = 'no elements in sequence'; + this.name = 'EmptyError'; + return this; + } + EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); + return EmptyErrorImpl; +})(); +var EmptyError = EmptyErrorImpl; +//# sourceMappingURL=EmptyError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/Immediate.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/Immediate.js ***! + \************************************************************/ +/*! exports provided: Immediate */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Immediate", function() { return Immediate; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var nextHandle = 1; +var tasksByHandle = {}; +function runIfPresent(handle) { + var cb = tasksByHandle[handle]; + if (cb) { + cb(); + } +} +var Immediate = { + setImmediate: function (cb) { + var handle = nextHandle++; + tasksByHandle[handle] = cb; + Promise.resolve().then(function () { return runIfPresent(handle); }); + return handle; + }, + clearImmediate: function (handle) { + delete tasksByHandle[handle]; + }, +}; +//# sourceMappingURL=Immediate.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js": +/*!**************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js ***! + \**************************************************************************/ +/*! exports provided: ObjectUnsubscribedError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ObjectUnsubscribedError", function() { return ObjectUnsubscribedError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () { + function ObjectUnsubscribedErrorImpl() { + Error.call(this); + this.message = 'object unsubscribed'; + this.name = 'ObjectUnsubscribedError'; + return this; + } + ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); + return ObjectUnsubscribedErrorImpl; +})(); +var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl; +//# sourceMappingURL=ObjectUnsubscribedError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/TimeoutError.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/TimeoutError.js ***! + \***************************************************************/ +/*! exports provided: TimeoutError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "TimeoutError", function() { return TimeoutError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var TimeoutErrorImpl = /*@__PURE__*/ (function () { + function TimeoutErrorImpl() { + Error.call(this); + this.message = 'Timeout has occurred'; + this.name = 'TimeoutError'; + return this; + } + TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); + return TimeoutErrorImpl; +})(); +var TimeoutError = TimeoutErrorImpl; +//# sourceMappingURL=TimeoutError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js ***! + \**********************************************************************/ +/*! exports provided: UnsubscriptionError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "UnsubscriptionError", function() { return UnsubscriptionError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var UnsubscriptionErrorImpl = /*@__PURE__*/ (function () { + function UnsubscriptionErrorImpl(errors) { + Error.call(this); + this.message = errors ? + errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n ') : ''; + this.name = 'UnsubscriptionError'; + this.errors = errors; + return this; + } + UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype); + return UnsubscriptionErrorImpl; +})(); +var UnsubscriptionError = UnsubscriptionErrorImpl; +//# sourceMappingURL=UnsubscriptionError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/canReportError.js": +/*!*****************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/canReportError.js ***! + \*****************************************************************/ +/*! exports provided: canReportError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "canReportError", function() { return canReportError; }); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */ + +function canReportError(observer) { + while (observer) { + var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped; + if (closed_1 || isStopped) { + return false; + } + else if (destination && destination instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]) { + observer = destination; + } + else { + observer = null; + } + } + return true; +} +//# sourceMappingURL=canReportError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js": +/*!******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/hostReportError.js ***! + \******************************************************************/ +/*! exports provided: hostReportError */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hostReportError", function() { return hostReportError; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function hostReportError(err) { + setTimeout(function () { throw err; }, 0); +} +//# sourceMappingURL=hostReportError.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/identity.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/identity.js ***! + \***********************************************************/ +/*! exports provided: identity */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "identity", function() { return identity; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function identity(x) { + return x; +} +//# sourceMappingURL=identity.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isArray.js": +/*!**********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isArray.js ***! + \**********************************************************/ +/*! exports provided: isArray */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArray", function() { return isArray; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })(); +//# sourceMappingURL=isArray.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isArrayLike.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isArrayLike.js ***! + \**************************************************************/ +/*! exports provided: isArrayLike */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isArrayLike", function() { return isArrayLike; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; }); +//# sourceMappingURL=isArrayLike.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isDate.js": +/*!*********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isDate.js ***! + \*********************************************************/ +/*! exports provided: isDate */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isDate", function() { return isDate; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function isDate(value) { + return value instanceof Date && !isNaN(+value); +} +//# sourceMappingURL=isDate.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isFunction.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isFunction.js ***! + \*************************************************************/ +/*! exports provided: isFunction */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isFunction", function() { return isFunction; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function isFunction(x) { + return typeof x === 'function'; +} +//# sourceMappingURL=isFunction.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js ***! + \**********************************************************************/ +/*! exports provided: isInteropObservable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isInteropObservable", function() { return isInteropObservable; }); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); +/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ + +function isInteropObservable(input) { + return input && typeof input[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__["observable"]] === 'function'; +} +//# sourceMappingURL=isInteropObservable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isIterable.js": +/*!*************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isIterable.js ***! + \*************************************************************/ +/*! exports provided: isIterable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isIterable", function() { return isIterable; }); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); +/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ + +function isIterable(input) { + return input && typeof input[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__["iterator"]] === 'function'; +} +//# sourceMappingURL=isIterable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isNumeric.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isNumeric.js ***! + \************************************************************/ +/*! exports provided: isNumeric */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isNumeric", function() { return isNumeric; }); +/* harmony import */ var _isArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./isArray */ "./node_modules/rxjs/_esm5/internal/util/isArray.js"); +/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */ + +function isNumeric(val) { + return !Object(_isArray__WEBPACK_IMPORTED_MODULE_0__["isArray"])(val) && (val - parseFloat(val) + 1) >= 0; +} +//# sourceMappingURL=isNumeric.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isObject.js": +/*!***********************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isObject.js ***! + \***********************************************************/ +/*! exports provided: isObject */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObject", function() { return isObject; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function isObject(x) { + return x !== null && typeof x === 'object'; +} +//# sourceMappingURL=isObject.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isObservable.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isObservable.js ***! + \***************************************************************/ +/*! exports provided: isObservable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isObservable", function() { return isObservable; }); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */ + +function isObservable(obj) { + return !!obj && (obj instanceof _Observable__WEBPACK_IMPORTED_MODULE_0__["Observable"] || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function')); +} +//# sourceMappingURL=isObservable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isPromise.js": +/*!************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isPromise.js ***! + \************************************************************/ +/*! exports provided: isPromise */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isPromise", function() { return isPromise; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function isPromise(value) { + return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function'; +} +//# sourceMappingURL=isPromise.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/isScheduler.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/isScheduler.js ***! + \**************************************************************/ +/*! exports provided: isScheduler */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isScheduler", function() { return isScheduler; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function isScheduler(value) { + return value && typeof value.schedule === 'function'; +} +//# sourceMappingURL=isScheduler.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/noop.js": +/*!*******************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/noop.js ***! + \*******************************************************/ +/*! exports provided: noop */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "noop", function() { return noop; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function noop() { } +//# sourceMappingURL=noop.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/not.js": +/*!******************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/not.js ***! + \******************************************************/ +/*! exports provided: not */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "not", function() { return not; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +function not(pred, thisArg) { + function notPred() { + return !(notPred.pred.apply(notPred.thisArg, arguments)); + } + notPred.pred = pred; + notPred.thisArg = thisArg; + return notPred; +} +//# sourceMappingURL=not.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/pipe.js": +/*!*******************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/pipe.js ***! + \*******************************************************/ +/*! exports provided: pipe, pipeFromArray */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipe", function() { return pipe; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "pipeFromArray", function() { return pipeFromArray; }); +/* harmony import */ var _noop__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./noop */ "./node_modules/rxjs/_esm5/internal/util/noop.js"); +/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */ + +function pipe() { + var fns = []; + for (var _i = 0; _i < arguments.length; _i++) { + fns[_i] = arguments[_i]; + } + return pipeFromArray(fns); +} +function pipeFromArray(fns) { + if (!fns) { + return _noop__WEBPACK_IMPORTED_MODULE_0__["noop"]; + } + if (fns.length === 1) { + return fns[0]; + } + return function piped(input) { + return fns.reduce(function (prev, fn) { return fn(prev); }, input); + }; +} +//# sourceMappingURL=pipe.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/root.js": +/*!*******************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/root.js ***! + \*******************************************************/ +/*! exports provided: root */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "root", function() { return _root; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var __window = typeof window !== 'undefined' && window; +var __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' && + self instanceof WorkerGlobalScope && self; +var __global = typeof global !== 'undefined' && global; +var _root = __window || __global || __self; +/*@__PURE__*/ (function () { + if (!_root) { + throw /*@__PURE__*/ new Error('RxJS could not find any global context (window, self, global)'); + } +})(); + +//# sourceMappingURL=root.js.map + +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js": +/*!**************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/subscribeTo.js ***! + \**************************************************************/ +/*! exports provided: subscribeTo */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeTo", function() { return subscribeTo; }); +/* harmony import */ var _subscribeToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./subscribeToArray */ "./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js"); +/* harmony import */ var _subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscribeToPromise */ "./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js"); +/* harmony import */ var _subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./subscribeToIterable */ "./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js"); +/* harmony import */ var _subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./subscribeToObservable */ "./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js"); +/* harmony import */ var _isArrayLike__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./isArrayLike */ "./node_modules/rxjs/_esm5/internal/util/isArrayLike.js"); +/* harmony import */ var _isPromise__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isPromise */ "./node_modules/rxjs/_esm5/internal/util/isPromise.js"); +/* harmony import */ var _isObject__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isObject */ "./node_modules/rxjs/_esm5/internal/util/isObject.js"); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); +/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */ + + + + + + + + + +var subscribeTo = function (result) { + if (!!result && typeof result[_symbol_observable__WEBPACK_IMPORTED_MODULE_8__["observable"]] === 'function') { + return Object(_subscribeToObservable__WEBPACK_IMPORTED_MODULE_3__["subscribeToObservable"])(result); + } + else if (Object(_isArrayLike__WEBPACK_IMPORTED_MODULE_4__["isArrayLike"])(result)) { + return Object(_subscribeToArray__WEBPACK_IMPORTED_MODULE_0__["subscribeToArray"])(result); + } + else if (Object(_isPromise__WEBPACK_IMPORTED_MODULE_5__["isPromise"])(result)) { + return Object(_subscribeToPromise__WEBPACK_IMPORTED_MODULE_1__["subscribeToPromise"])(result); + } + else if (!!result && typeof result[_symbol_iterator__WEBPACK_IMPORTED_MODULE_7__["iterator"]] === 'function') { + return Object(_subscribeToIterable__WEBPACK_IMPORTED_MODULE_2__["subscribeToIterable"])(result); + } + else { + var value = Object(_isObject__WEBPACK_IMPORTED_MODULE_6__["isObject"])(result) ? 'an invalid object' : "'" + result + "'"; + var msg = "You provided " + value + " where a stream was expected." + + ' You can provide an Observable, Promise, Array, or Iterable.'; + throw new TypeError(msg); + } +}; +//# sourceMappingURL=subscribeTo.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js": +/*!*******************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js ***! + \*******************************************************************/ +/*! exports provided: subscribeToArray */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToArray", function() { return subscribeToArray; }); +/** PURE_IMPORTS_START PURE_IMPORTS_END */ +var subscribeToArray = function (array) { + return function (subscriber) { + for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) { + subscriber.next(array[i]); + } + subscriber.complete(); + }; +}; +//# sourceMappingURL=subscribeToArray.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js": +/*!**********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js ***! + \**********************************************************************/ +/*! exports provided: subscribeToIterable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToIterable", function() { return subscribeToIterable; }); +/* harmony import */ var _symbol_iterator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/iterator */ "./node_modules/rxjs/_esm5/internal/symbol/iterator.js"); +/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */ + +var subscribeToIterable = function (iterable) { + return function (subscriber) { + var iterator = iterable[_symbol_iterator__WEBPACK_IMPORTED_MODULE_0__["iterator"]](); + do { + var item = iterator.next(); + if (item.done) { + subscriber.complete(); + break; + } + subscriber.next(item.value); + if (subscriber.closed) { + break; + } + } while (true); + if (typeof iterator.return === 'function') { + subscriber.add(function () { + if (iterator.return) { + iterator.return(); + } + }); + } + return subscriber; + }; +}; +//# sourceMappingURL=subscribeToIterable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js": +/*!************************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js ***! + \************************************************************************/ +/*! exports provided: subscribeToObservable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToObservable", function() { return subscribeToObservable; }); +/* harmony import */ var _symbol_observable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../symbol/observable */ "./node_modules/rxjs/_esm5/internal/symbol/observable.js"); +/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */ + +var subscribeToObservable = function (obj) { + return function (subscriber) { + var obs = obj[_symbol_observable__WEBPACK_IMPORTED_MODULE_0__["observable"]](); + if (typeof obs.subscribe !== 'function') { + throw new TypeError('Provided object does not correctly implement Symbol.observable'); + } + else { + return obs.subscribe(subscriber); + } + }; +}; +//# sourceMappingURL=subscribeToObservable.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js": +/*!*********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js ***! + \*********************************************************************/ +/*! exports provided: subscribeToPromise */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToPromise", function() { return subscribeToPromise; }); +/* harmony import */ var _hostReportError__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hostReportError */ "./node_modules/rxjs/_esm5/internal/util/hostReportError.js"); +/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */ + +var subscribeToPromise = function (promise) { + return function (subscriber) { + promise.then(function (value) { + if (!subscriber.closed) { + subscriber.next(value); + subscriber.complete(); + } + }, function (err) { return subscriber.error(err); }) + .then(null, _hostReportError__WEBPACK_IMPORTED_MODULE_0__["hostReportError"]); + return subscriber; + }; +}; +//# sourceMappingURL=subscribeToPromise.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js": +/*!********************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js ***! + \********************************************************************/ +/*! exports provided: subscribeToResult */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "subscribeToResult", function() { return subscribeToResult; }); +/* harmony import */ var _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../InnerSubscriber */ "./node_modules/rxjs/_esm5/internal/InnerSubscriber.js"); +/* harmony import */ var _subscribeTo__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./subscribeTo */ "./node_modules/rxjs/_esm5/internal/util/subscribeTo.js"); +/* harmony import */ var _Observable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observable */ "./node_modules/rxjs/_esm5/internal/Observable.js"); +/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */ + + + +function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) { + if (destination === void 0) { + destination = new _InnerSubscriber__WEBPACK_IMPORTED_MODULE_0__["InnerSubscriber"](outerSubscriber, outerValue, outerIndex); + } + if (destination.closed) { + return undefined; + } + if (result instanceof _Observable__WEBPACK_IMPORTED_MODULE_2__["Observable"]) { + return result.subscribe(destination); + } + return Object(_subscribeTo__WEBPACK_IMPORTED_MODULE_1__["subscribeTo"])(result)(destination); +} +//# sourceMappingURL=subscribeToResult.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/internal/util/toSubscriber.js": +/*!***************************************************************!*\ + !*** ./node_modules/rxjs/_esm5/internal/util/toSubscriber.js ***! + \***************************************************************/ +/*! exports provided: toSubscriber */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "toSubscriber", function() { return toSubscriber; }); +/* harmony import */ var _Subscriber__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../Subscriber */ "./node_modules/rxjs/_esm5/internal/Subscriber.js"); +/* harmony import */ var _symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../symbol/rxSubscriber */ "./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js"); +/* harmony import */ var _Observer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../Observer */ "./node_modules/rxjs/_esm5/internal/Observer.js"); +/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */ + + + +function toSubscriber(nextOrObserver, error, complete) { + if (nextOrObserver) { + if (nextOrObserver instanceof _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"]) { + return nextOrObserver; + } + if (nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__["rxSubscriber"]]) { + return nextOrObserver[_symbol_rxSubscriber__WEBPACK_IMPORTED_MODULE_1__["rxSubscriber"]](); + } + } + if (!nextOrObserver && !error && !complete) { + return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"](_Observer__WEBPACK_IMPORTED_MODULE_2__["empty"]); + } + return new _Subscriber__WEBPACK_IMPORTED_MODULE_0__["Subscriber"](nextOrObserver, error, complete); +} +//# sourceMappingURL=toSubscriber.js.map + + +/***/ }), + +/***/ "./node_modules/rxjs/_esm5/operators/index.js": +/*!****************************************************!*\ + !*** ./node_modules/rxjs/_esm5/operators/index.js ***! + \****************************************************/ +/*! exports provided: audit, auditTime, buffer, bufferCount, bufferTime, bufferToggle, bufferWhen, catchError, combineAll, combineLatest, concat, concatAll, concatMap, concatMapTo, count, debounce, debounceTime, defaultIfEmpty, delay, delayWhen, dematerialize, distinct, distinctUntilChanged, distinctUntilKeyChanged, elementAt, endWith, every, exhaust, exhaustMap, expand, filter, finalize, find, findIndex, first, groupBy, ignoreElements, isEmpty, last, map, mapTo, materialize, max, merge, mergeAll, mergeMap, flatMap, mergeMapTo, mergeScan, min, multicast, observeOn, onErrorResumeNext, pairwise, partition, pluck, publish, publishBehavior, publishLast, publishReplay, race, reduce, repeat, repeatWhen, retry, retryWhen, refCount, sample, sampleTime, scan, sequenceEqual, share, shareReplay, single, skip, skipLast, skipUntil, skipWhile, startWith, subscribeOn, switchAll, switchMap, switchMapTo, take, takeLast, takeUntil, takeWhile, tap, throttle, throttleTime, throwIfEmpty, timeInterval, timeout, timeoutWith, timestamp, toArray, window, windowCount, windowTime, windowToggle, windowWhen, withLatestFrom, zip, zipAll */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../internal/operators/audit */ "./node_modules/rxjs/_esm5/internal/operators/audit.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "audit", function() { return _internal_operators_audit__WEBPACK_IMPORTED_MODULE_0__["audit"]; }); + +/* harmony import */ var _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../internal/operators/auditTime */ "./node_modules/rxjs/_esm5/internal/operators/auditTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "auditTime", function() { return _internal_operators_auditTime__WEBPACK_IMPORTED_MODULE_1__["auditTime"]; }); + +/* harmony import */ var _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../internal/operators/buffer */ "./node_modules/rxjs/_esm5/internal/operators/buffer.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "buffer", function() { return _internal_operators_buffer__WEBPACK_IMPORTED_MODULE_2__["buffer"]; }); + +/* harmony import */ var _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../internal/operators/bufferCount */ "./node_modules/rxjs/_esm5/internal/operators/bufferCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferCount", function() { return _internal_operators_bufferCount__WEBPACK_IMPORTED_MODULE_3__["bufferCount"]; }); + +/* harmony import */ var _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../internal/operators/bufferTime */ "./node_modules/rxjs/_esm5/internal/operators/bufferTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferTime", function() { return _internal_operators_bufferTime__WEBPACK_IMPORTED_MODULE_4__["bufferTime"]; }); + +/* harmony import */ var _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../internal/operators/bufferToggle */ "./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferToggle", function() { return _internal_operators_bufferToggle__WEBPACK_IMPORTED_MODULE_5__["bufferToggle"]; }); + +/* harmony import */ var _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../internal/operators/bufferWhen */ "./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "bufferWhen", function() { return _internal_operators_bufferWhen__WEBPACK_IMPORTED_MODULE_6__["bufferWhen"]; }); + +/* harmony import */ var _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../internal/operators/catchError */ "./node_modules/rxjs/_esm5/internal/operators/catchError.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "catchError", function() { return _internal_operators_catchError__WEBPACK_IMPORTED_MODULE_7__["catchError"]; }); + +/* harmony import */ var _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../internal/operators/combineAll */ "./node_modules/rxjs/_esm5/internal/operators/combineAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineAll", function() { return _internal_operators_combineAll__WEBPACK_IMPORTED_MODULE_8__["combineAll"]; }); + +/* harmony import */ var _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../internal/operators/combineLatest */ "./node_modules/rxjs/_esm5/internal/operators/combineLatest.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "combineLatest", function() { return _internal_operators_combineLatest__WEBPACK_IMPORTED_MODULE_9__["combineLatest"]; }); + +/* harmony import */ var _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../internal/operators/concat */ "./node_modules/rxjs/_esm5/internal/operators/concat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concat", function() { return _internal_operators_concat__WEBPACK_IMPORTED_MODULE_10__["concat"]; }); + +/* harmony import */ var _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../internal/operators/concatAll */ "./node_modules/rxjs/_esm5/internal/operators/concatAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatAll", function() { return _internal_operators_concatAll__WEBPACK_IMPORTED_MODULE_11__["concatAll"]; }); + +/* harmony import */ var _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../internal/operators/concatMap */ "./node_modules/rxjs/_esm5/internal/operators/concatMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMap", function() { return _internal_operators_concatMap__WEBPACK_IMPORTED_MODULE_12__["concatMap"]; }); + +/* harmony import */ var _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../internal/operators/concatMapTo */ "./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "concatMapTo", function() { return _internal_operators_concatMapTo__WEBPACK_IMPORTED_MODULE_13__["concatMapTo"]; }); + +/* harmony import */ var _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../internal/operators/count */ "./node_modules/rxjs/_esm5/internal/operators/count.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "count", function() { return _internal_operators_count__WEBPACK_IMPORTED_MODULE_14__["count"]; }); + +/* harmony import */ var _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../internal/operators/debounce */ "./node_modules/rxjs/_esm5/internal/operators/debounce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounce", function() { return _internal_operators_debounce__WEBPACK_IMPORTED_MODULE_15__["debounce"]; }); + +/* harmony import */ var _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../internal/operators/debounceTime */ "./node_modules/rxjs/_esm5/internal/operators/debounceTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "debounceTime", function() { return _internal_operators_debounceTime__WEBPACK_IMPORTED_MODULE_16__["debounceTime"]; }); + +/* harmony import */ var _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../internal/operators/defaultIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "defaultIfEmpty", function() { return _internal_operators_defaultIfEmpty__WEBPACK_IMPORTED_MODULE_17__["defaultIfEmpty"]; }); + +/* harmony import */ var _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../internal/operators/delay */ "./node_modules/rxjs/_esm5/internal/operators/delay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delay", function() { return _internal_operators_delay__WEBPACK_IMPORTED_MODULE_18__["delay"]; }); + +/* harmony import */ var _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../internal/operators/delayWhen */ "./node_modules/rxjs/_esm5/internal/operators/delayWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "delayWhen", function() { return _internal_operators_delayWhen__WEBPACK_IMPORTED_MODULE_19__["delayWhen"]; }); + +/* harmony import */ var _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../internal/operators/dematerialize */ "./node_modules/rxjs/_esm5/internal/operators/dematerialize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "dematerialize", function() { return _internal_operators_dematerialize__WEBPACK_IMPORTED_MODULE_20__["dematerialize"]; }); + +/* harmony import */ var _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../internal/operators/distinct */ "./node_modules/rxjs/_esm5/internal/operators/distinct.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinct", function() { return _internal_operators_distinct__WEBPACK_IMPORTED_MODULE_21__["distinct"]; }); + +/* harmony import */ var _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../internal/operators/distinctUntilChanged */ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilChanged", function() { return _internal_operators_distinctUntilChanged__WEBPACK_IMPORTED_MODULE_22__["distinctUntilChanged"]; }); + +/* harmony import */ var _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../internal/operators/distinctUntilKeyChanged */ "./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "distinctUntilKeyChanged", function() { return _internal_operators_distinctUntilKeyChanged__WEBPACK_IMPORTED_MODULE_23__["distinctUntilKeyChanged"]; }); + +/* harmony import */ var _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../internal/operators/elementAt */ "./node_modules/rxjs/_esm5/internal/operators/elementAt.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "elementAt", function() { return _internal_operators_elementAt__WEBPACK_IMPORTED_MODULE_24__["elementAt"]; }); + +/* harmony import */ var _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../internal/operators/endWith */ "./node_modules/rxjs/_esm5/internal/operators/endWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "endWith", function() { return _internal_operators_endWith__WEBPACK_IMPORTED_MODULE_25__["endWith"]; }); + +/* harmony import */ var _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../internal/operators/every */ "./node_modules/rxjs/_esm5/internal/operators/every.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "every", function() { return _internal_operators_every__WEBPACK_IMPORTED_MODULE_26__["every"]; }); + +/* harmony import */ var _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../internal/operators/exhaust */ "./node_modules/rxjs/_esm5/internal/operators/exhaust.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaust", function() { return _internal_operators_exhaust__WEBPACK_IMPORTED_MODULE_27__["exhaust"]; }); + +/* harmony import */ var _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../internal/operators/exhaustMap */ "./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "exhaustMap", function() { return _internal_operators_exhaustMap__WEBPACK_IMPORTED_MODULE_28__["exhaustMap"]; }); + +/* harmony import */ var _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../internal/operators/expand */ "./node_modules/rxjs/_esm5/internal/operators/expand.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "expand", function() { return _internal_operators_expand__WEBPACK_IMPORTED_MODULE_29__["expand"]; }); + +/* harmony import */ var _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ../internal/operators/filter */ "./node_modules/rxjs/_esm5/internal/operators/filter.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "filter", function() { return _internal_operators_filter__WEBPACK_IMPORTED_MODULE_30__["filter"]; }); + +/* harmony import */ var _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ../internal/operators/finalize */ "./node_modules/rxjs/_esm5/internal/operators/finalize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "finalize", function() { return _internal_operators_finalize__WEBPACK_IMPORTED_MODULE_31__["finalize"]; }); + +/* harmony import */ var _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ../internal/operators/find */ "./node_modules/rxjs/_esm5/internal/operators/find.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "find", function() { return _internal_operators_find__WEBPACK_IMPORTED_MODULE_32__["find"]; }); + +/* harmony import */ var _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ../internal/operators/findIndex */ "./node_modules/rxjs/_esm5/internal/operators/findIndex.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "findIndex", function() { return _internal_operators_findIndex__WEBPACK_IMPORTED_MODULE_33__["findIndex"]; }); + +/* harmony import */ var _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ../internal/operators/first */ "./node_modules/rxjs/_esm5/internal/operators/first.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "first", function() { return _internal_operators_first__WEBPACK_IMPORTED_MODULE_34__["first"]; }); + +/* harmony import */ var _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ../internal/operators/groupBy */ "./node_modules/rxjs/_esm5/internal/operators/groupBy.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "groupBy", function() { return _internal_operators_groupBy__WEBPACK_IMPORTED_MODULE_35__["groupBy"]; }); + +/* harmony import */ var _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ../internal/operators/ignoreElements */ "./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreElements", function() { return _internal_operators_ignoreElements__WEBPACK_IMPORTED_MODULE_36__["ignoreElements"]; }); + +/* harmony import */ var _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ../internal/operators/isEmpty */ "./node_modules/rxjs/_esm5/internal/operators/isEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isEmpty", function() { return _internal_operators_isEmpty__WEBPACK_IMPORTED_MODULE_37__["isEmpty"]; }); + +/* harmony import */ var _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ../internal/operators/last */ "./node_modules/rxjs/_esm5/internal/operators/last.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "last", function() { return _internal_operators_last__WEBPACK_IMPORTED_MODULE_38__["last"]; }); + +/* harmony import */ var _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ../internal/operators/map */ "./node_modules/rxjs/_esm5/internal/operators/map.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "map", function() { return _internal_operators_map__WEBPACK_IMPORTED_MODULE_39__["map"]; }); + +/* harmony import */ var _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ../internal/operators/mapTo */ "./node_modules/rxjs/_esm5/internal/operators/mapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mapTo", function() { return _internal_operators_mapTo__WEBPACK_IMPORTED_MODULE_40__["mapTo"]; }); + +/* harmony import */ var _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ../internal/operators/materialize */ "./node_modules/rxjs/_esm5/internal/operators/materialize.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "materialize", function() { return _internal_operators_materialize__WEBPACK_IMPORTED_MODULE_41__["materialize"]; }); + +/* harmony import */ var _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ../internal/operators/max */ "./node_modules/rxjs/_esm5/internal/operators/max.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "max", function() { return _internal_operators_max__WEBPACK_IMPORTED_MODULE_42__["max"]; }); + +/* harmony import */ var _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ../internal/operators/merge */ "./node_modules/rxjs/_esm5/internal/operators/merge.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "merge", function() { return _internal_operators_merge__WEBPACK_IMPORTED_MODULE_43__["merge"]; }); + +/* harmony import */ var _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ../internal/operators/mergeAll */ "./node_modules/rxjs/_esm5/internal/operators/mergeAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeAll", function() { return _internal_operators_mergeAll__WEBPACK_IMPORTED_MODULE_44__["mergeAll"]; }); + +/* harmony import */ var _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ../internal/operators/mergeMap */ "./node_modules/rxjs/_esm5/internal/operators/mergeMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "flatMap", function() { return _internal_operators_mergeMap__WEBPACK_IMPORTED_MODULE_45__["mergeMap"]; }); + +/* harmony import */ var _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ../internal/operators/mergeMapTo */ "./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeMapTo", function() { return _internal_operators_mergeMapTo__WEBPACK_IMPORTED_MODULE_46__["mergeMapTo"]; }); + +/* harmony import */ var _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ../internal/operators/mergeScan */ "./node_modules/rxjs/_esm5/internal/operators/mergeScan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mergeScan", function() { return _internal_operators_mergeScan__WEBPACK_IMPORTED_MODULE_47__["mergeScan"]; }); + +/* harmony import */ var _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ../internal/operators/min */ "./node_modules/rxjs/_esm5/internal/operators/min.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "min", function() { return _internal_operators_min__WEBPACK_IMPORTED_MODULE_48__["min"]; }); + +/* harmony import */ var _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__ = __webpack_require__(/*! ../internal/operators/multicast */ "./node_modules/rxjs/_esm5/internal/operators/multicast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "multicast", function() { return _internal_operators_multicast__WEBPACK_IMPORTED_MODULE_49__["multicast"]; }); + +/* harmony import */ var _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__ = __webpack_require__(/*! ../internal/operators/observeOn */ "./node_modules/rxjs/_esm5/internal/operators/observeOn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "observeOn", function() { return _internal_operators_observeOn__WEBPACK_IMPORTED_MODULE_50__["observeOn"]; }); + +/* harmony import */ var _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__ = __webpack_require__(/*! ../internal/operators/onErrorResumeNext */ "./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onErrorResumeNext", function() { return _internal_operators_onErrorResumeNext__WEBPACK_IMPORTED_MODULE_51__["onErrorResumeNext"]; }); + +/* harmony import */ var _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__ = __webpack_require__(/*! ../internal/operators/pairwise */ "./node_modules/rxjs/_esm5/internal/operators/pairwise.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pairwise", function() { return _internal_operators_pairwise__WEBPACK_IMPORTED_MODULE_52__["pairwise"]; }); + +/* harmony import */ var _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__ = __webpack_require__(/*! ../internal/operators/partition */ "./node_modules/rxjs/_esm5/internal/operators/partition.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "partition", function() { return _internal_operators_partition__WEBPACK_IMPORTED_MODULE_53__["partition"]; }); + +/* harmony import */ var _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__ = __webpack_require__(/*! ../internal/operators/pluck */ "./node_modules/rxjs/_esm5/internal/operators/pluck.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "pluck", function() { return _internal_operators_pluck__WEBPACK_IMPORTED_MODULE_54__["pluck"]; }); + +/* harmony import */ var _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__ = __webpack_require__(/*! ../internal/operators/publish */ "./node_modules/rxjs/_esm5/internal/operators/publish.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publish", function() { return _internal_operators_publish__WEBPACK_IMPORTED_MODULE_55__["publish"]; }); + +/* harmony import */ var _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__ = __webpack_require__(/*! ../internal/operators/publishBehavior */ "./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishBehavior", function() { return _internal_operators_publishBehavior__WEBPACK_IMPORTED_MODULE_56__["publishBehavior"]; }); + +/* harmony import */ var _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__ = __webpack_require__(/*! ../internal/operators/publishLast */ "./node_modules/rxjs/_esm5/internal/operators/publishLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishLast", function() { return _internal_operators_publishLast__WEBPACK_IMPORTED_MODULE_57__["publishLast"]; }); + +/* harmony import */ var _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__ = __webpack_require__(/*! ../internal/operators/publishReplay */ "./node_modules/rxjs/_esm5/internal/operators/publishReplay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "publishReplay", function() { return _internal_operators_publishReplay__WEBPACK_IMPORTED_MODULE_58__["publishReplay"]; }); + +/* harmony import */ var _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__ = __webpack_require__(/*! ../internal/operators/race */ "./node_modules/rxjs/_esm5/internal/operators/race.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "race", function() { return _internal_operators_race__WEBPACK_IMPORTED_MODULE_59__["race"]; }); + +/* harmony import */ var _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__ = __webpack_require__(/*! ../internal/operators/reduce */ "./node_modules/rxjs/_esm5/internal/operators/reduce.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "reduce", function() { return _internal_operators_reduce__WEBPACK_IMPORTED_MODULE_60__["reduce"]; }); + +/* harmony import */ var _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__ = __webpack_require__(/*! ../internal/operators/repeat */ "./node_modules/rxjs/_esm5/internal/operators/repeat.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeat", function() { return _internal_operators_repeat__WEBPACK_IMPORTED_MODULE_61__["repeat"]; }); + +/* harmony import */ var _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__ = __webpack_require__(/*! ../internal/operators/repeatWhen */ "./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "repeatWhen", function() { return _internal_operators_repeatWhen__WEBPACK_IMPORTED_MODULE_62__["repeatWhen"]; }); + +/* harmony import */ var _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__ = __webpack_require__(/*! ../internal/operators/retry */ "./node_modules/rxjs/_esm5/internal/operators/retry.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retry", function() { return _internal_operators_retry__WEBPACK_IMPORTED_MODULE_63__["retry"]; }); + +/* harmony import */ var _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__ = __webpack_require__(/*! ../internal/operators/retryWhen */ "./node_modules/rxjs/_esm5/internal/operators/retryWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "retryWhen", function() { return _internal_operators_retryWhen__WEBPACK_IMPORTED_MODULE_64__["retryWhen"]; }); + +/* harmony import */ var _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__ = __webpack_require__(/*! ../internal/operators/refCount */ "./node_modules/rxjs/_esm5/internal/operators/refCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "refCount", function() { return _internal_operators_refCount__WEBPACK_IMPORTED_MODULE_65__["refCount"]; }); + +/* harmony import */ var _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__ = __webpack_require__(/*! ../internal/operators/sample */ "./node_modules/rxjs/_esm5/internal/operators/sample.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sample", function() { return _internal_operators_sample__WEBPACK_IMPORTED_MODULE_66__["sample"]; }); + +/* harmony import */ var _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__ = __webpack_require__(/*! ../internal/operators/sampleTime */ "./node_modules/rxjs/_esm5/internal/operators/sampleTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sampleTime", function() { return _internal_operators_sampleTime__WEBPACK_IMPORTED_MODULE_67__["sampleTime"]; }); + +/* harmony import */ var _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__ = __webpack_require__(/*! ../internal/operators/scan */ "./node_modules/rxjs/_esm5/internal/operators/scan.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "scan", function() { return _internal_operators_scan__WEBPACK_IMPORTED_MODULE_68__["scan"]; }); + +/* harmony import */ var _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__ = __webpack_require__(/*! ../internal/operators/sequenceEqual */ "./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "sequenceEqual", function() { return _internal_operators_sequenceEqual__WEBPACK_IMPORTED_MODULE_69__["sequenceEqual"]; }); + +/* harmony import */ var _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__ = __webpack_require__(/*! ../internal/operators/share */ "./node_modules/rxjs/_esm5/internal/operators/share.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "share", function() { return _internal_operators_share__WEBPACK_IMPORTED_MODULE_70__["share"]; }); + +/* harmony import */ var _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__ = __webpack_require__(/*! ../internal/operators/shareReplay */ "./node_modules/rxjs/_esm5/internal/operators/shareReplay.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "shareReplay", function() { return _internal_operators_shareReplay__WEBPACK_IMPORTED_MODULE_71__["shareReplay"]; }); + +/* harmony import */ var _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__ = __webpack_require__(/*! ../internal/operators/single */ "./node_modules/rxjs/_esm5/internal/operators/single.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "single", function() { return _internal_operators_single__WEBPACK_IMPORTED_MODULE_72__["single"]; }); + +/* harmony import */ var _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__ = __webpack_require__(/*! ../internal/operators/skip */ "./node_modules/rxjs/_esm5/internal/operators/skip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skip", function() { return _internal_operators_skip__WEBPACK_IMPORTED_MODULE_73__["skip"]; }); + +/* harmony import */ var _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__ = __webpack_require__(/*! ../internal/operators/skipLast */ "./node_modules/rxjs/_esm5/internal/operators/skipLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipLast", function() { return _internal_operators_skipLast__WEBPACK_IMPORTED_MODULE_74__["skipLast"]; }); + +/* harmony import */ var _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__ = __webpack_require__(/*! ../internal/operators/skipUntil */ "./node_modules/rxjs/_esm5/internal/operators/skipUntil.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipUntil", function() { return _internal_operators_skipUntil__WEBPACK_IMPORTED_MODULE_75__["skipUntil"]; }); + +/* harmony import */ var _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__ = __webpack_require__(/*! ../internal/operators/skipWhile */ "./node_modules/rxjs/_esm5/internal/operators/skipWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "skipWhile", function() { return _internal_operators_skipWhile__WEBPACK_IMPORTED_MODULE_76__["skipWhile"]; }); + +/* harmony import */ var _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__ = __webpack_require__(/*! ../internal/operators/startWith */ "./node_modules/rxjs/_esm5/internal/operators/startWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "startWith", function() { return _internal_operators_startWith__WEBPACK_IMPORTED_MODULE_77__["startWith"]; }); + +/* harmony import */ var _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__ = __webpack_require__(/*! ../internal/operators/subscribeOn */ "./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "subscribeOn", function() { return _internal_operators_subscribeOn__WEBPACK_IMPORTED_MODULE_78__["subscribeOn"]; }); + +/* harmony import */ var _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__ = __webpack_require__(/*! ../internal/operators/switchAll */ "./node_modules/rxjs/_esm5/internal/operators/switchAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchAll", function() { return _internal_operators_switchAll__WEBPACK_IMPORTED_MODULE_79__["switchAll"]; }); + +/* harmony import */ var _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__ = __webpack_require__(/*! ../internal/operators/switchMap */ "./node_modules/rxjs/_esm5/internal/operators/switchMap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMap", function() { return _internal_operators_switchMap__WEBPACK_IMPORTED_MODULE_80__["switchMap"]; }); + +/* harmony import */ var _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__ = __webpack_require__(/*! ../internal/operators/switchMapTo */ "./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "switchMapTo", function() { return _internal_operators_switchMapTo__WEBPACK_IMPORTED_MODULE_81__["switchMapTo"]; }); + +/* harmony import */ var _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__ = __webpack_require__(/*! ../internal/operators/take */ "./node_modules/rxjs/_esm5/internal/operators/take.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "take", function() { return _internal_operators_take__WEBPACK_IMPORTED_MODULE_82__["take"]; }); + +/* harmony import */ var _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__ = __webpack_require__(/*! ../internal/operators/takeLast */ "./node_modules/rxjs/_esm5/internal/operators/takeLast.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeLast", function() { return _internal_operators_takeLast__WEBPACK_IMPORTED_MODULE_83__["takeLast"]; }); + +/* harmony import */ var _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__ = __webpack_require__(/*! ../internal/operators/takeUntil */ "./node_modules/rxjs/_esm5/internal/operators/takeUntil.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeUntil", function() { return _internal_operators_takeUntil__WEBPACK_IMPORTED_MODULE_84__["takeUntil"]; }); + +/* harmony import */ var _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__ = __webpack_require__(/*! ../internal/operators/takeWhile */ "./node_modules/rxjs/_esm5/internal/operators/takeWhile.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "takeWhile", function() { return _internal_operators_takeWhile__WEBPACK_IMPORTED_MODULE_85__["takeWhile"]; }); + +/* harmony import */ var _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__ = __webpack_require__(/*! ../internal/operators/tap */ "./node_modules/rxjs/_esm5/internal/operators/tap.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "tap", function() { return _internal_operators_tap__WEBPACK_IMPORTED_MODULE_86__["tap"]; }); + +/* harmony import */ var _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__ = __webpack_require__(/*! ../internal/operators/throttle */ "./node_modules/rxjs/_esm5/internal/operators/throttle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttle", function() { return _internal_operators_throttle__WEBPACK_IMPORTED_MODULE_87__["throttle"]; }); + +/* harmony import */ var _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__ = __webpack_require__(/*! ../internal/operators/throttleTime */ "./node_modules/rxjs/_esm5/internal/operators/throttleTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throttleTime", function() { return _internal_operators_throttleTime__WEBPACK_IMPORTED_MODULE_88__["throttleTime"]; }); + +/* harmony import */ var _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__ = __webpack_require__(/*! ../internal/operators/throwIfEmpty */ "./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "throwIfEmpty", function() { return _internal_operators_throwIfEmpty__WEBPACK_IMPORTED_MODULE_89__["throwIfEmpty"]; }); + +/* harmony import */ var _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__ = __webpack_require__(/*! ../internal/operators/timeInterval */ "./node_modules/rxjs/_esm5/internal/operators/timeInterval.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeInterval", function() { return _internal_operators_timeInterval__WEBPACK_IMPORTED_MODULE_90__["timeInterval"]; }); + +/* harmony import */ var _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__ = __webpack_require__(/*! ../internal/operators/timeout */ "./node_modules/rxjs/_esm5/internal/operators/timeout.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeout", function() { return _internal_operators_timeout__WEBPACK_IMPORTED_MODULE_91__["timeout"]; }); + +/* harmony import */ var _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__ = __webpack_require__(/*! ../internal/operators/timeoutWith */ "./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timeoutWith", function() { return _internal_operators_timeoutWith__WEBPACK_IMPORTED_MODULE_92__["timeoutWith"]; }); + +/* harmony import */ var _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__ = __webpack_require__(/*! ../internal/operators/timestamp */ "./node_modules/rxjs/_esm5/internal/operators/timestamp.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "timestamp", function() { return _internal_operators_timestamp__WEBPACK_IMPORTED_MODULE_93__["timestamp"]; }); + +/* harmony import */ var _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__ = __webpack_require__(/*! ../internal/operators/toArray */ "./node_modules/rxjs/_esm5/internal/operators/toArray.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "toArray", function() { return _internal_operators_toArray__WEBPACK_IMPORTED_MODULE_94__["toArray"]; }); + +/* harmony import */ var _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__ = __webpack_require__(/*! ../internal/operators/window */ "./node_modules/rxjs/_esm5/internal/operators/window.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "window", function() { return _internal_operators_window__WEBPACK_IMPORTED_MODULE_95__["window"]; }); + +/* harmony import */ var _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__ = __webpack_require__(/*! ../internal/operators/windowCount */ "./node_modules/rxjs/_esm5/internal/operators/windowCount.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowCount", function() { return _internal_operators_windowCount__WEBPACK_IMPORTED_MODULE_96__["windowCount"]; }); + +/* harmony import */ var _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__ = __webpack_require__(/*! ../internal/operators/windowTime */ "./node_modules/rxjs/_esm5/internal/operators/windowTime.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowTime", function() { return _internal_operators_windowTime__WEBPACK_IMPORTED_MODULE_97__["windowTime"]; }); + +/* harmony import */ var _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__ = __webpack_require__(/*! ../internal/operators/windowToggle */ "./node_modules/rxjs/_esm5/internal/operators/windowToggle.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowToggle", function() { return _internal_operators_windowToggle__WEBPACK_IMPORTED_MODULE_98__["windowToggle"]; }); + +/* harmony import */ var _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__ = __webpack_require__(/*! ../internal/operators/windowWhen */ "./node_modules/rxjs/_esm5/internal/operators/windowWhen.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "windowWhen", function() { return _internal_operators_windowWhen__WEBPACK_IMPORTED_MODULE_99__["windowWhen"]; }); + +/* harmony import */ var _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__ = __webpack_require__(/*! ../internal/operators/withLatestFrom */ "./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "withLatestFrom", function() { return _internal_operators_withLatestFrom__WEBPACK_IMPORTED_MODULE_100__["withLatestFrom"]; }); + +/* harmony import */ var _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__ = __webpack_require__(/*! ../internal/operators/zip */ "./node_modules/rxjs/_esm5/internal/operators/zip.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zip", function() { return _internal_operators_zip__WEBPACK_IMPORTED_MODULE_101__["zip"]; }); + +/* harmony import */ var _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__ = __webpack_require__(/*! ../internal/operators/zipAll */ "./node_modules/rxjs/_esm5/internal/operators/zipAll.js"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "zipAll", function() { return _internal_operators_zipAll__WEBPACK_IMPORTED_MODULE_102__["zipAll"]; }); + +/** PURE_IMPORTS_START PURE_IMPORTS_END */ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +//# sourceMappingURL=index.js.map + + +/***/ }), + +/***/ "./node_modules/tslib/tslib.es6.js": +/*!*****************************************!*\ + !*** ./node_modules/tslib/tslib.es6.js ***! + \*****************************************/ +/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __exportStar(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} + +function __values(o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result.default = mod; + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + + +/***/ }), + +/***/ "./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 || new Function("return 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/assets/javascripts/actions/anchor/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/actions/anchor/index.ts ***! + \********************************************************/ +/*! exports provided: setAnchorBlur, resetAnchorBlur, setAnchorActive, resetAnchorActive */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAnchorBlur", function() { return setAnchorBlur; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetAnchorBlur", function() { return resetAnchorBlur; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setAnchorActive", function() { return setAnchorActive; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetAnchorActive", function() { return resetAnchorActive; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set anchor blur + * + * @param el - Anchor element + * @param value - Whether the anchor is blurred + */ +function setAnchorBlur(el, value) { + el.setAttribute("data-md-state", value ? "blur" : ""); +} +/** + * Reset anchor blur + * + * @param el - Anchor element + */ +function resetAnchorBlur(el) { + el.removeAttribute("data-md-state"); +} +/* ------------------------------------------------------------------------- */ +/** + * Set anchor active + * + * @param el - Anchor element + * @param value - Whether the anchor is active + */ +function setAnchorActive(el, value) { + el.classList.toggle("md-nav__link--active", value); +} +/** + * Reset anchor active + * + * @param el - Anchor element + */ +function resetAnchorActive(el) { + el.classList.remove("md-nav__link--active"); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/header/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/actions/header/index.ts ***! + \********************************************************/ +/*! exports provided: setHeaderShadow, resetHeaderShadow, setHeaderTitle, resetHeaderTitle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./shadow */ "./src/assets/javascripts/actions/header/shadow/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderShadow", function() { return _shadow__WEBPACK_IMPORTED_MODULE_0__["setHeaderShadow"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderShadow", function() { return _shadow__WEBPACK_IMPORTED_MODULE_0__["resetHeaderShadow"]; }); + +/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ "./src/assets/javascripts/actions/header/title/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_1__["setHeaderTitle"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_1__["resetHeaderTitle"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/header/shadow/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/actions/header/shadow/index.ts ***! + \***************************************************************/ +/*! exports provided: setHeaderShadow, resetHeaderShadow */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHeaderShadow", function() { return setHeaderShadow; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetHeaderShadow", function() { return resetHeaderShadow; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set header shadow + * + * @param el - Header element + * @param value - Whether the shadow is shown + */ +function setHeaderShadow(el, value) { + el.setAttribute("data-md-state", value ? "shadow" : ""); +} +/** + * Reset header shadow + * + * @param el - Header element + */ +function resetHeaderShadow(el) { + el.removeAttribute("data-md-state"); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/header/title/index.ts": +/*!**************************************************************!*\ + !*** ./src/assets/javascripts/actions/header/title/index.ts ***! + \**************************************************************/ +/*! exports provided: setHeaderTitle, resetHeaderTitle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHeaderTitle", function() { return setHeaderTitle; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetHeaderTitle", function() { return resetHeaderTitle; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set header title + * + * @param el - Header title element + * @param value - Whether the title is shown + */ +function setHeaderTitle(el, value) { + el.setAttribute("data-md-state", value ? "active" : ""); +} +/** + * Reset header title + * + * @param el - Header element + */ +function resetHeaderTitle(el) { + el.removeAttribute("data-md-state"); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/index.ts": +/*!*************************************************!*\ + !*** ./src/assets/javascripts/actions/index.ts ***! + \*************************************************/ +/*! exports provided: setAnchorBlur, resetAnchorBlur, setAnchorActive, resetAnchorActive, setHeaderShadow, resetHeaderShadow, setHeaderTitle, resetHeaderTitle, setHidden, resetHidden, setSidebarOffset, resetSidebarOffset, setSidebarHeight, resetSidebarHeight, setSidebarLock, resetSidebarLock, setOverflowScrolling, resetOverflowScrolling, setScrollLock, resetScrollLock, setSearchResultMeta, resetSearchResultMeta, addToSearchResultList, resetSearchResultList */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _anchor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./anchor */ "./src/assets/javascripts/actions/anchor/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setAnchorBlur", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["setAnchorBlur"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetAnchorBlur", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["resetAnchorBlur"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setAnchorActive", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["setAnchorActive"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetAnchorActive", function() { return _anchor__WEBPACK_IMPORTED_MODULE_0__["resetAnchorActive"]; }); + +/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./header */ "./src/assets/javascripts/actions/header/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderShadow", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["setHeaderShadow"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderShadow", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["resetHeaderShadow"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["setHeaderTitle"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["resetHeaderTitle"]; }); + +/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./main */ "./src/assets/javascripts/actions/main/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHidden", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setHidden"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHidden", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetHidden"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarOffset", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setSidebarOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarOffset", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetSidebarOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarHeight", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setSidebarHeight"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarHeight", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetSidebarHeight"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setSidebarLock"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetSidebarLock"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setOverflowScrolling", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setOverflowScrolling"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetOverflowScrolling", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetOverflowScrolling"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setScrollLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["setScrollLock"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetScrollLock", function() { return _main__WEBPACK_IMPORTED_MODULE_2__["resetScrollLock"]; }); + +/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/actions/search/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSearchResultMeta", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["setSearchResultMeta"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultMeta", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultMeta"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addToSearchResultList", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["addToSearchResultList"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultList", function() { return _search__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultList"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/main/hideable/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/actions/main/hideable/index.ts ***! + \***************************************************************/ +/*! exports provided: setHidden, resetHidden */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setHidden", function() { return setHidden; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetHidden", function() { return resetHidden; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set hidden + * + * @param el - Hideable element + * @param value - Whether the element is hidden + */ +function setHidden(el, value) { + el.setAttribute("data-md-state", value ? "hidden" : ""); +} +/** + * Reset hidden + * + * @param el - Hideable element + */ +function resetHidden(el) { + el.removeAttribute("data-md-state"); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/main/index.ts": +/*!******************************************************!*\ + !*** ./src/assets/javascripts/actions/main/index.ts ***! + \******************************************************/ +/*! exports provided: setHidden, resetHidden, setSidebarOffset, resetSidebarOffset, setSidebarHeight, resetSidebarHeight, setSidebarLock, resetSidebarLock, setOverflowScrolling, resetOverflowScrolling, setScrollLock, resetScrollLock */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _hideable__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideable */ "./src/assets/javascripts/actions/main/hideable/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setHidden", function() { return _hideable__WEBPACK_IMPORTED_MODULE_0__["setHidden"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetHidden", function() { return _hideable__WEBPACK_IMPORTED_MODULE_0__["resetHidden"]; }); + +/* harmony import */ var _sidebar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./sidebar */ "./src/assets/javascripts/actions/main/sidebar/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarOffset", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["setSidebarOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarOffset", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["resetSidebarOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarHeight", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["setSidebarHeight"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarHeight", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["resetSidebarHeight"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSidebarLock", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["setSidebarLock"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSidebarLock", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_1__["resetSidebarLock"]; }); + +/* harmony import */ var _scrollable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scrollable */ "./src/assets/javascripts/actions/main/scrollable/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setOverflowScrolling", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["setOverflowScrolling"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetOverflowScrolling", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["resetOverflowScrolling"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setScrollLock", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["setScrollLock"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetScrollLock", function() { return _scrollable__WEBPACK_IMPORTED_MODULE_2__["resetScrollLock"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/main/scrollable/index.ts": +/*!*****************************************************************!*\ + !*** ./src/assets/javascripts/actions/main/scrollable/index.ts ***! + \*****************************************************************/ +/*! exports provided: setOverflowScrolling, resetOverflowScrolling, setScrollLock, resetScrollLock */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setOverflowScrolling", function() { return setOverflowScrolling; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetOverflowScrolling", function() { return resetOverflowScrolling; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setScrollLock", function() { return setScrollLock; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetScrollLock", function() { return resetScrollLock; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set overflow scrolling + * + * @param el - Scrollable element + */ +function setOverflowScrolling(el) { + el.style.webkitOverflowScrolling = "touch"; +} +/** + * Reset overflow scrolling + * + * @param el - Scrollable element + */ +function resetOverflowScrolling(el) { + el.style.webkitOverflowScrolling = ""; +} +/* ------------------------------------------------------------------------- */ +/** + * Set scroll lock + * + * @param el - Scrollable element + * @param value - Vertical offset + */ +function setScrollLock(el, value) { + el.setAttribute("data-md-state", "lock"); + el.style.top = "-" + value + "px"; +} +/** + * Reset scroll lock + * + * @param el - Scrollable element + */ +function resetScrollLock(el) { + var value = -1 * parseInt(el.style.top, 10); + el.removeAttribute("data-md-state"); + el.style.top = ""; + if (value) + window.scrollTo(0, value); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/main/sidebar/index.ts": +/*!**************************************************************!*\ + !*** ./src/assets/javascripts/actions/main/sidebar/index.ts ***! + \**************************************************************/ +/*! exports provided: setSidebarOffset, resetSidebarOffset, setSidebarHeight, resetSidebarHeight, setSidebarLock, resetSidebarLock */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSidebarOffset", function() { return setSidebarOffset; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSidebarOffset", function() { return resetSidebarOffset; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSidebarHeight", function() { return setSidebarHeight; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSidebarHeight", function() { return resetSidebarHeight; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSidebarLock", function() { return setSidebarLock; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSidebarLock", function() { return resetSidebarLock; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set sidebar offset + * + * @param el - Sidebar element + * @param value - Sidebar offset + */ +function setSidebarOffset(el, value) { + el.style.top = value + "px"; +} +/** + * Reset sidebar offset + * + * @param el - Sidebar element + */ +function resetSidebarOffset(el) { + el.style.top = ""; +} +/* ------------------------------------------------------------------------- */ +/** + * Set sidebar height + * + * @param el - Sidebar element + * @param value - Sidebar height + */ +function setSidebarHeight(el, value) { + el.style.height = value + "px"; +} +/** + * Reset sidebar height + * + * @param el - Sidebar element + */ +function resetSidebarHeight(el) { + el.style.height = ""; +} +/* ------------------------------------------------------------------------- */ +/** + * Set sidebar lock + * + * @param el - Sidebar element + * @param value - Whether the sidebar is locked + */ +function setSidebarLock(el, value) { + el.setAttribute("data-md-state", value ? "lock" : ""); +} +/** + * Reset sidebar lock + * + * @param el - Sidebar element + */ +function resetSidebarLock(el) { + el.removeAttribute("data-md-state"); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/search/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/actions/search/index.ts ***! + \********************************************************/ +/*! exports provided: setSearchResultMeta, resetSearchResultMeta, addToSearchResultList, resetSearchResultList */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _result__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./result */ "./src/assets/javascripts/actions/search/result/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setSearchResultMeta", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["setSearchResultMeta"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultMeta", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["resetSearchResultMeta"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "addToSearchResultList", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["addToSearchResultList"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultList", function() { return _result__WEBPACK_IMPORTED_MODULE_0__["resetSearchResultList"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/***/ }), + +/***/ "./src/assets/javascripts/actions/search/result/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/actions/search/result/index.ts ***! + \***************************************************************/ +/*! exports provided: setSearchResultMeta, resetSearchResultMeta, addToSearchResultList, resetSearchResultList */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setSearchResultMeta", function() { return setSearchResultMeta; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultMeta", function() { return resetSearchResultMeta; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "addToSearchResultList", function() { return addToSearchResultList; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "resetSearchResultList", function() { return resetSearchResultList; }); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set number of search results + * + * @param el - Search result metadata element + * @param value - Number of results + */ +function setSearchResultMeta(el, value) { + switch (value) { + /* No results */ + case 0: + el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.none"); + break; + /* One result */ + case 1: + el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.one"); + break; + /* Multiple result */ + default: + el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.other", value.toString()); + } +} +/** + * Reset number of search results + * + * @param el - Search result metadata element + */ +function resetSearchResultMeta(el) { + el.textContent = Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("search.result.placeholder"); +} +/* ------------------------------------------------------------------------- */ +/** + * Add an element to the search result list + * + * @param el - Search result list element + * @param child - Search result element + */ +function addToSearchResultList(el, child) { + el.appendChild(child); +} +/** + * Reset search result list + * + * @param el - Search result list element + */ +function resetSearchResultList(el) { + el.innerHTML = ""; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/_/index.ts": +/*!******************************************************!*\ + !*** ./src/assets/javascripts/components/_/index.ts ***! + \******************************************************/ +/*! exports provided: setupComponents, useComponent */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupComponents", function() { return setupComponents; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useComponent", function() { return useComponent; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * Component map observable + */ +var components$; +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Setup bindings to components with given names + * + * This function will maintain bindings to the elements identified by the given + * names in-between document switches and update the elements in-place. + * + * @param names - Component names + * @param options - Options + */ +function setupComponents(names, _a) { + var document$ = _a.document$; + components$ = document$ + .pipe( + /* Build component map */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (document) { return names.reduce(function (components, name) { + var _a; + var el = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[data-md-component=" + name + "]", document); + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({}, components), typeof el !== "undefined" ? (_a = {}, _a[name] = el, _a) : {}); + }, {}); }), + /* Re-compute component map on document switch */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["scan"])(function (prev, next) { + var e_1, _a; + try { + for (var names_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(names), names_1_1 = names_1.next(); !names_1_1.done; names_1_1 = names_1.next()) { + var name = names_1_1.value; + switch (name) { + /* Top-level components: update */ + case "header-title": + case "container": + if (name in prev && typeof prev[name] !== "undefined") { + prev[name].replaceWith(next[name]); + prev[name] = next[name]; + } + break; + /* All other components: rebind */ + default: + if (typeof next[name] !== "undefined") + prev[name] = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[data-md-component=" + name + "]"); + else + delete prev[name]; + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (names_1_1 && !names_1_1.done && (_a = names_1.return)) _a.call(names_1); + } + finally { if (e_1) throw e_1.error; } + } + return prev; + }), + /* Convert to hot observable */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); +} +function useComponent(name) { + return components$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (components) { return (typeof components[name] !== "undefined" + ? Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["of"])(components[name]) + : rxjs__WEBPACK_IMPORTED_MODULE_1__["EMPTY"]); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/header/_/index.ts": +/*!*************************************************************!*\ + !*** ./src/assets/javascripts/components/header/_/index.ts ***! + \*************************************************************/ +/*! exports provided: mountHeader */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountHeader", function() { return mountHeader; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount header from source observable + * + * @param options - Options + * + * @return Operator function + */ +function mountHeader(_a) { + var viewport$ = _a.viewport$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchHeader"])(el, { viewport$: viewport$ }); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/header/index.ts": +/*!***********************************************************!*\ + !*** ./src/assets/javascripts/components/header/index.ts ***! + \***********************************************************/ +/*! exports provided: mountHeader, mountHeaderTitle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/components/header/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeader", function() { return ___WEBPACK_IMPORTED_MODULE_0__["mountHeader"]; }); + +/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./title */ "./src/assets/javascripts/components/header/title/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_1__["mountHeaderTitle"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/***/ }), + +/***/ "./src/assets/javascripts/components/header/title/index.ts": +/*!*****************************************************************!*\ + !*** ./src/assets/javascripts/components/header/title/index.ts ***! + \*****************************************************************/ +/*! exports provided: mountHeaderTitle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountHeaderTitle", function() { return mountHeaderTitle; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../_ */ "./src/assets/javascripts/components/_/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount header title from source observable + * + * @param options - Options + * + * @return Operator function + */ +function mountHeaderTitle(_a) { + var header$ = _a.header$, viewport$ = _a.viewport$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(___WEBPACK_IMPORTED_MODULE_3__["useComponent"])("main") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (main) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["getElement"])("h1, h2, h3, h4, h5, h6", main); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (hx) { return typeof hx !== "undefined"; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (hx) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchViewportAt"])(hx, { header$: header$, viewport$: viewport$ }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { + var y = _a.offset.y; + return y >= hx.offsetHeight; + }), Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHeaderTitle"])(el)); })); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/hero/index.ts": +/*!*********************************************************!*\ + !*** ./src/assets/javascripts/components/hero/index.ts ***! + \*********************************************************/ +/*! exports provided: mountHero */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountHero", function() { return mountHero; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount hero from source observable + * + * @param options - Options + * + * @return Operator function + */ +function mountHero(_a) { + var header$ = _a.header$, viewport$ = _a.viewport$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchViewportAt"])(el, { header$: header$, viewport$: viewport$ }) + .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHideable"])(el, 20), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (hidden) { return ({ hidden: hidden }); })); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/index.ts": +/*!****************************************************!*\ + !*** ./src/assets/javascripts/components/index.ts ***! + \****************************************************/ +/*! exports provided: setupComponents, useComponent, mountHero, mountMain, mountNavigation, mountTabs, mountTableOfContents, mountHeader, mountHeaderTitle, mountSearch, mountSearchQuery, mountSearchReset, mountSearchResult */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/components/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupComponents", function() { return ___WEBPACK_IMPORTED_MODULE_0__["setupComponents"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "useComponent", function() { return ___WEBPACK_IMPORTED_MODULE_0__["useComponent"]; }); + +/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./header */ "./src/assets/javascripts/components/header/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeader", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["mountHeader"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_1__["mountHeaderTitle"]; }); + +/* harmony import */ var _hero__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hero */ "./src/assets/javascripts/components/hero/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountHero", function() { return _hero__WEBPACK_IMPORTED_MODULE_2__["mountHero"]; }); + +/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./main */ "./src/assets/javascripts/components/main/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountMain", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["mountMain"]; }); + +/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./navigation */ "./src/assets/javascripts/components/navigation/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountNavigation", function() { return _navigation__WEBPACK_IMPORTED_MODULE_4__["mountNavigation"]; }); + +/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/components/search/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearch", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearch"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchQuery", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearchQuery"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchReset", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearchReset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchResult", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["mountSearchResult"]; }); + +/* harmony import */ var _tabs__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./tabs */ "./src/assets/javascripts/components/tabs/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountTabs", function() { return _tabs__WEBPACK_IMPORTED_MODULE_6__["mountTabs"]; }); + +/* harmony import */ var _toc__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./toc */ "./src/assets/javascripts/components/toc/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountTableOfContents", function() { return _toc__WEBPACK_IMPORTED_MODULE_7__["mountTableOfContents"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/components/main/index.ts": +/*!*********************************************************!*\ + !*** ./src/assets/javascripts/components/main/index.ts ***! + \*********************************************************/ +/*! exports provided: mountMain */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountMain", function() { return mountMain; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../_ */ "./src/assets/javascripts/components/_/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount main area from source observable + * + * The header must be connected to the main area observable outside of the + * operator function, as the header will persist in-between document switches + * while the main area is replaced. However, the header observable must be + * passed to this function, so we connect both via a long-living subject. + * + * @param options - Options + * + * @return Operator function + */ +function mountMain(_a) { + var header$ = _a.header$, viewport$ = _a.viewport$; + var main$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__["Subject"](); + /* Connect to main area observable via long-living subject */ + Object(___WEBPACK_IMPORTED_MODULE_3__["useComponent"])("header") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (header) { return main$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["distinctUntilKeyChanged"])("active"), Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHeaderShadow"])(header)); })) + .subscribe(); + /* Return operator */ + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchMain"])(el, { header$: header$, viewport$: viewport$ }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (main) { return main$.next(main); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/navigation/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/components/navigation/index.ts ***! + \***************************************************************/ +/*! exports provided: mountNavigation */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountNavigation", function() { return mountNavigation; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount navigation from source observable + * + * @param options - Options + * + * @return Operator function + */ +function mountNavigation(_a) { + var header$ = _a.header$, main$ = _a.main$, viewport$ = _a.viewport$, screen$ = _a.screen$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return screen$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (screen) { + /* [screen +]: Mount navigation in sidebar */ + if (screen) { + return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchSidebar"])(el, { main$: main$, viewport$: viewport$ }) + .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintSidebar"])(el, { header$: header$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (sidebar) { return ({ sidebar: sidebar }); })); + /* [screen -]: Mount navigation in drawer */ + } + else { + var els = Object(observables__WEBPACK_IMPORTED_MODULE_2__["getElements"])("nav", el); + return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchNavigationLayer"])(els) + .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintNavigationLayer"])(els), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (layer) { return ({ layer: layer }); })); + } + })); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/search/_/index.ts": +/*!*************************************************************!*\ + !*** ./src/assets/javascripts/components/search/_/index.ts ***! + \*************************************************************/ +/*! exports provided: mountSearch */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearch", function() { return mountSearch; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount search from source observable + * + * @param options - Options + * + * @return Operator function + */ +function mountSearch(_a) { + var query$ = _a.query$, reset$ = _a.reset$, result$ = _a.result$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function () { return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([query$, result$, reset$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), query = _b[0], result = _b[1]; + return ({ query: query, result: result }); + })); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/search/index.ts": +/*!***********************************************************!*\ + !*** ./src/assets/javascripts/components/search/index.ts ***! + \***********************************************************/ +/*! exports provided: mountSearch, mountSearchQuery, mountSearchReset, mountSearchResult */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/components/search/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearch", function() { return ___WEBPACK_IMPORTED_MODULE_0__["mountSearch"]; }); + +/* harmony import */ var _query__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./query */ "./src/assets/javascripts/components/search/query/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchQuery", function() { return _query__WEBPACK_IMPORTED_MODULE_1__["mountSearchQuery"]; }); + +/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reset */ "./src/assets/javascripts/components/search/reset/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchReset", function() { return _reset__WEBPACK_IMPORTED_MODULE_2__["mountSearchReset"]; }); + +/* harmony import */ var _result__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./result */ "./src/assets/javascripts/components/search/result/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "mountSearchResult", function() { return _result__WEBPACK_IMPORTED_MODULE_3__["mountSearchResult"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/components/search/query/index.ts": +/*!*****************************************************************!*\ + !*** ./src/assets/javascripts/components/search/query/index.ts ***! + \*****************************************************************/ +/*! exports provided: mountSearchQuery */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearchQuery", function() { return mountSearchQuery; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var workers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! workers */ "./src/assets/javascripts/workers/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount search query from source observable + * + * @param handler - Worker handler + * @param options - Options + * + * @return Operator function + */ +function mountSearchQuery(_a, options) { + var tx$ = _a.tx$; + if (options === void 0) { options = {}; } + var toggle$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["useToggle"])("search"); + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (el) { + var query$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchSearchQuery"])(el, options); + /* Subscribe worker to search query */ + query$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("value"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var value = _a.value; + return ({ + type: workers__WEBPACK_IMPORTED_MODULE_4__["SearchMessageType"].QUERY, + data: value + }); + })) + .subscribe(tx$.next.bind(tx$)); + /* Toggle search on focus */ + query$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("focus"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(toggle$)) + .subscribe(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), focus = _b[0].focus, toggle = _b[1]; + if (focus) + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setToggle"])(toggle, focus); + }); + /* Return search query */ + return query$; + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/search/reset/index.ts": +/*!*****************************************************************!*\ + !*** ./src/assets/javascripts/components/search/reset/index.ts ***! + \*****************************************************************/ +/*! exports provided: mountSearchReset */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearchReset", function() { return mountSearchReset; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../_ */ "./src/assets/javascripts/components/_/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount search reset from source observable + * + * @return Operator function + */ +function mountSearchReset() { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchSearchReset"])(el) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMapTo"])(Object(___WEBPACK_IMPORTED_MODULE_3__["useComponent"])("search-query")), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(observables__WEBPACK_IMPORTED_MODULE_2__["setElementFocus"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(undefined)); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(undefined)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/search/result/index.ts": +/*!******************************************************************!*\ + !*** ./src/assets/javascripts/components/search/result/index.ts ***! + \******************************************************************/ +/*! exports provided: mountSearchResult */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountSearchResult", function() { return mountSearchResult; }); +/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var workers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! workers */ "./src/assets/javascripts/workers/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount search result from source observable + * + * @param handler - Worker handler + * @param options - Options + * + * @return Operator function + */ +function mountSearchResult(_a, _b) { + var rx$ = _a.rx$; + var query$ = _b.query$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (el) { + var container = el.parentElement; + /* Compute whether there are more search results to fetch */ + var fetch$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchElementOffset"])(container) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var y = _a.y; + return y >= container.scrollHeight - container.offsetHeight - 16; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])(), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["filter"])(ramda__WEBPACK_IMPORTED_MODULE_0__["identity"])); + /* Paint search results */ + return rx$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["filter"])(workers__WEBPACK_IMPORTED_MODULE_4__["isSearchResultMessage"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("data"), Object(observables__WEBPACK_IMPORTED_MODULE_3__["paintSearchResult"])(el, { query$: query$, fetch$: fetch$ })); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/tabs/index.ts": +/*!*********************************************************!*\ + !*** ./src/assets/javascripts/components/tabs/index.ts ***! + \*********************************************************/ +/*! exports provided: mountTabs */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountTabs", function() { return mountTabs; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount tabs from source observable + * + * @param options - Options + * + * @return Operator function + */ +function mountTabs(_a) { + var header$ = _a.header$, viewport$ = _a.viewport$, screen$ = _a.screen$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (el) { return screen$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (screen) { + /* Mount tabs above screen breakpoint */ + if (screen) { + return Object(observables__WEBPACK_IMPORTED_MODULE_2__["watchViewportAt"])(el, { header$: header$, viewport$: viewport$ }) + .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_2__["paintHideable"])(el, 10), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (hidden) { return ({ hidden: hidden }); })); + /* Mount tabs below screen breakpoint */ + } + else { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])({ hidden: true }); + } + })); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/components/toc/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/components/toc/index.ts ***! + \********************************************************/ +/*! exports provided: mountTableOfContents */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "mountTableOfContents", function() { return mountTableOfContents; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Mount table of contents from source observable + * + * @param options - Options + * + * @return Operator function + */ +function mountTableOfContents(_a) { + var header$ = _a.header$, main$ = _a.main$, viewport$ = _a.viewport$, tablet$ = _a.tablet$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (el) { return tablet$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (tablet) { + /* [tablet +]: Mount table of contents in sidebar */ + if (tablet) { + var els = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])(".md-nav__link", el); + /* Watch and paint sidebar */ + var sidebar$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchSidebar"])(el, { main$: main$, viewport$: viewport$ }) + .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_3__["paintSidebar"])(el, { header$: header$ })); + /* Watch and paint anchor list (scroll spy) */ + var anchors$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchAnchorList"])(els, { header$: header$, viewport$: viewport$ }) + .pipe(Object(observables__WEBPACK_IMPORTED_MODULE_3__["paintAnchorList"])(els)); + /* Combine into a single hot observable */ + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([sidebar$, anchors$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), sidebar = _b[0], anchors = _b[1]; + return ({ sidebar: sidebar, anchors: anchors }); + })); + /* [tablet -]: Unmount table of contents */ + } + else { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["of"])({}); + } + })); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/index.ts": +/*!*****************************************!*\ + !*** ./src/assets/javascripts/index.ts ***! + \*****************************************/ +/*! exports provided: initialize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "initialize", function() { return initialize; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _stylesheets_main_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../stylesheets/main.scss */ "./src/assets/stylesheets/main.scss"); +/* harmony import */ var _stylesheets_palette_scss__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../stylesheets/palette.scss */ "./src/assets/stylesheets/palette.scss"); +/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var _observables__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var _workers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./workers */ "./src/assets/javascripts/workers/index.ts"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* harmony import */ var components__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components */ "./src/assets/javascripts/components/index.ts"); +/* harmony import */ var _integrations_clipboard__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./integrations/clipboard */ "./src/assets/javascripts/integrations/clipboard/index.ts"); +/* harmony import */ var _integrations_keyboard__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./integrations/keyboard */ "./src/assets/javascripts/integrations/keyboard/index.ts"); +/* harmony import */ var patches__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! patches */ "./src/assets/javascripts/patches/index.ts"); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* harmony import */ var integrations_dialog__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! integrations/dialog */ "./src/assets/javascripts/integrations/dialog/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +// TODO: remove this after we finished refactoring +// tslint:disable + + + + + + + + + + + + + + +/* ------------------------------------------------------------------------- */ +document.documentElement.classList.remove("no-js"); +document.documentElement.classList.add("js"); +/* Test for iOS */ +if (navigator.userAgent.match(/(iPad|iPhone|iPod)/g)) + document.documentElement.classList.add("ios"); +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Initialize Material for MkDocs + * + * @param config - Configuration + */ +function initialize(config) { + var e_1, _a, e_2, _b; + if (!Object(utilities__WEBPACK_IMPORTED_MODULE_13__["isConfig"])(config)) + throw new SyntaxError("Invalid configuration: " + JSON.stringify(config)); + /* Setup user interface observables */ + var location$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchLocation"])(); + var hash$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchLocationHash"])(); + var viewport$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchViewport"])(); + var tablet$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchMedia"])("(min-width: 960px)"); + var screen$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchMedia"])("(min-width: 1220px)"); + /* Setup document observable */ + var document$ = config.feature.instant + ? Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchDocument"])({ location$: location$ }) + : Object(_observables__WEBPACK_IMPORTED_MODULE_6__["watchDocument"])(); + /* Setup toggle bindings */ + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setupToggles"])([ + "drawer", + "search" /* Toggle for search */ + ], { document$: document$ }); + /* Setup component bindings */ + Object(components__WEBPACK_IMPORTED_MODULE_9__["setupComponents"])([ + "container", + "header", + "header-title", + "hero", + "main", + "navigation", + "search", + "search-query", + "search-reset", + "search-result", + "tabs", + "toc" /* Table of contents */ + ], { document$: document$ }); + /* ----------------------------------------------------------------------- */ + var worker = Object(_workers__WEBPACK_IMPORTED_MODULE_7__["setupSearchWorker"])(config.worker.search, { + base: config.base, location$: location$ + }); + /* ----------------------------------------------------------------------- */ + /* Create header observable */ + var header$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("header") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountHeader"])({ viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + var main$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("main") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountMain"])({ header$: header$, viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + /* ----------------------------------------------------------------------- */ + /* Mount search query */ + var query$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search-query") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearchQuery"])(worker), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1) // TODO: this must be put onto EVERY component! + ); + /* Mount search reset */ + var reset$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search-reset") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearchReset"])(), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + /* Mount search result */ + var result$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search-result") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearchResult"])(worker, { query$: query$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + /* ----------------------------------------------------------------------- */ + var search$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("search") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountSearch"])({ query$: query$, reset$: reset$, result$: result$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + /* ----------------------------------------------------------------------- */ + var navigation$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("navigation") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountNavigation"])({ header$: header$, main$: main$, viewport$: viewport$, screen$: screen$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1) // shareReplay because there might be late subscribers + ); + var toc$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("toc") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountTableOfContents"])({ header$: header$, main$: main$, viewport$: viewport$, tablet$: tablet$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + var tabs$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("tabs") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountTabs"])({ header$: header$, viewport$: viewport$, screen$: screen$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + var hero$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("hero") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountHero"])({ header$: header$, viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + var title$ = Object(components__WEBPACK_IMPORTED_MODULE_9__["useComponent"])("header-title") + .pipe(Object(components__WEBPACK_IMPORTED_MODULE_9__["mountHeaderTitle"])({ header$: header$, viewport$: viewport$ }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["shareReplay"])(1)); + /* ----------------------------------------------------------------------- */ + var keyboard$ = Object(_integrations_keyboard__WEBPACK_IMPORTED_MODULE_11__["setupKeyboard"])(); + Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchDetails"])({ document$: document$, hash$: hash$ }); + Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchScripts"])({ document$: document$ }); + Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchSource"])({ document$: document$ }); + Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchTables"])({ document$: document$ }); + /* Force 1px scroll offset to trigger overflow scrolling */ + Object(patches__WEBPACK_IMPORTED_MODULE_12__["patchScrollfix"])({ document$: document$ }); + /* Setup clipboard and dialog */ + var dialog$ = Object(integrations_dialog__WEBPACK_IMPORTED_MODULE_14__["setupDialog"])(); + var clipboard$ = Object(_integrations_clipboard__WEBPACK_IMPORTED_MODULE_10__["setupClipboard"])({ document$: document$, dialog$: dialog$ }); + /* ----------------------------------------------------------------------- */ + // Close drawer and search on hash change + // put into navigation... + // TODO: replace with popstate? + hash$.subscribe(function () { + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("drawer").subscribe(function (el) { + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setToggle"])(el, false); + }); + }); + // put into search... + hash$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function (hash) { return Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("search") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (x) { return x.checked; }), // only active + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(function (toggle) { return Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setToggle"])(toggle, false); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["delay"])(125), // ensure that it runs after the body scroll reset... + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["mapTo"])(hash)); })) + .subscribe(function (hash) { + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElement"])("[id=\"" + hash + "\"]").scrollIntoView(); + }); + // Scroll lock // document -> document$ => { body } !? + // put into search... + var toggle$ = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("search"); + Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["combineLatest"])([ + toggle$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(_observables__WEBPACK_IMPORTED_MODULE_6__["watchToggle"])), + tablet$, + ]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["withLatestFrom"])(viewport$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_b[0], 2), toggle = _c[0], tablet = _c[1], y = _b[1].offset.y; + var active = toggle && !tablet; + return document$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["delay"])(active ? 400 : 100), // TOOD: directly combine this with the hash! + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_4__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["tap"])(function (_a) { + var body = _a.body; + return active + ? Object(actions__WEBPACK_IMPORTED_MODULE_8__["setScrollLock"])(body, y) + : Object(actions__WEBPACK_IMPORTED_MODULE_8__["resetScrollLock"])(body); + })); + })) + .subscribe(); + function isInternalLink(el) { + return el.host === location.host && ( + // TODO: Improve regex + !el.pathname || el.pathname === "/" || /\/[\w-]+(?:\/?|\.html)$/i.test(el.pathname) // TODO: provide some test cases + ); + } + // on same page! + function isAnchorLink(el) { + return el.pathname === location.pathname && el.hash.length > 0; + } + function compareState(_a, _b) { + var a = _a.url; + var b = _b.url; + return a.href === b.href; + } + // instant loading + if (config.feature.instant) { + /* Disable automatic scroll restoration, as it doesn't work nicely */ + if ("scrollRestoration" in history) + history.scrollRestoration = "manual"; + try { + /* Resolve relative links for stability */ + for (var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])([ + "link[rel=\"shortcut icon\"]", + "link[rel=\"stylesheet\"]" + ]), _d = _c.next(); !_d.done; _d = _c.next()) { + var selector = _d.value; + try { + for (var _e = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElements"])(selector))), _f = _e.next(); !_f.done; _f = _e.next()) { + var el = _f.value; + el.href = el.href; + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_f && !_f.done && (_b = _e.return)) _b.call(_e); + } + finally { if (e_2) throw e_2.error; } + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) _a.call(_c); + } + finally { if (e_1) throw e_1.error; } + } + /* Intercept internal link clicks */ + var internal$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["fromEvent"])(document.body, "click") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (ev) { return !(ev.metaKey || ev.ctrlKey); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["switchMap"])(function (ev) { + if (ev.target instanceof HTMLElement) { + var el = ev.target.closest("a"); + if (el && isInternalLink(el)) { + if (!isAnchorLink(el)) + ev.preventDefault(); + return Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["of"])(el.href); + } + } + return rxjs__WEBPACK_IMPORTED_MODULE_4__["NEVER"]; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["distinctUntilChanged"])(), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["map"])(function (href) { return ({ url: new URL(href) }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["share"])()); + /* Intercept internal links to dispatch */ + var dispatch$ = internal$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (_a) { + var url = _a.url; + return !isAnchorLink(url); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["share"])()); + /* Intercept popstate events (history back and forward) */ + var popstate$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["fromEvent"])(window, "popstate") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (ev) { return ev.state !== null; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["map"])(function (ev) { return ({ + url: new URL(location.href), + data: ev.state + }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["share"])()); + /* Emit location change */ + Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"])(dispatch$, popstate$) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["pluck"])("url")) + .subscribe(location$); + /* Add dispatched link to history */ + internal$ + .pipe( + // TODO: must start with the current location and ignore the first emission + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["distinctUntilChanged"])(compareState), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (_a) { + var url = _a.url; + return !isAnchorLink(url); + })) + .subscribe(function (_a) { + var url = _a.url; + // console.log(`History.Push ${url}`) + history.pushState({}, "", url.toString()); + }); + // special case + Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"])(internal$, popstate$) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["bufferCount"])(2, 1)) + .subscribe(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), prev = _b[0], next = _b[1]; + console.log("<- " + prev.url); + console.log("-> " + next.url); + if (prev.url.href.match(next.url.href) !== null && + isAnchorLink(prev.url)) { + // dialog$.next(`Potential Candidate: ${JSON.stringify(next.data)}`, ) // awesome debugging. + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setViewportOffset"])(next.data || { y: 0 }); + } + // console.log("Potential Candidate") + }); + // .subscribe((x) => console.log(x[0].url.toString(), x[1].url.toString())) + // filter(([prev, next]) => { + // return prev.url.href.match(next.url.href) !== null + // && isAnchorLink(prev.url) + // }), + // map(([, next]) => next) + // // distinctUntilChanged(compareLocationChange), + // // filter(({ url }) => !isAnchorLink(url)) + // ) + // .subscribe(({ url }) => { + // console.log(`Restore ${url}`) + // }) + /* Persist viewport offset in history before hash change */ + viewport$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["debounceTime"])(250), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["distinctUntilKeyChanged"])("offset")) + .subscribe(function (_a) { + var offset = _a.offset; + // console.log("Update", offset) + history.replaceState(offset, ""); + }); + /* */ + Object(rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"])(dispatch$, popstate$) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["sample"])(document$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["withLatestFrom"])(document$)) + .subscribe(function (_a) { + var e_3, _b; + var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), _d = _c[0], url = _d.url, data = _d.data, _e = _c[1], title = _e.title, head = _e.head; + console.log("Done", url.href, data); + // trigger custom event + document.dispatchEvent(new CustomEvent("DOMContentSwitch")); + // setDocumentTitle + document.title = title; + try { + // replace meta tags + for (var _f = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])([ + "link[rel=\"canonical\"]", + "meta[name=\"author\"]", + "meta[name=\"description\"]" + ]), _g = _f.next(); !_g.done; _g = _f.next()) { + var selector = _g.value; + var next = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElement"])(selector, head); + var prev = Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElement"])(selector, document.head); + if (typeof next !== "undefined" && + typeof prev !== "undefined") { + prev.replaceWith(next); + } + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (_g && !_g.done && (_b = _f.return)) _b.call(_f); + } + finally { if (e_3) throw e_3.error; } + } + // search drawer close + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["useToggle"])("search").subscribe(function (el) { + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setToggle"])(el, false); + }); + // // TODO: this doesnt work as expected + if (url.hash) { + console.log("hash data?", data); + var a = document.createElement("a"); + a.href = url.hash; + a.click(); + } + else { + Object(_observables__WEBPACK_IMPORTED_MODULE_6__["setViewportOffset"])(data || { y: 0 }); // push state! + } + }); + // internal$.subscribe(({ url }) => { + // console.log(`Internal ${url}`) + // }) + // dispatch$.subscribe(({ url }) => { + // console.log(`Dispatch ${url}`) + // }) + popstate$.subscribe(function (_a) { + var url = _a.url; + console.log("Popstate " + url.href, url); + }); + } + /* ----------------------------------------------------------------------- */ + // if we use a single tab outside of search, unhide all permalinks. + // TODO: experimental. necessary!? + keyboard$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["filter"])(function (key) { return key.mode === "global" && ["Tab"].includes(key.type); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_5__["take"])(1)) + .subscribe(function () { + var e_4, _a; + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(_observables__WEBPACK_IMPORTED_MODULE_6__["getElements"])(".headerlink")), _c = _b.next(); !_c.done; _c = _b.next()) { + var link = _c.value; + link.style.visibility = "visible"; + } + } + catch (e_4_1) { e_4 = { error: e_4_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_4) throw e_4.error; } + } + }); + /* ----------------------------------------------------------------------- */ + var state = { + search$: search$, + clipboard$: clipboard$, + location$: location$, + hash$: hash$, + keyboard$: keyboard$, + dialog$: dialog$, + main$: main$, + navigation$: navigation$, + toc$: toc$, + tabs$: tabs$, + hero$: hero$, + title$: title$ // TODO: header title + }; + var rest = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__rest"])(state, []); + rxjs__WEBPACK_IMPORTED_MODULE_4__["merge"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(Object(ramda__WEBPACK_IMPORTED_MODULE_3__["values"])(rest))).subscribe(); // potential memleak <-- use takeUntil + return { + // agent, + state: state + }; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/integrations/clipboard/index.ts": +/*!****************************************************************!*\ + !*** ./src/assets/javascripts/integrations/clipboard/index.ts ***! + \****************************************************************/ +/*! exports provided: setupClipboard */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupClipboard", function() { return setupClipboard; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var clipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! clipboard */ "./node_modules/clipboard/dist/clipboard.js"); +/* harmony import */ var clipboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(clipboard__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Setup clipboard + * + * This function implements the Clipboard.js integration and injects a button + * into all code blocks when the document changes. + * + * @param options - Options + * + * @return Clipboard observable + */ +function setupClipboard(_a) { + var document$ = _a.document$, dialog$ = _a.dialog$; + if (!clipboard__WEBPACK_IMPORTED_MODULE_1__["isSupported"]()) + return rxjs__WEBPACK_IMPORTED_MODULE_2__["NEVER"]; + /* Inject 'copy-to-clipboard' buttons */ + document$.subscribe(function () { + var e_1, _a; + var blocks = Object(observables__WEBPACK_IMPORTED_MODULE_4__["getElements"])("pre > code"); + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(blocks.entries()), _c = _b.next(); !_c.done; _c = _b.next()) { + var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_c.value, 2), index = _d[0], block = _d[1]; + var parent = block.parentElement; + parent.id = "__code_" + index; + parent.insertBefore(Object(templates__WEBPACK_IMPORTED_MODULE_5__["renderClipboard"])(parent.id), block); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + }); + /* Initialize and setup clipboard */ + var clipboard$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["fromEventPattern"])(function (next) { + new clipboard__WEBPACK_IMPORTED_MODULE_1__(".md-clipboard").on("success", next); + }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["share"])()); + /* Display notification for clipboard event */ + clipboard$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (ev) { return ev.clearSelection(); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["mapTo"])(Object(utilities__WEBPACK_IMPORTED_MODULE_6__["translate"])("clipboard.copied"))) + .subscribe(dialog$); + /* Return clipboard */ + return clipboard$; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/integrations/dialog/index.ts": +/*!*************************************************************!*\ + !*** ./src/assets/javascripts/integrations/dialog/index.ts ***! + \*************************************************************/ +/*! exports provided: setupDialog */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupDialog", function() { return setupDialog; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Setup dialog + * + * @param options - Options + * + * @return Dialog observable + */ +function setupDialog(_a) { + var duration = (_a === void 0 ? {} : _a).duration; + var dialog$ = new rxjs__WEBPACK_IMPORTED_MODULE_0__["Subject"](); + /* Create dialog */ + var dialog = document.createElement("div"); // TODO: improve scoping + dialog.classList.add("md-dialog", "md-typeset"); + /* Display dialog */ + dialog$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function (text) { return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])(document.body) // useComponent("container") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (container) { return container.appendChild(dialog); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["delay"])(1), // Strangley it doesnt work when we push things to the new animation frame... + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (el) { + el.innerHTML = text; + el.setAttribute("data-md-state", "open"); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["delay"])(duration || 2000), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (el) { return el.removeAttribute("data-md-state"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["delay"])(400), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (el) { + el.innerHTML = ""; + el.remove(); + })); })) + .subscribe(); + /* Return dialog subject */ + return dialog$; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/integrations/keyboard/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/integrations/keyboard/index.ts ***! + \***************************************************************/ +/*! exports provided: setupKeyboard */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupKeyboard", function() { return setupKeyboard; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components */ "./src/assets/javascripts/components/index.ts"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Setup keyboard + * + * This function will setup the keyboard handlers and ensure that keys are + * correctly propagated. Currently there are two modes: + * + * - `global`: This mode is active when the search is closed. It is intended + * to assign hotkeys to specific functions of the site. Currently the search, + * previous and next page can be triggered. + * + * - `search`: This mode is active when the search is open. It maps certain + * navigational keys to offer search results that can be entirely navigated + * through keyboard input. + * + * The keyboard observable is returned and can be used to monitor the keyboard + * in order toassign further hotkeys to custom functions. + * + * @return Keyboard observable + */ +function setupKeyboard() { + var toggle$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["useToggle"])("search"); + var search$ = toggle$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(observables__WEBPACK_IMPORTED_MODULE_3__["watchToggle"])); + /* Setup keyboard and determine mode */ + var keyboard$ = Object(observables__WEBPACK_IMPORTED_MODULE_3__["watchKeyboard"])() + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(search$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), key = _b[0], toggle = _b[1]; + return (Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({ mode: toggle ? "search" : "global" }, key)); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); + /* Setup search keyboard handlers */ + keyboard$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (_a) { + var mode = _a.mode; + return mode === "search"; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(toggle$, Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("search-query"), Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("search-result"))) + .subscribe(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 4), key = _b[0], toggle = _b[1], query = _b[2], result = _b[3]; + var active = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getActiveElement"])(); + switch (key.type) { + /* Enter: prevent form submission */ + case "Enter": + if (active === query) + key.claim(); + break; + /* Escape or Tab: close search */ + case "Escape": + case "Tab": + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setToggle"])(toggle, false); + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query, false); + break; + /* Vertical arrows: select previous or next search result */ + case "ArrowUp": + case "ArrowDown": + if (typeof active === "undefined") { + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query); + } + else { + var els = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([query], Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])("[href]", result)); + var i = Math.max(0, (Math.max(0, els.indexOf(active)) + els.length + (key.type === "ArrowUp" ? -1 : +1)) % els.length); + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(els[i]); + } + /* Prevent scrolling of page */ + key.claim(); + break; + /* All other keys: hand to search query */ + default: + if (query !== Object(observables__WEBPACK_IMPORTED_MODULE_3__["getActiveElement"])()) + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query); + } + }); + /* Setup global keyboard handlers */ + keyboard$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (_a) { + var mode = _a.mode; + if (mode === "global") { + var active = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getActiveElement"])(); + if (typeof active !== "undefined") + return !Object(observables__WEBPACK_IMPORTED_MODULE_3__["isSusceptibleToKeyboard"])(active); + } + return false; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("search-query"))) + .subscribe(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), key = _b[0], query = _b[1]; + switch (key.type) { + /* Open search and select query */ + case "f": + case "s": + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementFocus"])(query); + Object(observables__WEBPACK_IMPORTED_MODULE_3__["setElementSelection"])(query); + key.claim(); + break; + /* Go to previous page */ + case "p": + case ",": + var prev = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[href][rel=prev]"); + if (typeof prev !== "undefined") + prev.click(); + break; + /* Go to next page */ + case "n": + case ".": + var next = Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[href][rel=next]"); + if (typeof next !== "undefined") + next.click(); + break; + } + }); + /* Return keyboard */ + return keyboard$; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/document/_/index.ts": +/*!**********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/document/_/index.ts ***! + \**********************************************************************/ +/*! exports provided: watchDocument */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return watchDocument; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var _switch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../switch */ "./src/assets/javascripts/observables/agent/document/switch/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch document + * + * If the location observable is passed, instant loading will be enabled which + * means that new values will be emitted every time the location changes. + * + * @return Document observable + */ +function watchDocument(_a) { + var location$ = (_a === void 0 ? {} : _a).location$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(document, "DOMContentLoaded") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(document)), typeof location$ !== "undefined" + ? Object(_switch__WEBPACK_IMPORTED_MODULE_2__["watchDocumentSwitch"])({ location$: location$ }) + : rxjs__WEBPACK_IMPORTED_MODULE_0__["NEVER"]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/document/index.ts": +/*!********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/document/index.ts ***! + \********************************************************************/ +/*! exports provided: watchDocument, watchDocumentSwitch */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/document/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchDocument"]; }); + +/* harmony import */ var _switch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./switch */ "./src/assets/javascripts/observables/agent/document/switch/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return _switch__WEBPACK_IMPORTED_MODULE_1__["watchDocumentSwitch"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/document/switch/index.ts": +/*!***************************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/document/switch/index.ts ***! + \***************************************************************************/ +/*! exports provided: watchDocumentSwitch */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return watchDocumentSwitch; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../location */ "./src/assets/javascripts/observables/agent/location/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch document switch + * + * This function returns an observables that fetches a document if the provided + * location observable emits a new value (i.e. URL). If the emitted URL points + * to the same page, the request is effectively ignored (i.e. when only the + * fragment identifier changes). + * + * In case the request fails, the location change is dispatched regularly. + * + * @param options - Options + * + * @return Document switch observable + */ +function watchDocumentSwitch(_a) { + var location$ = _a.location$; + return location$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("pathname"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["skip"])(1), + /* Fetch document */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (url) { return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__["ajax"])({ + url: url.href, + responseType: "document", + withCredentials: true + }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("response"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["catchError"])(function () { + Object(_location__WEBPACK_IMPORTED_MODULE_3__["setLocation"])(url); + return rxjs__WEBPACK_IMPORTED_MODULE_0__["NEVER"]; + })); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["share"])()); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/element/_/index.ts": +/*!*********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/element/_/index.ts ***! + \*********************************************************************/ +/*! exports provided: getElement, getElementOrThrow, getActiveElement, getElements */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return getElement; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return getElementOrThrow; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return getActiveElement; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return getElements; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Retrieve an element matching the query selector + * + * @template T - Element type + * + * @param selector - Query selector + * @param node - Node of reference + * + * @return Element or nothing + */ +function getElement(selector, node) { + if (node === void 0) { node = document; } + return node.querySelector(selector) || undefined; +} +/** + * Retrieve an element matching a query selector or throw a reference error + * + * @template T - Element type + * + * @param selector - Query selector + * @param node - Node of reference + * + * @return Element + */ +function getElementOrThrow(selector, node) { + if (node === void 0) { node = document; } + var el = getElement(selector, node); + if (typeof el === "undefined") + throw new ReferenceError("Missing element: expected \"" + selector + "\" to be present"); + return el; +} +/** + * Retrieve the currently active element + * + * @return Element + */ +function getActiveElement() { + return document.activeElement instanceof HTMLElement + ? document.activeElement + : undefined; +} +/** + * Retrieve all elements matching the query selector + * + * @template T - Element type + * + * @param selector - Query selector + * @param node - Node of reference + * + * @return Elements + */ +function getElements(selector, node) { + if (node === void 0) { node = document; } + return Array.from(node.querySelectorAll(selector)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/element/focus/index.ts": +/*!*************************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/element/focus/index.ts ***! + \*************************************************************************/ +/*! exports provided: setElementFocus, watchElementFocus */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return setElementFocus; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return watchElementFocus; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_ */ "./src/assets/javascripts/observables/agent/element/_/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set element focus + * + * @param el - Element + * @param value - Whether the element should be focused + * + * @return Element offset + */ +function setElementFocus(el, value) { + if (value === void 0) { value = true; } + if (value) + el.focus(); + else + el.blur(); +} +/* ------------------------------------------------------------------------- */ +/** + * Watch element focus + * + * @param el - Element + * + * @return Element focus observable + */ +function watchElementFocus(el) { + var focus$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "focus"); + var blur$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "blur"); + /* Map events to boolean state */ + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(focus$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(true)), blur$.pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(false))) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(el === Object(___WEBPACK_IMPORTED_MODULE_2__["getActiveElement"])()), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/element/index.ts": +/*!*******************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/element/index.ts ***! + \*******************************************************************/ +/*! exports provided: getElement, getElementOrThrow, getActiveElement, getElements, setElementFocus, watchElementFocus, getElementOffset, watchElementOffset, setElementSelection */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/element/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getElement"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getElementOrThrow"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getActiveElement"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getElements"]; }); + +/* harmony import */ var _focus__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./focus */ "./src/assets/javascripts/observables/agent/element/focus/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return _focus__WEBPACK_IMPORTED_MODULE_1__["setElementFocus"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return _focus__WEBPACK_IMPORTED_MODULE_1__["watchElementFocus"]; }); + +/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./offset */ "./src/assets/javascripts/observables/agent/element/offset/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_2__["getElementOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_2__["watchElementOffset"]; }); + +/* harmony import */ var _select__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./select */ "./src/assets/javascripts/observables/agent/element/select/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return _select__WEBPACK_IMPORTED_MODULE_3__["setElementSelection"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/element/offset/index.ts": +/*!**************************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/element/offset/index.ts ***! + \**************************************************************************/ +/*! exports provided: getElementOffset, watchElementOffset */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return getElementOffset; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return watchElementOffset; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Retrieve element offset + * + * @param el - Element + * + * @return Element offset + */ +function getElementOffset(el) { + return { + x: el.scrollLeft, + y: el.scrollTop + }; +} +/* ------------------------------------------------------------------------- */ +/** + * Watch element offset + * + * @param el - Element + * + * @return Element offset observable + */ +function watchElementOffset(el) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "scroll"), Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "resize")) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function () { return getElementOffset(el); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getElementOffset(el)), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/element/select/index.ts": +/*!**************************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/element/select/index.ts ***! + \**************************************************************************/ +/*! exports provided: setElementSelection */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return setElementSelection; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Set element text selection + * + * @param el - Element + */ +function setElementSelection(el) { + if (el instanceof HTMLInputElement) + el.select(); + else + throw new Error("Not implemented"); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/index.ts": +/*!***********************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/index.ts ***! + \***********************************************************/ +/*! exports provided: isSusceptibleToKeyboard, watchKeyboard, watchMedia, watchWorker, watchDocument, watchDocumentSwitch, getElement, getElementOrThrow, getActiveElement, getElements, setElementFocus, watchElementFocus, getElementOffset, watchElementOffset, setElementSelection, getLocation, setLocation, watchLocation, getLocationHash, watchLocationHash, watchViewport, watchViewportAt, getViewportOffset, setViewportOffset, watchViewportOffset, getViewportSize, watchViewportSize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _document__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./document */ "./src/assets/javascripts/observables/agent/document/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_0__["watchDocument"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return _document__WEBPACK_IMPORTED_MODULE_0__["watchDocumentSwitch"]; }); + +/* harmony import */ var _element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./element */ "./src/assets/javascripts/observables/agent/element/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElement"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElementOrThrow"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getActiveElement"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElements"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["setElementFocus"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["watchElementFocus"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["getElementOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["watchElementOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return _element__WEBPACK_IMPORTED_MODULE_1__["setElementSelection"]; }); + +/* harmony import */ var _keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./keyboard */ "./src/assets/javascripts/observables/agent/keyboard/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSusceptibleToKeyboard", function() { return _keyboard__WEBPACK_IMPORTED_MODULE_2__["isSusceptibleToKeyboard"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchKeyboard", function() { return _keyboard__WEBPACK_IMPORTED_MODULE_2__["watchKeyboard"]; }); + +/* harmony import */ var _location__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./location */ "./src/assets/javascripts/observables/agent/location/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["getLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["setLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["watchLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["getLocationHash"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return _location__WEBPACK_IMPORTED_MODULE_3__["watchLocationHash"]; }); + +/* harmony import */ var _media__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./media */ "./src/assets/javascripts/observables/agent/media/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMedia", function() { return _media__WEBPACK_IMPORTED_MODULE_4__["watchMedia"]; }); + +/* harmony import */ var _viewport__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./viewport */ "./src/assets/javascripts/observables/agent/viewport/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewport"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewportAt"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["getViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["setViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["getViewportSize"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return _viewport__WEBPACK_IMPORTED_MODULE_5__["watchViewportSize"]; }); + +/* harmony import */ var _worker__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./worker */ "./src/assets/javascripts/observables/agent/worker/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchWorker", function() { return _worker__WEBPACK_IMPORTED_MODULE_6__["watchWorker"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/keyboard/index.ts": +/*!********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/keyboard/index.ts ***! + \********************************************************************/ +/*! exports provided: isSusceptibleToKeyboard, watchKeyboard */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSusceptibleToKeyboard", function() { return isSusceptibleToKeyboard; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchKeyboard", function() { return watchKeyboard; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Check whether an element may receive keyboard input + * + * @param el - Element + * + * @return Test result + */ +function isSusceptibleToKeyboard(el) { + switch (el.tagName) { + /* Form elements */ + case "INPUT": + case "SELECT": + case "TEXTAREA": + return true; + /* Everything else */ + default: + return el.isContentEditable; + } +} +/* ------------------------------------------------------------------------- */ +/** + * Watch keyboard + * + * @return Keyboard observable + */ +function watchKeyboard() { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "keydown") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (ev) { return !(ev.metaKey || ev.ctrlKey); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (ev) { return ({ + type: ev.key, + claim: function () { + ev.preventDefault(); + ev.stopPropagation(); + } + }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/location/_/index.ts": +/*!**********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/location/_/index.ts ***! + \**********************************************************************/ +/*! exports provided: getLocation, setLocation, watchLocation */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return getLocation; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return setLocation; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return watchLocation; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Retrieve location + * + * This function will return a `URL` object (and not `Location`) in order to + * normalize typings across the application. Furthermore, locations need to be + * tracked without setting them and `Location` is a singleton which represents + * the current location. + * + * @return URL + */ +function getLocation() { + return new URL(location.href); +} +/** + * Set location + * + * @param url - URL to change to + */ +function setLocation(url) { + location.href = url.href; +} +/* ------------------------------------------------------------------------- */ +/** + * Watch location + * + * @return Location subject + */ +function watchLocation() { + return new rxjs__WEBPACK_IMPORTED_MODULE_0__["BehaviorSubject"](getLocation()); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/location/hash/index.ts": +/*!*************************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/location/hash/index.ts ***! + \*************************************************************************/ +/*! exports provided: getLocationHash, watchLocationHash */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return getLocationHash; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return watchLocationHash; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Retrieve location hash + * + * @return Location hash + */ +function getLocationHash() { + return location.hash.substring(1); +} +/* ------------------------------------------------------------------------- */ +/** + * Watch location hash + * + * @return Location hash observable + */ +function watchLocationHash() { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "hashchange") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(getLocationHash), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getLocationHash()), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (hash) { return hash.length > 0; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/location/index.ts": +/*!********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/location/index.ts ***! + \********************************************************************/ +/*! exports provided: getLocation, setLocation, watchLocation, getLocationHash, watchLocationHash */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/location/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return ___WEBPACK_IMPORTED_MODULE_0__["getLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return ___WEBPACK_IMPORTED_MODULE_0__["setLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchLocation"]; }); + +/* harmony import */ var _hash__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hash */ "./src/assets/javascripts/observables/agent/location/hash/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return _hash__WEBPACK_IMPORTED_MODULE_1__["getLocationHash"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return _hash__WEBPACK_IMPORTED_MODULE_1__["watchLocationHash"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/media/index.ts": +/*!*****************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/media/index.ts ***! + \*****************************************************************/ +/*! exports provided: watchMedia */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchMedia", function() { return watchMedia; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch media query + * + * @param query - Media query + * + * @return Media observable + */ +function watchMedia(query) { + var media = matchMedia(query); + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEventPattern"])(function (next) { + return media.addListener(function () { return next(media.matches); }); + }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(media.matches), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["shareReplay"])(1)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/viewport/_/index.ts": +/*!**********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/viewport/_/index.ts ***! + \**********************************************************************/ +/*! exports provided: watchViewport, watchViewportAt */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return watchViewport; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return watchViewportAt; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../offset */ "./src/assets/javascripts/observables/agent/viewport/offset/index.ts"); +/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../size */ "./src/assets/javascripts/observables/agent/viewport/size/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch viewport + * + * @return Viewport observable + */ +function watchViewport() { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([ + Object(_offset__WEBPACK_IMPORTED_MODULE_3__["watchViewportOffset"])(), + Object(_size__WEBPACK_IMPORTED_MODULE_4__["watchViewportSize"])() + ]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), offset = _b[0], size = _b[1]; + return ({ offset: offset, size: size }); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); +} +/** + * Watch viewport relative to element + * + * @param el - Element + * @param options - Options + * + * @return Viewport observable + */ +function watchViewportAt(el, _a) { + var header$ = _a.header$, viewport$ = _a.viewport$; + var offset$ = viewport$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("size"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return ({ + x: el.offsetLeft, + y: el.offsetTop + }); })); + /* Compute relative viewport, return hot observable */ + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([header$, viewport$, offset$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), height = _b[0].height, _c = _b[1], offset = _c.offset, size = _c.size, _d = _b[2], x = _d.x, y = _d.y; + return ({ + offset: { + x: offset.x - x, + y: offset.y - y + height + }, + size: size + }); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/viewport/index.ts": +/*!********************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/viewport/index.ts ***! + \********************************************************************/ +/*! exports provided: watchViewport, watchViewportAt, getViewportOffset, setViewportOffset, watchViewportOffset, getViewportSize, watchViewportSize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/agent/viewport/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchViewport"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchViewportAt"]; }); + +/* harmony import */ var _offset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./offset */ "./src/assets/javascripts/observables/agent/viewport/offset/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_1__["getViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_1__["setViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return _offset__WEBPACK_IMPORTED_MODULE_1__["watchViewportOffset"]; }); + +/* harmony import */ var _size__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./size */ "./src/assets/javascripts/observables/agent/viewport/size/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return _size__WEBPACK_IMPORTED_MODULE_2__["getViewportSize"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return _size__WEBPACK_IMPORTED_MODULE_2__["watchViewportSize"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/viewport/offset/index.ts": +/*!***************************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/viewport/offset/index.ts ***! + \***************************************************************************/ +/*! exports provided: getViewportOffset, setViewportOffset, watchViewportOffset */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return getViewportOffset; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return setViewportOffset; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return watchViewportOffset; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Retrieve viewport offset + * + * On iOS Safari, viewport offset can be negative due to overflow scrolling. + * As this may induce strange behaviors downstream, we'll just limit it to 0. + * + * @return Viewport offset + */ +function getViewportOffset() { + return { + x: Math.max(0, pageXOffset), + y: Math.max(0, pageYOffset) + }; +} +/** + * Set viewport offset + * + * @param offset - Viewport offset + */ +function setViewportOffset(_a) { + var x = _a.x, y = _a.y; + window.scrollTo(x || 0, y || 0); +} +/* ------------------------------------------------------------------------- */ +/** + * Watch viewport offset + * + * @return Viewport offset observable + */ +function watchViewportOffset() { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "scroll"), Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "resize")) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(getViewportOffset), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getViewportOffset())); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/viewport/size/index.ts": +/*!*************************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/viewport/size/index.ts ***! + \*************************************************************************/ +/*! exports provided: getViewportSize, watchViewportSize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return getViewportSize; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return watchViewportSize; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Retrieve viewport size + * + * @return Viewport size + */ +function getViewportSize() { + return { + width: innerWidth, + height: innerHeight + }; +} +/* ------------------------------------------------------------------------- */ +/** + * Watch viewport size + * + * @return Viewport size observable + */ +function watchViewportSize() { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(window, "resize") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(getViewportSize), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["startWith"])(getViewportSize())); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/agent/worker/index.ts": +/*!******************************************************************!*\ + !*** ./src/assets/javascripts/observables/agent/worker/index.ts ***! + \******************************************************************/ +/*! exports provided: watchWorker */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchWorker", function() { return watchWorker; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch a web worker + * + * This function returns an observable that will send all values emitted by the + * message observable to the web worker. Web worker communication is expected + * to be bidirectional (request-response) and synchronous. Messages that are + * emitted during a pending request are throttled, the last one is emitted. + * + * @param worker - Web worker + * @param options - Options + * + * @return Worker message observable + */ +function watchWorker(worker, _a) { + var tx$ = _a.tx$; + /* Intercept messages from worker-like objects */ + var rx$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEventPattern"])(function (next) { + return worker.addEventListener("message", next); + }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["pluck"])("data")); + /* Send and receive messages, return hot observable */ + return tx$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["throttle"])(function () { return rx$; }, { leading: true, trailing: true }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (message) { return worker.postMessage(message); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMapTo"])(rx$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["share"])()); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/anchor/index.ts": +/*!************************************************************!*\ + !*** ./src/assets/javascripts/observables/anchor/index.ts ***! + \************************************************************/ +/*! exports provided: watchAnchorList, paintAnchorList */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchAnchorList", function() { return watchAnchorList; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintAnchorList", function() { return paintAnchorList; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../agent */ "./src/assets/javascripts/observables/agent/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch anchor list + * + * This is effectively a scroll-spy implementation which will account for the + * fixed header and automatically re-calculate anchor offsets when the viewport + * is resized. The returned observable will only emit if the anchor list needs + * to be repainted. + * + * This implementation tracks an anchor element's entire path starting from its + * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the + * Material theme currently doesn't make use of this information, it enables + * the styling of the entire hierarchy through customization. + * + * Note that the current anchor is the last item of the `prev` anchor list. + * + * @param els - Anchor elements + * @param options - Options + * + * @return Anchor list observable + */ +function watchAnchorList(els, _a) { + var e_1, _b; + var header$ = _a.header$, viewport$ = _a.viewport$; + var table = new Map(); + try { + for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { + var el = els_1_1.value; + var id = decodeURIComponent(el.hash.substring(1)); + var target = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElement"])("[id=\"" + id + "\"]"); + if (typeof target !== "undefined") + table.set(el, target); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (els_1_1 && !els_1_1.done && (_b = els_1.return)) _b.call(els_1); + } + finally { if (e_1) throw e_1.error; } + } + /* Compute necessary adjustment for header */ + var adjust$ = header$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (header) { return 18 + header.height; })); + /* Compute partition of previous and next anchors */ + var partition$ = viewport$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["distinctUntilKeyChanged"])("size"), + /* Build index to map anchor paths to vertical offsets */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function () { + var path = []; + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(table).reduce(function (index, _a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), anchor = _b[0], target = _b[1]; + while (path.length) { + var last = table.get(path[path.length - 1]); + if (last.tagName >= target.tagName) { + path.pop(); + } + else { + break; + } + } + /* If the current anchor is hidden, continue with its parent */ + var offset = target.offsetTop; + while (!offset && target.parentElement) { + target = target.parentElement; + offset = target.offsetTop; + } + /* Map reversed anchor path to vertical offset */ + return index.set(Object(ramda__WEBPACK_IMPORTED_MODULE_1__["reverse"])(path = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(path, [anchor])), offset); + }, new Map()); + }), + /* Re-compute partition when viewport offset changes */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["switchMap"])(function (index) { return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["combineLatest"])([adjust$, viewport$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["scan"])(function (_a, _b) { + var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), prev = _c[0], next = _c[1]; + var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_b, 2), adjust = _d[0], y = _d[1].offset.y; + /* Look forward */ + while (next.length) { + var _e = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(next[0], 2), offset = _e[1]; + if (offset - adjust < y) { + prev = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(prev, [next.shift()]); + } + else { + break; + } + } + /* Look backward */ + while (prev.length) { + var _f = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(prev[prev.length - 1], 2), offset = _f[1]; + if (offset - adjust >= y) { + next = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([prev.pop()], next); + } + else { + break; + } + } + /* Return partition */ + return [prev, next]; + }, [[], Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(index)]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["distinctUntilChanged"])(function (a, b) { + return a[0] === b[0] + && a[1] === b[1]; + })); })); + /* Compute and return anchor list migrations */ + return partition$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), prev = _b[0], next = _b[1]; + return ({ + prev: prev.map(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 1), path = _b[0]; + return path; + }), + next: next.map(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 1), path = _b[0]; + return path; + }) + }); + }), + /* Extract anchor list migrations */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["startWith"])({ prev: [], next: [] }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["bufferCount"])(2, 1), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), a = _b[0], b = _b[1]; + /* Moving down */ + if (a.prev.length < b.prev.length) { + return { + prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length), + next: [] + }; + /* Moving up */ + } + else { + return { + prev: b.prev.slice(-1), + next: b.next.slice(0, b.next.length - a.next.length) + }; + } + })); +} +/* ------------------------------------------------------------------------- */ +/** + * Paint anchor list + * + * @param els - Anchor elements + * + * @return Operator function + */ +function paintAnchorList(els) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["pipe"])( + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_2__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (_a) { + var e_2, _b, e_3, _c; + var prev = _a.prev, next = _a.next; + try { + /* Look forward */ + for (var next_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(next), next_1_1 = next_1.next(); !next_1_1.done; next_1_1 = next_1.next()) { + var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(next_1_1.value, 1), el = _d[0]; + Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorActive"])(el); + Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorBlur"])(el); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (next_1_1 && !next_1_1.done && (_b = next_1.return)) _b.call(next_1); + } + finally { if (e_2) throw e_2.error; } + } + try { + /* Look backward */ + for (var _e = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(prev.entries()), _f = _e.next(); !_f.done; _f = _e.next()) { + var _g = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_f.value, 2), index = _g[0], _h = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_g[1], 1), el = _h[0]; + Object(actions__WEBPACK_IMPORTED_MODULE_4__["setAnchorActive"])(el, index === prev.length - 1); + Object(actions__WEBPACK_IMPORTED_MODULE_4__["setAnchorBlur"])(el, true); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (_f && !_f.done && (_c = _e.return)) _c.call(_e); + } + finally { if (e_3) throw e_3.error; } + } + }), + /* Reset on complete or error */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["finalize"])(function () { + var e_4, _a; + try { + for (var els_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_2_1 = els_2.next(); !els_2_1.done; els_2_1 = els_2.next()) { + var el = els_2_1.value; + Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorActive"])(el); + Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetAnchorBlur"])(el); + } + } + catch (e_4_1) { e_4 = { error: e_4_1 }; } + finally { + try { + if (els_2_1 && !els_2_1.done && (_a = els_2.return)) _a.call(els_2); + } + finally { if (e_4) throw e_4.error; } + } + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/header/_/index.ts": +/*!**************************************************************!*\ + !*** ./src/assets/javascripts/observables/header/_/index.ts ***! + \**************************************************************/ +/*! exports provided: watchHeader */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchHeader", function() { return watchHeader; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch header + * + * The header is wrapped in an observable to pave the way for auto-hiding or + * other dynamic behaviors that may be implemented later on. + * + * @param el - Header element + * @param options - Options + * + * @return Header observable + */ +function watchHeader(el, _a) { + var viewport$ = _a.viewport$; + return viewport$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["distinctUntilKeyChanged"])("size"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["switchMap"])(function () { + var styles = getComputedStyle(el); + var sticky = [ + "sticky", + "-webkit-sticky" /* Old Safari */ + ].includes(styles.position); + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])({ + sticky: sticky, + height: sticky ? el.offsetHeight : 0 + }); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/header/index.ts": +/*!************************************************************!*\ + !*** ./src/assets/javascripts/observables/header/index.ts ***! + \************************************************************/ +/*! exports provided: watchHeader, paintHeaderShadow, paintHeaderTitle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/header/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchHeader", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchHeader"]; }); + +/* harmony import */ var _shadow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./shadow */ "./src/assets/javascripts/observables/header/shadow/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderShadow", function() { return _shadow__WEBPACK_IMPORTED_MODULE_1__["paintHeaderShadow"]; }); + +/* harmony import */ var _title__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./title */ "./src/assets/javascripts/observables/header/title/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderTitle", function() { return _title__WEBPACK_IMPORTED_MODULE_2__["paintHeaderTitle"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/header/shadow/index.ts": +/*!*******************************************************************!*\ + !*** ./src/assets/javascripts/observables/header/shadow/index.ts ***! + \*******************************************************************/ +/*! exports provided: paintHeaderShadow */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintHeaderShadow", function() { return paintHeaderShadow; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Paint header shadow + * + * @param el - Header element + * + * @return Operator function + */ +function paintHeaderShadow(el) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])( + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (_a) { + var active = _a.active; + Object(actions__WEBPACK_IMPORTED_MODULE_2__["setHeaderShadow"])(el, active); + }), + /* Reset on complete or error */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["finalize"])(function () { + Object(actions__WEBPACK_IMPORTED_MODULE_2__["resetHeaderShadow"])(el); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/header/title/index.ts": +/*!******************************************************************!*\ + !*** ./src/assets/javascripts/observables/header/title/index.ts ***! + \******************************************************************/ +/*! exports provided: paintHeaderTitle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintHeaderTitle", function() { return paintHeaderTitle; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Paint header title + * + * @param el - Header element + * + * @return Operator function + */ +function paintHeaderTitle(el) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])( + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (active) { + Object(actions__WEBPACK_IMPORTED_MODULE_2__["setHeaderTitle"])(el, active); + }), + /* Reset on complete or error */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["finalize"])(function () { + Object(actions__WEBPACK_IMPORTED_MODULE_2__["resetHeaderTitle"])(el); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/index.ts": +/*!*****************************************************!*\ + !*** ./src/assets/javascripts/observables/index.ts ***! + \*****************************************************/ +/*! exports provided: watchAnchorList, paintAnchorList, setupToggles, useToggle, setToggle, watchToggle, isSusceptibleToKeyboard, watchKeyboard, watchMedia, watchWorker, watchHeader, paintHeaderShadow, paintHeaderTitle, watchMain, paintHideable, watchSidebar, paintSidebar, watchNavigationLayer, paintNavigationLayer, watchSearchQuery, watchSearchReset, paintSearchResult, watchDocument, watchDocumentSwitch, getElement, getElementOrThrow, getActiveElement, getElements, setElementFocus, watchElementFocus, getElementOffset, watchElementOffset, setElementSelection, getLocation, setLocation, watchLocation, getLocationHash, watchLocationHash, watchViewport, watchViewportAt, getViewportOffset, setViewportOffset, watchViewportOffset, getViewportSize, watchViewportSize */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./agent */ "./src/assets/javascripts/observables/agent/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSusceptibleToKeyboard", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["isSusceptibleToKeyboard"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchKeyboard", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchKeyboard"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMedia", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchMedia"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchWorker", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchWorker"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocument", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchDocument"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchDocumentSwitch", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchDocumentSwitch"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElement", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElement"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOrThrow", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElementOrThrow"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getActiveElement", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getActiveElement"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElements", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElements"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementFocus", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setElementFocus"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementFocus", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchElementFocus"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getElementOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getElementOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchElementOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchElementOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setElementSelection", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setElementSelection"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocation", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setLocation", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocation", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchLocation"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getLocationHash", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getLocationHash"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchLocationHash", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchLocationHash"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewport", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewport"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportAt", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewportAt"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setViewportOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["setViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportOffset", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewportOffset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "getViewportSize", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["getViewportSize"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchViewportSize", function() { return _agent__WEBPACK_IMPORTED_MODULE_0__["watchViewportSize"]; }); + +/* harmony import */ var _anchor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./anchor */ "./src/assets/javascripts/observables/anchor/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchAnchorList", function() { return _anchor__WEBPACK_IMPORTED_MODULE_1__["watchAnchorList"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintAnchorList", function() { return _anchor__WEBPACK_IMPORTED_MODULE_1__["paintAnchorList"]; }); + +/* harmony import */ var _header__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./header */ "./src/assets/javascripts/observables/header/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchHeader", function() { return _header__WEBPACK_IMPORTED_MODULE_2__["watchHeader"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderShadow", function() { return _header__WEBPACK_IMPORTED_MODULE_2__["paintHeaderShadow"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHeaderTitle", function() { return _header__WEBPACK_IMPORTED_MODULE_2__["paintHeaderTitle"]; }); + +/* harmony import */ var _main__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./main */ "./src/assets/javascripts/observables/main/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMain", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["watchMain"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHideable", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["paintHideable"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSidebar", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["watchSidebar"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSidebar", function() { return _main__WEBPACK_IMPORTED_MODULE_3__["paintSidebar"]; }); + +/* harmony import */ var _navigation__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./navigation */ "./src/assets/javascripts/observables/navigation/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchNavigationLayer", function() { return _navigation__WEBPACK_IMPORTED_MODULE_4__["watchNavigationLayer"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintNavigationLayer", function() { return _navigation__WEBPACK_IMPORTED_MODULE_4__["paintNavigationLayer"]; }); + +/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/observables/search/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchQuery", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["watchSearchQuery"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchReset", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["watchSearchReset"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSearchResult", function() { return _search__WEBPACK_IMPORTED_MODULE_5__["paintSearchResult"]; }); + +/* harmony import */ var _toggle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./toggle */ "./src/assets/javascripts/observables/toggle/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupToggles", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["setupToggles"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "useToggle", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["useToggle"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setToggle", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["setToggle"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchToggle", function() { return _toggle__WEBPACK_IMPORTED_MODULE_6__["watchToggle"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/main/_/index.ts": +/*!************************************************************!*\ + !*** ./src/assets/javascripts/observables/main/_/index.ts ***! + \************************************************************/ +/*! exports provided: watchMain */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchMain", function() { return watchMain; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch main area + * + * This function returns an observable that computes the visual parameters of + * the main area which depends on the viewport vertical offset and height, as + * well as the height of the header element, if the header is fixed. + * + * @param el - Main area element + * @param options - Options + * + * @return Main area observable + */ +function watchMain(el, _a) { + var header$ = _a.header$, viewport$ = _a.viewport$; + /* Compute necessary adjustment for header */ + var adjust$ = header$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("height")); + /* Compute the main area's visible height */ + var height$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([adjust$, viewport$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), adjust = _b[0], _c = _b[1], y = _c.offset.y, height = _c.size.height; + var top = el.offsetTop; + var bottom = el.offsetHeight + top; + return height + - Math.max(0, top - y, adjust) + - Math.max(0, height + y - bottom); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (height) { return Math.max(0, height); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); + /* Compute whether the viewport offset is past the main area's top */ + var active$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([adjust$, viewport$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), adjust = _b[0], y = _b[1].offset.y; + return y >= el.offsetTop - adjust; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); + /* Combine into a single observable */ + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([adjust$, height$, active$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), adjust = _b[0], height = _b[1], active = _b[2]; + return ({ + offset: el.offsetTop - adjust, + height: height, + active: active + }); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/main/hideable/index.ts": +/*!*******************************************************************!*\ + !*** ./src/assets/javascripts/observables/main/hideable/index.ts ***! + \*******************************************************************/ +/*! exports provided: paintHideable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintHideable", function() { return paintHideable; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Paint hideable + * + * @param el - Hideable element + * @param offset - Additional offset + * + * @return Operator function + */ +function paintHideable(el, offset) { + if (offset === void 0) { offset = 0; } + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["pipe"])(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { + var y = _a.offset.y; + return y >= offset; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["distinctUntilChanged"])(), + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_0__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["tap"])(function (value) { + Object(actions__WEBPACK_IMPORTED_MODULE_2__["setHidden"])(el, value); + }), + /* Reset on complete or error */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["finalize"])(function () { + Object(actions__WEBPACK_IMPORTED_MODULE_2__["resetHidden"])(el); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/main/index.ts": +/*!**********************************************************!*\ + !*** ./src/assets/javascripts/observables/main/index.ts ***! + \**********************************************************/ +/*! exports provided: watchMain, paintHideable, watchSidebar, paintSidebar */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/observables/main/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchMain", function() { return ___WEBPACK_IMPORTED_MODULE_0__["watchMain"]; }); + +/* harmony import */ var _hideable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideable */ "./src/assets/javascripts/observables/main/hideable/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintHideable", function() { return _hideable__WEBPACK_IMPORTED_MODULE_1__["paintHideable"]; }); + +/* harmony import */ var _sidebar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./sidebar */ "./src/assets/javascripts/observables/main/sidebar/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSidebar", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_2__["watchSidebar"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSidebar", function() { return _sidebar__WEBPACK_IMPORTED_MODULE_2__["paintSidebar"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/main/sidebar/index.ts": +/*!******************************************************************!*\ + !*** ./src/assets/javascripts/observables/main/sidebar/index.ts ***! + \******************************************************************/ +/*! exports provided: watchSidebar, paintSidebar */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchSidebar", function() { return watchSidebar; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintSidebar", function() { return paintSidebar; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch sidebar + * + * This function returns an observable that computes the visual parameters of + * the sidebar which depends on the vertical viewport offset, as well as the + * height of the main area. When the page is scrolled beyond the header, the + * sidebar is locked and fills the remaining space. + * + * @param el - Sidebar element + * @param options - Options + * + * @return Sidebar observable + */ +function watchSidebar(el, _a) { + var main$ = _a.main$, viewport$ = _a.viewport$; + /* Adjust for internal main area offset */ + var adjust$ = viewport$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilKeyChanged"])("size"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return parseFloat(getComputedStyle(el.parentElement) + .getPropertyValue("padding-top")); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); + /* Compute the sidebar's available height */ + var height$ = viewport$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(adjust$, main$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), y = _b[0].offset.y, adjust = _b[1], _c = _b[2], offset = _c.offset, height = _c.height; + return (height + + Math.min(adjust, Math.max(0, y - offset)) + - adjust); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); + /* Compute whether the sidebar should be locked */ + var lock$ = viewport$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(adjust$, main$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 3), y = _b[0].offset.y, adjust = _b[1], offset = _b[2].offset; + return (y >= offset + adjust); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); + /* Combine into single observable */ + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([height$, lock$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), height = _b[0], lock = _b[1]; + return ({ height: height, lock: lock }); + })); +} +/* ------------------------------------------------------------------------- */ +/** + * Paint sidebar + * + * @param el - Sidebar element + * @param options - Options + * + * @return Operator function + */ +function paintSidebar(el, _a) { + var header$ = _a.header$; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])( + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_1__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(header$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["tap"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), _c = _b[0], height = _c.height, lock = _c.lock, offset = _b[1].height; + Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSidebarHeight"])(el, height); + Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSidebarLock"])(el, lock); + /* Set offset in locked state depending on header height */ + if (lock) + Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSidebarOffset"])(el, offset); + else + Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarOffset"])(el); + }), + /* Re-map to sidebar */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 1), sidebar = _b[0]; + return sidebar; + }), + /* Reset on complete or error */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["finalize"])(function () { + Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarOffset"])(el); + Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarHeight"])(el); + Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSidebarLock"])(el); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/navigation/index.ts": +/*!****************************************************************!*\ + !*** ./src/assets/javascripts/observables/navigation/index.ts ***! + \****************************************************************/ +/*! exports provided: watchNavigationLayer, paintNavigationLayer */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _layer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./layer */ "./src/assets/javascripts/observables/navigation/layer/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchNavigationLayer", function() { return _layer__WEBPACK_IMPORTED_MODULE_0__["watchNavigationLayer"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintNavigationLayer", function() { return _layer__WEBPACK_IMPORTED_MODULE_0__["paintNavigationLayer"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/navigation/layer/index.ts": +/*!**********************************************************************!*\ + !*** ./src/assets/javascripts/observables/navigation/layer/index.ts ***! + \**********************************************************************/ +/*! exports provided: watchNavigationLayer, paintNavigationLayer */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchNavigationLayer", function() { return watchNavigationLayer; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintNavigationLayer", function() { return paintNavigationLayer; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../agent */ "./src/assets/javascripts/observables/agent/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch navigation layer + * + * On iOS we want to add `-webkit-overflow-scrolling: touch` for the menus + * contained in the drawer, but as the navigational layers are nested, we can + * only add it to the topmost layer or extremely weird cropping will occur. + * This implementation keeps track of the previous and current layer. + * + * @param els - Navigation elements + * + * @return Navigation layer observable + */ +function watchNavigationLayer(els) { + var e_1, _a; + var table = new Map(); + try { + for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { + var el = els_1_1.value; + var label = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElement"])("label", el); + if (typeof label !== "undefined") { + var input = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])("#" + label.htmlFor); + table.set(input, el); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); + } + finally { if (e_1) throw e_1.error; } + } + /* Determine topmost layer */ + var layer$ = rxjs__WEBPACK_IMPORTED_MODULE_2__["merge"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(table.keys()).map(function (input) { return (Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["fromEvent"])(input, "change")); }))).pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function () { return Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-nav__list", table.get(Object(ramda__WEBPACK_IMPORTED_MODULE_1__["findLast"])(function (_a) { + var checked = _a.checked; + return checked; + }, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(table.keys())))); })); + /* Return previous and next layer */ + return layer$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (next) { return ({ next: next }); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["scan"])(function (_a, _b) { + var prev = _a.next; + var next = _b.next; + return ({ prev: prev, next: next }); + })); +} +/* ------------------------------------------------------------------------- */ +/** + * Paint navigation layer + * + * @param els - Navigation elements + * + * @return Operator function + */ +function paintNavigationLayer(els) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["pipe"])( + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_2__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (_a) { + var prev = _a.prev; + if (prev) + Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetOverflowScrolling"])(prev); + }), + /* Wait until transition has finished */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["delay"])(250), + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_2__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (_a) { + var next = _a.next; + Object(actions__WEBPACK_IMPORTED_MODULE_4__["setOverflowScrolling"])(next); + }), + /* Reset on complete or error */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["finalize"])(function () { + var e_2, _a; + try { + for (var els_2 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_2_1 = els_2.next(); !els_2_1.done; els_2_1 = els_2.next()) { + var el = els_2_1.value; + Object(actions__WEBPACK_IMPORTED_MODULE_4__["resetOverflowScrolling"])(Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-nav__list", el)); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (els_2_1 && !els_2_1.done && (_a = els_2.return)) _a.call(els_2); + } + finally { if (e_2) throw e_2.error; } + } + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/search/index.ts": +/*!************************************************************!*\ + !*** ./src/assets/javascripts/observables/search/index.ts ***! + \************************************************************/ +/*! exports provided: watchSearchQuery, watchSearchReset, paintSearchResult */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _query__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./query */ "./src/assets/javascripts/observables/search/query/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchQuery", function() { return _query__WEBPACK_IMPORTED_MODULE_0__["watchSearchQuery"]; }); + +/* harmony import */ var _reset__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./reset */ "./src/assets/javascripts/observables/search/reset/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "watchSearchReset", function() { return _reset__WEBPACK_IMPORTED_MODULE_1__["watchSearchReset"]; }); + +/* harmony import */ var _result__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./result */ "./src/assets/javascripts/observables/search/result/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "paintSearchResult", function() { return _result__WEBPACK_IMPORTED_MODULE_2__["paintSearchResult"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/search/query/index.ts": +/*!******************************************************************!*\ + !*** ./src/assets/javascripts/observables/search/query/index.ts ***! + \******************************************************************/ +/*! exports provided: watchSearchQuery */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchSearchQuery", function() { return watchSearchQuery; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../agent */ "./src/assets/javascripts/observables/agent/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Helper functions + * ------------------------------------------------------------------------- */ +/** + * Default transformation function + * + * Rogue control characters are filtered before handing the query to the + * search index, as `lunr` will throw otherwise. + * + * @param value - Query value + * + * @return Transformed query value + */ +function defaultTransform(value) { + return value + .replace(/(?:^|\s+)[*+-:^~]+(?=\s+|$)/g, "") + .trim() + .replace(/\s+|\b$/g, "* "); +} +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch search query + * + * Note that the focus event which triggers re-reading the current query value + * is delayed by `1ms` so the input's empty state is allowed to propagate. + * + * @param el - Search query element + * @param options - Options + * + * @return Search query observable + */ +function watchSearchQuery(el, _a) { + var transform = (_a === void 0 ? {} : _a).transform; + var fn = transform || defaultTransform; + /* Intercept keyboard events */ + var value$ = Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["merge"])(Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "keyup"), Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "focus").pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["delay"])(1))) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return fn(el.value); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["startWith"])(fn(el.value)), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); + /* Intercept focus events */ + var focus$ = Object(_agent__WEBPACK_IMPORTED_MODULE_3__["watchElementFocus"])(el); + /* Combine into a single observable */ + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["combineLatest"])([value$, focus$]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), value = _b[0], focus = _b[1]; + return ({ value: value, focus: focus }); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/search/reset/index.ts": +/*!******************************************************************!*\ + !*** ./src/assets/javascripts/observables/search/reset/index.ts ***! + \******************************************************************/ +/*! exports provided: watchSearchReset */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchSearchReset", function() { return watchSearchReset; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Watch search reset + * + * @param el - Search reset element + * + * @return Search reset observable + */ +function watchSearchReset(el) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["fromEvent"])(el, "click") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["mapTo"])(undefined)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/search/result/index.ts": +/*!*******************************************************************!*\ + !*** ./src/assets/javascripts/observables/search/result/index.ts ***! + \*******************************************************************/ +/*! exports provided: paintSearchResult */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "paintSearchResult", function() { return paintSearchResult; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var actions__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! actions */ "./src/assets/javascripts/actions/index.ts"); +/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); +/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../agent */ "./src/assets/javascripts/observables/agent/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Paint search results + * + * This function will perform a lazy rendering of the search results, depending + * on the vertical offset of the search result container. When the scroll offset + * reaches the bottom of the element, more results are fetched and rendered. + * + * @param el - Search result element + * @param options - Options + * + * @return Operator function + */ +function paintSearchResult(el, _a) { + var query$ = _a.query$, fetch$ = _a.fetch$; + var list = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-search-result__list", el); + var meta = Object(_agent__WEBPACK_IMPORTED_MODULE_5__["getElementOrThrow"])(".md-search-result__meta", el); + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["pipe"])( + /* Paint search result metadata */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["withLatestFrom"])(query$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), result = _b[0], query = _b[1]; + if (query.value) { + Object(actions__WEBPACK_IMPORTED_MODULE_3__["setSearchResultMeta"])(meta, result.length); + } + else { + Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultMeta"])(meta); + } + return result; + }), + /* Paint search result list */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (result) { return fetch$ + .pipe( + /* Defer repaint to next animation frame */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["observeOn"])(rxjs__WEBPACK_IMPORTED_MODULE_1__["animationFrameScheduler"]), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["scan"])(function (index) { + var container = el.parentElement; + while (index < result.length) { + Object(actions__WEBPACK_IMPORTED_MODULE_3__["addToSearchResultList"])(list, Object(templates__WEBPACK_IMPORTED_MODULE_4__["renderSearchResult"])(result[index++])); + if (container.scrollHeight - container.offsetHeight > 16) + break; + } + return index; + }, 0), + /* Re-map to search result */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["mapTo"])(result), + /* Reset on complete or error */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["finalize"])(function () { + Object(actions__WEBPACK_IMPORTED_MODULE_3__["resetSearchResultList"])(list); + })); })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/observables/toggle/index.ts": +/*!************************************************************!*\ + !*** ./src/assets/javascripts/observables/toggle/index.ts ***! + \************************************************************/ +/*! exports provided: setupToggles, useToggle, setToggle, watchToggle */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupToggles", function() { return setupToggles; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "useToggle", function() { return useToggle; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setToggle", function() { return setToggle; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "watchToggle", function() { return watchToggle; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var _agent__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../agent */ "./src/assets/javascripts/observables/agent/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * Toggle map observable + */ +var toggles$; +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Setup bindings to toggles with given names + * + * @param names - Toggle names + * @param options - Options + */ +function setupToggles(names, _a) { + var document$ = _a.document$; + toggles$ = document$ + .pipe( + /* Ignore document switches */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["take"])(1), + /* Build toggle map */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function (document) { return names.reduce(function (toggles, name) { + var _a; + var el = Object(_agent__WEBPACK_IMPORTED_MODULE_3__["getElement"])("[data-md-toggle=" + name + "]", document); + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({}, toggles), typeof el !== "undefined" ? (_a = {}, _a[name] = el, _a) : {}); + }, {}); }), + /* Convert to hot observable */ + Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); +} +/** + * Retrieve a toggle + * + * The returned observable will only re-emit if the element changed, i.e. if + * it was replaced from a document which was switched to. + * + * @param name - Toggle name + * + * @return Element observable + */ +function useToggle(name) { + return toggles$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (toggles) { return (typeof toggles[name] !== "undefined" + ? Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["of"])(toggles[name]) + : rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["distinctUntilChanged"])()); +} +/* ------------------------------------------------------------------------- */ +/** + * Set toggle + * + * Simulating a click event seems to be the most cross-browser compatible way + * of changing the value while also emitting a `change` event. Before, Material + * used `CustomEvent` to programmatically change the value of a toggle, but this + * is a much simpler and cleaner solution which doesn't require a polyfill. + * + * @param el - Toggle element + * @param value - Toggle value + */ +function setToggle(el, value) { + if (el.checked !== value) + el.click(); +} +/* ------------------------------------------------------------------------- */ +/** + * Watch toggle + * + * @param el - Toggle element + * + * @return Toggle observable + */ +function watchToggle(el) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "change") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return el.checked; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["startWith"])(el.checked)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/details/index.ts": +/*!*********************************************************!*\ + !*** ./src/assets/javascripts/patches/details/index.ts ***! + \*********************************************************/ +/*! exports provided: patchDetails */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchDetails", function() { return patchDetails; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Patch all `details` elements + * + * This function will ensure that all `details` tags are opened prior to + * printing, so the whole content of the page is included, and on anchor jumps. + * + * @param options - Options + */ +function patchDetails(_a) { + var document$ = _a.document$, hash$ = _a.hash$; + var els$ = document$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_4__["getElements"])("details"); })); + /* Open all details before printing */ + Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["merge"])(Object(observables__WEBPACK_IMPORTED_MODULE_4__["watchMedia"])("print").pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["filter"])(ramda__WEBPACK_IMPORTED_MODULE_1__["identity"])), /* Webkit */ Object(rxjs__WEBPACK_IMPORTED_MODULE_2__["fromEvent"])(window, "beforeprint") /* IE, FF */) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["switchMapTo"])(els$)) + .subscribe(function (els) { + var e_1, _a; + try { + for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { + var el = els_1_1.value; + el.setAttribute("open", ""); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); + } + finally { if (e_1) throw e_1.error; } + } + }); + /* Open parent details and fix anchor jump */ + hash$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (id) { return Object(observables__WEBPACK_IMPORTED_MODULE_4__["getElement"])("[id=\"" + id + "\"]"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["filter"])(function (el) { return typeof el !== "undefined"; }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["tap"])(function (el) { + var details = el.closest("details"); + if (details && !details.open) + details.setAttribute("open", ""); + })) + .subscribe(function (el) { return el.scrollIntoView(); }); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/index.ts": +/*!*************************************************!*\ + !*** ./src/assets/javascripts/patches/index.ts ***! + \*************************************************/ +/*! exports provided: patchDetails, patchScripts, patchScrollfix, patchSource, patchTables */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _details__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./details */ "./src/assets/javascripts/patches/details/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchDetails", function() { return _details__WEBPACK_IMPORTED_MODULE_0__["patchDetails"]; }); + +/* harmony import */ var _script__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./script */ "./src/assets/javascripts/patches/script/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchScripts", function() { return _script__WEBPACK_IMPORTED_MODULE_1__["patchScripts"]; }); + +/* harmony import */ var _scrollfix__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scrollfix */ "./src/assets/javascripts/patches/scrollfix/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchScrollfix", function() { return _scrollfix__WEBPACK_IMPORTED_MODULE_2__["patchScrollfix"]; }); + +/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./source */ "./src/assets/javascripts/patches/source/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchSource", function() { return _source__WEBPACK_IMPORTED_MODULE_3__["patchSource"]; }); + +/* harmony import */ var _table__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./table */ "./src/assets/javascripts/patches/table/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "patchTables", function() { return _table__WEBPACK_IMPORTED_MODULE_4__["patchTables"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/script/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/patches/script/index.ts ***! + \********************************************************/ +/*! exports provided: patchScripts */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchScripts", function() { return patchScripts; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var components__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! components */ "./src/assets/javascripts/components/index.ts"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Patch all `script` elements + * + * This function must be run after a document switch, which means the first + * emission must be ignored. + * + * @param options - Options + */ +function patchScripts(_a) { + var document$ = _a.document$; + var els$ = document$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["skip"])(1), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["withLatestFrom"])(Object(components__WEBPACK_IMPORTED_MODULE_2__["useComponent"])("container")), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), el = _b[1]; + return Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])("script", el); + })); + /* Evaluate all scripts via replacement */ + els$.subscribe(function (els) { + var e_1, _a; + try { + for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { + var el = els_1_1.value; + if (el.src || /(^|\/javascript)$/i.test(el.type)) { + var script = document.createElement("script"); + var key = el.src ? "src" : "innerText"; + script[key] = el[key]; + el.replaceWith(script); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); + } + finally { if (e_1) throw e_1.error; } + } + }); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/scrollfix/index.ts": +/*!***********************************************************!*\ + !*** ./src/assets/javascripts/patches/scrollfix/index.ts ***! + \***********************************************************/ +/*! exports provided: patchScrollfix */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchScrollfix", function() { return patchScrollfix; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Helper functions + * ------------------------------------------------------------------------- */ +/** + * Check whether the given device is an Apple device + * + * @return Test result + */ +function isAppleDevice() { + return /(iPad|iPhone|iPod)/.test(navigator.userAgent); +} +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Patch all elements with `data-md-scrollfix` attributes + * + * This is a year-old patch which ensures that overflow scrolling works at the + * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon + * the start of a touch event. + * + * @see https://bit.ly/2SCtAOO - Original source + * + * @param options - Options + */ +function patchScrollfix(_a) { + var document$ = _a.document$; + var els$ = document$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])("[data-md-scrollfix]"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["shareReplay"])(1)); + /* Remove marker attribute, so we'll only add the fix once */ + els$.subscribe(function (els) { + var e_1, _a; + try { + for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { + var el = els_1_1.value; + el.removeAttribute("data-md-scrollfix"); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); + } + finally { if (e_1) throw e_1.error; } + } + }); + /* Patch overflow scrolling on touch start */ + Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["iif"])(isAppleDevice, els$, rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (els) { return rxjs__WEBPACK_IMPORTED_MODULE_1__["merge"].apply(void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(els.map(function (el) { return (Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["fromEvent"])(el, "touchstart") + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["mapTo"])(el))); }))); })) + .subscribe(function (el) { + var top = el.scrollTop; + /* We're at the top of the container */ + if (top === 0) { + el.scrollTop = 1; + /* We're at the bottom of the container */ + } + else if (top + el.offsetHeight === el.scrollHeight) { + el.scrollTop = top - 1; + } + }); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/source/github/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/patches/source/github/index.ts ***! + \***************************************************************/ +/*! exports provided: fetchSourceFactsFromGitHub */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchSourceFactsFromGitHub", function() { return fetchSourceFactsFromGitHub; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Fetch GitHub source facts + * + * @param user - GitHub user + * @param repo - GitHub repository + * + * @return Source facts observable + */ +function fetchSourceFactsFromGitHub(user, repo) { + return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_1__["ajax"])({ + url: typeof repo !== "undefined" + ? "https://api.github.com/repos/" + user + "/" + repo + : "https://api.github.com/users/" + user, + responseType: "json" + }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["filter"])(function (_a) { + var status = _a.status; + return status === 200; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["pluck"])("response"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (data) { + /* GitHub repository */ + if (typeof repo !== "undefined") { + var stargazers_count = data.stargazers_count, forks_count = data.forks_count; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])([ + Object(utilities__WEBPACK_IMPORTED_MODULE_3__["round"])(stargazers_count || 0) + " Stars", + Object(utilities__WEBPACK_IMPORTED_MODULE_3__["round"])(forks_count || 0) + " Forks" + ]); + /* GitHub user/organization */ + } + else { + var public_repos = data.public_repos; + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])([ + Object(utilities__WEBPACK_IMPORTED_MODULE_3__["round"])(public_repos || 0) + " Repositories" + ]); + } + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/source/gitlab/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/patches/source/gitlab/index.ts ***! + \***************************************************************/ +/*! exports provided: fetchSourceFactsFromGitLab */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "fetchSourceFactsFromGitLab", function() { return fetchSourceFactsFromGitLab; }); +/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Fetch GitLab source facts + * + * @param base - GitLab base + * @param project - GitLab project + * + * @return Source facts observable + */ +function fetchSourceFactsFromGitLab(base, project) { + return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_0__["ajax"])({ + url: "https://" + base + "/api/v4/projects/" + encodeURIComponent(project), + responseType: "json" + }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["filter"])(function (_a) { + var status = _a.status; + return status === 200; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["pluck"])("response"), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function (_a) { + var star_count = _a.star_count, forks_count = _a.forks_count; + return ([ + Object(utilities__WEBPACK_IMPORTED_MODULE_2__["round"])(star_count) + " Stars", + Object(utilities__WEBPACK_IMPORTED_MODULE_2__["round"])(forks_count) + " Forks" + ]); + })); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/source/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/patches/source/index.ts ***! + \********************************************************/ +/*! exports provided: patchSource */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchSource", function() { return patchSource; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* harmony import */ var _github__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./github */ "./src/assets/javascripts/patches/source/github/index.ts"); +/* harmony import */ var _gitlab__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./gitlab */ "./src/assets/javascripts/patches/source/gitlab/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + + + +/* ---------------------------------------------------------------------------- + * Helper functions + * ------------------------------------------------------------------------- */ +/** + * Fetch source facts + * + * @param url - Source repository URL + * + * @return Source facts observable + */ +function fetchSourceFacts(url) { + var _a = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(url.match(/(git(?:hub|lab))/i) || [], 1), type = _a[0]; + switch (type.toLowerCase()) { + /* GitHub repository */ + case "github": + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(url.match(/^.+github\.com\/([^\/]+)\/?([^\/]+)/i), 3), user = _b[1], repo = _b[2]; + return Object(_github__WEBPACK_IMPORTED_MODULE_6__["fetchSourceFactsFromGitHub"])(user, repo); + /* GitLab repository */ + case "gitlab": + var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(url.match(/^.+?([^\/]*gitlab[^\/]+)\/(.+)/i), 3), base = _c[1], project = _c[2]; + return Object(_gitlab__WEBPACK_IMPORTED_MODULE_7__["fetchSourceFactsFromGitLab"])(base, project); + /* Everything else */ + default: + return rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]; + } +} +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Patch elements containing repository information + * + * This function will retrieve the URL from the repository link and try to + * query data from integrated source code platforms like GitHub or GitLab. + * + * @param options - Options + */ +function patchSource(_a) { + var document$ = _a.document$; + document$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElementOrThrow"])(".md-source[href]"); }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["switchMap"])(function (_a) { + var href = _a.href; + return (Object(utilities__WEBPACK_IMPORTED_MODULE_5__["cache"])("" + Object(utilities__WEBPACK_IMPORTED_MODULE_5__["hash"])(href), function () { return fetchSourceFacts(href); })); + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_2__["catchError"])(function () { return rxjs__WEBPACK_IMPORTED_MODULE_1__["NEVER"]; })) + .subscribe(function (facts) { + var e_1, _a; + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(observables__WEBPACK_IMPORTED_MODULE_3__["getElements"])(".md-source__repository")), _c = _b.next(); !_c.done; _c = _b.next()) { + var el = _c.value; + if (!el.hasAttribute("data-md-state")) { + el.setAttribute("data-md-state", "done"); + el.appendChild(Object(templates__WEBPACK_IMPORTED_MODULE_4__["renderSource"])(facts)); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + }); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/patches/table/index.ts": +/*!*******************************************************!*\ + !*** ./src/assets/javascripts/patches/table/index.ts ***! + \*******************************************************/ +/*! exports provided: patchTables */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "patchTables", function() { return patchTables; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var templates__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! templates */ "./src/assets/javascripts/templates/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Patch all `table` elements + * + * This function will re-render all tables by wrapping them to improve overflow + * scrolling on smaller screen sizes. + * + * @param options - Options + */ +function patchTables(_a) { + var document$ = _a.document$; + var sentinel = document.createElement("table"); + document$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_1__["map"])(function () { return Object(observables__WEBPACK_IMPORTED_MODULE_2__["getElements"])("table:not([class])"); })) + .subscribe(function (els) { + var e_1, _a; + try { + for (var els_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(els), els_1_1 = els_1.next(); !els_1_1.done; els_1_1 = els_1.next()) { + var el = els_1_1.value; + el.replaceWith(sentinel); + sentinel.replaceWith(Object(templates__WEBPACK_IMPORTED_MODULE_3__["renderTable"])(el)); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (els_1_1 && !els_1_1.done && (_a = els_1.return)) _a.call(els_1); + } + finally { if (e_1) throw e_1.error; } + } + }); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/templates/clipboard/index.tsx": +/*!**************************************************************!*\ + !*** ./src/assets/javascripts/templates/clipboard/index.tsx ***! + \**************************************************************/ +/*! exports provided: renderClipboard */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderClipboard", function() { return renderClipboard; }); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * CSS classes + */ +var css = { + container: "md-clipboard md-icon" +}; +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Render a 'copy-to-clipboard' button + * + * @param id - Unique identifier + * + * @return Element + */ +function renderClipboard(id) { + var path = __webpack_require__(/*! material-design-icons-svg/paths/content-copy.json */ "./node_modules/material-design-icons-svg/paths/content-copy.json"); + return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("button", { class: css.container, title: Object(utilities__WEBPACK_IMPORTED_MODULE_0__["translate"])("clipboard.copy"), "data-clipboard-target": "#" + id + " code" }, + Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" }, + Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("path", { d: path })))); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/templates/index.ts": +/*!***************************************************!*\ + !*** ./src/assets/javascripts/templates/index.ts ***! + \***************************************************/ +/*! exports provided: renderClipboard, renderSearchResult, renderSource, renderTable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _clipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./clipboard */ "./src/assets/javascripts/templates/clipboard/index.tsx"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderClipboard", function() { return _clipboard__WEBPACK_IMPORTED_MODULE_0__["renderClipboard"]; }); + +/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/templates/search/index.tsx"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderSearchResult", function() { return _search__WEBPACK_IMPORTED_MODULE_1__["renderSearchResult"]; }); + +/* harmony import */ var _source__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./source */ "./src/assets/javascripts/templates/source/index.tsx"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderSource", function() { return _source__WEBPACK_IMPORTED_MODULE_2__["renderSource"]; }); + +/* harmony import */ var _table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./table */ "./src/assets/javascripts/templates/table/index.tsx"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "renderTable", function() { return _table__WEBPACK_IMPORTED_MODULE_3__["renderTable"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/templates/search/index.tsx": +/*!***********************************************************!*\ + !*** ./src/assets/javascripts/templates/search/index.tsx ***! + \***********************************************************/ +/*! exports provided: renderSearchResult */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderSearchResult", function() { return renderSearchResult; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * CSS classes + */ +var css = { + item: "md-search-result__item", + link: "md-search-result__link", + article: "md-search-result__article md-search-result__article--document", + section: "md-search-result__article", + title: "md-search-result__title", + teaser: "md-search-result__teaser" +}; +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Render a search result + * + * @param result - Search result + * + * @return Element + */ +function renderSearchResult(_a) { + var article = _a.article, sections = _a.sections; + // create page with icon + var path = __webpack_require__(/*! material-design-icons-svg/paths/file-search-outline.json */ "./node_modules/material-design-icons-svg/paths/file-search-outline.json"); + var children = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([article], sections).map(function (document) { + var location = document.location, title = document.title, text = document.text; + return (Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("a", { href: location, class: css.link, tabIndex: -1 }, + Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("article", { class: "parent" in document ? css.section : css.article }, + !("parent" in document) + ? Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("div", { class: "md-search-result__icon md-icon" }, + Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("svg", { xmlns: "http://www.w3.org/2000/svg", viewBox: "0 0 24 24" }, + Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("path", { d: path }))) + : null, + Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("h1", { class: css.title }, title), + text.length + ? Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("p", { class: css.teaser }, Object(utilities__WEBPACK_IMPORTED_MODULE_1__["truncate"])(text, 320)) + : undefined))); + }); + return (Object(utilities__WEBPACK_IMPORTED_MODULE_1__["h"])("li", { class: css.item }, children)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/templates/source/index.tsx": +/*!***********************************************************!*\ + !*** ./src/assets/javascripts/templates/source/index.tsx ***! + \***********************************************************/ +/*! exports provided: renderSource */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderSource", function() { return renderSource; }); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * CSS classes + */ +var css = { + facts: "md-source__facts", + fact: "md-source__fact" +}; +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Render source facts + * + * @param facts - Source facts + * + * @return Element + */ +function renderSource(facts) { + var children = facts.map(function (fact) { return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("li", { class: css.fact }, fact)); }); + return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("ul", { class: css.facts }, children)); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/templates/table/index.tsx": +/*!**********************************************************!*\ + !*** ./src/assets/javascripts/templates/table/index.tsx ***! + \**********************************************************/ +/*! exports provided: renderTable */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "renderTable", function() { return renderTable; }); +/* harmony import */ var utilities__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! utilities */ "./src/assets/javascripts/utilities/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * CSS classes + */ +var css = { + wrapper: "md-typeset__scrollwrap", + table: "md-typeset__table" +}; +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Render a table inside a wrapper to improve scrolling on mobile + * + * @param table - Table element + * + * @return Element + */ +function renderTable(table) { + return (Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("div", { class: css.wrapper }, + Object(utilities__WEBPACK_IMPORTED_MODULE_0__["h"])("div", { class: css.table }, table))); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/utilities/config/index.ts": +/*!**********************************************************!*\ + !*** ./src/assets/javascripts/utilities/config/index.ts ***! + \**********************************************************/ +/*! exports provided: isConfig */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isConfig", function() { return isConfig; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Ensure that the given value is a valid configuration + * + * We could use `jsonschema` or any other schema validation framework, but that + * would just add more bloat to the bundle, so we'll keep it plain and simple. + * + * @param config - Configuration + * + * @return Test result + */ +function isConfig(config) { + return typeof config === "object" + && typeof config.base === "string" + && typeof config.worker === "object" + && typeof config.worker.search === "string"; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/utilities/index.ts": +/*!***************************************************!*\ + !*** ./src/assets/javascripts/utilities/index.ts ***! + \***************************************************/ +/*! exports provided: isConfig, h, cache, translate, truncate, round, hash */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ "./src/assets/javascripts/utilities/config/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isConfig", function() { return _config__WEBPACK_IMPORTED_MODULE_0__["isConfig"]; }); + +/* harmony import */ var _jsx__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./jsx */ "./src/assets/javascripts/utilities/jsx/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "h", function() { return _jsx__WEBPACK_IMPORTED_MODULE_1__["h"]; }); + +/* harmony import */ var _rxjs__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./rxjs */ "./src/assets/javascripts/utilities/rxjs/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "cache", function() { return _rxjs__WEBPACK_IMPORTED_MODULE_2__["cache"]; }); + +/* harmony import */ var _string__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./string */ "./src/assets/javascripts/utilities/string/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "translate", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["translate"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "truncate", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["truncate"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "round", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["round"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "hash", function() { return _string__WEBPACK_IMPORTED_MODULE_3__["hash"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/***/ }), + +/***/ "./src/assets/javascripts/utilities/jsx/index.ts": +/*!*******************************************************!*\ + !*** ./src/assets/javascripts/utilities/jsx/index.ts ***! + \*******************************************************/ +/*! exports provided: h */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "h", function() { return h; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var ramda__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ramda */ "./node_modules/ramda/es/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Helper functions + * ------------------------------------------------------------------------- */ +/** + * Create an element + * + * @param tag - HTML or SVG tag + * + * @return Element + */ +function createElement(tag) { + switch (tag) { + /* SVG elements */ + case "svg": + case "path": + return document.createElementNS("http://www.w3.org/2000/svg", tag); + /* HTML elements */ + default: + return document.createElement(tag); + } +} +/** + * Set an attribute + * + * @param el - Element + * @param name - Attribute name + * @param value - Attribute value + */ +function setAttribute(el, name, value) { + switch (name) { + /* Attributes to be ignored */ + case "xmlns": + break; + /* Attributes of SVG elements */ + case "viewBox": + case "d": + if (typeof value !== "boolean") + el.setAttributeNS(null, name, value); + else if (value) + el.setAttributeNS(null, name, ""); + break; + /* Attributes of HTML elements */ + default: + if (typeof value !== "boolean") + el.setAttribute(name, value); + else if (value) + el.setAttribute(name, ""); + } +} +/** + * Append a child node to an element + * + * @param el - Element + * @param child - Child node(s) + */ +function appendChild(el, child) { + var e_1, _a; + /* Handle primitive types (including raw HTML) */ + if (typeof child === "string" || typeof child === "number") { + el.innerHTML += child.toString(); + /* Handle nodes */ + } + else if (child instanceof Node) { + el.appendChild(child); + /* Handle nested children */ + } + else if (Array.isArray(child)) { + try { + for (var child_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(child), child_1_1 = child_1.next(); !child_1_1.done; child_1_1 = child_1.next()) { + var node = child_1_1.value; + appendChild(el, node); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (child_1_1 && !child_1_1.done && (_a = child_1.return)) _a.call(child_1); + } + finally { if (e_1) throw e_1.error; } + } + } +} +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * JSX factory + * + * @param tag - HTML or SVG tag + * @param attributes - HTML attributes + * @param children - Child elements + * + * @return Element + */ +function h(tag, attributes) { + var e_2, _a, e_3, _b; + var children = []; + for (var _i = 2; _i < arguments.length; _i++) { + children[_i - 2] = arguments[_i]; + } + var el = createElement(tag); + /* Set attributes, if any */ + if (attributes) + try { + for (var _c = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(Object(ramda__WEBPACK_IMPORTED_MODULE_1__["keys"])(attributes)), _d = _c.next(); !_d.done; _d = _c.next()) { + var attr = _d.value; + setAttribute(el, attr, attributes[attr]); + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (_d && !_d.done && (_a = _c.return)) _a.call(_c); + } + finally { if (e_2) throw e_2.error; } + } + try { + /* Append child nodes */ + for (var children_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(children), children_1_1 = children_1.next(); !children_1_1.done; children_1_1 = children_1.next()) { + var child = children_1_1.value; + appendChild(el, child); + } + } + catch (e_3_1) { e_3 = { error: e_3_1 }; } + finally { + try { + if (children_1_1 && !children_1_1.done && (_b = children_1.return)) _b.call(children_1); + } + finally { if (e_3) throw e_3.error; } + } + /* Return element */ + return el; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/utilities/rxjs/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/utilities/rxjs/index.ts ***! + \********************************************************/ +/*! exports provided: cache */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "cache", function() { return cache; }); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Cache the last value emitted by an observable in session storage + * + * If the key is not found in session storage, the factory is executed and the + * latest value emitted will automatically be persisted to sessions storage. + * Note that the values emitted by the returned observable must be serializable + * as `JSON`, or data will be lost. + * + * @template T - Value type + * + * @param key - Cache key + * @param factory - Observable factory + * + * @return Value observable + */ +function cache(key, factory) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["defer"])(function () { + var data = sessionStorage.getItem(key); + if (data) { + return Object(rxjs__WEBPACK_IMPORTED_MODULE_0__["of"])(JSON.parse(data)); + /* Retrieve value from observable factory and write to storage */ + } + else { + var value$ = factory(); + value$.subscribe(function (value) { + try { + sessionStorage.setItem(key, JSON.stringify(value)); + } + catch (err) { + /* Uncritical, just swallow */ + } + }); + /* Return value */ + return value$; + } + }); +} + + +/***/ }), + +/***/ "./src/assets/javascripts/utilities/string/index.ts": +/*!**********************************************************!*\ + !*** ./src/assets/javascripts/utilities/string/index.ts ***! + \**********************************************************/ +/*! exports provided: translate, truncate, round, hash */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "translate", function() { return translate; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "truncate", function() { return truncate; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "round", function() { return round; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "hash", function() { return hash; }); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * Translations + */ +var lang; +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Translate the given key + * + * @param key - Key to be translated + * @param value - Value to be replaced + * + * @return Translation + */ +function translate(key, value) { + if (typeof lang === "undefined") { + var el = Object(observables__WEBPACK_IMPORTED_MODULE_0__["getElementOrThrow"])("#__lang"); + lang = JSON.parse(el.innerText); + } + if (typeof lang[key] === "undefined") { + throw new ReferenceError("Invalid translation: " + key); + } + return typeof value !== "undefined" + ? lang[key].replace("#", value) + : lang[key]; +} +/** + * Truncate a string after the given number of characters + * + * This is not a very reasonable approach, since the summaries kind of suck. + * It would be better to create something more intelligent, highlighting the + * search occurrences and making a better summary out of it, but this note was + * written three years ago, so who knows if we'll ever fix it. + * + * @param value - Value to be truncated + * @param n - Number of characters + * + * @return Truncated value + */ +function truncate(value, n) { + var i = n; + if (value.length > i) { + while (value[i] !== " " && --i > 0) + ; // tslint:disable-line + return value.substring(0, i) + "..."; + } + return value; +} +/** + * Round a number for display with source facts + * + * This is a reverse engineered version of GitHub's weird rounding algorithm + * for stars, forks and all other numbers. While all numbers below `1,000` are + * returned as-is, bigger numbers are converted to fixed numbers: + * + * - `1,049` => `1k` + * - `1,050` => `1.1k` + * - `1,949` => `1.9k` + * - `1,950` => `2k` + * + * @param value - Original value + * + * @return Rounded value + */ +function round(value) { + if (value > 999) { + var digits = +((value - 950) % 1000 > 99); + return ((value + 1) / 1000).toFixed(digits) + "k"; + } + else { + return value.toString(); + } +} +/** + * Simple hash function + * + * @see https://bit.ly/2wsVjJ4 - Original source + * + * @param value - Value to be hashed + * + * @return Hash as 32bit integer + */ +function hash(value) { + var h = 0; + for (var i = 0, len = value.length; i < len; i++) { + h = ((h << 5) - h) + value.charCodeAt(i); + h |= 0; // Convert to 32bit integer + } + return h; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/workers/index.ts": +/*!*************************************************!*\ + !*** ./src/assets/javascripts/workers/index.ts ***! + \*************************************************/ +/*! exports provided: setupSearchWorker, SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _search__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./search */ "./src/assets/javascripts/workers/search/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupSearchWorker", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["setupSearchWorker"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["SearchMessageType"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchSetupMessage"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchDumpMessage"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchQueryMessage"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return _search__WEBPACK_IMPORTED_MODULE_0__["isSearchResultMessage"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/***/ }), + +/***/ "./src/assets/javascripts/workers/search/_/index.ts": +/*!**********************************************************!*\ + !*** ./src/assets/javascripts/workers/search/_/index.ts ***! + \**********************************************************/ +/*! exports provided: setupSearchWorker */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupSearchWorker", function() { return setupSearchWorker; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var rxjs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rxjs */ "./node_modules/rxjs/_esm5/index.js"); +/* harmony import */ var rxjs_ajax__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rxjs/ajax */ "./node_modules/rxjs/_esm5/ajax/index.js"); +/* harmony import */ var rxjs_operators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rxjs/operators */ "./node_modules/rxjs/_esm5/operators/index.js"); +/* harmony import */ var observables__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! observables */ "./src/assets/javascripts/observables/index.ts"); +/* harmony import */ var _message__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../message */ "./src/assets/javascripts/workers/search/message/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Setup search web worker + * + * This function will create a web worker to setup and query the search index + * which is done using `lunr`. The index can be passed explicitly in order to + * enable hacks like _localsearch_ via search index embedding as JSON. If no + * index is given, this function will load it from the default location. + * + * @param url - Worker url + * @param options - Options + * + * @return Worker handler + */ +function setupSearchWorker(url, _a) { + var base = _a.base, index = _a.index, location$ = _a.location$; + var worker = new Worker(url); + /* Ensure stable base URL */ + var origin$ = location$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["take"])(1), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { + var href = _a.href; + return new URL(base, href) + .toString() + .replace(/\/$/, ""); + })); + /* Create communication channels and resolve relative links */ + var tx$ = new rxjs__WEBPACK_IMPORTED_MODULE_1__["Subject"](); + var rx$ = Object(observables__WEBPACK_IMPORTED_MODULE_4__["watchWorker"])(worker, { tx$: tx$ }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["withLatestFrom"])(origin$), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (_a) { + var e_1, _b, e_2, _c; + var _d = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), message = _d[0], origin = _d[1]; + if (Object(_message__WEBPACK_IMPORTED_MODULE_5__["isSearchResultMessage"])(message)) { + try { + for (var _e = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(message.data), _f = _e.next(); !_f.done; _f = _e.next()) { + var _g = _f.value, article = _g.article, sections = _g.sections; + article.location = origin + "/" + article.location; + try { + for (var sections_1 = (e_2 = void 0, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(sections)), sections_1_1 = sections_1.next(); !sections_1_1.done; sections_1_1 = sections_1.next()) { + var section = sections_1_1.value; + section.location = origin + "/" + section.location; + } + } + catch (e_2_1) { e_2 = { error: e_2_1 }; } + finally { + try { + if (sections_1_1 && !sections_1_1.done && (_c = sections_1.return)) _c.call(sections_1); + } + finally { if (e_2) throw e_2.error; } + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_f && !_f.done && (_b = _e.return)) _b.call(_e); + } + finally { if (e_1) throw e_1.error; } + } + } + return message; + }), Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["shareReplay"])(1)); + /* Fetch index if it wasn't passed explicitly */ + var index$ = typeof index !== "undefined" + ? Object(rxjs__WEBPACK_IMPORTED_MODULE_1__["from"])(index) + : origin$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["switchMap"])(function (origin) { return Object(rxjs_ajax__WEBPACK_IMPORTED_MODULE_2__["ajax"])({ + url: origin + "/search/search_index.json", + responseType: "json", + withCredentials: true + }) + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["pluck"])("response")); })); + /* Send index to worker */ + index$ + .pipe(Object(rxjs_operators__WEBPACK_IMPORTED_MODULE_3__["map"])(function (data) { return ({ + type: _message__WEBPACK_IMPORTED_MODULE_5__["SearchMessageType"].SETUP, + data: data + }); })) + .subscribe(tx$.next.bind(tx$)); + /* Return worker handler */ + return { tx$: tx$, rx$: rx$ }; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/workers/search/index.ts": +/*!********************************************************!*\ + !*** ./src/assets/javascripts/workers/search/index.ts ***! + \********************************************************/ +/*! exports provided: setupSearchWorker, SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/workers/search/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "setupSearchWorker", function() { return ___WEBPACK_IMPORTED_MODULE_0__["setupSearchWorker"]; }); + +/* harmony import */ var _message__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./message */ "./src/assets/javascripts/workers/search/message/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["SearchMessageType"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchSetupMessage"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchDumpMessage"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchQueryMessage"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return _message__WEBPACK_IMPORTED_MODULE_1__["isSearchResultMessage"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/***/ }), + +/***/ "./src/assets/javascripts/workers/search/message/index.ts": +/*!****************************************************************!*\ + !*** ./src/assets/javascripts/workers/search/message/index.ts ***! + \****************************************************************/ +/*! exports provided: SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return SearchMessageType; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return isSearchSetupMessage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return isSearchDumpMessage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return isSearchQueryMessage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return isSearchResultMessage; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ +/** + * Search message type + */ +var SearchMessageType; +(function (SearchMessageType) { + SearchMessageType[SearchMessageType["SETUP"] = 0] = "SETUP"; + SearchMessageType[SearchMessageType["DUMP"] = 1] = "DUMP"; + SearchMessageType[SearchMessageType["QUERY"] = 2] = "QUERY"; + SearchMessageType[SearchMessageType["RESULT"] = 3] = "RESULT"; /* Search results */ +})(SearchMessageType || (SearchMessageType = {})); +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Type guard for search setup messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchSetupMessage(message) { + return message.type === SearchMessageType.SETUP; +} +/** + * Type guard for search dump messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchDumpMessage(message) { + return message.type === SearchMessageType.DUMP; +} +/** + * Type guard for search query messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchQueryMessage(message) { + return message.type === SearchMessageType.QUERY; +} +/** + * Type guard for search result messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchResultMessage(message) { + return message.type === SearchMessageType.RESULT; +} + + +/***/ }), + +/***/ "./src/assets/stylesheets/main.scss": +/*!******************************************!*\ + !*** ./src/assets/stylesheets/main.scss ***! + \******************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ("/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/main.css"); + +/***/ }), + +/***/ "./src/assets/stylesheets/palette.scss": +/*!*********************************************!*\ + !*** ./src/assets/stylesheets/palette.scss ***! + \*********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony default export */ __webpack_exports__["default"] = ("/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/palette.css"); + +/***/ }) + +/******/ }))); +//# sourceMappingURL=bundle.js.map \ No newline at end of file diff --git a/material/assets/javascripts/bundle.js.map b/material/assets/javascripts/bundle.js.map new file mode 100644 index 000000000..aef77a9ee --- /dev/null +++ b/material/assets/javascripts/bundle.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/clipboard/dist/clipboard.js","webpack:///./node_modules/ramda/es/F.js","webpack:///./node_modules/ramda/es/T.js","webpack:///./node_modules/ramda/es/__.js","webpack:///./node_modules/ramda/es/add.js","webpack:///./node_modules/ramda/es/addIndex.js","webpack:///./node_modules/ramda/es/adjust.js","webpack:///./node_modules/ramda/es/all.js","webpack:///./node_modules/ramda/es/allPass.js","webpack:///./node_modules/ramda/es/always.js","webpack:///./node_modules/ramda/es/and.js","webpack:///./node_modules/ramda/es/any.js","webpack:///./node_modules/ramda/es/anyPass.js","webpack:///./node_modules/ramda/es/ap.js","webpack:///./node_modules/ramda/es/aperture.js","webpack:///./node_modules/ramda/es/append.js","webpack:///./node_modules/ramda/es/apply.js","webpack:///./node_modules/ramda/es/applySpec.js","webpack:///./node_modules/ramda/es/applyTo.js","webpack:///./node_modules/ramda/es/ascend.js","webpack:///./node_modules/ramda/es/assoc.js","webpack:///./node_modules/ramda/es/assocPath.js","webpack:///./node_modules/ramda/es/binary.js","webpack:///./node_modules/ramda/es/bind.js","webpack:///./node_modules/ramda/es/both.js","webpack:///./node_modules/ramda/es/call.js","webpack:///./node_modules/ramda/es/chain.js","webpack:///./node_modules/ramda/es/clamp.js","webpack:///./node_modules/ramda/es/clone.js","webpack:///./node_modules/ramda/es/comparator.js","webpack:///./node_modules/ramda/es/complement.js","webpack:///./node_modules/ramda/es/compose.js","webpack:///./node_modules/ramda/es/composeK.js","webpack:///./node_modules/ramda/es/composeP.js","webpack:///./node_modules/ramda/es/composeWith.js","webpack:///./node_modules/ramda/es/concat.js","webpack:///./node_modules/ramda/es/cond.js","webpack:///./node_modules/ramda/es/construct.js","webpack:///./node_modules/ramda/es/constructN.js","webpack:///./node_modules/ramda/es/contains.js","webpack:///./node_modules/ramda/es/converge.js","webpack:///./node_modules/ramda/es/countBy.js","webpack:///./node_modules/ramda/es/curry.js","webpack:///./node_modules/ramda/es/curryN.js","webpack:///./node_modules/ramda/es/dec.js","webpack:///./node_modules/ramda/es/defaultTo.js","webpack:///./node_modules/ramda/es/descend.js","webpack:///./node_modules/ramda/es/difference.js","webpack:///./node_modules/ramda/es/differenceWith.js","webpack:///./node_modules/ramda/es/dissoc.js","webpack:///./node_modules/ramda/es/dissocPath.js","webpack:///./node_modules/ramda/es/divide.js","webpack:///./node_modules/ramda/es/drop.js","webpack:///./node_modules/ramda/es/dropLast.js","webpack:///./node_modules/ramda/es/dropLastWhile.js","webpack:///./node_modules/ramda/es/dropRepeats.js","webpack:///./node_modules/ramda/es/dropRepeatsWith.js","webpack:///./node_modules/ramda/es/dropWhile.js","webpack:///./node_modules/ramda/es/either.js","webpack:///./node_modules/ramda/es/empty.js","webpack:///./node_modules/ramda/es/endsWith.js","webpack:///./node_modules/ramda/es/eqBy.js","webpack:///./node_modules/ramda/es/eqProps.js","webpack:///./node_modules/ramda/es/equals.js","webpack:///./node_modules/ramda/es/evolve.js","webpack:///./node_modules/ramda/es/filter.js","webpack:///./node_modules/ramda/es/find.js","webpack:///./node_modules/ramda/es/findIndex.js","webpack:///./node_modules/ramda/es/findLast.js","webpack:///./node_modules/ramda/es/findLastIndex.js","webpack:///./node_modules/ramda/es/flatten.js","webpack:///./node_modules/ramda/es/flip.js","webpack:///./node_modules/ramda/es/forEach.js","webpack:///./node_modules/ramda/es/forEachObjIndexed.js","webpack:///./node_modules/ramda/es/fromPairs.js","webpack:///./node_modules/ramda/es/groupBy.js","webpack:///./node_modules/ramda/es/groupWith.js","webpack:///./node_modules/ramda/es/gt.js","webpack:///./node_modules/ramda/es/gte.js","webpack:///./node_modules/ramda/es/has.js","webpack:///./node_modules/ramda/es/hasIn.js","webpack:///./node_modules/ramda/es/hasPath.js","webpack:///./node_modules/ramda/es/head.js","webpack:///./node_modules/ramda/es/identical.js","webpack:///./node_modules/ramda/es/identity.js","webpack:///./node_modules/ramda/es/ifElse.js","webpack:///./node_modules/ramda/es/inc.js","webpack:///./node_modules/ramda/es/includes.js","webpack:///./node_modules/ramda/es/index.js","webpack:///./node_modules/ramda/es/indexBy.js","webpack:///./node_modules/ramda/es/indexOf.js","webpack:///./node_modules/ramda/es/init.js","webpack:///./node_modules/ramda/es/innerJoin.js","webpack:///./node_modules/ramda/es/insert.js","webpack:///./node_modules/ramda/es/insertAll.js","webpack:///./node_modules/ramda/es/internal/_Set.js","webpack:///./node_modules/ramda/es/internal/_aperture.js","webpack:///./node_modules/ramda/es/internal/_arity.js","webpack:///./node_modules/ramda/es/internal/_arrayFromIterator.js","webpack:///./node_modules/ramda/es/internal/_assertPromise.js","webpack:///./node_modules/ramda/es/internal/_checkForMethod.js","webpack:///./node_modules/ramda/es/internal/_clone.js","webpack:///./node_modules/ramda/es/internal/_cloneRegExp.js","webpack:///./node_modules/ramda/es/internal/_complement.js","webpack:///./node_modules/ramda/es/internal/_concat.js","webpack:///./node_modules/ramda/es/internal/_createPartialApplicator.js","webpack:///./node_modules/ramda/es/internal/_curry1.js","webpack:///./node_modules/ramda/es/internal/_curry2.js","webpack:///./node_modules/ramda/es/internal/_curry3.js","webpack:///./node_modules/ramda/es/internal/_curryN.js","webpack:///./node_modules/ramda/es/internal/_dispatchable.js","webpack:///./node_modules/ramda/es/internal/_dropLast.js","webpack:///./node_modules/ramda/es/internal/_dropLastWhile.js","webpack:///./node_modules/ramda/es/internal/_equals.js","webpack:///./node_modules/ramda/es/internal/_filter.js","webpack:///./node_modules/ramda/es/internal/_flatCat.js","webpack:///./node_modules/ramda/es/internal/_forceReduced.js","webpack:///./node_modules/ramda/es/internal/_functionName.js","webpack:///./node_modules/ramda/es/internal/_has.js","webpack:///./node_modules/ramda/es/internal/_identity.js","webpack:///./node_modules/ramda/es/internal/_includes.js","webpack:///./node_modules/ramda/es/internal/_includesWith.js","webpack:///./node_modules/ramda/es/internal/_indexOf.js","webpack:///./node_modules/ramda/es/internal/_isArguments.js","webpack:///./node_modules/ramda/es/internal/_isArray.js","webpack:///./node_modules/ramda/es/internal/_isArrayLike.js","webpack:///./node_modules/ramda/es/internal/_isFunction.js","webpack:///./node_modules/ramda/es/internal/_isInteger.js","webpack:///./node_modules/ramda/es/internal/_isNumber.js","webpack:///./node_modules/ramda/es/internal/_isObject.js","webpack:///./node_modules/ramda/es/internal/_isPlaceholder.js","webpack:///./node_modules/ramda/es/internal/_isRegExp.js","webpack:///./node_modules/ramda/es/internal/_isString.js","webpack:///./node_modules/ramda/es/internal/_isTransformer.js","webpack:///./node_modules/ramda/es/internal/_makeFlat.js","webpack:///./node_modules/ramda/es/internal/_map.js","webpack:///./node_modules/ramda/es/internal/_objectAssign.js","webpack:///./node_modules/ramda/es/internal/_objectIs.js","webpack:///./node_modules/ramda/es/internal/_of.js","webpack:///./node_modules/ramda/es/internal/_pipe.js","webpack:///./node_modules/ramda/es/internal/_pipeP.js","webpack:///./node_modules/ramda/es/internal/_quote.js","webpack:///./node_modules/ramda/es/internal/_reduce.js","webpack:///./node_modules/ramda/es/internal/_reduced.js","webpack:///./node_modules/ramda/es/internal/_stepCat.js","webpack:///./node_modules/ramda/es/internal/_toISOString.js","webpack:///./node_modules/ramda/es/internal/_toString.js","webpack:///./node_modules/ramda/es/internal/_xall.js","webpack:///./node_modules/ramda/es/internal/_xany.js","webpack:///./node_modules/ramda/es/internal/_xaperture.js","webpack:///./node_modules/ramda/es/internal/_xchain.js","webpack:///./node_modules/ramda/es/internal/_xdrop.js","webpack:///./node_modules/ramda/es/internal/_xdropLast.js","webpack:///./node_modules/ramda/es/internal/_xdropLastWhile.js","webpack:///./node_modules/ramda/es/internal/_xdropRepeatsWith.js","webpack:///./node_modules/ramda/es/internal/_xdropWhile.js","webpack:///./node_modules/ramda/es/internal/_xfBase.js","webpack:///./node_modules/ramda/es/internal/_xfilter.js","webpack:///./node_modules/ramda/es/internal/_xfind.js","webpack:///./node_modules/ramda/es/internal/_xfindIndex.js","webpack:///./node_modules/ramda/es/internal/_xfindLast.js","webpack:///./node_modules/ramda/es/internal/_xfindLastIndex.js","webpack:///./node_modules/ramda/es/internal/_xmap.js","webpack:///./node_modules/ramda/es/internal/_xreduceBy.js","webpack:///./node_modules/ramda/es/internal/_xtake.js","webpack:///./node_modules/ramda/es/internal/_xtakeWhile.js","webpack:///./node_modules/ramda/es/internal/_xtap.js","webpack:///./node_modules/ramda/es/internal/_xwrap.js","webpack:///./node_modules/ramda/es/intersection.js","webpack:///./node_modules/ramda/es/intersperse.js","webpack:///./node_modules/ramda/es/into.js","webpack:///./node_modules/ramda/es/invert.js","webpack:///./node_modules/ramda/es/invertObj.js","webpack:///./node_modules/ramda/es/invoker.js","webpack:///./node_modules/ramda/es/is.js","webpack:///./node_modules/ramda/es/isEmpty.js","webpack:///./node_modules/ramda/es/isNil.js","webpack:///./node_modules/ramda/es/join.js","webpack:///./node_modules/ramda/es/juxt.js","webpack:///./node_modules/ramda/es/keys.js","webpack:///./node_modules/ramda/es/keysIn.js","webpack:///./node_modules/ramda/es/last.js","webpack:///./node_modules/ramda/es/lastIndexOf.js","webpack:///./node_modules/ramda/es/length.js","webpack:///./node_modules/ramda/es/lens.js","webpack:///./node_modules/ramda/es/lensIndex.js","webpack:///./node_modules/ramda/es/lensPath.js","webpack:///./node_modules/ramda/es/lensProp.js","webpack:///./node_modules/ramda/es/lift.js","webpack:///./node_modules/ramda/es/liftN.js","webpack:///./node_modules/ramda/es/lt.js","webpack:///./node_modules/ramda/es/lte.js","webpack:///./node_modules/ramda/es/map.js","webpack:///./node_modules/ramda/es/mapAccum.js","webpack:///./node_modules/ramda/es/mapAccumRight.js","webpack:///./node_modules/ramda/es/mapObjIndexed.js","webpack:///./node_modules/ramda/es/match.js","webpack:///./node_modules/ramda/es/mathMod.js","webpack:///./node_modules/ramda/es/max.js","webpack:///./node_modules/ramda/es/maxBy.js","webpack:///./node_modules/ramda/es/mean.js","webpack:///./node_modules/ramda/es/median.js","webpack:///./node_modules/ramda/es/memoizeWith.js","webpack:///./node_modules/ramda/es/merge.js","webpack:///./node_modules/ramda/es/mergeAll.js","webpack:///./node_modules/ramda/es/mergeDeepLeft.js","webpack:///./node_modules/ramda/es/mergeDeepRight.js","webpack:///./node_modules/ramda/es/mergeDeepWith.js","webpack:///./node_modules/ramda/es/mergeDeepWithKey.js","webpack:///./node_modules/ramda/es/mergeLeft.js","webpack:///./node_modules/ramda/es/mergeRight.js","webpack:///./node_modules/ramda/es/mergeWith.js","webpack:///./node_modules/ramda/es/mergeWithKey.js","webpack:///./node_modules/ramda/es/min.js","webpack:///./node_modules/ramda/es/minBy.js","webpack:///./node_modules/ramda/es/modulo.js","webpack:///./node_modules/ramda/es/move.js","webpack:///./node_modules/ramda/es/multiply.js","webpack:///./node_modules/ramda/es/nAry.js","webpack:///./node_modules/ramda/es/negate.js","webpack:///./node_modules/ramda/es/none.js","webpack:///./node_modules/ramda/es/not.js","webpack:///./node_modules/ramda/es/nth.js","webpack:///./node_modules/ramda/es/nthArg.js","webpack:///./node_modules/ramda/es/o.js","webpack:///./node_modules/ramda/es/objOf.js","webpack:///./node_modules/ramda/es/of.js","webpack:///./node_modules/ramda/es/omit.js","webpack:///./node_modules/ramda/es/once.js","webpack:///./node_modules/ramda/es/or.js","webpack:///./node_modules/ramda/es/otherwise.js","webpack:///./node_modules/ramda/es/over.js","webpack:///./node_modules/ramda/es/pair.js","webpack:///./node_modules/ramda/es/partial.js","webpack:///./node_modules/ramda/es/partialRight.js","webpack:///./node_modules/ramda/es/partition.js","webpack:///./node_modules/ramda/es/path.js","webpack:///./node_modules/ramda/es/pathEq.js","webpack:///./node_modules/ramda/es/pathOr.js","webpack:///./node_modules/ramda/es/pathSatisfies.js","webpack:///./node_modules/ramda/es/pick.js","webpack:///./node_modules/ramda/es/pickAll.js","webpack:///./node_modules/ramda/es/pickBy.js","webpack:///./node_modules/ramda/es/pipe.js","webpack:///./node_modules/ramda/es/pipeK.js","webpack:///./node_modules/ramda/es/pipeP.js","webpack:///./node_modules/ramda/es/pipeWith.js","webpack:///./node_modules/ramda/es/pluck.js","webpack:///./node_modules/ramda/es/prepend.js","webpack:///./node_modules/ramda/es/product.js","webpack:///./node_modules/ramda/es/project.js","webpack:///./node_modules/ramda/es/prop.js","webpack:///./node_modules/ramda/es/propEq.js","webpack:///./node_modules/ramda/es/propIs.js","webpack:///./node_modules/ramda/es/propOr.js","webpack:///./node_modules/ramda/es/propSatisfies.js","webpack:///./node_modules/ramda/es/props.js","webpack:///./node_modules/ramda/es/range.js","webpack:///./node_modules/ramda/es/reduce.js","webpack:///./node_modules/ramda/es/reduceBy.js","webpack:///./node_modules/ramda/es/reduceRight.js","webpack:///./node_modules/ramda/es/reduceWhile.js","webpack:///./node_modules/ramda/es/reduced.js","webpack:///./node_modules/ramda/es/reject.js","webpack:///./node_modules/ramda/es/remove.js","webpack:///./node_modules/ramda/es/repeat.js","webpack:///./node_modules/ramda/es/replace.js","webpack:///./node_modules/ramda/es/reverse.js","webpack:///./node_modules/ramda/es/scan.js","webpack:///./node_modules/ramda/es/sequence.js","webpack:///./node_modules/ramda/es/set.js","webpack:///./node_modules/ramda/es/slice.js","webpack:///./node_modules/ramda/es/sort.js","webpack:///./node_modules/ramda/es/sortBy.js","webpack:///./node_modules/ramda/es/sortWith.js","webpack:///./node_modules/ramda/es/split.js","webpack:///./node_modules/ramda/es/splitAt.js","webpack:///./node_modules/ramda/es/splitEvery.js","webpack:///./node_modules/ramda/es/splitWhen.js","webpack:///./node_modules/ramda/es/startsWith.js","webpack:///./node_modules/ramda/es/subtract.js","webpack:///./node_modules/ramda/es/sum.js","webpack:///./node_modules/ramda/es/symmetricDifference.js","webpack:///./node_modules/ramda/es/symmetricDifferenceWith.js","webpack:///./node_modules/ramda/es/tail.js","webpack:///./node_modules/ramda/es/take.js","webpack:///./node_modules/ramda/es/takeLast.js","webpack:///./node_modules/ramda/es/takeLastWhile.js","webpack:///./node_modules/ramda/es/takeWhile.js","webpack:///./node_modules/ramda/es/tap.js","webpack:///./node_modules/ramda/es/test.js","webpack:///./node_modules/ramda/es/then.js","webpack:///./node_modules/ramda/es/thunkify.js","webpack:///./node_modules/ramda/es/times.js","webpack:///./node_modules/ramda/es/toLower.js","webpack:///./node_modules/ramda/es/toPairs.js","webpack:///./node_modules/ramda/es/toPairsIn.js","webpack:///./node_modules/ramda/es/toString.js","webpack:///./node_modules/ramda/es/toUpper.js","webpack:///./node_modules/ramda/es/transduce.js","webpack:///./node_modules/ramda/es/transpose.js","webpack:///./node_modules/ramda/es/traverse.js","webpack:///./node_modules/ramda/es/trim.js","webpack:///./node_modules/ramda/es/tryCatch.js","webpack:///./node_modules/ramda/es/type.js","webpack:///./node_modules/ramda/es/unapply.js","webpack:///./node_modules/ramda/es/unary.js","webpack:///./node_modules/ramda/es/uncurryN.js","webpack:///./node_modules/ramda/es/unfold.js","webpack:///./node_modules/ramda/es/union.js","webpack:///./node_modules/ramda/es/unionWith.js","webpack:///./node_modules/ramda/es/uniq.js","webpack:///./node_modules/ramda/es/uniqBy.js","webpack:///./node_modules/ramda/es/uniqWith.js","webpack:///./node_modules/ramda/es/unless.js","webpack:///./node_modules/ramda/es/unnest.js","webpack:///./node_modules/ramda/es/until.js","webpack:///./node_modules/ramda/es/update.js","webpack:///./node_modules/ramda/es/useWith.js","webpack:///./node_modules/ramda/es/values.js","webpack:///./node_modules/ramda/es/valuesIn.js","webpack:///./node_modules/ramda/es/view.js","webpack:///./node_modules/ramda/es/when.js","webpack:///./node_modules/ramda/es/where.js","webpack:///./node_modules/ramda/es/whereEq.js","webpack:///./node_modules/ramda/es/without.js","webpack:///./node_modules/ramda/es/xprod.js","webpack:///./node_modules/ramda/es/zip.js","webpack:///./node_modules/ramda/es/zipObj.js","webpack:///./node_modules/ramda/es/zipWith.js","webpack:///./node_modules/rxjs/_esm5/ajax/index.js","webpack:///./node_modules/rxjs/_esm5/index.js","webpack:///./node_modules/rxjs/_esm5/internal/AsyncSubject.js","webpack:///./node_modules/rxjs/_esm5/internal/BehaviorSubject.js","webpack:///./node_modules/rxjs/_esm5/internal/InnerSubscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/Notification.js","webpack:///./node_modules/rxjs/_esm5/internal/Observable.js","webpack:///./node_modules/rxjs/_esm5/internal/Observer.js","webpack:///./node_modules/rxjs/_esm5/internal/OuterSubscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/ReplaySubject.js","webpack:///./node_modules/rxjs/_esm5/internal/Scheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/Subject.js","webpack:///./node_modules/rxjs/_esm5/internal/SubjectSubscription.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/Subscription.js","webpack:///./node_modules/rxjs/_esm5/internal/config.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/SubscribeOnObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/bindCallback.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/bindNodeCallback.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/combineLatest.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/concat.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/defer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/dom/AjaxObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/dom/ajax.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/empty.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/forkJoin.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/from.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromArray.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEvent.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/fromEventPattern.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/generate.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/iif.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/interval.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/merge.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/never.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/of.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/onErrorResumeNext.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/pairs.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/partition.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/race.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/range.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/throwError.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/timer.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/using.js","webpack:///./node_modules/rxjs/_esm5/internal/observable/zip.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/audit.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/auditTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/buffer.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferCount.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferToggle.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/bufferWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/catchError.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/combineAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/combineLatest.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concat.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/concatMapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/count.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/debounce.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/debounceTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/defaultIfEmpty.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/delay.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/delayWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/dematerialize.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/distinct.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/distinctUntilChanged.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/distinctUntilKeyChanged.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/elementAt.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/endWith.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/every.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/exhaust.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/exhaustMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/expand.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/filter.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/finalize.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/find.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/findIndex.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/first.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/groupBy.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/ignoreElements.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/isEmpty.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/last.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/map.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/materialize.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/max.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/merge.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeMapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/mergeScan.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/min.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/multicast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/observeOn.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/onErrorResumeNext.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/pairwise.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/partition.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/pluck.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publish.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publishBehavior.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publishLast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/publishReplay.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/race.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/reduce.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/refCount.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/repeat.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/repeatWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/retry.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/retryWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/sample.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/sampleTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/scan.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/sequenceEqual.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/share.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/shareReplay.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/single.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skip.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skipLast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skipUntil.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/skipWhile.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/startWith.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/subscribeOn.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/switchAll.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/switchMap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/switchMapTo.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/take.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeLast.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeUntil.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/takeWhile.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/tap.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/throttle.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/throttleTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/throwIfEmpty.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeInterval.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeout.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timeoutWith.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/timestamp.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/toArray.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/window.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowCount.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowTime.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowToggle.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/windowWhen.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/withLatestFrom.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/zip.js","webpack:///./node_modules/rxjs/_esm5/internal/operators/zipAll.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleArray.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduleObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/schedulePromise.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduled/scheduled.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/Action.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AnimationFrameScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsapScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/AsyncScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueAction.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/QueueScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/VirtualTimeScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/animationFrame.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/asap.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/async.js","webpack:///./node_modules/rxjs/_esm5/internal/scheduler/queue.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/iterator.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/observable.js","webpack:///./node_modules/rxjs/_esm5/internal/symbol/rxSubscriber.js","webpack:///./node_modules/rxjs/_esm5/internal/util/ArgumentOutOfRangeError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/EmptyError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/Immediate.js","webpack:///./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/TimeoutError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/canReportError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/hostReportError.js","webpack:///./node_modules/rxjs/_esm5/internal/util/identity.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArray.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isArrayLike.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isDate.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isFunction.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isInteropObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isNumeric.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isObject.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isPromise.js","webpack:///./node_modules/rxjs/_esm5/internal/util/isScheduler.js","webpack:///./node_modules/rxjs/_esm5/internal/util/noop.js","webpack:///./node_modules/rxjs/_esm5/internal/util/not.js","webpack:///./node_modules/rxjs/_esm5/internal/util/pipe.js","webpack:///./node_modules/rxjs/_esm5/internal/util/root.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeTo.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToArray.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToIterable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToObservable.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToPromise.js","webpack:///./node_modules/rxjs/_esm5/internal/util/subscribeToResult.js","webpack:///./node_modules/rxjs/_esm5/internal/util/toSubscriber.js","webpack:///./node_modules/rxjs/_esm5/operators/index.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/assets/javascripts/actions/anchor/index.ts","webpack:///./src/assets/javascripts/actions/header/index.ts","webpack:///./src/assets/javascripts/actions/header/shadow/index.ts","webpack:///./src/assets/javascripts/actions/header/title/index.ts","webpack:///./src/assets/javascripts/actions/index.ts","webpack:///./src/assets/javascripts/actions/main/hideable/index.ts","webpack:///./src/assets/javascripts/actions/main/index.ts","webpack:///./src/assets/javascripts/actions/main/scrollable/index.ts","webpack:///./src/assets/javascripts/actions/main/sidebar/index.ts","webpack:///./src/assets/javascripts/actions/search/index.ts","webpack:///./src/assets/javascripts/actions/search/result/index.ts","webpack:///./src/assets/javascripts/components/_/index.ts","webpack:///./src/assets/javascripts/components/header/_/index.ts","webpack:///./src/assets/javascripts/components/header/index.ts","webpack:///./src/assets/javascripts/components/header/title/index.ts","webpack:///./src/assets/javascripts/components/hero/index.ts","webpack:///./src/assets/javascripts/components/index.ts","webpack:///./src/assets/javascripts/components/main/index.ts","webpack:///./src/assets/javascripts/components/navigation/index.ts","webpack:///./src/assets/javascripts/components/search/_/index.ts","webpack:///./src/assets/javascripts/components/search/index.ts","webpack:///./src/assets/javascripts/components/search/query/index.ts","webpack:///./src/assets/javascripts/components/search/reset/index.ts","webpack:///./src/assets/javascripts/components/search/result/index.ts","webpack:///./src/assets/javascripts/components/tabs/index.ts","webpack:///./src/assets/javascripts/components/toc/index.ts","webpack:///./src/assets/javascripts/index.ts","webpack:///./src/assets/javascripts/integrations/clipboard/index.ts","webpack:///./src/assets/javascripts/integrations/dialog/index.ts","webpack:///./src/assets/javascripts/integrations/keyboard/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/index.ts","webpack:///./src/assets/javascripts/observables/agent/document/switch/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/focus/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/offset/index.ts","webpack:///./src/assets/javascripts/observables/agent/element/select/index.ts","webpack:///./src/assets/javascripts/observables/agent/index.ts","webpack:///./src/assets/javascripts/observables/agent/keyboard/index.ts","webpack:///./src/assets/javascripts/observables/agent/location/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/location/hash/index.ts","webpack:///./src/assets/javascripts/observables/agent/location/index.ts","webpack:///./src/assets/javascripts/observables/agent/media/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/_/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/offset/index.ts","webpack:///./src/assets/javascripts/observables/agent/viewport/size/index.ts","webpack:///./src/assets/javascripts/observables/agent/worker/index.ts","webpack:///./src/assets/javascripts/observables/anchor/index.ts","webpack:///./src/assets/javascripts/observables/header/_/index.ts","webpack:///./src/assets/javascripts/observables/header/index.ts","webpack:///./src/assets/javascripts/observables/header/shadow/index.ts","webpack:///./src/assets/javascripts/observables/header/title/index.ts","webpack:///./src/assets/javascripts/observables/index.ts","webpack:///./src/assets/javascripts/observables/main/_/index.ts","webpack:///./src/assets/javascripts/observables/main/hideable/index.ts","webpack:///./src/assets/javascripts/observables/main/index.ts","webpack:///./src/assets/javascripts/observables/main/sidebar/index.ts","webpack:///./src/assets/javascripts/observables/navigation/index.ts","webpack:///./src/assets/javascripts/observables/navigation/layer/index.ts","webpack:///./src/assets/javascripts/observables/search/index.ts","webpack:///./src/assets/javascripts/observables/search/query/index.ts","webpack:///./src/assets/javascripts/observables/search/reset/index.ts","webpack:///./src/assets/javascripts/observables/search/result/index.ts","webpack:///./src/assets/javascripts/observables/toggle/index.ts","webpack:///./src/assets/javascripts/patches/details/index.ts","webpack:///./src/assets/javascripts/patches/index.ts","webpack:///./src/assets/javascripts/patches/script/index.ts","webpack:///./src/assets/javascripts/patches/scrollfix/index.ts","webpack:///./src/assets/javascripts/patches/source/github/index.ts","webpack:///./src/assets/javascripts/patches/source/gitlab/index.ts","webpack:///./src/assets/javascripts/patches/source/index.ts","webpack:///./src/assets/javascripts/patches/table/index.ts","webpack:///./src/assets/javascripts/templates/clipboard/index.tsx","webpack:///./src/assets/javascripts/templates/index.ts","webpack:///./src/assets/javascripts/templates/search/index.tsx","webpack:///./src/assets/javascripts/templates/source/index.tsx","webpack:///./src/assets/javascripts/templates/table/index.tsx","webpack:///./src/assets/javascripts/utilities/config/index.ts","webpack:///./src/assets/javascripts/utilities/index.ts","webpack:///./src/assets/javascripts/utilities/jsx/index.ts","webpack:///./src/assets/javascripts/utilities/rxjs/index.ts","webpack:///./src/assets/javascripts/utilities/string/index.ts","webpack:///./src/assets/javascripts/workers/index.ts","webpack:///./src/assets/javascripts/workers/search/_/index.ts","webpack:///./src/assets/javascripts/workers/search/index.ts","webpack:///./src/assets/javascripts/workers/search/message/index.ts","webpack:///./src/assets/stylesheets/main.scss","webpack:///./src/assets/stylesheets/palette.scss"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,IAAyD;AAC7D;AACA,MAAM,EAK4B;AAClC,CAAC;AACD,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gCAAgC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kBAAkB;AAClF;AACA,yDAAyD,cAAc;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC;AAClF,wHAAwH,mBAAmB,EAAE;AAC7I;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,0BAA0B,EAAE;AAC/D,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA;AACA,8DAA8D,+DAA+D;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;;AAEA;;;AAGA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ,iDAAiD,aAAa,uFAAuF,EAAE,uFAAuF;;AAE9O,0CAA0C,+DAA+D,qGAAqG,EAAE,yEAAyE,eAAe,yEAAyE,EAAE,EAAE,uHAAuH;;AAE5e;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,eAAe,2CAA2C;AAC1D,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,2CAA2C;AAC9D;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,MAAM;AACzB;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;;AAEA,KAAK;AACL;;;AAGA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;;AAEb;AACA;AACA,KAAK;;AAEL;AACA,CAAC;;AAED;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,OAAO;AACP;AACA;;AAEA;;;AAGA,oGAAoG,mBAAmB,EAAE,mBAAmB,8HAA8H;;AAE1Q,gCAAgC,2CAA2C,gBAAgB,kBAAkB,OAAO,2BAA2B,wDAAwD,gCAAgC,uDAAuD,2DAA2D,EAAE,EAAE,yDAAyD,qEAAqE,6DAA6D,oBAAoB,GAAG,EAAE;;AAEjjB;;AAEA;;AAEA,sCAAsC,uCAAuC,gBAAgB;;AAE7F,iDAAiD,0CAA0C,0DAA0D,EAAE;;AAEvJ;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,OAAO;AAC1B;;AAEA,KAAK;AACL;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;;AAEA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,CAAC;;AAED;;AAEA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,yCAAyC;AACzC;AACA;;AAEA,WAAW,SAAS;AACpB;AACA;;AAEA;AACA,GAAG;;AAEH;AACA,kCAAkC;AAClC;AACA;;AAEA;AACA,wCAAwC,SAAS;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,2CAA2C;AACtD,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;;AAEA;AACA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,qBAAqB;AAChC,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;AAGA,OAAO;AACP;AACA,CAAC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/8BD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACe,gEAAC,E;;;;;;;;;;;;;;;AClBhB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACe,gEAAC,E;;;;;;;;;;;;ACpBhB;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,KAAK,kBAAkB,KAAK;AAC9D,uBAAuB;AACvB;AACe,gEAAC,mCAAmC,E;;;;;;;;;;;;AC3BnD;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,qBAAqB;AACrB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACtBlB;AAAA;AAAA;AAAA;AAA4C;AACA;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA;AACA,sCAAsC,mEAAO;AAC7C;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC1CvB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,WAAW,gBAAgB;AAC3B;AACA,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,sDAAsD;AACtD;AACA;AACA;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc,mEAAO;AACrB;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACtCrB;AAAA;AAAA;AAAA;AAA4C;AACY;AAChB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,qCAAqC;AACrC;AACA,uBAAuB,mEAAO,eAAe,yEAAa,UAAU,yDAAK;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACtClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACX;AACN;AACI;AACE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sBAAsB,EAAE;AACjD,yBAAyB,sBAAsB,EAAE;AACjD;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM,CAAC,0DAAM,CAAC,+CAAG,KAAK,yDAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC5CtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,SAAS;AACrB;AACA;AACA;AACA,YAAY;AACZ;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1BrB;AAAA;AAA4C;;AAE5C;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY,IAAI;AAChB;AACA;AACA;AACA,0BAA0B;AAC1B,2BAA2B;AAC3B,2BAA2B;AAC3B,4BAA4B;AAC5B;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACxBlB;AAAA;AAAA;AAAA;AAA4C;AACY;AAChB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC;AACA,uBAAuB,mEAAO,eAAe,yEAAa,UAAU,yDAAK;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACvClB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACX;AACN;AACI;AACE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB,EAAE;AAC7C,qBAAqB,qBAAqB,EAAE;AAC5C,qBAAqB,qBAAqB,EAAE;AAC5C;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM,CAAC,0DAAM,CAAC,+CAAG,KAAK,yDAAK;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC7CtB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACA;AACA;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,iDAAiD;AACjD,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mEAAO;AAC7B;AACA;AACA,GAAG,GAAG,mEAAO;AACb,WAAW,mEAAO,MAAM,uDAAG;AAC3B,GAAG;AACH,CAAC;AACc,iEAAE,E;;;;;;;;;;;;ACtCjB;AAAA;AAAA;AAAA;AAAA;AAAgD;AACJ;AACY;AACN;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,uCAAuC;AACvC,uCAAuC;AACvC,uCAAuC;AACvC;AACA,4BAA4B,mEAAO,eAAe,yEAAa,KAAK,8DAAU,EAAE,6DAAS;AAC1E,uEAAQ,E;;;;;;;;;;;;AC3BvB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB;AACA,YAAY,MAAM;AAClB;AACA;AACA;AACA,6CAA6C;AAC7C,8BAA8B;AAC9B,+CAA+C;AAC/C;AACA,0BAA0B,mEAAO;AACjC,SAAS,mEAAO;AAChB,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACzBpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACb;AACE;AACN;AACI;AACE;AACJ;AACI;;AAEjC;AACA;AACA;AACA,SAAS,wDAAI;AACb;AACA;AACA,GAAG,IAAI;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yBAAyB,wBAAwB,KAAK;AAC/D,WAAW,OAAO;AAClB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,SAAS;AACT,yBAAyB,QAAQ,kBAAkB,SAAS;AAC5D,sBAAsB,WAAW,OAAO,EAAE,WAAW,iBAAiB,aAAa;AACnF;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA,GAAG;;AAEH,SAAS,0DAAM,CAAC,0DAAM,CAAC,+CAAG,KAAK,yDAAK,WAAW,0DAAM;AACrD;AACA;AACA,aAAa,yDAAK;AAClB,KAAK;AACL,GAAG;AACH,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACvDxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,YAAY,EAAE;AACd;AACA;AACA;AACA,wBAAwB;AACxB,sBAAsB;AACtB;AACA,2BAA2B,mEAAO;AAClC;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACxBtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,yBAAyB;AACpC,WAAW,2BAA2B;AACtC;AACA;AACA,iBAAiB,2BAA2B,EAAE,wBAAwB,GAAG,yBAAyB;AAClG;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AChCrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,KAAK,KAAK;AAClC,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,yBAAyB,WAAW,EAAE,OAAO;AAC7C;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC9BpB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACN;AACQ;AACI;AACnB;AACA;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE,KAAK;AAC9B,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,0CAA0C,IAAI,IAAI,OAAO,EAAE,OAAO,IAAI,IAAI;AAC1E;AACA;AACA,0CAA0C,KAAK,EAAE,OAAO,IAAI,IAAI;AAChE;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA,mBAAmB,yDAAK,SAAS,gEAAI,wBAAwB,sEAAU;AACvE;AACA;AACA,MAAM,sEAAU,SAAS,oEAAQ;AACjC;AACA;AACA;AACA,GAAG;AACH,WAAW,yDAAK;AAChB;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AChDxB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,gCAAgC;AAChC;AACA;AACA,4BAA4B;AAC5B;AACA,8BAA8B;AAC9B;AACA;AACA,0BAA0B,mEAAO;AACjC,SAAS,wDAAI;AACb,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AClCrB;AAAA;AAAA;AAA0C;AACE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,EAAE;AACvB,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,8DAA8D,KAAK,EAAE,OAAO;AAC5E,iBAAiB;AACjB;AACA;AACA,wBAAwB,mEAAO;AAC/B,SAAS,kEAAM;AACf;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC9BnB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACQ;AACzB;AACE;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,cAAc;AACd;AACA,kDAAkD;AAClD,0CAA0C;AAC1C;AACA,wBAAwB,mEAAO;AAC/B,SAAS,uEAAW;AACpB;AACA,GAAG,GAAG,wDAAI,CAAC,+CAAG;AACd,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACzCnB;AAAA;AAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,KAAK;AAChB,YAAY;AACZ;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oCAAoC,EAAE;AACtD;AACA;AACA,wBAAwB,yDAAK;AAC7B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACrCnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACR;AACJ;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,sCAAsC;AACtC;AACA,6CAA6C;AAC7C;AACA,yBAAyB,mEAAO,eAAe,yEAAa,kCAAkC,2DAAO;AACrG;AACA;AACA;AACA;AACA;AACA,SAAS,qEAAS,QAAQ,uDAAG;AAC7B,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACxCpB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC5BpB;AAAA;AAAA;AAA0C;AACE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,KAAK;AAChB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA,2BAA2B,IAAI,IAAI;AACnC;AACA,iCAAiC;AACjC,uCAAuC;AACvC;AACA,yBAAyB,mEAAO;AAChC,8EAA8E,kEAAM;AACpF,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC3BpB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,yBAAyB;AACpC,WAAW,2BAA2B;AACtC;AACA;AACA,iBAAiB,2BAA2B,EAAE,wBAAwB,GAAG,yBAAyB;AAClG;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC9BzB;AAAA;AAAA;AAA6B;AACF;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA,oBAAoB;AACpB,uBAAuB;AACvB,iBAAiB;AACjB,oBAAoB;AACpB;AACA,8BAA8B,wDAAI,CAAC,+CAAG;AACvB,yEAAU,E;;;;;;;;;;;;AC1BzB;AAAA;AAAA;AAAA;AAA6B;AACM;;AAEnC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,gDAAI,aAAa,2DAAO;AACjC,C;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAA+B;AACI;AACR;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,WAAW,eAAe,EAAE;AAC3D,wBAAwB,EAAE;AAC1B;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAO,CAAC,mDAAO,aAAa,uDAAG,CAAC,iDAAK;AAC9C,C;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAA+B;AACI;;AAEnC;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,iDAAK,aAAa,2DAAO;AAClC,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAA4C;AACP;AACF;;AAEnC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D,qDAAqD;AACrD;AACA;AACA;AACA,+BAA+B,mEAAO;AACtC,SAAS,oDAAQ,kBAAkB,2DAAO;AAC1C,CAAC;AACc,0EAAW,E;;;;;;;;;;;;AC7B1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACE;AACM;AACJ;AACX;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,YAAY,aAAa;AACzB;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,uCAAuC;AACvC,yBAAyB;AACzB;AACA,0BAA0B,mEAAO;AACjC,MAAM,oEAAQ;AACd,QAAQ,oEAAQ;AAChB;AACA;AACA,wBAAwB,4DAAQ;AAChC;AACA,MAAM,qEAAS;AACf,QAAQ,qEAAS;AACjB;AACA;AACA,wBAAwB,4DAAQ;AAChC;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA,mBAAmB,uEAAW;AAC9B;AACA;AACA,sBAAsB,4DAAQ;AAC9B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACvDrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACjB;AACA;AACM;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,eAAe;AACf,gBAAgB;AAChB;AACA,wBAAwB,mEAAO;AAC/B,cAAc,0DAAM,CAAC,+CAAG,KAAK,uDAAG;AAChC;AACA,GAAG;AACH,SAAS,kEAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC/CnB;AAAA;AAAA;AAA4C;AACH;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE,YAAY,EAAE;AAC/B,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,OAAO,uCAAuC;AAC/E;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,6BAA6B,mEAAO;AACpC,SAAS,8DAAU;AACnB,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACtCxB;AAAA;AAAA;AAAA;AAA4C;AACb;AACF;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,EAAE,YAAY,EAAE;AACzC,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yDAAK,CAAC,wDAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACzEzB;AAAA;AAAA;AAAgD;AACJ;;AAE5C;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC,oBAAoB,eAAe,IAAI,eAAe,GAAG;AACzD,iCAAiC;AACjC,mCAAmC;AACnC;AACA,4BAA4B,mEAAO,CAAC,6DAAS;AAC9B,uEAAQ,E;;;;;;;;;;;;AC3BvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACN;AACL;AACN;AACI;AACE;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM,CAAC,0DAAM,CAAC,+CAAG,KAAK,yDAAK;AACpC;AACA;AACA,gCAAgC,gEAAI;AACpC;AACA,KAAK;AACL,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC5CvB;AAAA;AAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,uCAAuC,UAAU;AACjD;AACA;AACA,sCAAsC,SAAS;AAC/C;AACA,2BAA2B,4DAAQ;AACnC;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC7BtB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB,mEAAO;AAChC,SAAS,0DAAM;AACf,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/CpB;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACA;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,0BAA0B,mEAAO;AACjC;AACA,WAAW,mEAAO;AAClB;AACA,SAAS,kEAAM,SAAS,mEAAO;AAC/B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACrDrB;AAAA;AAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,kBAAkB;AAClB;AACA,uBAAuB,uDAAG;AACX,kEAAG,E;;;;;;;;;;;;AClBlB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,+BAA+B;AAC/B,2BAA2B;AAC3B,6BAA6B;AAC7B;AACA,wCAAwC;AACxC;AACA,6BAA6B,mEAAO;AACpC;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC5BxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,yBAAyB;AACpC,WAAW,2BAA2B;AACtC;AACA;AACA,iBAAiB,yBAAyB,GAAG,wBAAwB,GAAG,2BAA2B;AACnG;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AChCtB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,uBAAuB,KAAK,GAAG,KAAK,KAAK,KAAK,GAAG,KAAK,UAAU,KAAK;AACrE;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA,wBAAwB,wDAAI;;AAE5B,iBAAiB,eAAe;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC1CzB;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1C,qBAAqB,KAAK,GAAG,KAAK;AAClC,sCAAsC,QAAQ,KAAK,GAAG,KAAK;AAC3D;AACA,kCAAkC,mEAAO;AACzC;AACA;AACA;AACA;AACA,SAAS,yEAAa,+BAA+B,yEAAa;AAClE;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,6EAAc,E;;;;;;;;;;;;ACrC7B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,KAAK,KAAK;AAC7B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,uBAAuB,iBAAiB,EAAE,OAAO;AACjD;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACM;AACJ;AACf;AACE;AACA;AACA;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,KAAK,KAAK;AAC5B,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,uCAAuC,IAAI,IAAI,QAAQ,EAAE,OAAO,IAAI;AACpE;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA,aAAa,sEAAU,aAAa,oEAAQ,QAAQ,0DAAM,oBAAoB,0DAAM;AACpF;AACA;AACA;AACA;AACA;AACA,OAAO,UAAU,sEAAU,UAAU,oEAAQ;AAC7C,eAAe,0DAAM;AACrB,OAAO;AACP,eAAe,yDAAK;AACpB;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC7CzB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,iBAAiB;AACjB;AACA;AACA,sBAAsB;AACtB;AACA,0BAA0B,mEAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC3BrB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACd;AACX;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,2BAA2B;AAC3B;AACA,wBAAwB,mEAAO,eAAe,yEAAa,WAAW,0DAAM;AAC5E,SAAS,yDAAK;AACd,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AChCnB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACR;AACE;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,+BAA+B;AAC/B;AACA,4BAA4B,mEAAO,eAAe,yEAAa,KAAK,8DAAU,EAAE,6DAAS;AAC1E,uEAAQ,E;;;;;;;;;;;;AC7BvB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACE;AACE;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,yDAAyD;AACzD;AACA,kDAAkD;AAClD;AACA,iCAAiC,mEAAO,eAAe,yEAAa,KAAK,mEAAe,EAAE,kEAAc;AACzF,4EAAa,E;;;;;;;;;;;;ACjC5B;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACQ;AACb;AAClB;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,kDAAkD;AAClD;AACA,+BAA+B,mEAAO,eAAe,yEAAa,kBAAkB,6EAAiB,CAAC,kDAAM,gBAAgB,mEAAe,CAAC,kDAAM;AACnI,0EAAW,E;;;;;;;;;;;;ACzB1B;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACQ;AACnC;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,mCAAmC,mEAAO,eAAe,yEAAa,KAAK,qEAAiB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,wDAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,8EAAe,E;;;;;;;;;;;;ACzC9B;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACJ;AACrB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA,8CAA8C;AAC9C;AACA,6BAA6B,mEAAO,eAAe,yEAAa,gBAAgB,+DAAW;AAC3F;AACA;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACzCxB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACQ;AACvB;AACJ;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;AACf,aAAa;AACb;AACA,oDAAoD;AACpD;AACA;AACA,0BAA0B,mEAAO;AACjC,SAAS,uEAAW;AACpB;AACA,GAAG,GAAG,wDAAI,CAAC,8CAAE;AACb,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACxCrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACU;AACR;AACE;AACA;;AAEhD;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,0BAA0B;AAC1B,2BAA2B;AAC3B,4BAA4B;AAC5B,iBAAiB,WAAW,EAAE;AAC9B;AACA,yBAAyB,mEAAO;AAChC,+YAA+Y,oEAAQ,WAAW,qEAAS,WAAW,qEAAS,QAAQ,GAAG,wEAAY;AACtd;AACA,GAAG;AACH;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACnCpB;AAAA;AAAA;AAAA;AAA4C;AACX;AACI;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM,CAAC,4DAAQ;AACxB,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC7BvB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,gCAAgC;AAChC;AACA,wBAAwB,mEAAO;AAC/B,SAAS,0DAAM;AACf,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACvBnB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK,KAAK,KAAK;AAC7B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB;AACpB,+BAA+B;AAC/B,+BAA+B;AAC/B;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM;AACf,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC3BtB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,uBAAuB;AACvB,yBAAyB;AACzB,uCAAuC;AACvC;AACA,qBAAqB;AACrB,qBAAqB;AACrB,uBAAuB;AACvB;AACA,0BAA0B,mEAAO;AACjC,SAAS,mEAAO;AAChB,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,YAAY,KAAK,KAAK,KAAK;AACpC,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA,wBAAwB,+BAA+B,8BAA8B;AACrF;AACA;AACA;AACA,iBAAiB;AACjB;AACA,0CAA0C,OAAO,4BAA4B,8BAA8B;AAC3G;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACvCrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACZ;AACI;AACJ;AACE;AACjB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA,0BAA0B,uBAAuB,EAAE,OAAO;AAC1D;AACA,0BAA0B,mEAAO,eAAe,yEAAa,aAAa,4DAAQ;AAClF,SAAS,qEAAS,eAAe,mEAAO;AACxC;AACA;AACA;AACA;AACA,GAAG,IAAI,EAAE,wDAAI;AACb;AACA,EAAE,mEAAO;AACT,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC7CrB;AAAA;AAAA;AAAA;AAA4C;AACY;AACd;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1C,qCAAqC,OAAO;AAC5C,qCAAqC;AACrC;AACA,wBAAwB,mEAAO,eAAe,yEAAa,WAAW,0DAAM;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACtCnB;AAAA;AAAA;AAAA;AAA4C;AACY;AACJ;;AAEpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK;AAC1C,0CAA0C;AAC1C,0CAA0C;AAC1C;AACA,6BAA6B,mEAAO,eAAe,yEAAa,KAAK,+DAAW;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACrCxB;AAAA;AAAA;AAAA;AAA4C;AACY;AACN;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,WAAW,GAAG,UAAU;AAC7C,yCAAyC,OAAO;AAChD,yCAAyC;AACzC;AACA,4BAA4B,mEAAO,eAAe,yEAAa,KAAK,8DAAU;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACnCvB;AAAA;AAAA;AAAA;AAA4C;AACY;AACI;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,WAAW,GAAG,UAAU;AAC7C,8CAA8C;AAC9C,8CAA8C;AAC9C;AACA,iCAAiC,mEAAO,eAAe,yEAAa,KAAK,mEAAe;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACpC5B;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAO,eAAe,qEAAS;AAC3C,sEAAO,E;;;;;;;;;;;;ACrBtB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,oCAAoC;AACpC;AACA;AACA,wBAAwB,mEAAO;AAC/B,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC/BnB;AAAA;AAAA;AAA4D;AAChB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAO,eAAe,2EAAe;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC9CtB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,kDAAkD,WAAW,EAAE,OAAO;AACtE;AACA;AACA,iCAAiC,WAAW,KAAK;AACjD;AACA,qCAAqC,mEAAO;AAC5C,gBAAgB,wDAAI;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,gFAAiB,E;;;;;;;;;;;;ACnChC;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC3BxB;AAAA;AAAA;AAAA;AAA4D;AAChB;AACP;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,2BAA2B,wBAAwB;AACnD,yBAAyB,wBAAwB;AACjD;AACA,yBAAyB,wBAAwB;AACjD;AACA;AACA,oBAAoB,0BAA0B;AAC9C,oBAAoB,wBAAwB;AAC5C;AACA,oBAAoB,wBAAwB;AAC5C;AACA;AACA,2BAA2B,mEAAO,eAAe,2EAAe,yBAAyB,4DAAQ;AACjG;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACnDtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,MAAM;AACjB;AACA,YAAY,KAAK;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC9CxB;AAAA;AAA4C;;AAE5C;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,uBAAuB;AACvB,uBAAuB;AACvB;AACA,sBAAsB,mEAAO;AAC7B;AACA,CAAC;AACc,iEAAE,E;;;;;;;;;;;;AC1BjB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,wBAAwB;AACxB,wBAAwB;AACxB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC1BlB;AAAA;AAAA;AAA4C;AACT;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA,iBAAiB,cAAc,EAAE;AACjC,iBAAiB,YAAY,EAAE;AAC/B,kBAAkB,EAAE;AACpB;AACA,uBAAuB;AACvB;AACA,sBAAsB;AACtB,sBAAsB;AACtB,sBAAsB;AACtB;AACA,uBAAuB,mEAAO;AAC9B,SAAS,2DAAO;AAChB,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC9BlB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC,gCAAgC;AAChC;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA,+BAA+B,IAAI,MAAM,EAAE;AAC3C,+BAA+B,IAAI,cAAc,EAAE;AACnD,+BAA+B,IAAI,MAAM,EAAE;AAC3C,gCAAgC,EAAE;AAClC;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAI;AACZ;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACxCtB;AAAA;AAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA;AACA,oCAAoC;AACpC,mBAAmB;AACnB;AACA,sBAAsB;AACtB,mBAAmB;AACnB;AACA,wBAAwB,uDAAG;AACZ,mEAAI,E;;;;;;;;;;;;ACxBnB;AAAA;AAAA;AAAgD;AACJ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,0BAA0B;AAC1B,0BAA0B;AAC1B,4BAA4B;AAC5B,4BAA4B;AAC5B,2BAA2B;AAC3B,8BAA8B;AAC9B;AACA,6BAA6B,mEAAO,CAAC,6DAAS;AAC/B,wEAAS,E;;;;;;;;;;;;AC7BxB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA,sBAAsB;AACtB;AACA;AACA,gCAAgC;AAChC;AACA;AACA,4BAA4B,mEAAO,CAAC,6DAAS;AAC9B,uEAAQ,E;;;;;;;;;;;;ACvBvB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,EAAE,iBAAiB;AACtC,kBAAkB,WAAW,EAAE,OAAO;AACtC;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM;AACf;AACA,GAAG;AACH,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACjCrB;AAAA;AAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,kBAAkB;AAClB;AACA,uBAAuB,uDAAG;AACX,kEAAG,E;;;;;;;;;;;;AClBlB;AAAA;AAAA;AAAgD;AACJ;;AAE5C;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA,iCAAiC;AACjC,iCAAiC;AACjC,oBAAoB,eAAe,IAAI,eAAe,GAAG;AACzD,iCAAiC;AACjC,mCAAmC;AACnC;AACA,4BAA4B,mEAAO,CAAC,6DAAS;AAC9B,uEAAQ,E;;;;;;;;;;;;AC1BvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAsC;AACA;AACE;AACE;AACU;AACJ;AACN;AACQ;AACF;AACN;AACA;AACQ;AACV;AACY;AACJ;AACF;AACQ;AACJ;AACF;AACF;AACQ;AACN;AACJ;AACA;AACA;AACE;AACA;AACA;AACU;AACA;AACN;AACE;AACA;AACM;AACV;AACJ;AACU;AACE;AACJ;AACA;AACF;AACJ;AACE;AACN;AACY;AACJ;AACM;AACQ;AAChB;AACQ;AACR;AACJ;AACQ;AACU;AACJ;AACQ;AACZ;AACN;AACF;AACM;AACR;AACM;AACF;AACA;AACA;AACJ;AACU;AACF;AACU;AACZ;AACN;AACM;AACoB;AAChB;AACJ;AACI;AACd;AACE;AACA;AACI;AACI;AACN;AACU;AACF;AACJ;AACN;AACU;AACF;AACA;AACN;AACU;AACN;AACM;AACM;AACF;AACd;AACI;AACM;AACJ;AACV;AACU;AACJ;AACF;AACA;AACA;AACI;AACJ;AACc;AACV;AACJ;AACU;AACF;AACA;AACR;AACE;AACN;AACE;AACA;AACU;AACU;AACA;AAChB;AACI;AACR;AACI;AACF;AACI;AACU;AACZ;AACM;AACU;AACE;AACF;AACM;AACd;AACE;AACF;AACM;AAClB;AACI;AACE;AACJ;AACQ;AACR;AACI;AACJ;AACF;AACA;AACM;AACV;AACQ;AACN;AACI;AACA;AACJ;AACc;AACV;AACA;AACM;AACU;AACN;AACV;AACI;AACA;AACc;AAClB;AACM;AACF;AACJ;AACE;AACA;AACM;AACN;AACI;AACA;AACA;AACN;AACI;AACA;AACA;AACc;AAChB;AACA;AACE;AACI;AACM;AACA;AACR;AACF;AACA;AACA;AACE;AACA;AACN;AACQ;AACV;AACI;AACF;AACI;AACI;AACN;AACI;AACM;AACF;AACE;AACJ;AACV;AACgC;AACQ;AACtC;AACA;AACQ;AACU;AACR;AACZ;AACE;AACA;AACE;AACI;AACA;AACI;AACF;AACF;AACI;AACA;AACF;AACR;AACQ;AACR;AACM;AACJ;AACM;AACJ;AACF;AACQ;AACV;AACI;AACI;AACJ;AACA;AACF;AACE;AACE;AACF;AACI;AACR;AACA;AACE;AACI;AACA;AACJ;AACJ;AACM;AACE;;;;;;;;;;;;;AC7PlD;AAAA;AAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,KAAK,MAAM,IAAI;AAC1C,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA,uBAAuB,sBAAsB,GAAG,sBAAsB;AACtE;AACA,cAAc,MAAM,sBAAsB,QAAQ;AAClD;AACA,2BAA2B,4DAAQ;AACnC;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC3BtB;AAAA;AAAA;AAAA;AAA4C;AACE;AACA;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,gCAAgC;AAChC,iCAAiC;AACjC;AACA,2BAA2B,mEAAO;AAClC,8CAA8C,oEAAQ,4BAA4B,oEAAQ;AAC1F,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC1BtB;AAAA;AAA+B;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,0BAA0B;AAC1B,uBAAuB;AACvB,oBAAoB;AACpB,mBAAmB;AACnB;AACA,sBAAsB;AACtB,qBAAqB;AACrB,oBAAoB;AACpB,mBAAmB;AACnB;AACA,wBAAwB,yDAAK;AACd,mEAAI,E;;;;;;;;;;;;AC3BnB;AAAA;AAAA;AAAA;AAAwD;AACZ;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,YAAY,8BAA8B;AAC1C,YAAY,8BAA8B;AAC1C,YAAY,8BAA8B;AAC1C,YAAY,gCAAgC;AAC5C,YAAY,4BAA4B;AACxC;AACA;AACA,eAAe,gCAAgC,GAAG,4BAA4B;AAC9E;AACA,6BAA6B,mEAAO;AACpC,SAAS,mEAAO;AAChB,WAAW,yEAAa;AACxB,GAAG;AACH,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC5CxB;AAAA;AAA4C;;AAE5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,oCAAoC;AACpC;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC3BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,iDAAiD;AACjD;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACxBxB;AAAA;AAAuC;;AAEvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4DAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACe,mEAAI,E;;;;;;;;;;;;AC5KnB;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACTA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AClDA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAA2C;AACJ;;AAExB;AACf,oBAAoB,8DAAW;AAC/B,yEAAyE,4DAAS;AAClF;AACA,C;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAqC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,2DAAQ;AACnB;AACA,C;;;;;;;;;;;;ACrBA;AAAA;AAAA;AAAA;AAA6C;AACf;;AAE9B;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,WAAW,QAAQ;AACnB,YAAY,EAAE;AACd;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,wDAAI;AACd;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,+DAAY;AACzB;AACA;AACA;AACA,C;;;;;;;;;;;;AC1CA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,gBAAgB;AAC3B,YAAY,MAAM;AAClB;AACA;AACA,sCAAsC;AACtC;AACe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAiC;AACE;;AAEpB;AACf,SAAS,0DAAO;AAChB,WAAW,yDAAM;AACjB;AACA,KAAK;AACL,GAAG;AACH,C;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAiD;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA,kCAAkC,iEAAc;AAChD;AACA,KAAK;AACL;AACA;AACA;AACA,C;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAmC;AACc;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe,iEAAc,WAAW,0DAAO;AAC/C;AACA,SAAS;AACT;AACA,eAAe,iEAAc,OAAO,iEAAc,WAAW,iEAAc,MAAM,0DAAO;AACxF;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS;AACT;AACA;AACA,C;;;;;;;;;;;;AC5BA;AAAA;AAAA;AAAA;AAAA;AAAmC;AACA;AACc;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA,eAAe,iEAAc,WAAW,0DAAO;AAC/C;AACA,SAAS;AACT;AACA,eAAe,iEAAc,OAAO,iEAAc,WAAW,iEAAc,MAAM,0DAAO;AACxF;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS,IAAI,0DAAO;AACpB;AACA,SAAS;AACT;AACA,eAAe,iEAAc,OAAO,iEAAc,OAAO,iEAAc,WAAW,iEAAc,OAAO,iEAAc,MAAM,0DAAO;AAClI;AACA,SAAS,IAAI,iEAAc,OAAO,iEAAc,MAAM,0DAAO;AAC7D;AACA,SAAS,IAAI,iEAAc,OAAO,iEAAc,MAAM,0DAAO;AAC7D;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS,IAAI,iEAAc,MAAM,0DAAO;AACxC;AACA,SAAS;AACT;AACA;AACA,C;;;;;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAiC;AACgB;;AAEjD;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iEAAc;AAC3D;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,WAAW,iEAAc;AACzB;AACA;AACA;AACA;AACA,kDAAkD,yDAAM;AACxD;AACA,C;;;;;;;;;;;;ACnCA;AAAA;AAAA;AAAA;AAAqC;AACY;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,2DAAQ;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,iEAAc;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACvCA;AAAA;AAAA;AAA8B;;AAEf;AACf,SAAS,wDAAI;AACb,C;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAgC;;AAEjB;AACf;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,C;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAyD;AACV;AACA;AAClB;AACU;AACT;AACA;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,qEAAkB;AAC5B,UAAU,qEAAkB;;AAE5B;AACA;AACA;;AAEA;AACA,UAAU,gEAAa;AACvB,YAAY,gEAAa;AACzB,GAAG;AACH;;AAEe;AACf,MAAM,4DAAS;AACf;AACA;;AAEA,cAAc,wDAAI;;AAElB,gBAAgB,wDAAI;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iDAAiD,gEAAa;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,4DAAS;AAC9C;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,cAAc,wDAAI;AAClB,uBAAuB,wDAAI;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,UAAU,uDAAI;AACd;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACpJA;AAAA;AAAe;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAA+C;AACF;AACV;AACA;;AAEnC;AACA;AACA,yBAAyB,kDAAO;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA,2CAA2C,gEAAa;AACxD;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB,kDAAO;AAChC;AACA;AACA,KAAK;AACL;AACA,cAAc,+DAAY,UAAU,0DAAO,yBAAyB,0DAAO;AAC3E;AACA;AACA;;AAEe,uEAAQ,E;;;;;;;;;;;;AC/BvB;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACLA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAqC;;AAEtB;AACf,SAAS,2DAAQ;AACjB,C;;;;;;;;;;;;ACJA;AAAA;AAAe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAkC;;AAEnB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,0DAAM;AACd;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACvDA;AAAA;AAA6B;;AAE7B;AACA;AACA;AACA;AACA,GAAG;AACH,WAAW,uDAAI;AACf;AACA,CAAC;;AAEc,2EAAY,E;;;;;;;;;;;;ACX3B;AAAA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ;AACpB;AACA;AACA,qBAAqB;AACrB,uBAAuB;AACvB,mBAAmB,EAAE;AACrB;AACe;AACf;AACA,CAAC,E;;;;;;;;;;;;ACdD;AAAA;AAAA;AAAA;AAAmC;AACE;AACE;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ,yEAAyE;AAC7F;AACA;AACA,yBAAyB;AACzB,2BAA2B;AAC3B,uBAAuB,EAAE;AACzB,sBAAsB,WAAW,EAAE;AACnC,sBAAsB,iCAAiC,EAAE;AACzD;AACA,gCAAgC,0DAAO;AACvC,MAAM,2DAAQ;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,4DAAS;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,2EAAY,E;;;;;;;;;;;;AC7C3B;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb;AACA,YAAY;AACZ;AACe;AACf;AACA,CAAC,E;;;;;;;;;;;;ACVD;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAA;AAA6C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU,+DAAY;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC/BA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACTA;AAAA;AAA6B;;AAE7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uDAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,kIAAmE,E;;;;;;;;;;;;ACzBlF;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sHAAuD,E;;;;;;;;;;;;ACbtE;AAAA;AAAe;AACf;AACA,C;;;;;;;;;;;;ACFA;AAAA;AAAe;AACf;AACA;AACA;AACA,C;;;;;;;;;;;;ACJA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,C;;;;;;;;;;;;ACPA;AAAA;AAAe;AACf,6FAA6F;AAC7F;;AAEA;AACA,C;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAA6C;AACZ;AACH;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mDAAmD,wDAAI;AACvD;;AAEA;;AAEe;AACf;AACA,SAAS,yDAAM;AACf;AACA,MAAM,+DAAY;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,C;;;;;;;;;;;;AC1DA;AAAA;AAAe;AACf;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA+C;AACR;AACM;AACI;AACjB;;AAEhC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,oDAAS;AAClC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,yBAAyB,oDAAS;AAClC;AACA;AACA;AACA;AACA,WAAW,gEAAa,SAAS,+DAAY,UAAU,yDAAK;AAC5D,GAAG;AACH,yBAAyB,oDAAS;AAClC;;AAEe;AACf,MAAM,iEAAc;AACpB;AACA;AACA,MAAM,+DAAY;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,C;;;;;;;;;;;;AC3CA;AAAA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;;AAEe,2EAAY,E;;;;;;;;;;;;ACb3B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAuC;AACV;AACI;AACY;AACf;AACI;;AAEnB;AACf;AACA;AACA,WAAW,4DAAS;AACpB;;AAEA;AACA;AACA,WAAW,uDAAI;AACf,aAAa,yDAAM;AACnB,KAAK;AACL;;AAEA;AACA;AACA,2BAA2B,kBAAkB,EAAE,KAAK,uDAAI;AACxD;AACA,mBAAmB,uDAAI,8BAA8B,0DAAM;AAC3D;AACA;AACA,OAAO,EAAE,wDAAI;AACb;AACA;AACA;AACA,8DAA8D,yDAAM,CAAC,+DAAY;AACjF;AACA;AACA;AACA;AACA;AACA,gFAAgF,yDAAM;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB,wDAAI,oBAAoB;AACvD;AACA,C;;;;;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAAA;AAAmC;AACA;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0DAAO;AAClB;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACtCzB;AAAA;AAAA;AAAA;AAAmC;AACE;AACT;;AAE5B,2BAA2B,0DAAO;AAClC,SAAS,uDAAG,IAAI,2DAAQ;AACxB,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACPtB;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAO;AAChD,2CAA2C,kDAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,0BAA0B,0DAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACxBrB;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACrCzB;AAAA;AAAA;AAAA;AAAmC;AACA;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kDAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0DAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,mCAAmC,0DAAO;AAC1C;AACA,CAAC;AACc,8EAAe,E;;;;;;;;;;;;AClC9B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oDAAoD,kDAAO;AAC3D,sDAAsD,kDAAO;AAC7D;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,qCAAqC,0DAAO;AAC5C;AACA,CAAC;AACc,gFAAiB,E;;;;;;;;;;;;AC9BhC;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,8CAA8C,kDAAO;AACrD,gDAAgD,kDAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,+BAA+B,0DAAO;AACtC;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;AC1B1B;AAAe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC,E;;;;;;;;;;;;ACPD;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,2CAA2C,kDAAO;AAClD,6CAA6C,kDAAO;AACpD;AACA;AACA;;AAEA;AACA,CAAC;;AAED,4BAA4B,0DAAO;AACnC;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACpBvB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAO;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,0BAA0B,0DAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,kDAAO;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2DAAQ;AACvB;AACA;AACA;;AAEA;AACA,CAAC;;AAED,+BAA+B,0DAAO;AACtC;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACjC1B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACzBzB;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,kDAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,mCAAmC,0DAAO;AAC1C;AACA,CAAC;AACc,8EAAe,E;;;;;;;;;;;;AC5B9B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C,0CAA0C,kDAAO;AACjD;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACpBpB;AAAA;AAAA;AAAA;AAAmC;AACN;AACM;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,kDAAO;AACpD;AACA;AACA;AACA,UAAU,uDAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,8BAA8B,0DAAO;AACrC;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;ACxCzB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kDAAO;AAChD,2CAA2C,kDAAO;AAClD;AACA;AACA;AACA,6CAA6C,2DAAQ;AACrD;;AAEA;AACA,CAAC;;AAED,0BAA0B,0DAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACxBrB;AAAA;AAAA;AAAA;AAAmC;AACE;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA,8CAA8C,kDAAO;AACrD,gDAAgD,kDAAO;AACvD;AACA,yEAAyE,2DAAQ;AACjF;;AAEA;AACA,CAAC;;AAED,+BAA+B,0DAAO;AACtC;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACrB1B;AAAA;AAAA;AAAmC;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA,wCAAwC,kDAAO;AAC/C,0CAA0C,kDAAO;AACjD;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED,yBAAyB,0DAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACrBpB;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEc;AACf;AACA,C;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAgD;AACJ;AACA;AACf;AACA;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,gCAAgC,mEAAO;AACvC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,SAAS,wDAAI,CAAC,mEAAO,CAAC,wDAAI,CAAC,6DAAS;AACpC,CAAC;AACc,2EAAY,E;;;;;;;;;;;;AClC3B;AAAA;AAAA;AAA4D;AAChB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,iDAAiD;AACjD;AACA,+BAA+B,mEAAO,eAAe,2EAAe;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;AClC1B;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACc;AACd;AACE;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,uCAAuC;AACvC;AACA,wBAAwB,mEAAO;AAC/B,SAAS,0EAAc,QAAQ,mEAAO,8CAA8C,mEAAO,IAAI,oEAAQ,QAAQ,kEAAM;AACrH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AChDnB;AAAA;AAAA;AAAA;AAA4C;AACN;AACT;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,KAAK;AACnB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,0BAA0B,mEAAO;AACjC,cAAc,wDAAI;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,eAAe,gEAAI;AACnB;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACzCrB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,KAAK;AACnB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,cAAc;AACd;AACA,6BAA6B,mEAAO;AACpC,cAAc,wDAAI;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC3CxB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACQ;AACnB;AACI;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,WAAW,OAAO;AAClB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM;AACf;AACA,0BAA0B,uEAAW;AACrC;AACA;AACA,wBAAwB,4DAAQ;AAChC,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACzCtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,uBAAuB,EAAE;AACzB,wBAAwB;AACxB,wBAAwB;AACxB,0BAA0B;AAC1B,qCAAqC;AACrC,qCAAqC;AACrC,0BAA0B;AAC1B,uBAAuB,EAAE;AACzB;AACA,sBAAsB,mEAAO;AAC7B;AACA,CAAC;AACc,iEAAE,E;;;;;;;;;;;;AC5BjB;AAAA;AAAA;AAAA;AAA4C;AACb;AACE;;AAEjC;AACA,+DAA+D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,6BAA6B;AAC7B,sBAAsB;AACtB,sBAAsB;AACtB,wBAAwB;AACxB,oBAAoB,EAAE;AACtB,mBAAmB,UAAU,EAAE;AAC/B;AACA,2BAA2B,mEAAO;AAClC,sBAAsB,0DAAM,IAAI,yDAAK;AACrC,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC5BtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ;AACpB;AACA;AACA,sBAAsB;AACtB,2BAA2B;AAC3B,mBAAmB;AACnB,oBAAoB;AACpB;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACtBpB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,+BAA+B;AAC/B;AACA,wBAAwB,2DAAO;AAChB,mEAAI,E;;;;;;;;;;;;ACtBnB;AAAA;AAAA;AAA4C;AACP;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,wBAAwB,mEAAO;AAC/B,SAAS,4DAAQ;AACjB;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACzBnB;AAAA;AAAA;AAAA;AAA4C;AACN;AACgB;;AAEtD;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,gBAAgB,iBAAiB,EAAE;AACnC;AACA,+EAA+E,mEAAO;AACtF;AACA,CAAC,iBAAiB,mEAAO;AACzB;AACA;AACA;AACA;AACA;AACA,0CAA0C,wEAAY;AACtD;AACA,QAAQ,gEAAI;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,gEAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACrEnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA,oBAAoB;AACpB;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA2B;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,oCAAoC;AACpC,mBAAmB;AACnB;AACA,sBAAsB;AACtB,mBAAmB;AACnB;AACA,wBAAwB,uDAAG;AACZ,mEAAI,E;;;;;;;;;;;;ACvBnB;AAAA;AAAA;AAAA;AAA4C;AACE;AACb;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,6CAA6C;AAC7C,qCAAqC;AACrC;AACA,+BAA+B,mEAAO;AACtC,+CAA+C,oEAAQ;AACvD;AACA,GAAG;AACH;AACA;AACA,UAAU,0DAAM;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACrC1B;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA,qBAAqB;AACrB,4BAA4B;AAC5B;AACA,0BAA0B,mEAAO;AACjC,yBAAyB,qEAAS;AAClC,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACrBrB;AAAA;AAAA;AAA4C;AACjB;;AAE3B;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW,EAAE;AACpC,yBAAyB,WAAW,EAAE,gBAAgB;AACtD,iCAAiC,WAAW,EAAE,QAAQ;AACtD;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA,aAAa,uDAAG;AAChB;AACA,OAAO;AACP;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACnCnB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACf;AACF;AACM;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C,8CAA8C;AAC9C,qDAAqD;AACrD;AACA,6BAA6B,mEAAO;AACpC,SAAS,wDAAI,CAAC,uDAAG,KAAK,0DAAM;AAC5B,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC5BxB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACL;AACV;AACA;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,4BAA4B,KAAK,WAAW,GAAG,WAAW,EAAE;AAC5D;AACA,8BAA8B,KAAK,WAAW,GAAG,WAAW,EAAE;AAC9D,cAAc,KAAK,WAAW,GAAG,WAAW;AAC5C,sCAAsC,KAAK,WAAW,GAAG,WAAW,EAAE;AACtE,cAAc,KAAK,YAAY,GAAG,WAAW;AAC7C;AACA,4BAA4B,mEAAO;AACnC,SAAS,wDAAI,CAAC,wDAAI,KAAK,6DAAS;AAChC,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AChCvB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACb;AACF;AACA;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW,EAAE;AACpC,yBAAyB,WAAW,EAAE,gBAAgB;AACtD,iCAAiC,WAAW,EAAE,QAAQ;AACtD;AACA,4BAA4B,mEAAO;AACnC,SAAS,wDAAI,CAAC,wDAAI,KAAK,yDAAK;AAC5B,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC5BvB;AAAA;AAAA;AAA4C;AACb;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,+CAA+C;AAC/C;AACA,wBAAwB,mEAAO;AAC/B,SAAS,yDAAK;AACd,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC5BnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACA;AACnB;AACQ;AACN;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,yBAAyB,mEAAO;AAChC,eAAe,0DAAM;AACrB,SAAS,0DAAM;AACf,WAAW,mEAAO,CAAC,8CAAE,EAAE,uDAAG;AAC1B,GAAG;AACH,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC7BpB;AAAA;AAA4C;;AAE5C;AACA,gEAAgE;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB,uBAAuB;AACvB,uBAAuB;AACvB;AACA,sBAAsB,mEAAO;AAC7B;AACA,CAAC;AACc,iEAAE,E;;;;;;;;;;;;AC1BjB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB;AACpB,oBAAoB;AACpB,oBAAoB;AACpB,wBAAwB;AACxB,wBAAwB;AACxB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC1BlB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AAClB;AACM;AACJ;AACP;AACJ;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,iBAAiB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA,uBAAuB,iBAAiB,EAAE,OAAO;AACjD;AACA,mBAAmB,aAAa,KAAK;AACrC;AACA;AACA,uBAAuB,mEAAO,eAAe,yEAAa,8BAA8B,yDAAK;AAC7F;AACA;AACA,aAAa,0DAAM;AACnB;AACA,OAAO;AACP;AACA,aAAa,mEAAO;AACpB;AACA;AACA,OAAO,IAAI,EAAE,wDAAI;AACjB;AACA,aAAa,gEAAI;AACjB;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC1DlB;AAAA;AAA4C;;AAE5C;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AChDvB;AAAA;AAA4C;;AAE5C;AACA,6EAA6E;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mEAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,4EAAa,E;;;;;;;;;;;;AClD5B;AAAA;AAAA;AAAA;AAA4C;AACA;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,kDAAkD,OAAO;AACzD;AACA,iCAAiC,mEAAO;AACxC,SAAS,mEAAO;AAChB;AACA;AACA,GAAG,IAAI,EAAE,wDAAI;AACb,CAAC;AACc,4EAAa,E;;;;;;;;;;;;AC/B5B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,wCAAwC;AACxC,0BAA0B;AAC1B,2BAA2B;AAC3B;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC1BpB;AAAA;AAAA;AAA4C;AACM;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,0BAA0B;AAC1B,yBAAyB;AACzB,0BAA0B;AAC1B,yBAAyB;AACzB,2BAA2B;AAC3B,2BAA2B;AAC3B;AACA;AACA,kBAAkB;AAClB,kBAAkB;AAClB;AACA;AACA,wBAAwB;AACxB,wBAAwB;AACxB,yBAAyB;AACzB;AACA,2BAA2B,mEAAO;AAClC,OAAO,sEAAU;AACjB;AACA;AACA,OAAO,sEAAU;AACjB;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC7CtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,wBAAwB;AACxB,wBAAwB;AACxB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACtBlB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,wDAAwD;AACxD,yCAAyC;AACzC;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC7BpB;AAAA;AAAA;AAA4C;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA,0BAA0B;AAC1B,mBAAmB;AACnB;AACA,wBAAwB,mEAAO;AAC/B,SAAS,uDAAG;AACZ,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACtBnB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA,4BAA4B;AAC5B,gCAAgC;AAChC,qBAAqB;AACrB;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,wDAAI;AACb;AACA,GAAG;AACH,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAAA;AAA0C;AACE;AACN;;AAEtC;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,qBAAqB;AACrB,qBAAqB;AACrB,qBAAqB;AACrB,cAAc;AACd;AACA,+BAA+B,mEAAO;AACtC;AACA,SAAS,kEAAM;AACf;AACA,SAAS,gEAAI;AACb;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,0EAAW,E;;;;;;;;;;;;AC1C1B;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,KAAK,KAAK,KAAK;AAC7B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA,iBAAiB,4BAA4B,GAAG,YAAY;AAC5D,cAAc;AACd;AACA,sCAAsC,WAAW;AACjD,sBAAsB,KAAK,EAAE,OAAO;AACpC,0BAA0B;AAC1B;AACA,yBAAyB,mEAAO;AAChC,SAAS,yEAAa,GAAG;AACzB,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC9BpB;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,KAAK,MAAM;AACrB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,qBAAqB,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;AACrD,qBAAqB,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO;AACrD,sBAAsB,OAAO,GAAG,OAAO,GAAG,OAAO,MAAM;AACvD;AACA,4BAA4B,mEAAO;AACnC,SAAS,iEAAa,gBAAgB;AACtC,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACvBvB;AAAA;AAAA;AAA4C;AACS;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,KAAK,EAAE,KAAK;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,yBAAyB,kCAAkC,4BAA4B;AACvF,yBAAyB,oBAAoB,4BAA4B;AACzE,cAAc,kCAAkC;AAChD;AACA,iCAAiC,mEAAO;AACxC,SAAS,oEAAgB;AACzB;AACA,GAAG;AACH,CAAC;AACc,4EAAa,E;;;;;;;;;;;;AC7B5B;AAAA;AAAA;AAA4C;AACS;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,EAAE,KAAK,EAAE,KAAK;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,0BAA0B,kCAAkC,4BAA4B;AACxF,0BAA0B,oBAAoB,4BAA4B;AAC1E,cAAc,kCAAkC;AAChD;AACA,kCAAkC,mEAAO;AACzC,SAAS,oEAAgB;AACzB;AACA,GAAG;AACH,CAAC;AACc,6EAAc,E;;;;;;;;;;;;AC7B7B;AAAA;AAAA;AAA4C;AACS;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,EAAE,KAAK,EAAE,KAAK;AACxC,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA,yBAAyB,cAAc,oBAAoB;AAC3D,yBAAyB,cAAc,oBAAoB;AAC3D,cAAc,uBAAuB;AACrC;AACA,iCAAiC,mEAAO;AACxC,SAAS,oEAAgB;AACzB;AACA,GAAG;AACH,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACnC5B;AAAA;AAAA;AAAA;AAA4C;AACI;AACH;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,EAAE,KAAK,EAAE,KAAK;AAChD,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc,kCAAkC;AAC5E,4BAA4B,cAAc,kCAAkC;AAC5E,cAAc,uBAAuB;AACrC;AACA,oCAAoC,mEAAO;AAC3C,SAAS,gEAAY;AACrB,QAAQ,qEAAS,UAAU,qEAAS;AACpC;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH,CAAC;AACc,+EAAgB,E;;;;;;;;;;;;ACzC/B;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,KAAK,KAAK,KAAK;AAC7B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,qBAAqB,YAAY,GAAG,4BAA4B;AAChE,cAAc;AACd;AACA,4CAA4C,KAAK;AACjD,wBAAwB,WAAW,EAAE,OAAO;AAC5C,8BAA8B;AAC9B;AACA,6BAA6B,mEAAO;AACpC,SAAS,yEAAa,GAAG;AACzB,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC5BxB;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK,KAAK,KAAK,KAAK;AAC7B,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,sBAAsB,4BAA4B,GAAG,YAAY;AACjE,cAAc;AACd;AACA,2CAA2C,WAAW;AACtD,sBAAsB,KAAK,EAAE,OAAO;AACpC,+BAA+B;AAC/B;AACA,8BAA8B,mEAAO;AACrC,SAAS,yEAAa,GAAG;AACzB,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC5BzB;AAAA;AAAA;AAA4C;AACC;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,EAAE,KAAK,EAAE,KAAK;AACxC,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA,qBAAqB,4BAA4B;AACjD,qBAAqB,4BAA4B;AACjD,cAAc;AACd;AACA,6BAA6B,mEAAO;AACpC,SAAS,gEAAY;AACrB;AACA,GAAG;AACH,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC/BxB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,EAAE,KAAK,EAAE,KAAK;AAChD,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,wBAAwB,0CAA0C;AAClE,wBAAwB,0CAA0C;AAClE,cAAc;AACd,4BAA4B,aAAa,GAAG,aAAa,KAAK;AAC9D;AACA,gCAAgC,mEAAO;AACvC;AACA;;AAEA;AACA,QAAQ,gEAAI;AACZ,kBAAkB,gEAAI;AACtB;AACA;;AAEA;AACA,QAAQ,gEAAI,WAAW,gEAAI;AAC3B;AACA;AACA;;AAEA;AACA,CAAC;AACc,2EAAY,E;;;;;;;;;;;;AC9C3B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,wBAAwB;AACxB,wBAAwB;AACxB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACtBlB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,+DAA+D;AAC/D,gDAAgD;AAChD;AACA,yBAAyB,mEAAO;AAChC;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC7BpB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,wBAAwB;AACxB;AACA,yBAAyB;AACzB,yBAAyB;AACzB;AACA;AACA,kBAAkB;AAClB,kBAAkB;AAClB;AACA,0BAA0B,mEAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC9BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,qDAAqD;AACrD,sDAAsD;AACtD;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEc,mEAAI,E;;;;;;;;;;;;AC7BnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB,kBAAkB;AAClB,yBAAyB;AACzB;AACA,4BAA4B,mEAAO;AACnC;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACzBvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,2BAA2B;AAC3B;AACA;AACA,2BAA2B;AAC3B;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AClFnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA,qBAAqB;AACrB;AACA,0BAA0B,mEAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACnBrB;AAAA;AAAA;AAAA;AAAoD;AACR;AACjB;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,2CAA2C;AAC3C;AACA,wBAAwB,mEAAO;AAC/B,SAAS,uDAAG,CAAC,uEAAW;AACxB,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AChCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,QAAQ;AACpB;AACA;AACA;AACA,oBAAoB;AACpB,qBAAqB;AACrB,iBAAiB;AACjB,iBAAiB;AACjB;AACA,uBAAuB,mEAAO;AAC9B;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACxBlB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,uBAAuB;AACvB,wBAAwB;AACxB,yBAAyB;AACzB;AACA,wBAAwB;AACxB,wBAAwB;AACxB;AACA;AACA;AACA;AACA,uBAAuB,mEAAO;AAC9B;AACA,SAAS,qEAAS;AAClB,CAAC;AACc,kEAAG,E;;;;;;;;;;;;ACjClB;AAAA;AAAA;AAAA;AAA4C;AACX;AACN;;AAE3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA,mCAAmC;AACnC,oCAAoC;AACpC;AACA;AACA;AACA;AACA,0BAA0B,mEAAO;AACjC;AACA,SAAS,0DAAM;AACf,WAAW,uDAAG;AACd,GAAG;AACH,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC5BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,sBAAsB,6BAA6B,EAAE;AACrD;AACA;AACA;AACA;AACA;AACA,qBAAqB,mEAAO;AAC5B;AACA,CAAC;AACc,gEAAC,E;;;;;;;;;;;;AChChB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO,QAAQ,oBAAoB,GAAG,oBAAoB,GAAG,oBAAoB;AAC7H;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC3BpB;AAAA;AAAA;AAA4C;AACR;;AAEpC;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,MAAM;AAClB;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB;AACA,sBAAsB,mEAAO,CAAC,uDAAG;AAClB,iEAAE,E;;;;;;;;;;;;ACtBjB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU,KAAK;AACpC,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,4BAA4B,uBAAuB,EAAE,OAAO;AAC5D;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACpCnB;AAAA;AAAA;AAA0C;AACE;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA,uBAAuB;AACvB,mCAAmC;AACnC;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA,SAAS,kEAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AClCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,WAAW,IAAI;AACf,YAAY,IAAI;AAChB;AACA;AACA;AACA,yBAAyB;AACzB,0BAA0B;AAC1B,0BAA0B;AAC1B,2BAA2B;AAC3B;AACA,sBAAsB,mEAAO;AAC7B;AACA,CAAC;AACc,iEAAE,E;;;;;;;;;;;;ACzBjB;AAAA;AAAA;AAA4C;AACc;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,iCAAiC,uCAAuC;AACxE;AACA,oDAAoD,oBAAoB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mEAAO;AACpC,EAAE,0EAAc;;AAEhB;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACnCxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA,UAAU;AACV;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACxCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,wBAAwB,mEAAO;AAC/B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACrBnB;AAAA;AAAA;AAA4C;AACkC;;AAE9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,2BAA2B,oFAAwB,CAAC,2DAAO;AAC5C,sEAAO,E;;;;;;;;;;;;AChCtB;AAAA;AAAA;AAAA;AAA4C;AACkC;AACjD;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,gCAAgC,oFAAwB,eAAe,wDAAI,CAAC,2DAAO;AACpE,2EAAY,E;;;;;;;;;;;;AC7B3B;AAAA;AAAA;AAAA;AAAiC;AACJ;AACI;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,kCAAkC;AACxE,iBAAiB,wBAAwB,GAAG,WAAW;AACvD;AACA,6BAA6B,wDAAI,EAAE,kDAAM,EAAE,kDAAM;AAClC,wEAAS,E;;;;;;;;;;;;AC7BxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,EAAE;AACd;AACA;AACA;AACA,4BAA4B,IAAI,MAAM,EAAE;AACxC,4BAA4B,IAAI,MAAM,EAAE;AACxC;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AChCnB;AAAA;AAAA;AAAA;AAA4C;AACX;AACJ;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,YAAY,QAAQ;AACpB;AACA;AACA;AACA,uBAAuB,WAAW,iBAAiB;AACnD,uBAAuB,WAAW,iBAAiB;AACnD,uBAAuB;AACvB;AACA;AACA,kCAAkC;AAClC;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM,CAAC,wDAAI;AACpB,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAAA;AAA4C;AACL;AACV;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,EAAE;AACd;AACA;AACA,qCAAqC,IAAI,MAAM,EAAE;AACjD,qCAAqC,IAAI,MAAM,EAAE;AACjD;AACA,0BAA0B,mEAAO;AACjC,SAAS,6DAAS,IAAI,wDAAI;AAC1B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1BrB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,EAAE;AACtC,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,iDAAiD,IAAI,MAAM,EAAE;AAC7D;AACA,iCAAiC,mEAAO;AACxC,qCAAqC,wDAAI;AACzC,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACzB5B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK,KAAK;AAC1B,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,4BAA4B,uBAAuB,EAAE,OAAO;AAC5D,iCAAiC,uBAAuB,EAAE,OAAO;AACjE;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC/BnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK,KAAK;AAC1B,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,+BAA+B,uBAAuB,EAAE,OAAO;AAC/D,oCAAoC,uBAAuB,EAAE,OAAO;AACpE;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC/BtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,KAAK,KAAK;AAC1C,WAAW,SAAS;AACpB;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,+BAA+B,uBAAuB,EAAE,OAAO;AAC/D;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACF;AACP;AACJ;;AAE7B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,kEAAM,sBAAsB,0DAAM,CAAC,yDAAK,gBAAgB,wDAAI;AACrE,C;;;;;;;;;;;;ACjCA;AAAA;AAAA;AAAA;AAAqC;AACF;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ,WAAW,eAAe;AACzD;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,oDAAQ,aAAa,2DAAO;AACrC,C;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACA;AACT;AACJ;;AAE7B;AACA;AACA,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACe;AACf;AACA;AACA;AACA,SAAS,kEAAM,sBAAsB,0DAAM,CAAC,0DAAM,gBAAgB,wDAAI;AACtE,C;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACE;AACf;AACe;AACf;AACQ;;AAErC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA,4BAA4B,mEAAO;AACnC;AACA,WAAW,oDAAQ;AACnB;;AAEA,iBAAiB,wDAAI;AACrB,iBAAiB,wDAAI;;AAErB,SAAS,kEAAM;AACf,WAAW,mEAAO;AAClB;AACA,KAAK;AACL,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC1CvB;AAAA;AAAA;AAAA;AAA4C;AACjB;AACE;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,KAAK;AAClC,WAAW,cAAc;AACzB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,kBAAkB,sBAAsB,GAAG,uBAAuB,GAAG;AACrE;AACA,qCAAqC;AACrC,wBAAwB,IAAI,OAAO,MAAM,QAAQ,EAAE,OAAO;AAC1D,wBAAwB,WAAW,GAAG,WAAW,GAAG,WAAW;AAC/D;AACA;AACA,yBAAyB,mEAAO;AAChC,SAAS,uDAAG,CAAC,wDAAI;AACjB,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AClCpB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,8CAA8C;AAC9C;AACA,2BAA2B,mEAAO;AAClC,SAAS,mEAAO;AAChB,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACvBtB;AAAA;AAAA;AAAqC;AACJ;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,mCAAmC;AACnC;AACA,2BAA2B,0DAAM,CAAC,oDAAQ;AAC3B,sEAAO,E;;;;;;;;;;;;ACnBtB;AAAA;AAAA;AAAA;AAAA;AAAsC;AACD;AACF;AACA;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAK,OAAO,KAAK;AAClC,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,sBAAsB;AACtB,sBAAsB;AACtB;AACA,2CAA2C,QAAQ,uBAAuB,GAAG,uBAAuB;AACpG;AACA,2BAA2B,2DAAO,CAAC,wDAAI,GAAG,mDAAO,EAAE,oDAAQ,GAAG;AAC/C,sEAAO,E;;;;;;;;;;;;ACzBtB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,KAAK;AACnB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,EAAE;AACd;AACA;AACA;AACA,qBAAqB,OAAO,EAAE;AAC9B,sBAAsB,EAAE;AACxB,uCAAuC,OAAO;AAC9C;;AAEA,wBAAwB,mEAAO;AAC/B,SAAS,wDAAI;AACb,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC1BnB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,sBAAsB;AACtB,sBAAsB;AACtB,uBAAuB;AACvB,uBAAuB;AACvB;AACA;AACA,qCAAqC;AACrC;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM;AACf,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAAA;AAA4C;AACnB;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,+BAA+B,WAAW,EAAE;AAC5C,+BAA+B,SAAS,EAAE;AAC1C,gCAAgC,EAAE;AAClC;AACA,0BAA0B,mEAAO;AACjC,SAAS,sDAAE;AACX,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1BrB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,mCAAmC;AACnC;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM;AACf,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AChCrB;AAAA;AAA4C;;AAE5C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,UAAU;AAC/C,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,0CAA0C,WAAW,EAAE;AACvD;AACA,iCAAiC,mEAAO;AACxC;AACA,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACxB5B;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA,6BAA6B,WAAW,EAAE;AAC1C,kCAAkC,WAAW,EAAE;AAC/C;AACA;AACA,kBAAkB,6CAA6C,EAAE;AACjE;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AClCpB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA,sBAAsB;AACtB,wBAAwB;AACxB;AACA,yBAAyB,mEAAO;AAChC,QAAQ,qEAAS,UAAU,qEAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC/BpB;AAAA;AAAA;AAA4C;AACA;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,mEAAO,CAAC,2DAAO;AAC1B,qEAAM,E;;;;;;;;;;;;AClDrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AAClB;AACM;AACM;;AAElD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA,kCAAkC,KAAK;AACvC,0BAA0B,MAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,WAAW,wBAAwB;AACnC,WAAW,wBAAwB;AACnC,WAAW,wBAAwB;AACnC;AACA;AACA;AACA,cAAc;AACd;AACA,4BAA4B,mEAAO,qBAAqB,yEAAa,KAAK,8DAAU;AACpF,SAAS,mEAAO;AAChB;AACA,uBAAuB,gEAAI;AAC3B;AACA,GAAG,IAAI;AACP,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACtDvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,mEAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACpD1B;AAAA;AAAA;AAAA;AAA4C;AACA;AACE;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,6CAA6C;AAC7C;AACA,+BAA+B,mEAAO;AACtC,SAAS,mEAAO;AAChB,uCAAuC,oEAAQ;AAC/C,GAAG;AACH,CAAC;AACc,0EAAW,E;;;;;;;;;;;;ACtC1B;AAAA;AAAA;AAA4C;AACE;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAO,CAAC,4DAAQ;AAC5B,sEAAO,E;;;;;;;;;;;;AC7BtB;AAAA;AAAA;AAAA;AAAoD;AACR;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,uBAAuB,EAAE,OAAO;AACzD;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM,CAAC,uEAAW;AAC3B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC3BrB;AAAA;AAAA;AAAA;AAA4C;AACX;AACF;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,8CAA8C,SAAS,IAAI,IAAI,IAAI,IAAI;AACvE,4CAA4C;AAC5C;AACA;AACA;AACA;AACA,0BAA0B,mEAAO;AACjC,SAAS,yDAAK,CAAC,0DAAM;AACrB,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC9BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA,+CAA+C;AAC/C,+CAA+C;AAC/C;AACA;AACA,gDAAgD;AAChD;AACA,2BAA2B,mEAAO;AAClC;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC7BtB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA,6BAA6B;AAC7B,0BAA0B;AAC1B,uBAAuB;AACvB,sBAAsB;AACtB;AACA,yBAAyB;AACzB,wBAAwB;AACxB,uBAAuB;AACvB,sBAAsB;AACtB;AACA,2BAA2B,mEAAO;AAClC,SAAS,qEAAS;AAClB,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC9BtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AClCnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAA4C;AACnB;AACE;AACQ;AACQ;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,0DAA0D;AAC1D,4DAA4D;AAC5D;AACA,0CAA0C;AAC1C,oCAAoC;AACpC;AACA,4BAA4B,mEAAO;AACnC,iFAAiF,+DAAW;AAC5F,WAAW,sDAAE,CAAC,uDAAG,CAAC,mDAAO;AACzB,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACnCvB;AAAA;AAAA;AAAA;AAA4C;AACX;AACJ;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,yBAAyB,WAAW,EAAE,QAAQ;AAC9C,yBAAyB,WAAW,EAAE,QAAQ;AAC9C;AACA,uBAAuB,mEAAO;AAC9B,SAAS,wDAAI,OAAO,0DAAM;AAC1B,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC7BlB;AAAA;AAAA;AAA4D;AAChB;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,4CAA4C;AAC5C,mDAAmD;AACnD,6CAA6C;AAC7C,8CAA8C;AAC9C,+BAA+B;AAC/B;AACA,yBAAyB,mEAAO,eAAe,2EAAe;AAC9D;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC9BpB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,qCAAqC,cAAc;AACnD,gCAAgC;AAChC;AACA,wBAAwB,mEAAO;AAC/B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACzBnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC1CrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC7CvB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA,oCAAoC;AACpC;AACA,yBAAyB,2DAAO;AACjB,oEAAK,E;;;;;;;;;;;;ACvBpB;AAAA;AAAA;AAAA;AAA4C;AACX;AACF;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,YAAY;AACZ;AACA;AACA,gCAAgC;AAChC,oCAAoC;AACpC,gCAAgC;AAChC;AACA,2BAA2B,mEAAO;AAClC,UAAU,yDAAK,mBAAmB,yDAAK,QAAQ,0DAAM;AACrD,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACzBtB;AAAA;AAAA;AAA4C;AACb;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA,+CAA+C;AAC/C,qCAAqC;AACrC;AACA,8BAA8B,mEAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yDAAK;AACrB;AACA;AACA,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC/BzB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA,qDAAqD;AACrD;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACjCxB;AAAA;AAAA;AAAA;AAA4C;AACX;AACJ;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mEAAO;AACrC,SAAS,0DAAM,CAAC,wDAAI;AACpB,CAAC;AACc,yEAAU,E;;;;;;;;;;;;AC7BzB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,mBAAmB;AACnB;AACA;AACA,+BAA+B;AAC/B,+BAA+B;AAC/B;AACA,4BAA4B,mEAAO;AACnC;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC5BvB;AAAA;AAAA;AAA2B;AACM;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,uBAAuB,0DAAM,CAAC,+CAAG;AAClB,kEAAG,E;;;;;;;;;;;;ACnBlB;AAAA;AAAA;AAAA;AAA4C;AACX;AACQ;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,sDAAsD;AACtD,sDAAsD;AACtD;AACA,uCAAuC,mEAAO;AAC9C,SAAS,0DAAM,CAAC,8DAAU,gBAAgB,8DAAU;AACpD,CAAC;AACc,kFAAmB,E;;;;;;;;;;;;ACzBlC;AAAA;AAAA;AAAA;AAA4C;AACX;AACgB;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAClD,qBAAqB,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AAClD,+CAA+C,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK;AACpF;AACA,2CAA2C,mEAAO;AAClD,SAAS,0DAAM,CAAC,kEAAc,sBAAsB,kEAAc;AAClE,CAAC;AACc,sFAAuB,E;;;;;;;;;;;;AC7BtC;AAAA;AAAA;AAAA;AAA4D;AAChB;AACb;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,0BAA0B;AAC1B,uBAAuB;AACvB,oBAAoB;AACpB,mBAAmB;AACnB;AACA,sBAAsB;AACtB,qBAAqB;AACrB,oBAAoB;AACpB,mBAAmB;AACnB;AACA,wBAAwB,mEAAO,eAAe,2EAAe,sBAAsB,yDAAK;AACzE,mEAAI,E;;;;;;;;;;;;AChCnB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACd;AACX;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mEAAO,eAAe,yEAAa,WAAW,0DAAM;AAC5E,SAAS,yDAAK;AACd,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACnDnB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,YAAY;AACZ;AACA;AACA;AACA,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,6CAA6C;AAC7C,+BAA+B;AAC/B;AACA,4BAA4B,mEAAO;AACnC,SAAS,wDAAI;AACb,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC5BvB;AAAA;AAAA;AAA4C;AACb;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA,kDAAkD;AAClD;AACA,iCAAiC,mEAAO;AACxC;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,CAAC;AACc,4EAAa,E;;;;;;;;;;;;ACnC5B;AAAA;AAAA;AAAA;AAAA;AAA4C;AACY;AACJ;AACrB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA,8CAA8C;AAC9C;AACA,6BAA6B,mEAAO,eAAe,yEAAa,gBAAgB,+DAAW;AAC3F;AACA;AACA;AACA;AACA;AACA,SAAS,yDAAK;AACd,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC1CxB;AAAA;AAAA;AAAA;AAA4C;AACY;AAChB;;AAExC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,uBAAuB,mEAAO,eAAe,yEAAa,KAAK,yDAAK;AACpE;AACA;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC5BlB;AAAA;AAAA;AAAA;AAAA;AAAsD;AACV;AACI;AACX;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA,4BAA4B;AAC5B,4BAA4B;AAC5B;AACA,wBAAwB,mEAAO;AAC/B,OAAO,qEAAS;AAChB,sFAAsF,cAAc,4DAAQ;AAC5G;AACA,SAAS,wEAAY;AACrB,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC5BnB;AAAA;AAAA;AAA4C;AACc;;AAE1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,YAAY,QAAQ;AACpB;AACA;AACA;AACA,qCAAqC,SAAS,SAAS;AACvD;AACA,+CAA+C,oBAAoB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mEAAO;AAC/B,EAAE,0EAAc;;AAEhB;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACjCnB;AAAA;AAAA;AAAiC;AACW;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA,qCAAqC;AACrC,8CAA8C;AAC9C;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEc,uEAAQ,E;;;;;;;;;;;;AC7BvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACxCpB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,yBAAyB;AACzB;AACA,2BAA2B,2DAAO;AACnB,sEAAO,E;;;;;;;;;;;;AClBtB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,mBAAmB,iBAAiB,EAAE;AACtC;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA,QAAQ,gEAAI;AACZ;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC9BtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU;AACnB,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA,uBAAuB;AACvB;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC9BxB;AAAA;AAAA;AAA4C;AACI;;AAEhD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,uBAAuB;AACvB,0BAA0B;AAC1B,8BAA8B;AAC9B,oBAAoB,uBAAuB,EAAE,QAAQ,6BAA6B;AAClF,qDAAqD;AACrD;AACA,4BAA4B,mEAAO;AACnC,SAAS,qEAAS;AAClB,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC1CvB;AAAA;AAAmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA;AACA,yBAAyB;AACzB;AACA,2BAA2B,2DAAO;AACnB,sEAAO,E;;;;;;;;;;;;AClBtB;AAAA;AAAA;AAAA;AAA4C;AACF;AACT;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA;AACA,WAAW,EAAE;AACb,WAAW,MAAM;AACjB,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA,+DAA+D;AAC/D;AACA;AACA;AACA,+EAA+E;AAC/E;AACA,6BAA6B,0DAAM;AACnC,SAAS,mEAAO,+BAA+B,kEAAM;AACrD,CAAC;AACc,wEAAS,E;;;;;;;;;;;;ACtDxB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mEAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC3CxB;AAAA;AAAA;AAAA;AAA4C;AACjB;AACU;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD,qDAAqD;AACrD;AACA,4BAA4B,mEAAO;AACnC,oHAAoH,4DAAQ,KAAK,uDAAG;AACpI,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACjCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;AACA;AACA,2BAA2B;AAC3B,+CAA+C;AAC/C;AACA,qGAAqG,mEAAO;AAC5G;AACA;AACA;AACA,CAAC,iBAAiB,mEAAO;AACzB;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC3BnB;AAAA;AAAA;AAAA;AAA0C;AACE;AACA;;AAE5C;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA,sCAAsC,QAAQ,EAAE;AAChD,0BAA0B,aAAa;AACvC;AACA;AACA,4BAA4B,mEAAO;AACnC,SAAS,kEAAM;AACf;AACA;AACA,KAAK;AACL,iCAAiC,mEAAO;AACxC;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACnCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,EAAE;AACjB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA,iBAAiB,EAAE;AACnB,kBAAkB;AAClB,sBAAsB;AACtB,oBAAoB;AACpB,qBAAqB;AACrB,mBAAmB;AACnB,wBAAwB;AACxB,uBAAuB,EAAE;AACzB,0BAA0B;AAC1B;AACA,wBAAwB,mEAAO;AAC/B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;AC9BnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY;AACZ;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC/BtB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,2BAA2B;AAC3B;AACA;AACA,2BAA2B;AAC3B;AACA,0BAA0B;AAC1B;AACA;AACA,yBAAyB,mEAAO;AAChC,SAAS,wDAAI;AACb,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AClCpB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,4BAA4B,mEAAO;AACnC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACrCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY,MAAM;AAClB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACpCrB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACA;AACT;AACN;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,sCAAsC;AACtC;AACA,yBAAyB,mEAAO,eAAe,2DAAO,CAAC,gDAAI,EAAE,2DAAO;AACrD,oEAAK,E;;;;;;;;;;;;ACvBpB;AAAA;AAAA;AAAA;AAA4C;AACA;AACP;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA,qBAAqB,KAAK,GAAG,KAAK;AAClC,qBAAqB,KAAK,GAAG,KAAK;AAClC,iDAAiD,QAAQ,KAAK,GAAG,KAAK,GAAG,KAAK;AAC9E;AACA,6BAA6B,mEAAO;AACpC,SAAS,4DAAQ,OAAO,mEAAO;AAC/B,CAAC;AACc,wEAAS,E;;;;;;;;;;;;AC7BxB;AAAA;AAAA;AAAqC;AACJ;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,6BAA6B;AAC7B,yBAAyB;AACzB,6BAA6B;AAC7B;AACA,wBAAwB,0DAAM,CAAC,oDAAQ;AACxB,mEAAI,E;;;;;;;;;;;;ACrBnB;AAAA;AAAA;AAAsC;AACM;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,kDAAkD;AAClD;AACA,0BAA0B,mEAAO;AACjC,gBAAgB,wDAAI;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;ACrCrB;AAAA;AAAA;AAAwD;AACZ;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,0CAA0C;AAC1C,6BAA6B,IAAI,GAAG,eAAe;AACnD,uCAAuC;AACvC,uCAAuC;AACvC;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,yEAAa;AACtB;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;ACvCvB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb;AACA,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,sBAAsB;AACtB,mBAAmB;AACnB;AACA,0BAA0B,mEAAO;AACjC;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC7BrB;AAAA;AAAA;AAAgD;AACjB;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA,kCAAkC;AAClC,2CAA2C;AAC3C;AACA,0BAA0B,yDAAK,CAAC,6DAAS;AAC1B,qEAAM,E;;;;;;;;;;;;ACrBrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,WAAW,EAAE;AACb,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA,yBAAyB,mEAAO;AAChC;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC5BpB;AAAA;AAAA;AAAA;AAA4C;AACX;AACA;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,EAAE;AACb,WAAW,gBAAgB;AAC3B,YAAY,MAAM;AAClB;AACA;AACA;AACA,0CAA0C;AAC1C,2CAA2C;AAC3C;AACA;AACA;AACA;AACA,0BAA0B,mEAAO;AACjC,SAAS,0DAAM,MAAM,0DAAM;AAC3B,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC7BrB;AAAA;AAAA;AAA4C;AACX;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,YAAY,SAAS;AACrB;AACA;AACA;AACA,4DAA4D;AAC5D,4DAA4D;AAC5D,kDAAkD;AAClD,kDAAkD;AAClD;AACA;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC3CtB;AAAA;AAAA;AAA4C;AACf;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,kBAAkB,iBAAiB,EAAE;AACrC;AACA,0BAA0B,mEAAO;AACjC,cAAc,wDAAI;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC/BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,KAAK;AACd,WAAW,OAAO;AAClB,YAAY,MAAM;AAClB;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C;AACA;AACA,sBAAsB;AACtB;AACA,4BAA4B,mEAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,uEAAQ,E;;;;;;;;;;;;AC/BvB;AAAA;AAA4C;;AAE5C;AACA;AACA,UAAU;AACV;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,KAAK;AAChB,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW,EAAE;AACpC,uBAAuB,WAAW,EAAE;AACpC;AACA,wBAAwB,mEAAO;AAC/B;AACA;AACA;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACnCnB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB;AACA,WAAW,EAAE;AACb;AACA,YAAY,EAAE;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,kCAAkC;AAClC;AACA,wBAAwB,mEAAO;AAC/B;AACA,CAAC;AACc,mEAAI,E;;;;;;;;;;;;ACjCnB;AAAA;AAAA;AAA4C;AACN;;AAEtC;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uBAAuB,KAAK,UAAU;AAC/C,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,cAAc,iCAAiC,EAAE;AACjD,cAAc,iCAAiC,EAAE;AACjD,cAAc,iCAAiC,EAAE;AACjD,cAAc,iCAAiC,EAAE;AACjD,cAAc,iCAAiC,EAAE;AACjD;AACA,yBAAyB,mEAAO;AAChC;AACA,QAAQ,gEAAI;AACZ;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;AC9CpB;AAAA;AAAA;AAAA;AAAA;AAA4C;AACX;AACN;AACI;;AAE/B;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,UAAU,KAAK,UAAU;AAClC,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,YAAY;AACZ;AACA;AACA;AACA;AACA,gCAAgC,WAAW;AAC3C;AACA,cAAc,KAAK,EAAE;AACrB,cAAc,WAAW,EAAE;AAC3B,cAAc,iBAAiB,EAAE;AACjC,cAAc,WAAW,EAAE;AAC3B;AACA,2BAA2B,mEAAO;AAClC,SAAS,yDAAK,CAAC,uDAAG,CAAC,kDAAM;AACzB,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACpCtB;AAAA;AAAA;AAAA;AAAA;AAAgD;AACJ;AACf;AACI;;AAEjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,2CAA2C;AAC3C;AACA,2BAA2B,mEAAO;AAClC,SAAS,0DAAM,CAAC,wDAAI,CAAC,6DAAS;AAC9B,CAAC;AACc,sEAAO,E;;;;;;;;;;;;AC3BtB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA,yBAAyB,mEAAO;AAChC,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,oEAAK,E;;;;;;;;;;;;ACrCpB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA,0CAA0C;AAC1C;AACA;AACA,uBAAuB,mEAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,kEAAG,E;;;;;;;;;;;;AC/BlB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,OAAO;AACnB;AACA;AACA,6CAA6C,OAAO;AACpD;AACA,0BAA0B,mEAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,qEAAM,E;;;;;;;;;;;;AC7BrB;AAAA;AAA4C;;AAE5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,MAAM;AACjB,WAAW,MAAM;AACjB,YAAY,MAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACc,sEAAO,E;;;;;;;;;;;;ACpCtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACuD;AAC+C;AACtG;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACmD;AACiC;AACnB;AACP;AACb;AACgB;AACJ;AACF;AACW;AACG;AACA;AAC2B;AACA;AAC/C;AACM;AACJ;AACsB;AAC7B;AACA;AACQ;AACQ;AACsB;AAC1B;AAC0B;AACR;AACd;AACM;AACQ;AACN;AACd;AACF;AACA;AACM;AACR;AACU;AACc;AAChB;AACV;AACU;AACN;AACA;AACN;AAC8B;AACxB;AACQ;AACV;AACE;AACU;AACV;AACA;AACJ;AACW;AACP;AACA;AACT;AAC3C;;;;;;;;;;;;;ACxDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACG;AACU;AAC9C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gDAAO;AACe;AACxB;;;;;;;;;;;;;AC9CA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACG;AACqC;AACzE;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gDAAO;AACkB;AAC3B;;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AAC1C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACe;AAC3B;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACN;AACgB;AAC9C;AACP;AACA;AACA;AACA;AACA,CAAC,4CAA4C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yDAAE;AACzB;AACA,uBAAuB,yEAAU;AACjC;AACA,uBAAuB,+DAAK;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACuD;AACJ;AACmB;AAC1B;AACV;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAY;AAC/B;AACA;AACA;AACA;AACA,qCAAqC,8CAAM;AAC3C;AACA;AACA;AACA,YAAY,8CAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAAM;AACtB;AACA;AACA;AACA,gBAAgB,2EAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAiB;AAC1C;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,gEAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kBAAkB,EAAE,kBAAkB,oBAAoB,EAAE,eAAe,uBAAuB,EAAE;AAC9I,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,CAAC;AACqB;AACtB;AACA;AACA,sBAAsB,8CAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnHA;AAAA;AAAA;AAAA;AAAA;AACkC;AACuB;AAClD;AACP;AACA,4BAA4B,EAAE;AAC9B;AACA,YAAY,8CAAM;AAClB;AACA;AACA;AACA,YAAY,6EAAe;AAC3B;AACA,KAAK;AACL,2BAA2B;AAC3B;AACA;;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AAC1C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACe;AAC3B;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACG;AACM;AACI;AACc;AACa;AACb;AAC5D;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA,2BAA2B,0DAAY;AACvC;AACA;AACA;AACA,+BAA+B,wEAAmB;AAClD;AACA;AACA,4CAA4C,wEAAmB;AAC/D;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sDAAK;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gDAAO;AACgB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;ACpHA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA,CAAC;AACoB;AACrB;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AACA;AACI;AAC2B;AACb;AACyB;AACrF;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACiB;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,0EAAkB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA,uBAAuB,wEAAmB;AAC1C;AACA;AACA;AACA,6BAA6B,sDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACO;AACnB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAY;AAC/B;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;;;;;;;;;;;;AC7JA;AAAA;AAAA;AAAA;AAAA;AACiC;AACa;AAC9C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACiB;AAC/B;;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACK;AACN;AACuC;AACnD;AACuB;AACzD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+CAAa;AACjD;AACA;AACA;AACA,wCAAwC,+CAAa;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0EAAkB,iBAAiB,aAAa;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACQ;AACtB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,+CAAa;AAChD;AACA,oBAAoB,mEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,8CAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,8CAAM;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6EAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6EAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6CAA6C;AAChG,qBAAqB,8CAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAAM;AACtB;AACA;AACA;AACA,gBAAgB,6EAAe;AAC/B;AACA;AACA;AACA;AACA,aAAa,8CAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8CAAM;AACtB;AACA;AACA;AACA;AACA;AACA,gBAAgB,6EAAe;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;;;;;;;;;;;;;ACxOA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACyC;AACE;AACI;AACkB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA,YAAY,mEAAU;AACtB;AACA;AACA;AACA;AACA,sCAAsC,6EAAmB;AACzD;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA,oBAAoB,+DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,yCAAyC,6EAAmB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6EAAmB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACuB;AACxB;AACA,+CAA+C,oCAAoC,6EAAmB,sBAAsB,EAAE;AAC9H;AACA;;;;;;;;;;;;;ACvIA;AAAA;AAAA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACJ;AACA;AACI;AACyB;AACxE;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,0DAAY;AAC5D;AACA;AACA;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA;AACA;AACA;AACA,eAAe,oEAAmB;AAClC;AACA;AACA,CAAC,CAAC,sDAAU;AACqB;AAC1B;AACP;AACA;AACA,mBAAmB,cAAc;AACjC,oBAAoB,2BAA2B;AAC/C,mBAAmB,8BAA8B;AACjD,sBAAsB,8BAA8B;AACpD,qBAAqB,qCAAqC;AAC1D,sBAAsB,sDAAsD;AAC5E,qBAAqB,qCAAqC;AAC1D,kBAAkB,kCAAkC;AACpD,mBAAmB;AACnB;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAiB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC7IA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACF;AACK;AAC9C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAI;AAC5B;AACA;AACA;AACA;AACA;AACA,aAAa,iEAAS;AACtB;AACA;AACA;AACA,8BAA8B,oDAAI;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAI;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC,CAAC,sDAAU;AACqB;AACjC;;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACR;AACiB;AACd;AACQ;AAC3C;AACP;AACA,YAAY,qEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,sFAAsF,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AAC/L;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sDAAU;AAC7B;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2EAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0DAAY;AACnD;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA,2DAA2D,iCAAiC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACR;AACiB;AACN;AACR;AACnC;AACP;AACA,YAAY,qEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA,0FAA0F,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AACnM;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sDAAU;AAC7B;AACA;AACA;AACA;AACA,mDAAmD,0DAAY;AAC/D;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2EAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2DAA2D;AACnH;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,0DAAY;AACnD;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA,gEAAgE,6BAA6B;AAC7F;AACA;AACA;AACA,+DAA+D,iCAAiC;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,6BAA6B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AChHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AACR;AACW;AACS;AACtB;AACxC;AACO;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA,yBAAyB,iFAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACkB;AACnC;;;;;;;;;;;;;ACpGA;AAAA;AAAA;AAAA;AAAA;AAC0B;AACyB;AAC5C;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,WAAW,sEAAS,GAAG,sCAAE;AACzB;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACE;AACzB;AACP,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kDAAI,UAAU,oDAAK;AAChD;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACM;AACO;AACA;AACJ;AAC1C;AACA,QAAQ,+CAAI;AACZ,mBAAmB,+CAAI;AACvB;AACA,eAAe,+CAAI;AACnB,mBAAmB,+CAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+CAAI;AACZ,mBAAmB,+CAAI;AACvB;AACA;AACA;AACA;AACA;AACA,2BAA2B,OAAO;AAClC;AACA;AACA,4BAA4B,+CAAI;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,+CAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,+BAA+B,4CAA4C;AAC3E;AACO;AACP,+BAA+B,yDAAyD;AACxF;AACO;AACP,+BAA+B,+CAA+C;AAC9E;AACO;AACP,+BAA+B,wDAAwD;AACvF;AACO;AACP,+BAA+B,0DAA0D;AACzF;AACA,gCAAgC,0DAAG,sBAAsB,mBAAmB,EAAE;AACvE;AACP;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC,CAAC,sDAAU;AACc;AAC1B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,+CAAI,qCAAqC,+CAAI;AACjF,yEAAyE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+CAAI,6BAA6B,+CAAI;AACtD;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,sEAAsE,EAAE;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+CAAI;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;;;;;;;;;;;;;ACrXA;AAAA;AAAA;AAAA;AACkD;AAC3C,uCAAuC,QAAQ,8DAAc,QAAQ,EAAE;AAC9E;;;;;;;;;;;;;ACHA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACpC,8BAA8B,sDAAU,wBAAwB,8BAA8B,EAAE;AAChG;AACP;AACA;AACA;AACA,eAAe,sDAAU,wBAAwB,wCAAwC,8BAA8B,EAAE,EAAE,EAAE;AAC7H;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACD;AACH;AACK;AACd;AACvB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA,YAAY,+DAAQ;AACpB;AACA,6DAA6D,qBAAqB,EAAE;AACpF;AACA;AACA;AACA;AACA,2CAA2C,6DAAO;AAClD,oDAAoD,0DAAG,kBAAkB,6CAA6C,EAAE;AACxH;AACA;AACA;AACA;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kDAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,uCAAuC,8BAA8B,EAAE;AACvE;AACA;AACA;AACA;AACA;AACA,uEAAuE,0CAA0C,EAAE,IAAI;AACvH;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACO;AACC;AAC5C;AACP;AACA,6BAA6B,sDAAU;AACvC;AACA;AACA,mBAAmB,sDAAU,CAAC,qEAAW;AACzC;AACA;AACA,eAAe,sEAAS;AACxB;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACiB;AACD;AACpD;AACP;AACA,mBAAmB,sDAAU,CAAC,+EAAgB;AAC9C;AACA;AACA,eAAe,8EAAa;AAC5B;AACA;AACA;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACD;AACM;AACT;AACvC,2CAA2C,kCAAkC,EAAE;AACxE;AACP,QAAQ,mEAAU;AAClB;AACA;AACA;AACA;AACA,0DAA0D,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AACnK;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,kEAAkE;AACrG;AACA;AACA;AACA;AACA,mCAAmC,yCAAyC;AAC5E;AACA;AACA;AACA;AACA,mCAAmC,oDAAoD;AACvF;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9DA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACD;AACM;AACT;AAChC;AACP;AACA,gEAAgE,0DAAG,kBAAkB,QAAQ,6DAAO,mEAAmE,EAAE;AACzK;AACA,eAAe,sDAAU;AACzB;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,mEAAU;AACvB;AACA;AACA,4BAA4B,yCAAyC;AACrE,KAAK;AACL;AACA;;;;;;;;;;;;;AC/BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACC;AACM;AAC3C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uDAAQ;AAC3D;AACA;AACA,yDAAyD,qEAAW;AACpE;AACA,yBAAyB,uDAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC5HA;AAAA;AAAA;AAAA;AAAA;AACgC;AACA;AACzB;AACP;AACA,qBAAqB,4CAAK;AAC1B;AACA;AACA,sBAAsB,4CAAK;AAC3B;AACA,WAAW,oDAAK,cAAc,+CAA+C,EAAE;AAC/E;AACA;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACA;AACG;AACvC;AACP;AACA;AACA;AACA;AACA,oBAAoB,sDAAK;AACzB;AACA,SAAS,iEAAS;AAClB;AACA;AACA;AACA,oBAAoB,sDAAK;AACzB;AACA,eAAe,sDAAU;AACzB,6DAA6D,qDAAqD;AAClH;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,mBAAmB,+DAA+D;AAClF;AACA;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACO;AACD;AACT;AACjC;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oFAAoF,sDAAU;AAC9F;AACA;AACA,WAAW,oEAAQ,aAAa,4DAAS;AACzC;AACA;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACP;AAC7B,8BAA8B,sDAAU,CAAC,+CAAI;AAC7C;AACP;AACA;AACA;;;;;;;;;;;;;ACPA;AAAA;AAAA;AAAA;AAAA;AAAA;AACkD;AACV;AACmB;AACpD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA,eAAe,8EAAa;AAC5B;AACA;AACA,eAAe,4DAAS;AACxB;AACA;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACY;AACV;AACzB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,eAAe,4CAAK;AACpB;AACA;AACA,gCAAgC,6DAAO;AACvC;AACA;AACA,eAAe,sDAAU;AACzB,mCAAmC,yFAAyF;AAC5H,eAAe,kDAAI;AACnB,oCAAoC,wBAAwB,EAAE;AAC9D;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACxC;AACP;AACA,mBAAmB,sDAAU;AAC7B;AACA,2BAA2B,uCAAuC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,sDAAU;AAC7B;AACA,mCAAmC,0DAAY;AAC/C,8DAA8D,qFAAqF;AACnJ;AACA,SAAS;AACT;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,4CAA4C,6FAA6F;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACkC;AACgB;AACL;AACF;AACpC;AACP;AACA,QAAQ,gEAAM,yBAAyB,sDAAU,CAAC,qEAAW;AAC7D,QAAQ,gEAAM,CAAC,qDAAG,0BAA0B,sDAAU,CAAC,qEAAW;AAClE;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AACF;AACa;AACS;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2BAA2B;AACtD;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+BAA+B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACS;AAC1B;;;;;;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP;AACA;AACA;AACA,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP;AACA,mBAAmB,sDAAU,wBAAwB,gCAAgC,EAAE;AACvF;AACA;AACA,mBAAmB,sDAAU,wBAAwB,yCAAyC,uCAAuC,EAAE,EAAE;AACzI;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACA;AACG;AACI;AAC3C;AACP;AACA;AACA;AACA;AACA,QAAQ,iEAAS;AACjB;AACA;AACA,aAAa,qEAAW;AACxB;AACA;AACA,SAAS,qEAAW;AACpB,oBAAoB,sDAAK;AACzB;AACA,eAAe,sDAAU;AACzB,kBAAkB,iEAAS;AAC3B;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACxCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACE;AACzB;AACP,eAAe,sDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kDAAI,WAAW,4CAAK;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACO;AACE;AACC;AACU;AACS;AACe;AACtE;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,4DAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA,8BAA8B,kEAAe;AAC7C,oDAAoD,kEAAe;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAe;AACjD;AACA;AACA;AACA;AACA;AACA,kCAAkC,+BAA+B,IAAI;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kEAAe;AAC/C;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iFAAiB;AAChC;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACzNA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iFAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACpEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACX;AACY;AACrC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,WAAW,oDAAK,cAAc,QAAQ,+DAAK,sBAAsB,EAAE;AACnE;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA,kBAAkB,iFAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,KAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACO;AAC3C;AACP;AACA,oBAAoB,sDAAK;AACzB,QAAQ,qEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA,8BAA8B;AAC9B,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sGAAsG,2CAA2C;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACnJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACe;AACT;AAC9C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,kBAAkB,iFAAiB;AACnC;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0DAAY;AAC3C,uBAAuB;AACvB;AACA,gCAAgC,iFAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1GA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AACM;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA;AACA,gCAAgC,iFAAiB;AACjD;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gEAAe;AACrD;AACA,YAAY,iFAAiB;AAC7B;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AACoE;AAC7D;AACP,8BAA8B,wBAAwB,+EAAqB,WAAW;AACtF;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC0C;AAC0B;AAC1B;AAC1C;AACO;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA,8BAA8B,yBAAyB,6DAAI,oCAAoC,+EAAqB,WAAW;AAC/H;AACA;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAC8D;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,8BAA8B,yBAAyB,yDAAY,8CAA8C;AACjH;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AACsC;AAC/B;AACP,WAAW,0DAAQ;AACnB;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACsC;AAC/B;AACP,WAAW,0DAAQ;AACnB;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACwC;AACjC;AACP,WAAW,4DAAS,cAAc,wBAAwB,EAAE;AAC5D;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,0DAA0D;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,4DAA4D;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iFAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACpC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,8BAA8B,kEAAkE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;;;;;;;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA,8BAA8B,8DAA8D;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACH;AACG;AACI;AACxC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,wBAAwB,2DAAM;AAC9B;AACA,8BAA8B,4DAA4D;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAY;AAC9C;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;AC5FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACU;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kEAAkE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACnIA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,gEAAgE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,sBAAsB,iFAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACa;AAC9B;;;;;;;;;;;;;AChEA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,4EAA4E;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC3DA;AAAA;AAAA;AAAA;AAC8D;AACvD;AACP,WAAW,kFAAoB,kBAAkB,8DAA8D,EAAE;AACjH;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC0E;AACxC;AACY;AACI;AACpB;AACvB;AACP;AACA,kBAAkB,qFAAuB;AACzC;AACA;AACA;AACA,2BAA2B,sDAAM,kBAAkB,oBAAoB,EAAE,GAAG,kDAAI;AAChF,cAAc,sEAAc;AAC5B,cAAc,kEAAY,cAAc,YAAY,qFAAuB,GAAG,EAAE;AAChF;AACA;AACA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AAC8C;AACR;AAC/B;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,8BAA8B,QAAQ,iEAAM,SAAS,iDAAE,uBAAuB;AAC9E;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,mEAAmE;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AClDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,+CAA+C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iFAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AAClC;AACc;AACnC;AACP;AACA,kCAAkC,gDAAgD,QAAQ,6DAAI,qBAAqB,gDAAG,mBAAmB,oCAAoC,EAAE,GAAG,EAAE,GAAG;AACvL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACjFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,wEAAwE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACyB;AAC1B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iFAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACW;AAC5B;;;;;;;;;;;;;ACxGA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC1CA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACxC;AACP,8BAA8B,mDAAmD;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA,8BAA8B,8EAA8E;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACmB;AAC/B;;;;;;;;;;;;;AC1DA;AAAA;AAAA;AAAA;AACsD;AAC/C;AACP,8BAA8B,wBAAwB,iEAAiB,oCAAoC;AAC3G;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACgD;AACd;AACJ;AACoB;AACJ;AACF;AACrC;AACP;AACA,8BAA8B,gCAAgC,sDAAM,kBAAkB,gCAAgC,EAAE,IAAI,uDAAQ,EAAE,kDAAI,uBAAuB,sEAAc,iBAAiB,kEAAY,cAAc,YAAY,2DAAU,GAAG,EAAE,GAAG;AACxP;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACJ;AACN;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,gDAAO;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0DAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACiB;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACd;;;;;;;;;;;;;ACrLA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzBA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,2CAA2C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACgD;AACd;AACI;AACQ;AACI;AACN;AACrC;AACP;AACA,8BAA8B,gCAAgC,sDAAM,kBAAkB,gCAAgC,EAAE,IAAI,uDAAQ,EAAE,0DAAQ,uBAAuB,sEAAc,iBAAiB,kEAAY,cAAc,YAAY,2DAAU,GAAG,EAAE,GAAG;AAC5P;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,8CAA8C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC3BA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA,8BAA8B,0DAAY;AAC1C;AACA;AACA;AACA,yBAAyB,0DAAY;AACrC;AACA;AACA;AACA;AACA,yBAAyB,0DAAY;AACrC;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AACkC;AAC3B;AACP;AACA,2BAA2B,mCAAmC;AAC9D,2BAA2B,sBAAsB;AACjD,WAAW,sDAAM;AACjB;AACA;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAC2D;AACpD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,8BAA8B,yBAAyB,uDAAW,8CAA8C;AAChH;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AACsC;AACM;AACrC;AACP;AACA;AACA;AACA,WAAW,0DAAQ,CAAC,uDAAQ;AAC5B;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AAC6B;AACT;AACA;AACzB;AACc;AACnC;AACP;AACA;AACA;AACA;AACA,kCAAkC,8CAA8C,QAAQ,6DAAI,qBAAqB,gDAAG,mBAAmB,oCAAoC,EAAE,GAAG,EAAE,eAAe;AACjM;AACA;AACA;AACA;AACA,8BAA8B,+DAA+D;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACa;AAC9B;;;;;;;;;;;;;ACnGA;AAAA;AAAA;AAAA;AACsC;AAC/B;AACP;AACA;AACA;AACA;AACA,eAAe,0DAAQ,cAAc,wBAAwB,EAAE;AAC/D;AACA;AACA;AACA;AACA,WAAW,0DAAQ,cAAc,wBAAwB,EAAE;AAC3D;AACA;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AAC6B;AACT;AACA;AAC9C;AACP;AACA;AACA;AACA,8BAA8B,0EAA0E;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACc;AAC/B;;;;;;;;;;;;;AChGA;AAAA;AAAA;AAAA;AACkC;AAC3B;AACP;AACA,2BAA2B,mCAAmC;AAC9D,2BAA2B,sBAAsB;AACjD,WAAW,sDAAM;AACjB;AACA;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AACsF;AAC/E;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,iGAA+B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACI;AACxC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA;AACA,6BAA6B,0DAAY;AACzC;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AAC2B;AAC5B;;;;;;;;;;;;;ACpEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACS;AACA;AACW;AACA;AACS;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA,8BAA8B,gEAAgE;AAC9F;AACO;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA;AACA,WAAW,6DAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gEAAe;AACrD;AACA;AACA,YAAY,iFAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,4CAA4C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACpCA;AAAA;AAAA;AAAA;AAAA;AACkC;AACA;AAC3B;AACP;AACA;AACA,YAAY,sDAAM;AAClB,YAAY,sDAAM,CAAC,qDAAG;AACtB;AACA;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAC4B;AACrB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,QAAQ,gDAAG,sCAAsC;AAC/E;AACA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AACqC;AACG;AACjC;AACP;AACA,QAAQ,4DAAS,cAAc,YAAY,gDAAO,GAAG,EAAE;AACvD,QAAQ,4DAAS,KAAK,gDAAO;AAC7B;AACA;;;;;;;;;;;;;ACRA;AAAA;AAAA;AAAA;AAAA;AACqD;AACb;AACjC;AACP,8BAA8B,QAAQ,4DAAS,KAAK,gEAAe,iBAAiB;AACpF;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAC+C;AACP;AACjC;AACP,8BAA8B,QAAQ,4DAAS,KAAK,0DAAY,YAAY;AAC5E;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AACiD;AACT;AACjC;AACP;AACA;AACA;AACA;AACA,sBAAsB,4DAAa;AACnC,8BAA8B,QAAQ,4DAAS,cAAc,gBAAgB,EAAE,oBAAoB;AACnG;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAC0C;AACc;AACjD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,wCAAwC,6DAAO;AAC/C;AACA;AACA,gCAAgC,qDAAU;AAC1C;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC8B;AACQ;AACY;AACd;AAC7B;AACP;AACA;AACA,mBAAmB,uDAAI,CAAC,kDAAI,qBAAqB,0DAAQ,KAAK,sEAAc;AAC5E;AACA;AACA;AACA,eAAe,uDAAI,CAAC,kDAAI,+BAA+B,2CAA2C,EAAE,GAAG,0DAAQ;AAC/G;AACA;AACA;;;;;;;;;;;;;ACfA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACC;AACrC;AACP;AACA;AACA;AACA;AACA;AACA,mBAAmB,+DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACpDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP,8BAA8B,sDAAsD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gDAAO;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA,8BAA8B,sDAAsD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACzCA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP,8BAA8B,6DAA6D;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,iFAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,kDAAkD;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iFAAiB;AAC1C;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACpC;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,8BAA8B,+DAA+D;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,oEAAoE,oCAAoC;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC/CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACtEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,sEAAsE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACuB;AACnC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC7GA;AAAA;AAAA;AAAA;AAAA;AAAA;AACwC;AACF;AACD;AACrC;AACA,eAAe,gDAAO;AACtB;AACO;AACP,8BAA8B,QAAQ,0DAAQ,GAAG,4DAAS,+BAA+B;AACzF;AACA;;;;;;;;;;;;;ACVA;AAAA;AAAA;AAAA;AACiD;AAC1C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iDAAiD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAa;AACvC;AACA,wCAAwC,qBAAqB,EAAE;AAC/D;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACK;AACzC;AACP,8BAA8B,2DAA2D;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,2DAAU;AAC5C;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,6CAA6C;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC9BA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AAC+B;AACnE;AACP,8BAA8B,iDAAiD;AAC/E;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA,wCAAwC,sDAAU;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACjDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AACvD;AACP,8BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,QAAQ,iFAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC3CA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP,8BAA8B,sDAAsD;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC5CA;AAAA;AAAA;AAAA;AAAA;AAC8C;AACI;AAC3C;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,QAAQ,qEAAW;AACnB;AACA,kCAAkC,QAAQ,iEAAM,2BAA2B;AAC3E;AACA;AACA,kCAAkC,QAAQ,iEAAM,gBAAgB;AAChE;AACA;AACA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAC4E;AACrE;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uFAAqB;AACxC;AACA;AACA,CAAC;AACD;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AACwC;AACI;AACrC;AACP,WAAW,4DAAS,CAAC,uDAAQ;AAC7B;AACA;;;;;;;;;;;;;ACNA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACA;AACS;AAClC;AACc;AACnC;AACP;AACA,kCAAkC,+CAA+C,QAAQ,6DAAI,qBAAqB,gDAAG,mBAAmB,oCAAoC,EAAE,GAAG,EAAE,GAAG;AACtL;AACA,8BAA8B,oDAAoD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gEAAe;AACjD;AACA;AACA,iCAAiC,iFAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC3EA;AAAA;AAAA;AAAA;AACwC;AACjC;AACP,4BAA4B,4DAAS,cAAc,wBAAwB,EAAE,oBAAoB,4DAAS,cAAc,wBAAwB,EAAE;AAClJ;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AAC+B;AAC9B;AACrC;AACP;AACA;AACA,mBAAmB,+DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AChDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AAC+B;AAC9B;AACrC;AACP;AACA;AACA,mBAAmB,+DAAK;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qFAAuB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC/DA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP,8BAA8B,qDAAqD;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,iFAAiB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;ACxDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACP;AACY;AACzC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,yBAAyB,+CAAI;AAC7B,0BAA0B,+CAAI;AAC9B,6BAA6B,+CAAI;AACjC,mCAAmC,+CAAI;AACvC,yCAAyC,+CAAI;AAC7C,YAAY,mEAAU;AACtB;AACA;AACA;AACA;AACA;AACA,oDAAoD,+CAAI;AACxD,sDAAsD,+CAAI;AAC1D,4DAA4D,+CAAI;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC1EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,8BAA8B,6FAA6F;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,iFAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AC1FA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACA;AACQ;AAC5C;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA;AACA,iBAAiB,+DAAqB;AACtC;AACA,8BAA8B,oGAAoG;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,mBAAmB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACpFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACe;AACL;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA,eAAe,2DAAU;AACzB;AACA;;;;;;;;;;;;;ACrDA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACb;AACc;AAChB;AACrB;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA;AACA,eAAe,+DAAK;AACpB,+BAA+B,kDAAI;AACnC;AACA,yBAAyB,wDAAwD;AACjF,aAAa,GAAG,8DAA8D,GAAG,gDAAG;AACpF;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACuB;AACxB;;;;;;;;;;;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACS;AACR;AACU;AAC/C;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,WAAW,gEAAW,MAAM,yEAAU,KAAK,+DAAY;AACvD;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACH;AACa;AACS;AACvD;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA;AACA,8BAA8B,2DAAM;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iFAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACnEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACf;AACrB;AACP;AACA,oBAAoB,sDAAK;AACzB;AACA,WAAW,gDAAG,mBAAmB,8CAA8C,EAAE;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;AACrB;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AACkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,WAAW,sDAAM;AACjB;AACA;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iFAAiB;AAClD;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,2BAA2B,gDAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,gDAAO;AACjD;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AClEA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACU;AACN;AAC9B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;;;;;;;;;;;;;AC7EA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACM;AACA;AACG;AACI;AAC3C;AACP,oBAAoB,sDAAK;AACzB;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA,aAAa,iEAAS;AACtB;AACA;AACA,QAAQ,qEAAW;AACnB;AACA;AACA,aAAa,iEAAS;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC,CAAC,gDAAO;AACT;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,iCAAiC;AACjC;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,sDAAU;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1JA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACU;AACM;AACS;AACvD;AACP,8BAA8B,yEAAyE;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA,2CAA2C,iFAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,SAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,gDAAO;AACtC,mCAAmC,0DAAY;AAC/C,6BAA6B;AAC7B;AACA,oCAAoC,iFAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AChIA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACI;AACgB;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gDAAO;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iFAAiB;AAC7D;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;ACnFA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACoB;AACS;AACvD;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,SAAS;AAChC;AACA;AACA,uBAAuB,SAAS;AAChC;AACA,sBAAsB,iFAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,gEAAe;AACjB;;;;;;;;;;;;;AClFA;AAAA;AAAA;AAAA;AACqD;AAC9C;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA,gCAAgC,mDAAS;AACzC;AACA;AACA;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AACgD;AACzC;AACP,8BAA8B,wBAAwB,2DAAW,WAAW;AAC5E;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACxC;AACP,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACkB;AAC1D;AACP;AACA;AACA;AACA,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,6BAA6B,yDAAe;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AC7CA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACwB;AAChE;AACP,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA,mCAAmC,6DAAiB;AACpD;AACA,wCAAwC,yCAAyC,+BAA+B,EAAE,GAAG,EAAE;AACvH,uCAAuC,yCAAyC,8BAA8B,EAAE,GAAG,EAAE;AACrH,uCAAuC,yCAAyC,8BAA8B,EAAE,GAAG,EAAE;AACrH,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACI;AACxC;AACP,eAAe,sDAAU;AACzB,sBAAsB,0DAAY;AAClC;AACA;AACA;AACA;AACA,4DAA4D,8BAA8B,EAAE;AAC5F,iBAAiB;AACjB,aAAa;AACb,wDAAwD,8BAA8B,EAAE;AACxF,aAAa;AACb,SAAS;AACT;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC0D;AACN;AACJ;AACM;AACY;AACpB;AACI;AACF;AACzC;AACP;AACA,YAAY,qFAAmB;AAC/B,mBAAmB,8EAAkB;AACrC;AACA,iBAAiB,iEAAS;AAC1B,mBAAmB,wEAAe;AAClC;AACA,iBAAiB,qEAAW;AAC5B,mBAAmB,oEAAa;AAChC;AACA,iBAAiB,mEAAU;AAC3B,mBAAmB,0EAAgB;AACnC;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AAAA;AACiC;AACc;AAC/C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,0DAAY;AACI;AAClB;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AAAA;AAAA;AACiC;AACW;AAC5C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,8BAA8B,EAAE;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACmB;AAChC;;;;;;;;;;;;;ACrCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACmB;AACnC;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACa;AACF;AAC5C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,yDAAS;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yDAAS;AACrB;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACS;AACtB;;;;;;;;;;;;;ACtCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACS;AACzB;;;;;;;;;;;;;AChCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACC;AAClC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8CAAM;AACe;AACvB;;;;;;;;;;;;;AC9FA;AAAA;AAAA;AAAA;AAAA;AACiC;AACQ;AACzC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA,kBAAkB,oDAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,oDAAS;AACe;AAC1B;;;;;;;;;;;;;ACzDA;AAAA;AAAA;AAAA;AAAA;AACiC;AACW;AAC5C;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACU;AACvB;;;;;;;;;;;;;ACxCA;AAAA;AAAA;AAAA;AAAA;AACiC;AACiB;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACU;AAC1B;;;;;;;;;;;;;ACXA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACiC;AACW;AACM;AAClD;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,oBAAoB,EAAE;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,8DAAc;AACgB;AAChC;AACA,IAAI,+CAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC,wDAAW;AACY;AACzB;;;;;;;;;;;;;AC7GA;AAAA;AAAA;AAAA;AAAA;AAC8D;AACM;AAC7D,uCAAuC,gFAAuB,CAAC,0EAAoB;AAC1F;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAC0C;AACM;AACzC,6BAA6B,4DAAa,CAAC,sDAAU;AAC5D;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAC4C;AACM;AAC3C,8BAA8B,8DAAc,CAAC,wDAAW;AAC/D;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AAC4C;AACM;AAC3C,8BAA8B,8DAAc,CAAC,wDAAW;AAC/D;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACA;AACP;;;;;;;;;;;;;ACTA;AAAA;AAAA;AACO,6CAA6C,4EAA4E,EAAE;AAClI;;;;;;;;;;;;;ACFA;AAAA;AAAA;AAAA;AACO;AACP;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACPA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,4CAA4C,6BAA6B,EAAE;AAC3E;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACZA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA,wGAAwG,sCAAsC,EAAE;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACM;AACP;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA,uDAAuD,sDAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACjBA;AAAA;AAAA;AACO;AACP,4BAA4B,WAAW,EAAE;AACzC;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO,0CAA0C,wCAAwC,0CAA0C,EAAE,EAAE,EAAE;AACzI;;;;;;;;;;;;;ACFA;AAAA;AAAA;AACO,iCAAiC,qEAAqE,EAAE;AAC/G;;;;;;;;;;;;;ACFA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AACuE;AAChE;AACP,iCAAiC,6DAAiB;AAClD;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACiE;AAC1D;AACP,iCAAiC,yDAAe;AAChD;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AAAA;AACoC;AAC7B;AACP,YAAY,wDAAO;AACnB;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AAAA;AAC2C;AACpC;AACP,oCAAoC,sDAAU;AAC9C;AACA;;;;;;;;;;;;;ACLA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO;AACP;AACA;AACA;;;;;;;;;;;;;ACJA;AAAA;AAAA;AACO,iBAAiB;AACxB;;;;;;;;;;;;;ACFA;AAAA;AAAA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AAAA;AAC8B;AACvB;AACP;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACO;AACP;AACA,eAAe,0CAAI;AACnB;AACA;AACA;AACA;AACA;AACA,+CAA+C,iBAAiB,EAAE;AAClE;AACA;AACA;;;;;;;;;;;;;ACpBA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;AACzB;;;;;;;;;;;;;;ACZA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACsD;AACI;AACE;AACI;AACpB;AACJ;AACF;AAC2B;AACM;AAChE;AACP,kCAAkC,6DAAiB;AACnD,eAAe,oFAAqB;AACpC;AACA,aAAa,gEAAW;AACxB,eAAe,0EAAgB;AAC/B;AACA,aAAa,4DAAS;AACtB,eAAe,8EAAkB;AACjC;AACA,uCAAuC,yDAAe;AACtD,eAAe,gFAAmB;AAClC;AACA;AACA,oBAAoB,0DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC9BA;AAAA;AAAA;AACO;AACP;AACA,2CAA2C,+BAA+B;AAC1E;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACTA;AAAA;AAAA;AAAA;AACiE;AAC1D;AACP;AACA,gCAAgC,yDAAe;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;;;;;;;;;;;;AC1BA;AAAA;AAAA;AAAA;AACuE;AAChE;AACP;AACA,sBAAsB,6DAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;ACbA;AAAA;AAAA;AAAA;AACoD;AAC7C;AACP;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,kBAAkB,8BAA8B,EAAE;AAC3D,wBAAwB,gEAAe;AACvC;AACA;AACA;AACA;;;;;;;;;;;;;ACdA;AAAA;AAAA;AAAA;AAAA;AAAA;AACqD;AACT;AACD;AACpC;AACP;AACA,0BAA0B,gEAAe;AACzC;AACA;AACA;AACA;AACA,0BAA0B,sDAAU;AACpC;AACA;AACA,WAAW,gEAAW;AACtB;AACA;;;;;;;;;;;;;AChBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAC2C;AACiC;AACvB;AAC9C;AACP;AACA,sCAAsC,sDAAU;AAChD;AACA;AACA,2BAA2B,iEAAkB;AAC7C,kCAAkC,iEAAkB;AACpD;AACA;AACA;AACA,mBAAmB,sDAAU,CAAC,+CAAa;AAC3C;AACA,eAAe,sDAAU;AACzB;AACA;;;;;;;;;;;;;AClBA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACoD;AACQ;AACN;AACU;AACF;AACI;AACJ;AACA;AACA;AACM;AACd;AACM;AACA;AACI;AACZ;AACM;AACQ;AACI;AAClB;AACQ;AACQ;AACV;AACwB;AACM;AAC5B;AACJ;AACJ;AACI;AACM;AACR;AACA;AACI;AACR;AACU;AACR;AACI;AACc;AACd;AACN;AACF;AACI;AACY;AAChB;AACI;AACM;AACA;AACW;AACP;AACF;AACZ;AACY;AACA;AACgB;AAClB;AACE;AACR;AACI;AACgB;AACR;AACI;AAClB;AACI;AACA;AACQ;AACV;AACQ;AACF;AACJ;AACQ;AACZ;AACkB;AAChB;AACY;AACV;AACJ;AACQ;AACE;AACA;AACA;AACI;AACJ;AACA;AACI;AACd;AACQ;AACE;AACA;AACZ;AACU;AACQ;AACA;AACA;AACV;AACQ;AACJ;AACJ;AACF;AACU;AACF;AACI;AACJ;AACQ;AACtB;AACM;AACtD;;;;;;;;;;;;;ACzGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;;AAEO;AACP;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;;AAEO;AACP,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,gBAAgB;AACzC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEO;AACP,4BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEO;AACP,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,iBAAiB,sFAAsF,aAAa,EAAE;AACtH,sBAAsB,gCAAgC,qCAAqC,0CAA0C,EAAE,EAAE,GAAG;AAC5I,2BAA2B,MAAM,eAAe,EAAE,YAAY,oBAAoB,EAAE;AACpF,sBAAsB,oGAAoG;AAC1H,6BAA6B,uBAAuB;AACpD,4BAA4B,wBAAwB;AACpD,2BAA2B,yDAAyD;AACpF;;AAEO;AACP;AACA,iBAAiB,4CAA4C,SAAS,EAAE,qDAAqD,aAAa,EAAE;AAC5I,yBAAyB,6BAA6B,oBAAoB,gDAAgD,gBAAgB,EAAE,KAAK;AACjJ;;AAEO;AACP;AACA;AACA,2GAA2G,sFAAsF,aAAa,EAAE;AAChN,sBAAsB,8BAA8B,gDAAgD,uDAAuD,EAAE,EAAE,GAAG;AAClK,4CAA4C,sCAAsC,UAAU,oBAAoB,EAAE,EAAE,UAAU;AAC9H;;AAEO;AACP,gCAAgC,uCAAuC,aAAa,EAAE,EAAE,OAAO,kBAAkB;AACjH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,4CAA4C;AAC5C;;;;;;;;;;;;ACnMA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,aAAa,CAC3B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACI,SAAS,eAAe,CAC7B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,sBAAsB,CAAC;AAC7C,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;AACD;;;;;;;;;;;;;ACvBvB;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;AC/CD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,cAAc,CAC5B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;AC/CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;AACA;AACF;AACE;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,SAAS,CACvB,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;AACzD,CAAC;AAED;;;;GAIG;AACI,SAAS,WAAW,CACzB,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;AC/CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEuB;AACD;AACG;;;;;;;;;;;;;ACxB5B;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAeH;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,oBAAoB,CAClC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,uBAAuB,GAAG,OAAO;AAC5C,CAAC;AAED;;;;GAIG;AACI,SAAS,sBAAsB,CACpC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,uBAAuB,GAAG,EAAE;AACvC,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,aAAa,CAC3B,EAAe,EAAE,KAAa;IAE9B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IACxC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,MAAI,KAAK,OAAI;AAC9B,CAAC;AAED;;;;GAIG;AACI,SAAS,eAAe,CAC7B,EAAe;IAEf,IAAM,KAAK,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,CAAC;IAC7C,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;IACnC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;IACjB,IAAI,KAAK;QACP,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,KAAK,CAAC;AAC7B,CAAC;;;;;;;;;;;;;ACzFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,gBAAgB,CAC9B,EAAe,EAAE,KAAa;IAE9B,EAAE,CAAC,KAAK,CAAC,GAAG,GAAM,KAAK,OAAI;AAC7B,CAAC;AAED;;;;GAIG;AACI,SAAS,kBAAkB,CAChC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,EAAE;AACnB,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,gBAAgB,CAC9B,EAAe,EAAE,KAAa;IAE9B,EAAE,CAAC,KAAK,CAAC,MAAM,GAAM,KAAK,OAAI;AAChC,CAAC;AAED;;;;GAIG;AACI,SAAS,kBAAkB,CAChC,EAAe;IAEf,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;AACtB,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,cAAc,CAC5B,EAAe,EAAE,KAAc;IAE/B,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;;GAIG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC;AACrC,CAAC;;;;;;;;;;;;;ACjGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;;;;;;;;;;;;;ACtBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEkC;AAErC;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,mBAAmB,CACjC,EAAe,EAAE,KAAa;IAE9B,QAAQ,KAAK,EAAE;QAEb,gBAAgB;QAChB,KAAK,CAAC;YACJ,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,oBAAoB,CAAC;YAChD,MAAK;QAEP,gBAAgB;QAChB,KAAK,CAAC;YACJ,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,mBAAmB,CAAC;YAC/C,MAAK;QAEP,qBAAqB;QACrB;YACE,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,qBAAqB,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;KACtE;AACH,CAAC;AAED;;;;GAIG;AACI,SAAS,qBAAqB,CACnC,EAAe;IAEf,EAAE,CAAC,WAAW,GAAG,2DAAS,CAAC,2BAA2B,CAAC;AACzD,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACI,SAAS,qBAAqB,CACnC,EAAe,EAAE,KAAkB;IAEnC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;AACvB,CAAC;AAED;;;;GAIG;AACI,SAAS,qBAAqB,CACnC,EAAe;IAEf,EAAE,CAAC,SAAS,GAAG,EAAE;AACnB,CAAC;;;;;;;;;;;;;ACzFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEyC;AAOrB;AAEiB;AAyCxC;;+EAE+E;AAE/E;;GAEG;AACH,IAAI,WAAqC;AAEzC;;+EAE+E;AAE/E;;;;;;;;GAQG;AACI,SAAS,eAAe,CAC7B,KAAkB,EAAE,EAA2B;QAAzB,wBAAS;IAE/B,WAAW,GAAG,SAAS;SACpB,IAAI;IAEH,yBAAyB;IACzB,0DAAG,CAAC,kBAAQ,IAAI,YAAK,CAAC,MAAM,CAAe,UAAC,UAAU,EAAE,IAAI;;QAC1D,IAAM,EAAE,GAAG,8DAAU,CAAC,wBAAsB,IAAI,MAAG,EAAE,QAAQ,CAAC;QAC9D,OAAO,kHACF,UAAU,GACV,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC,WAAG,GAAC,IAAI,IAAG,EAAE,MAAG,CAAC,CAAC,EAAE,EACnD;IACH,CAAC,EAAE,EAAE,CAAC,EANU,CAMV,CAAC;IAEP,iDAAiD;IACjD,2DAAI,CAAC,UAAC,IAAI,EAAE,IAAI;;;YACd,KAAmB,0EAAK,4EAAE;gBAArB,IAAM,IAAI;gBACb,QAAQ,IAAI,EAAE;oBAEZ,kCAAkC;oBAClC,KAAK,cAAc,CAAC;oBACpB,KAAK,WAAW;wBACd,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW,EAAE;4BACrD,IAAI,CAAC,IAAI,CAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC;4BACpC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;yBACxB;wBACD,MAAK;oBAEP,kCAAkC;oBAClC;wBACE,IAAI,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,WAAW;4BACnC,IAAI,CAAC,IAAI,CAAC,GAAG,8DAAU,CAAC,wBAAsB,IAAI,MAAG,CAAC;;4BAEtD,OAAO,IAAI,CAAC,IAAI,CAAC;iBACtB;aACF;;;;;;;;;QACD,OAAO,IAAI;IACb,CAAC,CAAC;IAEF,+BAA+B;IAC/B,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;AAoBM,SAAS,YAAY,CAC1B,IAAe;IAEf,OAAO,WAAW;SACf,IAAI,CACH,gEAAS,CAAC,oBAAU,IAAI,QACtB,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,WAAW;QACrC,CAAC,CAAC,+CAAE,CAAC,UAAU,CAAC,IAAI,CAAM,CAAC;QAC3B,CAAC,CAAC,0CAAK,CACV,EAJuB,CAIvB,CAAC,EACF,2EAAoB,EAAE,CACvB;AACL,CAAC;;;;;;;;;;;;;ACzKD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACf;AAEiB;AAa3D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAA2B;QAAzB,wBAAS;IAEX,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,sEAAW,CAAC,EAAE,EAAE,EAAE,SAAS,aAAE,CAAC,EAA9B,CAA8B,CAAC,CAChD;AACH,CAAC;;;;;;;;;;;;;ACvDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACI;;;;;;;;;;;;;ACvBvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACF;AAQnC;AAEkB;AActC;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAC9B,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAEpB,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,6DAAY,CAAC,MAAM,CAAC;SACjC,IAAI,CACH,0DAAG,CAAC,cAAI,IAAI,qEAAU,CAAC,wBAAwB,EAAE,IAAI,CAAE,EAA3C,CAA2C,CAAC,EACxD,6DAAM,CAAC,YAAE,IAAI,cAAO,EAAE,KAAK,WAAW,EAAzB,CAAyB,CAAC,EACvC,gEAAS,CAAC,YAAE,IAAI,0EAAe,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;SACxD,IAAI,CACH,0DAAG,CAAC,UAAC,EAAiB;YAAL,eAAC;QAAS,QAAC,IAAI,EAAE,CAAC,YAAY;IAApB,CAAoB,CAAC,EAChD,oEAAgB,CAAC,EAAE,CAAC,CACrB,EAJa,CAIb,CACF,CACF,EAVa,CAUb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC3ED;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACV;AAO3B;AAyBpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,SAAS,CACvB,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAEpB,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,0EAAe,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;SACxD,IAAI,CACH,iEAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EACrB,0DAAG,CAAC,gBAAM,IAAI,QAAC,EAAE,MAAM,UAAE,CAAC,EAAZ,CAAY,CAAC,CAC5B,EAJa,CAIb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC7ED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;AACF;AACA;AACM;AACJ;AACF;AACD;;;;;;;;;;;;;AC7BrB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE+D;AACM;AAQpD;AAEe;AAcnC;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,SAAS,CACvB,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAEpB,IAAM,KAAK,GAAG,IAAI,4CAAO,EAAQ;IAEjC,6DAA6D;IAC7D,sDAAY,CAAC,QAAQ,CAAC;SACnB,IAAI,CACH,gEAAS,CAAC,gBAAM,IAAI,YAAK;SACtB,IAAI,CACH,8EAAuB,CAAC,QAAQ,CAAC,EACjC,qEAAiB,CAAC,MAAM,CAAC,CAC1B,EAJiB,CAIjB,CACF,CACF;SACE,SAAS,EAAE;IAEhB,qBAAqB;IACrB,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,oEAAS,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EAArC,CAAqC,CAAC,EACtD,0DAAG,CAAC,cAAI,IAAI,YAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAhB,CAAgB,CAAC,CAC9B;AACH,CAAC;;;;;;;;;;;;;ACrFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsD;AACV;AAa3B;AA2CpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,eAAe,CAC7B,EAAoD;QAAlD,oBAAO,EAAE,gBAAK,EAAE,wBAAS,EAAE,oBAAO;IAEpC,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,cAAO;SACpB,IAAI,CACH,gEAAS,CAAC,gBAAM;QAEd,6CAA6C;QAC7C,IAAI,MAAM,EAAE;YACV,OAAO,gEAAY,CAAC,EAAE,EAAE,EAAE,KAAK,SAAE,SAAS,aAAE,CAAC;iBAC1C,IAAI,CACH,gEAAY,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,CAAC,EAC7B,0DAAG,CAAC,iBAAO,IAAI,QAAC,EAAE,OAAO,WAAE,CAAC,EAAb,CAAa,CAAC,CAC9B;YAEL,4CAA4C;SAC3C;aAAM;YACL,IAAM,GAAG,GAAG,+DAAW,CAAC,KAAK,EAAE,EAAE,CAAC;YAClC,OAAO,wEAAoB,CAAC,GAAG,CAAC;iBAC7B,IAAI,CACH,wEAAoB,CAAC,GAAG,CAAC,EACzB,0DAAG,CAAC,eAAK,IAAI,QAAC,EAAE,KAAK,SAAE,CAAC,EAAX,CAAW,CAAC,CAC1B;SACJ;IACH,CAAC,CAAC,CACH,EAtBa,CAsBb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;ACvHD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEqE;AACzB;AA8B/C;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAAyC;QAAvC,kBAAM,EAAE,kBAAM,EAAE,oBAAO;IAEzB,OAAO,iDAAI,CACT,gEAAS,CAAC,cAAM,iEAAa,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;SACrD,IAAI,CACH,0DAAG,CAAC,UAAC,EAAe;YAAf,gEAAe,EAAd,aAAK,EAAE,cAAM;QAAM,QAAC,EAAE,KAAK,SAAE,MAAM,UAAE,CAAC;IAAnB,CAAmB,CAAC,CAC9C,EAHa,CAGb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC1ED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACI;AACA;AACC;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE0C;AAMtB;AAQH;AAKJ;AAahB;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,gBAAgB,CAC9B,EAAqC,EAAE,OAA0B;QAA/D,YAAG;IAAkC,sCAA0B;IAEjE,IAAM,OAAO,GAAG,6DAAS,CAAC,QAAQ,CAAC;IACnC,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE;QACV,IAAM,MAAM,GAAG,oEAAgB,CAAC,EAAE,EAAE,OAAO,CAAC;QAE5C,sCAAsC;QACtC,MAAM;aACH,IAAI,CACH,8EAAuB,CAAC,OAAO,CAAC,EAChC,0DAAG,CAAkC,UAAC,EAAS;gBAAP,gBAAK;YAAO,QAAC;gBACnD,IAAI,EAAE,yDAAiB,CAAC,KAAK;gBAC7B,IAAI,EAAE,KAAK;aACZ,CAAC;QAHkD,CAGlD,CAAC,CACJ;aACE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAElC,4BAA4B;QAC5B,MAAM;aACH,IAAI,CACH,8EAAuB,CAAC,OAAO,CAAC,EAChC,qEAAc,CAAC,OAAO,CAAC,CACxB;aACE,SAAS,CAAC,UAAC,EAAmB;gBAAnB,gEAAmB,EAAhB,mBAAK,EAAI,cAAM;YAC5B,IAAI,KAAK;gBACP,6DAAS,CAAC,MAAM,EAAE,KAAK,CAAC;QAC5B,CAAC,CAAC;QAEN,yBAAyB;QACzB,OAAO,MAAM;IACf,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACpGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE0C;AAOtB;AAEwC;AAEzB;AAEtC;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,gBAAgB;IAC9B,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,2EAAgB,CAAC,EAAE,CAAC;SACjC,IAAI,CACH,kEAAW,CAAC,sDAAY,CAAC,cAAc,CAAC,CAAC,EACzC,0DAAG,CAAC,2DAAe,CAAC,EACpB,4DAAK,CAAC,SAAS,CAAC,CACjB,EALa,CAKb,CACF,EACD,gEAAS,CAAC,SAAS,CAAC,CACrB;AACH,CAAC;;;;;;;;;;;;;ACvDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE6B;AACyB;AAOlC;AAQH;AAIJ;AAahB;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,iBAAiB,CAC/B,EAAqC,EAAE,EAAwB;QAA7D,YAAG;QAAoC,kBAAM;IAE/C,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE;QACV,IAAM,SAAS,GAAG,EAAE,CAAC,aAAc;QAEnC,4DAA4D;QAC5D,IAAM,MAAM,GAAG,sEAAkB,CAAC,SAAS,CAAC;aACzC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAK;gBAAH,QAAC;YACN,OAAO,CAAC,IAAI,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,GAAG,EAAE;QAClE,CAAC,CAAC,EACF,2EAAoB,EAAE,EACtB,6DAAM,CAAC,8CAAQ,CAAC,CACjB;QAEH,0BAA0B;QAC1B,OAAO,GAAG;aACP,IAAI,CACH,6DAAM,CAAC,6DAAqB,CAAC,EAC7B,4DAAK,CAAC,MAAM,CAAC,EACb,qEAAiB,CAAC,EAAE,EAAE,EAAE,MAAM,UAAE,MAAM,UAAE,CAAC,CAC1C;IACL,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AC7FD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE0D;AACd;AAO3B;AA0BpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,SAAS,CACvB,EAA6C;QAA3C,oBAAO,EAAE,wBAAS,EAAE,oBAAO;IAE7B,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,cAAO;SACpB,IAAI,CACH,gEAAS,CAAC,gBAAM;QAEd,wCAAwC;QACxC,IAAI,MAAM,EAAE;YACV,OAAO,mEAAe,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;iBAC/C,IAAI,CACH,iEAAa,CAAC,EAAE,EAAE,EAAE,CAAC,EACrB,0DAAG,CAAC,gBAAM,IAAI,QAAC,EAAE,MAAM,UAAE,CAAC,EAAZ,CAAY,CAAC,CAC5B;YAEL,wCAAwC;SACvC;aAAM;YACL,OAAO,+CAAE,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;SAC5B;IACH,CAAC,CAAC,CACH,EAjBa,CAiBb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC3FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAQU;AACkC;AAa3B;AA0CpB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,EAAmD;QAAjD,oBAAO,EAAE,gBAAK,EAAE,wBAAS,EAAE,oBAAO;IAEpC,OAAO,iDAAI,CACT,gEAAS,CAAC,YAAE,IAAI,cAAO;SACpB,IAAI,CACH,gEAAS,CAAC,gBAAM;QAEd,oDAAoD;QACpD,IAAI,MAAM,EAAE;YACV,IAAM,GAAG,GAAG,+DAAW,CAAoB,eAAe,EAAE,EAAE,CAAC;YAE/D,6BAA6B;YAC7B,IAAM,QAAQ,GAAG,gEAAY,CAAC,EAAE,EAAE,EAAE,KAAK,SAAE,SAAS,aAAE,CAAC;iBACpD,IAAI,CACH,gEAAY,CAAC,EAAE,EAAE,EAAE,OAAO,WAAE,CAAC,CAC9B;YAEH,8CAA8C;YAC9C,IAAM,QAAQ,GAAG,mEAAe,CAAC,GAAG,EAAE,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC;iBAC1D,IAAI,CACH,mEAAe,CAAC,GAAG,CAAC,CACrB;YAEH,0CAA0C;YAC1C,OAAO,0DAAa,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;iBACvC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAkB;oBAAlB,gEAAkB,EAAjB,eAAO,EAAE,eAAO;gBAAM,QAAC,EAAE,OAAO,WAAE,OAAO,WAAE,CAAC;YAAtB,CAAsB,CAAC,CACpD;YAEL,2CAA2C;SAC1C;aAAM;YACL,OAAO,+CAAE,CAAC,EAAE,CAAC;SACd;IACH,CAAC,CAAC,CACH,EA/Ba,CA+Bb,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;ACrID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEH,kDAAkD;AAClD,iBAAiB;AAEgB;AACG;AAEN;AAQjB;AAmBU;AAiBD;AACuB;AAEW;AAerC;AACsC;AACF;AAOvC;AACoB;AACa;AAEjD,+EAA+E;AAE/E,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC;AAClD,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;AAE5C,kBAAkB;AAClB,IAAI,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,qBAAqB,CAAC;IAClD,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC;AAE/C;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,UAAU,CAAC,MAAe;;IACxC,IAAI,CAAC,2DAAQ,CAAC,MAAM,CAAC;QACnB,MAAM,IAAI,WAAW,CAAC,4BAA0B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAG,CAAC;IAE3E,sCAAsC;IACtC,IAAM,SAAS,GAAG,kEAAa,EAAE;IACjC,IAAM,KAAK,GAAO,sEAAiB,EAAE;IACrC,IAAM,SAAS,GAAG,kEAAa,EAAE;IACjC,IAAM,OAAO,GAAK,+DAAU,CAAC,oBAAoB,CAAC;IAClD,IAAM,OAAO,GAAK,+DAAU,CAAC,qBAAqB,CAAC;IAEnD,+BAA+B;IAC/B,IAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO;QACtC,CAAC,CAAC,kEAAa,CAAC,EAAE,SAAS,aAAE,CAAC;QAC9B,CAAC,CAAC,kEAAa,EAAE;IAEnB,2BAA2B;IAC3B,iEAAY,CAAC;QACX,QAAQ;QACR,QAAQ,CAA2B,uBAAuB;KAC3D,EAAE,EAAE,SAAS,aAAE,CAAC;IAEjB,8BAA8B;IAC9B,kEAAe,CAAC;QACd,WAAW;QACX,QAAQ;QACR,cAAc;QACd,MAAM;QACN,MAAM;QACN,YAAY;QACZ,QAAQ;QACR,cAAc;QACd,cAAc;QACd,eAAe;QACf,MAAM;QACN,KAAK,CAA8B,uBAAuB;KAC3D,EAAE,EAAE,SAAS,aAAE,CAAC;IAEjB,6EAA6E;IAE7E,IAAM,MAAM,GAAG,kEAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE;QACrD,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS;KAC7B,CAAC;IAEF,6EAA6E;IAE7E,8BAA8B;IAC9B,IAAM,OAAO,GAAG,+DAAY,CAAC,QAAQ,CAAC;SACnC,IAAI,CACH,8DAAW,CAAC,EAAE,SAAS,aAAE,CAAC,EAC1B,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,KAAK,GAAG,+DAAY,CAAC,MAAM,CAAC;SAC/B,IAAI,CACH,4DAAS,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EACjC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,wBAAwB;IACxB,IAAM,MAAM,GAAG,+DAAY,CAAC,cAAc,CAAC;SACxC,IAAI,CACH,mEAAgB,CAAC,MAAM,CAAC,EACxB,kEAAW,CAAC,CAAC,CAAC,CAAC,+CAA+C;KAC/D;IAEH,wBAAwB;IACxB,IAAM,MAAM,GAAG,+DAAY,CAAC,cAAc,CAAC;SACxC,IAAI,CACH,mEAAgB,EAAE,EAClB,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,yBAAyB;IACzB,IAAM,OAAO,GAAG,+DAAY,CAAC,eAAe,CAAC;SAC1C,IAAI,CACH,oEAAiB,CAAC,MAAM,EAAE,EAAE,MAAM,UAAE,CAAC,EACrC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,IAAM,OAAO,GAAG,+DAAY,CAAC,QAAQ,CAAC;SACnC,IAAI,CACH,8DAAW,CAAC,EAAE,MAAM,UAAE,MAAM,UAAE,OAAO,WAAE,CAAC,EACxC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,IAAM,WAAW,GAAG,+DAAY,CAAC,YAAY,CAAC;SAC3C,IAAI,CACH,kEAAe,CAAC,EAAE,OAAO,WAAE,KAAK,SAAE,SAAS,aAAE,OAAO,WAAE,CAAC,EACvD,kEAAW,CAAC,CAAC,CAAC,CAAC,sDAAsD;KACtE;IAEH,IAAM,IAAI,GAAG,+DAAY,CAAC,KAAK,CAAC;SAC7B,IAAI,CACH,uEAAoB,CAAC,EAAE,OAAO,WAAE,KAAK,SAAE,SAAS,aAAE,OAAO,WAAE,CAAC,EAC5D,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,KAAK,GAAG,+DAAY,CAAC,MAAM,CAAC;SAC/B,IAAI,CACH,4DAAS,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,OAAO,WAAE,CAAC,EAC1C,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,KAAK,GAAG,+DAAY,CAAC,MAAM,CAAC;SAC/B,IAAI,CACH,4DAAS,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EACjC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,IAAM,MAAM,GAAG,+DAAY,CAAC,cAAc,CAAC;SACxC,IAAI,CACH,mEAAgB,CAAC,EAAE,OAAO,WAAE,SAAS,aAAE,CAAC,EACxC,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6EAA6E;IAE7E,IAAM,SAAS,GAAG,6EAAa,EAAE;IAEjC,6DAAY,CAAC,EAAE,SAAS,aAAE,KAAK,SAAE,CAAC;IAClC,6DAAY,CAAC,EAAE,SAAS,aAAE,CAAC;IAC3B,4DAAW,CAAC,EAAE,SAAS,aAAE,CAAC;IAC1B,4DAAW,CAAC,EAAE,SAAS,aAAE,CAAC;IAE1B,2DAA2D;IAC3D,+DAAc,CAAC,EAAE,SAAS,aAAE,CAAC;IAE7B,gCAAgC;IAChC,IAAM,OAAO,GAAG,wEAAW,EAAE;IAC7B,IAAM,UAAU,GAAG,+EAAc,CAAC,EAAE,SAAS,aAAE,OAAO,WAAE,CAAC;IAEzD,6EAA6E;IAE7E,yCAAyC;IACzC,yBAAyB;IACzB,+BAA+B;IAC/B,KAAK,CAAC,SAAS,CAAC;QACd,8DAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,YAAE;YAC9B,8DAAS,CAAC,EAAE,EAAE,KAAK,CAAC;QACtB,CAAC,CAAC;IACJ,CAAC,CAAC;IAEF,qBAAqB;IACrB,KAAK;SACF,IAAI,CACH,gEAAS,CAAC,cAAI,IAAI,qEAAS,CAAC,QAAQ,CAAC;SAClC,IAAI,CACH,6DAAM,CAAC,WAAC,IAAI,QAAC,CAAC,OAAO,EAAT,CAAS,CAAC,EAAE,cAAc;IACtC,0DAAG,CAAC,gBAAM,IAAI,qEAAS,CAAC,MAAM,EAAE,KAAK,CAAC,EAAxB,CAAwB,CAAC,EACvC,4DAAK,CAAC,GAAG,CAAC,EAAE,qDAAqD;IACjE,4DAAK,CAAC,IAAI,CAAC,CACZ,EANe,CAMf,CACF,CACF;SACE,SAAS,CAAC,cAAI;QACb,+DAAU,CAAC,WAAQ,IAAI,QAAI,CAAE,CAAC,cAAc,EAAE;IAChD,CAAC,CAAC;IAEN,sDAAsD;IACtD,qBAAqB;IACrB,IAAM,OAAO,GAAG,8DAAS,CAAC,QAAQ,CAAC;IACnC,0DAAa,CAAC;QACZ,OAAO,CAAC,IAAI,CAAC,gEAAS,CAAC,wDAAW,CAAC,CAAC;QACpC,OAAO;KACR,CAAC;SACC,IAAI,CACH,qEAAc,CAAC,SAAS,CAAC,EACzB,gEAAS,CAAC,UAAC,EAAoC;YAApC,gEAAoC,EAAnC,mEAAgB,EAAf,cAAM,EAAE,cAAM,EAAe,kBAAC;QACzC,IAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM;QAChC,OAAO,SAAS;aACb,IAAI,CACH,4DAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,6CAA6C;QACxE,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAQ;gBAAN,cAAI;YAAO,aAAM;gBACtB,CAAC,CAAC,6DAAa,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxB,CAAC,CAAC,+DAAe,CAAC,IAAI,CAAC;QAFP,CAEO,CACxB,CACF;IACL,CAAC,CAAC,CACH;SACE,SAAS,EAAE;IAYhB,SAAS,cAAc,CAAC,EAA2B;QACjD,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,IAAI;QAClC,sBAAsB;QACtB,CAAC,EAAE,CAAC,QAAQ,IAAI,EAAE,CAAC,QAAQ,KAAK,GAAG,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,gCAAgC;SACrH;IACH,CAAC;IAED,gBAAgB;IAChB,SAAS,YAAY,CAAC,EAA2B;QAC/C,OAAO,EAAE,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;IAChE,CAAC;IAED,SAAS,YAAY,CACnB,EAAiB,EAAE,EAAiB;YAAlC,UAAM;YAAa,UAAM;QAE3B,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI;IAC1B,CAAC;IAED,kBAAkB;IAClB,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,EAAE;QAE1B,qEAAqE;QACrE,IAAI,mBAAmB,IAAI,OAAO;YAChC,OAAO,CAAC,iBAAiB,GAAG,QAAQ;;YAEtC,0CAA0C;YAC1C,KAAuB;gBACrB,6BAA2B;gBAC3B,0BAAwB;aACzB;gBAHI,IAAM,QAAQ;;oBAIjB,KAAiB,+IAAW,CAAkB,QAAQ,CAAC;wBAAlD,IAAM,EAAE;wBACX,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,IAAI;qBAAA;;;;;;;;;aAAA;;;;;;;;;QAErB,oCAAoC;QACpC,IAAM,SAAS,GAAG,sDAAS,CAAa,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;aAC5D,IAAI,CACH,6DAAM,CAAC,YAAE,IAAI,QAAC,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,EAA3B,CAA2B,CAAC,EACzC,gEAAS,CAAC,YAAE;YACV,IAAI,EAAE,CAAC,MAAM,YAAY,WAAW,EAAE;gBACpC,IAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;gBACjC,IAAI,EAAE,IAAI,cAAc,CAAC,EAAE,CAAC,EAAE;oBAC5B,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;wBACnB,EAAE,CAAC,cAAc,EAAE;oBACrB,OAAO,+CAAE,CAAC,EAAE,CAAC,IAAI,CAAC;iBACnB;aACF;YACD,OAAO,0CAAK;QACd,CAAC,CAAC,EACF,2EAAoB,EAAE,EACtB,0DAAG,CAAgB,cAAI,IAAI,QAAC,EAAE,GAAG,EAAE,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAxB,CAAwB,CAAC,EACpD,4DAAK,EAAE,CACR;QAEH,0CAA0C;QAC1C,IAAM,SAAS,GAAG,SAAS;aACxB,IAAI,CACH,6DAAM,CAAC,UAAC,EAAO;gBAAL,YAAG;YAAO,QAAC,YAAY,CAAC,GAAG,CAAC;QAAlB,CAAkB,CAAC,EACvC,4DAAK,EAAE,CACR;QAEH,0DAA0D;QAC1D,IAAM,SAAS,GAAG,sDAAS,CAAgB,MAAM,EAAE,UAAU,CAAC;aAC3D,IAAI,CACH,6DAAM,CAAC,YAAE,IAAI,SAAE,CAAC,KAAK,KAAK,IAAI,EAAjB,CAAiB,CAAC,EAC/B,0DAAG,CAAuB,YAAE,IAAI,QAAC;YAC/B,GAAG,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC3B,IAAI,EAAE,EAAE,CAAC,KAAK;SACf,CAAC,EAH8B,CAG9B,CAAC,EACH,4DAAK,EAAE,CACR;QAEH,0BAA0B;QAC1B,kDAAK,CAAC,SAAS,EAAE,SAAS,CAAC;aACxB,IAAI,CACH,4DAAK,CAAC,KAAK,CAAC,CACb;aACE,SAAS,CAAC,SAAS,CAAC;QAEzB,oCAAoC;QACpC,SAAS;aACN,IAAI;QACH,2EAA2E;QAC3E,2EAAoB,CAAC,YAAY,CAAC,EAClC,6DAAM,CAAC,UAAC,EAAO;gBAAL,YAAG;YAAO,QAAC,YAAY,CAAC,GAAG,CAAC;QAAlB,CAAkB,CAAC,CACxC;aACE,SAAS,CAAC,UAAC,EAAO;gBAAL,YAAG;YACf,qCAAqC;YACrC,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;QAC3C,CAAC,CAAC;QAEN,eAAe;QACf,kDAAK,CAAC,SAAS,EAAE,SAAS,CAAC;aACxB,IAAI,CACH,kEAAW,CAAC,CAAC,EAAE,CAAC,CAAC,CAKlB;aACE,SAAS,CAAC,UAAC,EAAY;gBAAZ,gEAAY,EAAX,YAAI,EAAE,YAAI;YACrB,OAAO,CAAC,GAAG,CAAC,QAAM,IAAI,CAAC,GAAK,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,QAAM,IAAI,CAAC,GAAK,CAAC;YAE7B,IACE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI;gBAC3C,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EACtB;gBACA,4FAA4F;gBAC5F,sEAAiB,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;aACzC;YACC,qCAAqC;QACzC,CAAC,CAAC;QACF,2EAA2E;QAC/E,iCAAiC;QACjC,2DAA2D;QAC3D,sCAAsC;QACtC,UAAU;QACV,8BAA8B;QAC9B,sDAAsD;QACtD,iDAAiD;QACjD,MAAM;QACN,gCAAgC;QAChC,sCAAsC;QACtC,SAAS;QAET,2DAA2D;QAC3D,SAAS;aACN,IAAI,CACH,mEAAY,CAAC,GAAG,CAAC,EACjB,8EAAuB,CAAC,QAAQ,CAAC,CAClC;aACE,SAAS,CAAC,UAAC,EAAU;gBAAR,kBAAM;YAClB,gCAAgC;YAChC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,CAAC,CAAC;QAEN,MAAM;QACN,kDAAK,CAAC,SAAS,EAAE,SAAS,CAAC;aACxB,IAAI,CACH,6DAAM,CAAC,SAAS,CAAC,EACjB,qEAAc,CAAC,SAAS,CAAC,CAC1B;aACE,SAAS,CAAC,UAAC,EAAgC;;gBAAhC,gEAAgC,EAA/B,UAAa,EAAX,YAAG,EAAE,cAAI,EAAI,UAAe,EAAb,gBAAK,EAAE,cAAI;YACvC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;YAEnC,uBAAuB;YACvB,QAAQ,CAAC,aAAa,CAAC,IAAI,WAAW,CAAC,kBAAkB,CAAC,CAAC;YAE3D,mBAAmB;YACnB,QAAQ,CAAC,KAAK,GAAG,KAAK;;gBAEtB,oBAAoB;gBACpB,KAAuB;oBACrB,yBAAuB;oBACvB,uBAAqB;oBACrB,4BAA0B;iBAC3B,6CAAE;oBAJE,IAAM,QAAQ;oBAKjB,IAAM,IAAI,GAAG,+DAAU,CAAC,QAAQ,EAAE,IAAI,CAAC;oBACvC,IAAM,IAAI,GAAG,+DAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC;oBAChD,IACE,OAAO,IAAI,KAAK,WAAW;wBAC3B,OAAO,IAAI,KAAK,WAAW,EAC3B;wBACA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;qBACvB;iBACF;;;;;;;;;YAED,sBAAsB;YACtB,8DAAS,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,YAAE;gBAC9B,8DAAS,CAAC,EAAE,EAAE,KAAK,CAAC;YACtB,CAAC,CAAC;YAEF,wCAAwC;YACxC,IAAI,GAAG,CAAC,IAAI,EAAE;gBACZ,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC;gBAC/B,IAAM,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;gBACrC,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;gBACjB,CAAC,CAAC,KAAK,EAAE;aACV;iBAAM;gBACL,sEAAiB,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAC,cAAc;aACnD;QACH,CAAC,CAAC;QAEN,qCAAqC;QACrC,mCAAmC;QACnC,KAAK;QAEL,qCAAqC;QACrC,mCAAmC;QACnC,KAAK;QAEL,SAAS,CAAC,SAAS,CAAC,UAAC,EAAO;gBAAL,YAAG;YACxB,OAAO,CAAC,GAAG,CAAC,cAAY,GAAG,CAAC,IAAM,EAAE,GAAG,CAAC;QAC1C,CAAC,CAAC;KACH;IAED,6EAA6E;IAE7E,mEAAmE;IACnE,kCAAkC;IAClC,SAAS;SACN,IAAI,CACH,6DAAM,CAAC,aAAG,IAAI,UAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAnD,CAAmD,CAAC,EAClE,2DAAI,CAAC,CAAC,CAAC,CACR;SACA,SAAS,CAAC;;;YACT,KAAmB,gIAAW,CAAC,aAAa,CAAC;gBAAxC,IAAM,IAAI;gBACb,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS;aAAA;;;;;;;;;IACrC,CAAC,CAAC;IAEJ,6EAA6E;IAE7E,IAAM,KAAK,GAAG;QACZ,OAAO;QACP,UAAU;QACV,SAAS;QACT,KAAK;QACL,SAAS;QACT,OAAO;QACP,KAAK;QACL,WAAW;QACX,IAAI;QACJ,KAAK;QACL,KAAK;QACL,MAAM,SAAC,qBAAqB;KAC7B;IAED,IAAQ,sEAAiB;IACzB,0CAAK,sEAAI,oDAAM,CAAC,IAAI,CAAC,GAClB,SAAS,EAAE,EAAC,sCAAsC;IAErD,OAAO;QACL,SAAS;QACT,KAAK;KACN;AACH,CAAC;;;;;;;;;;;;;AC3iBD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEqC;AAC2B;AACjB;AAET;AACE;AACN;AAcrC;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,cAAc,CAC5B,EAAoC;QAAlC,wBAAS,EAAE,oBAAO;IAEpB,IAAI,CAAC,qDAAuB,EAAE;QAC5B,OAAO,0CAAK;IAEd,wCAAwC;IACxC,SAAS,CAAC,SAAS,CAAC;;QAClB,IAAM,MAAM,GAAG,+DAAW,CAAC,YAAY,CAAC;;YACxC,KAA6B,sEAAM,CAAC,OAAO,EAAE,6CAAE;gBAApC,0EAAc,EAAb,aAAK,EAAE,aAAK;gBACtB,IAAM,MAAM,GAAG,KAAK,CAAC,aAAc;gBACnC,MAAM,CAAC,EAAE,GAAG,YAAU,KAAO;gBAC7B,MAAM,CAAC,YAAY,CAAC,iEAAe,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC;aACvD;;;;;;;;;IACH,CAAC,CAAC;IAEF,oCAAoC;IACpC,IAAM,UAAU,GAAG,6DAAgB,CAAoB,cAAI;QACzD,IAAI,sCAAW,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,IAAI,CAAC;IACtD,CAAC,CAAC;SACC,IAAI,CACH,4DAAK,EAAE,CACR;IAEH,8CAA8C;IAC9C,UAAU;SACP,IAAI,CACH,0DAAG,CAAC,YAAE,IAAI,SAAE,CAAC,cAAc,EAAE,EAAnB,CAAmB,CAAC,EAC9B,4DAAK,CAAC,2DAAS,CAAC,kBAAkB,CAAC,CAAC,CACrC;SACE,SAAS,CAAC,OAAO,CAAC;IAEvB,sBAAsB;IACtB,OAAO,UAAU;AACnB,CAAC;;;;;;;;;;;;;AC1FD;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEwD;AAQpC;AAevB;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAA+B;QAA7B,6CAAQ;IAEV,IAAM,OAAO,GAAG,IAAI,4CAAO,EAAU;IAErC,mBAAmB;IACnB,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,EAAkC,wBAAwB;IACtG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC;IAE/C,oBAAoB;IACpB,OAAO;SACJ,IAAI,CACH,gEAAS,CAAC,cAAI,IAAI,sDAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,4BAA4B;SAC7D,IAAI,CACH,0DAAG,CAAC,mBAAS,IAAI,gBAAS,CAAC,WAAW,CAAC,MAAM,CAAC,EAA7B,CAA6B,CAAC,EAC/C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,4DAAK,CAAC,CAAC,CAAC,EAAE,6EAA6E;IACvF,0DAAG,CAAC,YAAE;QACJ,EAAE,CAAC,SAAS,GAAG,IAAI;QACnB,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;IAC1C,CAAC,CAAC,EACF,4DAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,EACvB,0DAAG,CAAC,YAAE,IAAI,SAAE,CAAC,eAAe,CAAC,eAAe,CAAC,EAAnC,CAAmC,CAAC,EAC9C,4DAAK,CAAC,GAAG,CAAC,EACV,0DAAG,CAAC,YAAE;QACJ,EAAE,CAAC,SAAS,GAAG,EAAE;QACjB,EAAE,CAAC,MAAM,EAAE;IACb,CAAC,CAAC,CACH,EAhBe,CAgBf,CACF,CACF;SACE,SAAS,EAAE;IAEhB,2BAA2B;IAC3B,OAAO,OAAO;AAChB,CAAC;;;;;;;;;;;;;AC3FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AASoB;AAEkB;AAarB;AAsBpB;;+EAE+E;AAE/E;;;;;;;;;;;;;;;;;;GAkBG;AACI,SAAS,aAAa;IAC3B,IAAM,OAAO,GAAG,6DAAS,CAAC,QAAQ,CAAC;IACnC,IAAM,OAAO,GAAG,OAAO;SACpB,IAAI,CACH,gEAAS,CAAC,uDAAW,CAAC,CACvB;IAEH,uCAAuC;IACvC,IAAM,SAAS,GAAG,iEAAa,EAAE;SAC9B,IAAI,CACH,qEAAc,CAAC,OAAO,CAAC,EACvB,0DAAG,CAAC,UAAC,EAAa;YAAb,gEAAa,EAAZ,WAAG,EAAE,cAAM;QAAgB,QAAC,yDAChC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAC/B,GAAG,EACN;IAH+B,CAG/B,CAAC,EACH,4DAAK,EAAE,CACR;IAEH,oCAAoC;IACpC,SAAS;SACN,IAAI,CACH,6DAAM,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,WAAI,KAAK,QAAQ;IAAjB,CAAiB,CAAC,EACvC,qEAAc,CACZ,OAAO,EACP,+DAAY,CAAC,cAAc,CAAC,EAC5B,+DAAY,CAAC,eAAe,CAAC,CAC9B,CACF;SACE,SAAS,CAAC,UAAC,EAA4B;YAA5B,gEAA4B,EAA3B,WAAG,EAAE,cAAM,EAAE,aAAK,EAAE,cAAM;QACrC,IAAM,MAAM,GAAG,oEAAgB,EAAE;QACjC,QAAQ,GAAG,CAAC,IAAI,EAAE;YAEhB,oCAAoC;YACpC,KAAK,OAAO;gBACV,IAAI,MAAM,KAAK,KAAK;oBAClB,GAAG,CAAC,KAAK,EAAE;gBACb,MAAK;YAEP,iCAAiC;YACjC,KAAK,QAAQ,CAAC;YACd,KAAK,KAAK;gBACR,6DAAS,CAAC,MAAM,EAAE,KAAK,CAAC;gBACxB,mEAAe,CAAC,KAAK,EAAE,KAAK,CAAC;gBAC7B,MAAK;YAEP,4DAA4D;YAC5D,KAAK,SAAS,CAAC;YACf,KAAK,WAAW;gBACd,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE;oBACjC,mEAAe,CAAC,KAAK,CAAC;iBACvB;qBAAM;oBACL,IAAM,GAAG,GAAG,wDAAC,KAAK,GAAK,+DAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;oBACrD,IAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CACpB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,CAC9C,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACjC,CACF,GAAG,GAAG,CAAC,MAAM,CAAC;oBACf,mEAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACxB;gBAED,+BAA+B;gBAC/B,GAAG,CAAC,KAAK,EAAE;gBACX,MAAK;YAEP,0CAA0C;YAC1C;gBACE,IAAI,KAAK,KAAK,oEAAgB,EAAE;oBAC9B,mEAAe,CAAC,KAAK,CAAC;SAC3B;IACH,CAAC,CAAC;IAEN,oCAAoC;IACpC,SAAS;SACN,IAAI,CACH,6DAAM,CAAC,UAAC,EAAQ;YAAN,cAAI;QACZ,IAAI,IAAI,KAAK,QAAQ,EAAE;YACrB,IAAM,MAAM,GAAG,oEAAgB,EAAE;YACjC,IAAI,OAAO,MAAM,KAAK,WAAW;gBAC/B,OAAO,CAAC,2EAAuB,CAAC,MAAM,CAAC;SAC1C;QACD,OAAO,KAAK;IACd,CAAC,CAAC,EACF,qEAAc,CAAC,+DAAY,CAAC,cAAc,CAAC,CAAC,CAC7C;SACE,SAAS,CAAC,UAAC,EAAY;YAAZ,gEAAY,EAAX,WAAG,EAAE,aAAK;QACrB,QAAQ,GAAG,CAAC,IAAI,EAAE;YAEhB,kCAAkC;YAClC,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,mEAAe,CAAC,KAAK,CAAC;gBACtB,uEAAmB,CAAC,KAAK,CAAC;gBAC1B,GAAG,CAAC,KAAK,EAAE;gBACX,MAAK;YAEP,yBAAyB;YACzB,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,IAAM,IAAI,GAAG,8DAAU,CAAC,kBAAkB,CAAC;gBAC3C,IAAI,OAAO,IAAI,KAAK,WAAW;oBAC7B,IAAI,CAAC,KAAK,EAAE;gBACd,MAAK;YAEP,qBAAqB;YACrB,KAAK,GAAG,CAAC;YACT,KAAK,GAAG;gBACN,IAAM,IAAI,GAAG,8DAAU,CAAC,kBAAkB,CAAC;gBAC3C,IAAI,OAAO,IAAI,KAAK,WAAW;oBAC7B,IAAI,CAAC,KAAK,EAAE;gBACd,MAAK;SACR;IACH,CAAC,CAAC;IAEN,qBAAqB;IACrB,OAAO,SAAS;AAClB,CAAC;;;;;;;;;;;;;AC5MD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEuD;AACP;AAEJ;AAa/C;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,aAAa,CAC3B,EAAgC;QAA9B,+CAAS;IAEX,OAAO,kDAAK,CACV,sDAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC;SACpC,IAAI,CACH,4DAAK,CAAC,QAAQ,CAAC,CAChB,EACH,OAAO,SAAS,KAAK,WAAW;QAC9B,CAAC,CAAC,mEAAmB,CAAC,EAAE,SAAS,aAAE,CAAC;QACpC,CAAC,CAAC,0CAAK,CACV;SACE,IAAI,CACH,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;;;;;;;;;;;;;ACvBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqC;AACR;AAQT;AAEqB;AAa5C;;+EAE+E;AAE/E;;;;;;;;;;;;;GAaG;AACI,SAAS,mBAAmB,CACjC,EAA2B;QAAzB,wBAAS;IAEX,OAAO,SAAS;SACb,IAAI,CACH,8EAAuB,CAAC,UAAU,CAAC,EACnC,2DAAI,CAAC,CAAC,CAAC;IAEP,oBAAoB;IACpB,gEAAS,CAAC,aAAG,IAAI,6DAAI,CAAC;QACpB,GAAG,EAAE,GAAG,CAAC,IAAI;QACb,YAAY,EAAE,UAAU;QACxB,eAAe,EAAE,IAAI;KACtB,CAAC;SACC,IAAI,CACH,4DAAK,CAAC,UAAU,CAAC,EACjB,iEAAU,CAAC;QACT,6DAAW,CAAC,GAAG,CAAC;QAChB,OAAO,0CAAK;IACd,CAAC,CAAC,CACH,EAXc,CAWd,CACF,EACD,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACxFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,UAAU,CACxB,QAAgB,EAAE,IAA2B;IAA3B,sCAA2B;IAE7C,OAAO,IAAI,CAAC,aAAa,CAAI,QAAQ,CAAC,IAAI,SAAS;AACrD,CAAC;AAED;;;;;;;;;GASG;AACI,SAAS,iBAAiB,CAC/B,QAAgB,EAAE,IAA2B;IAA3B,sCAA2B;IAE7C,IAAM,EAAE,GAAG,UAAU,CAAI,QAAQ,EAAE,IAAI,CAAC;IACxC,IAAI,OAAO,EAAE,KAAK,WAAW;QAC3B,MAAM,IAAI,cAAc,CACtB,iCAA8B,QAAQ,qBAAiB,CACxD;IACH,OAAO,EAAE;AACX,CAAC;AAED;;;;GAIG;AACI,SAAS,gBAAgB;IAC9B,OAAO,QAAQ,CAAC,aAAa,YAAY,WAAW;QAClD,CAAC,CAAC,QAAQ,CAAC,aAAa;QACxB,CAAC,CAAC,SAAS;AACf,CAAC;AAED;;;;;;;;;GASG;AACI,SAAS,WAAW,CACzB,QAAgB,EAAE,IAA2B;IAA3B,sCAA2B;IAE7C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAI,QAAQ,CAAC,CAAC;AACvD,CAAC;;;;;;;;;;;;;ACxFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACW;AAEvB;AAEvC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,KAAqB;IAArB,oCAAqB;IAEtC,IAAI,KAAK;QACP,EAAE,CAAC,KAAK,EAAE;;QAEV,EAAE,CAAC,IAAI,EAAE;AACb,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,IAAM,MAAM,GAAG,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC;IACrC,IAAM,KAAK,GAAI,sDAAS,CAAC,EAAE,EAAE,MAAM,CAAC;IAEpC,iCAAiC;IACjC,OAAO,kDAAK,CACV,MAAM,CAAC,IAAI,CAAC,4DAAK,CAAC,IAAI,CAAC,CAAC,EACxB,KAAK,CAAC,IAAI,CAAC,4DAAK,CAAC,KAAK,CAAC,CAAC,CACzB;SACE,IAAI,CACH,gEAAS,CAAC,EAAE,KAAK,0DAAgB,EAAE,CAAC,EACpC,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACI;AACC;AACA;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACS;AAc5D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAAC,EAAe;IAC9C,OAAO;QACL,CAAC,EAAE,EAAE,CAAC,UAAU;QAChB,CAAC,EAAE,EAAE,CAAC,SAAS;KAChB;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,kBAAkB,CAChC,EAAe;IAEf,OAAO,kDAAK,CACV,sDAAS,CAAU,EAAE,EAAE,QAAQ,CAAC,EAChC,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC,CACrC;SACE,IAAI,CACH,0DAAG,CAAC,cAAM,uBAAgB,CAAC,EAAE,CAAC,EAApB,CAAoB,CAAC,EAC/B,gEAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,EAC/B,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;AC5ED;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,mBAAmB,CACjC,EAAe;IAEf,IAAI,EAAE,YAAY,gBAAgB;QAChC,EAAE,CAAC,MAAM,EAAE;;QAEX,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC;AACtC,CAAC;;;;;;;;;;;;;ACtCD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEuB;AACD;AACC;AACA;AACH;AACG;AACF;;;;;;;;;;;;;AC5BxB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACO;AAcnD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,uBAAuB,CAAC,EAAe;IACrD,QAAQ,EAAE,CAAC,OAAO,EAAE;QAElB,mBAAmB;QACnB,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC;QACd,KAAK,UAAU;YACb,OAAO,IAAI;QAEb,qBAAqB;QACrB;YACE,OAAO,EAAE,CAAC,iBAAiB;KAC9B;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,aAAa;IAC3B,OAAO,sDAAS,CAAgB,MAAM,EAAE,SAAS,CAAC;SAC/C,IAAI,CACH,6DAAM,CAAC,YAAE,IAAI,QAAC,CAAC,EAAE,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,CAAC,EAA3B,CAA2B,CAAC,EACzC,0DAAG,CAAC,YAAE,IAAI,QAAC;QACT,IAAI,EAAE,EAAE,CAAC,GAAG;QACZ,KAAK;YACH,EAAE,CAAC,cAAc,EAAE;YACnB,EAAE,CAAC,eAAe,EAAE;QACtB,CAAC;KACF,CAAC,EANQ,CAMR,CAAC,EACH,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEmC;AAEtC;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,WAAW;IACzB,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACI,SAAS,WAAW,CAAC,GAAQ;IAClC,QAAQ,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI;AAC1B,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,aAAa;IAC3B,OAAO,IAAI,oDAAe,CAAM,WAAW,EAAE,CAAC;AAChD,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACkB;AAE9D;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,eAAe;IAC7B,OAAO,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,iBAAiB;IAC/B,OAAO,sDAAS,CAAkB,MAAM,EAAE,YAAY,CAAC;SACpD,IAAI,CACH,0DAAG,CAAC,eAAe,CAAC,EACpB,gEAAS,CAAC,eAAe,EAAE,CAAC,EAC5B,6DAAM,CAAC,cAAI,IAAI,WAAI,CAAC,MAAM,GAAG,CAAC,EAAf,CAAe,CAAC,EAC/B,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACrDD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACG;;;;;;;;;;;;;ACvBtB;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACI;AAEvD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,UAAU,CAAC,KAAa;IACtC,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;IAC/B,OAAO,6DAAgB,CAAU,cAAI;QACnC,YAAK,CAAC,WAAW,CAAC,cAAM,WAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAnB,CAAmB,CAAC;IAA5C,CAA4C,CAC7C;SACE,IAAI,CACH,gEAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EACxB,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;AC7CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6C;AAKzB;AAML;AAIF;AA0BhB;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,aAAa;IAC3B,OAAO,0DAAa,CAAC;QACnB,mEAAmB,EAAE;QACrB,+DAAiB,EAAE;KACpB,CAAC;SACC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAc;YAAd,gEAAc,EAAb,cAAM,EAAE,YAAI;QAAM,QAAC,EAAE,MAAM,UAAE,IAAI,QAAE,CAAC;IAAlB,CAAkB,CAAC,EAC3C,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;AAED;;;;;;;GAOG;AACI,SAAS,eAAe,CAC7B,EAAe,EAAE,EAA4C;QAA1C,oBAAO,EAAE,wBAAS;IAErC,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC,EAC/B,0DAAG,CAA2B,cAAM,QAAC;QACnC,CAAC,EAAE,EAAE,CAAC,UAAU;QAChB,CAAC,EAAE,EAAE,CAAC,SAAS;KAChB,CAAC,EAHkC,CAGlC,CAAC,CACJ;IAEH,sDAAsD;IACtD,OAAO,0DAAa,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;SAChD,IAAI,CACH,0DAAG,CAAC,UAAC,EAAwC;YAAxC,gEAAwC,EAArC,qBAAM,EAAI,UAAgB,EAAd,kBAAM,EAAE,cAAI,EAAI,UAAQ,EAAN,QAAC,EAAE,QAAC;QAAQ,QAAC;YACjD,MAAM,EAAE;gBACN,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC;gBACf,CAAC,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;aACzB;YACD,IAAI;SACL,CAAC;IANgD,CAMhD,CAAC,EACH,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;;;;;;;;;;;;;ACnHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;AACF;;;;;;;;;;;;;ACxBtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgD;AACJ;AAc/C;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,iBAAiB;IAC/B,OAAO;QACL,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;QAC3B,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC;KAC5B;AACH,CAAC;AAED;;;;GAIG;AACI,SAAS,iBAAiB,CAC/B,EAAiC;QAA/B,QAAC,EAAE,QAAC;IAEN,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACjC,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,mBAAmB;IACjC,OAAO,kDAAK,CACV,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC,EACpC,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC,CACrC;SACE,IAAI,CACH,0DAAG,CAAC,iBAAiB,CAAC,EACtB,gEAAS,CAAC,iBAAiB,EAAE,CAAC,CAC/B;AACL,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACG;AAc/C;;+EAE+E;AAE/E;;;;GAIG;AACI,SAAS,eAAe;IAC7B,OAAO;QACL,KAAK,EAAG,UAAU;QAClB,MAAM,EAAE,WAAW;KACpB;AACH,CAAC;AAED,+EAA+E;AAE/E;;;;GAIG;AACI,SAAS,iBAAiB;IAC/B,OAAO,sDAAS,CAAU,MAAM,EAAE,QAAQ,CAAC;SACxC,IAAI,CACH,0DAAG,CAAC,eAAe,CAAC,EACpB,gEAAS,CAAC,eAAe,EAAE,CAAC,CAC7B;AACL,CAAC;;;;;;;;;;;;;AClED;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyD;AAOrC;AAuCvB;;+EAE+E;AAE/E;;;;;;;;;;;;GAYG;AACI,SAAS,WAAW,CACzB,MAAc,EAAE,EAAwB;QAAtB,YAAG;IAGrB,iDAAiD;IACjD,IAAM,GAAG,GAAG,6DAAgB,CAAQ,cAAI;QACtC,aAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC;IAAxC,CAAwC,CACzC;SACE,IAAI,CACH,4DAAK,CAAW,MAAM,CAAC,CACxB;IAEH,sDAAsD;IACtD,OAAO,GAAG;SACP,IAAI,CACH,+DAAQ,CAAC,cAAM,UAAG,EAAH,CAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EACtD,0DAAG,CAAC,iBAAO,IAAI,aAAM,CAAC,WAAW,CAAC,OAAO,CAAC,EAA3B,CAA2B,CAAC,EAC3C,kEAAW,CAAC,GAAG,CAAC,EAChB,4DAAK,EAAE,CACR;AACL,CAAC;;;;;;;;;;;;;ACzGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE4B;AAOlB;AAYU;AAOP;AAE+B;AA2B/C;;+EAE+E;AAE/E;;;;;;;;;;;;;;;;;;;GAmBG;AACI,SAAS,eAAe,CAC7B,GAAwB,EAAE,EAAoC;;QAAlC,oBAAO,EAAE,wBAAS;IAE9C,IAAM,KAAK,GAAG,IAAI,GAAG,EAAkC;;QACvD,KAAiB,sEAAG,kEAAE;YAAjB,IAAM,EAAE;YACX,IAAM,EAAE,GAAG,kBAAkB,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACnD,IAAM,MAAM,GAAG,yDAAU,CAAC,WAAQ,EAAE,QAAI,CAAC;YACzC,IAAI,OAAO,MAAM,KAAK,WAAW;gBAC/B,KAAK,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC;SACxB;;;;;;;;;IAED,6CAA6C;IAC7C,IAAM,OAAO,GAAG,OAAO;SACpB,IAAI,CACH,0DAAG,CAAC,gBAAM,IAAI,SAAE,GAAG,MAAM,CAAC,MAAM,EAAlB,CAAkB,CAAC,CAClC;IAEH,oDAAoD;IACpD,IAAM,UAAU,GAAG,SAAS;SACzB,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC;IAE/B,yDAAyD;IACzD,0DAAG,CAAC;QACF,IAAI,IAAI,GAAwB,EAAE;QAClC,OAAO,uDAAI,KAAK,EAAE,MAAM,CAAC,UAAC,KAAK,EAAE,EAAgB;gBAAhB,gEAAgB,EAAf,cAAM,EAAE,cAAM;YAC9C,OAAO,IAAI,CAAC,MAAM,EAAE;gBAClB,IAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAE;gBAC9C,IAAI,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE;oBAClC,IAAI,CAAC,GAAG,EAAE;iBACX;qBAAM;oBACL,MAAK;iBACN;aACF;YAED,+DAA+D;YAC/D,IAAI,MAAM,GAAG,MAAM,CAAC,SAAS;YAC7B,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,aAAa,EAAE;gBACtC,MAAM,GAAG,MAAM,CAAC,aAAa;gBAC7B,MAAM,GAAG,MAAM,CAAC,SAAS;aAC1B;YAED,iDAAiD;YACjD,OAAO,KAAK,CAAC,GAAG,CACd,qDAAO,CAAC,IAAI,GAAG,uDAAI,IAAI,GAAE,MAAM,EAAC,CAAC,EACjC,MAAM,CACP;QACH,CAAC,EAAE,IAAI,GAAG,EAA+B,CAAC;IAC5C,CAAC,CAAC;IAEF,uDAAuD;IACvD,gEAAS,CAAC,eAAK,IAAI,iEAAa,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SACnD,IAAI,CACH,2DAAI,CAAC,UAAC,EAAY,EAAE,EAA2B;YAAzC,gEAAY,EAAX,YAAI,EAAE,YAAI;YAAG,gEAA2B,EAA1B,cAAM,EAAc,kBAAC;QAExC,kBAAkB;QAClB,OAAO,IAAI,CAAC,MAAM,EAAE;YACZ,yEAAoB,EAAjB,cAAiB;YAC1B,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,GAAG,uDAAI,IAAI,GAAE,IAAI,CAAC,KAAK,EAAG,EAAC;aAChC;iBAAM;gBACL,MAAK;aACN;SACF;QAED,mBAAmB;QACnB,OAAO,IAAI,CAAC,MAAM,EAAE;YACZ,uFAAkC,EAA/B,cAA+B;YACxC,IAAI,MAAM,GAAG,MAAM,IAAI,CAAC,EAAE;gBACxB,IAAI,GAAG,wDAAC,IAAI,CAAC,GAAG,EAAG,GAAK,IAAI,CAAC;aAC9B;iBAAM;gBACL,MAAK;aACN;SACF;QAED,sBAAsB;QACtB,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;IACrB,CAAC,EAAE,CAAC,EAAE,EAAE,uDAAI,KAAK,EAAE,CAAC,EACpB,2EAAoB,CAAC,UAAC,CAAC,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;eACb,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,CAAC,CAAC,CACH,EA/BgB,CA+BhB,CACF,CACF;IAEH,+CAA+C;IAC/C,OAAO,UAAU;SACd,IAAI,CACH,0DAAG,CAAC,UAAC,EAAY;YAAZ,gEAAY,EAAX,YAAI,EAAE,YAAI;QAAM,QAAC;YACrB,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAC,EAAM;oBAAN,gEAAM,EAAL,YAAI;gBAAM,WAAI;YAAJ,CAAI,CAAC;YAChC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,UAAC,EAAM;oBAAN,gEAAM,EAAL,YAAI;gBAAM,WAAI;YAAJ,CAAI,CAAC;SACjC,CAAC;IAHoB,CAGpB,CAAC;IAEH,oCAAoC;IACpC,gEAAS,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,EACjC,kEAAW,CAAC,CAAC,EAAE,CAAC,CAAC,EACjB,0DAAG,CAAC,UAAC,EAAM;YAAN,gEAAM,EAAL,SAAC,EAAE,SAAC;QAER,iBAAiB;QACjB,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE;YACjC,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;gBACjE,IAAI,EAAE,EAAE;aACT;YAEH,eAAe;SACd;aAAM;YACL,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACtB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;aACrD;SACF;IACH,CAAC,CAAC,CACH;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,eAAe,CAC7B,GAAwB;IAExB,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAc;;YAAZ,cAAI,EAAE,cAAI;;YAEf,kBAAkB;YAClB,KAAmB,wEAAI,uEAAE;gBAAd,gFAAI,EAAH,UAAE;gBACZ,iEAAiB,CAAC,EAAE,CAAC;gBACrB,+DAAe,CAAC,EAAE,CAAC;aACpB;;;;;;;;;;YAED,mBAAmB;YACnB,KAA4B,oEAAI,CAAC,OAAO,EAAE,6CAAE;gBAAjC,0EAAa,EAAZ,aAAK,EAAE,mEAAI,EAAH,UAAE;gBACpB,+DAAe,CAAC,EAAE,EAAE,KAAK,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9C,6DAAa,CAAC,EAAE,EAAE,IAAI,CAAC;aACxB;;;;;;;;;IACH,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;;;YACP,KAAiB,sEAAG,kEAAE;gBAAjB,IAAM,EAAE;gBACX,iEAAiB,CAAC,EAAE,CAAC;gBACrB,+DAAe,CAAC,EAAE,CAAC;aACpB;;;;;;;;;IACH,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACjQD;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEkC;AAC8B;AA2BnE;;+EAE+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,WAAW,CACzB,EAAe,EAAE,EAA2B;QAAzB,wBAAS;IAE5B,OAAO,SAAS;SACb,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC,EAC/B,gEAAS,CAAC;QACR,IAAM,MAAM,GAAG,gBAAgB,CAAC,EAAE,CAAC;QACnC,IAAM,MAAM,GAAG;YACb,QAAQ;YACR,gBAAgB,CAAa,gBAAgB;SAC9C,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC;QAC3B,OAAO,+CAAE,CAAC;YACR,MAAM;YACN,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;SACrC,CAAC;IACJ,CAAC,CAAC,CACH;AACL,CAAC;;;;;;;;;;;;;ACnFD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACK;AACD;;;;;;;;;;;;;ACxBvB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMU;AAC4C;AAEG;AAI5D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,iBAAiB,CAC/B,EAAe;IAEf,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAU;YAAR,kBAAM;QACX,+DAAe,CAAC,EAAE,EAAE,MAAM,CAAC;IAC7B,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;QACP,iEAAiB,CAAC,EAAE,CAAC;IACvB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AC5DD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAMU;AAC4C;AAEC;AAE1D;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,gBAAM;QACR,8DAAc,CAAC,EAAE,EAAE,MAAM,CAAC;IAC5B,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;QACP,gEAAgB,CAAC,EAAE,CAAC;IACtB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEoB;AACC;AACA;AACF;AACM;AACJ;AACA;;;;;;;;;;;;;AC5BxB;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6C;AACiB;AA8BjE;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,SAAS,CACvB,EAAe,EAAE,EAAoC;QAAlC,oBAAO,EAAE,wBAAS;IAGrC,6CAA6C;IAC7C,IAAM,OAAO,GAAG,OAAO;SACpB,IAAI,CACH,4DAAK,CAAC,QAAQ,CAAC,CAChB;IAEH,4CAA4C;IAC5C,IAAM,OAAO,GAAG,0DAAa,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SAChD,IAAI,CACH,0DAAG,CAAC,UAAC,EAA6C;YAA7C,gEAA6C,EAA5C,cAAM,EAAE,UAAmC,EAAvB,eAAC,EAAY,uBAAM;QAC3C,IAAM,GAAG,GAAM,EAAE,CAAC,SAAS;QAC3B,IAAM,MAAM,GAAG,EAAE,CAAC,YAAY,GAAG,GAAG;QACpC,OAAO,MAAM;cACT,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAM,CAAC,EAAG,MAAM,CAAC;cAChC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC;IACtC,CAAC,CAAC,EACF,0DAAG,CAAC,gBAAM,IAAI,WAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,EAAnB,CAAmB,CAAC,EAClC,2EAAoB,EAAE,CACvB;IAEH,qEAAqE;IACrE,IAAM,OAAO,GAAG,0DAAa,CAAC,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;SAChD,IAAI,CACH,0DAAG,CAAC,UAAC,EAA2B;YAA3B,gEAA2B,EAA1B,cAAM,EAAc,kBAAC;QAAU,QAAC,IAAI,EAAE,CAAC,SAAS,GAAG,MAAM;IAA1B,CAA0B,CAAC,EAChE,2EAAoB,EAAE,CACvB;IAEH,sCAAsC;IACtC,OAAO,0DAAa,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;SAC9C,IAAI,CACH,0DAAG,CAAC,UAAC,EAAwB;YAAxB,gEAAwB,EAAvB,cAAM,EAAE,cAAM,EAAE,cAAM;QAAM,QAAC;YACjC,MAAM,EAAE,EAAE,CAAC,SAAS,GAAG,MAAM;YAC7B,MAAM;YACN,MAAM;SACP,CAAC;IAJgC,CAIhC,CAAC,CACJ;AACL,CAAC;;;;;;;;;;;;;AC7GD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEmE;AAO/C;AAEyB;AAIhD;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,aAAa,CAC3B,EAAe,EAAE,MAAkB;IAAlB,mCAAkB;IAEnC,OAAO,iDAAI,CACT,0DAAG,CAAC,UAAC,EAAiB;YAAL,eAAC;QAAS,QAAC,IAAI,MAAM;IAAX,CAAW,CAAC,EACvC,2EAAoB,EAAE;IAEtB,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,eAAK;QACP,yDAAS,CAAC,EAAE,EAAE,KAAK,CAAC;IACtB,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;QACP,2DAAW,CAAC,EAAE,CAAC;IACjB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACO;AACD;;;;;;;;;;;;;ACxBzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAQU;AASU;AASP;AAqChB;;+EAE+E;AAE/E;;;;;;;;;;;;GAYG;AACI,SAAS,YAAY,CAC1B,EAAe,EAAE,EAAkC;QAAhC,gBAAK,EAAE,wBAAS;IAGnC,0CAA0C;IAC1C,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,8EAAuB,CAAC,MAAM,CAAC,EAC/B,0DAAG,CAAC,cAAM,iBAAU,CAClB,gBAAgB,CAAC,EAAE,CAAC,aAAc,CAAC;SAChC,gBAAgB,CAAC,aAAa,CAAC,CACnC,EAHS,CAGT,CAAC,EACF,2EAAoB,EAAE,CACvB;IAEH,4CAA4C;IAC5C,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,qEAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAC9B,0DAAG,CAAC,UAAC,EAA+C;YAA/C,gEAA+C,EAAlC,kBAAC,EAAM,cAAM,EAAE,UAAkB,EAAhB,kBAAM,EAAE,kBAAM;QAAQ,QACvD,MAAM;cACF,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC;cACzC,MAAM,CACX;IAJwD,CAIxD,CAAC,EACF,2EAAoB,EAAE,CACvB;IAEH,kDAAkD;IAClD,IAAM,KAAK,GAAG,SAAS;SACpB,IAAI,CACH,qEAAc,CAAC,OAAO,EAAE,KAAK,CAAC,EAC9B,0DAAG,CAAC,UAAC,EAAuC;YAAvC,gEAAuC,EAA1B,kBAAC,EAAM,cAAM,EAAI,qBAAM;QAAQ,QAC/C,CAAC,IAAI,MAAM,GAAG,MAAM,CACrB;IAFgD,CAEhD,CAAC,EACF,2EAAoB,EAAE,CACvB;IAEH,oCAAoC;IACpC,OAAO,0DAAa,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SACnC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAc;YAAd,gEAAc,EAAb,cAAM,EAAE,YAAI;QAAM,QAAC,EAAE,MAAM,UAAE,IAAI,QAAE,CAAC;IAAlB,CAAkB,CAAC,CAC5C;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;;GAOG;AACI,SAAS,YAAY,CAC1B,EAAe,EAAE,EAAyB;QAAvB,oBAAO;IAE1B,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,qEAAc,CAAC,OAAO,CAAC,EACvB,0DAAG,CAAC,UAAC,EAAsC;YAAtC,gEAAsC,EAArC,UAAgB,EAAd,kBAAM,EAAE,cAAI,EAAM,qBAAc;QACtC,gEAAgB,CAAC,EAAE,EAAE,MAAM,CAAC;QAC5B,8DAAc,CAAC,EAAE,EAAE,IAAI,CAAC;QAExB,2DAA2D;QAC3D,IAAI,IAAI;YACN,gEAAgB,CAAC,EAAE,EAAE,MAAM,CAAC;;YAE5B,kEAAkB,CAAC,EAAE,CAAC;IAC1B,CAAC,CAAC;IAEF,uBAAuB;IACvB,0DAAG,CAAC,UAAC,EAAS;YAAT,gEAAS,EAAR,eAAO;QAAM,cAAO;IAAP,CAAO,CAAC;IAE3B,gCAAgC;IAChC,+DAAQ,CAAC;QACP,kEAAkB,CAAC,EAAE,CAAC;QACtB,kEAAkB,CAAC,EAAE,CAAC;QACtB,gEAAgB,CAAC,EAAE,CAAC;IACtB,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;ACvLD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEoB;;;;;;;;;;;;;ACtBvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6B;AAQnB;AAQU;AAKP;AAKI;AAcpB;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,oBAAoB,CAClC,GAAkB;;IAElB,IAAM,KAAK,GAAG,IAAI,GAAG,EAAiC;;QACtD,KAAiB,sEAAG,kEAAE;YAAjB,IAAM,EAAE;YACX,IAAM,KAAK,GAAG,yDAAU,CAAmB,OAAO,EAAE,EAAE,CAAC;YACvD,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;gBAChC,IAAM,KAAK,GAAG,gEAAiB,CAAmB,MAAI,KAAK,CAAC,OAAS,CAAC;gBACtE,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC;aACrB;SACF;;;;;;;;;IAED,6BAA6B;IAC7B,IAAM,MAAM,GAAG,0CAAK,sEAAI,uDAAI,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,eAAK,IAAI,QACrD,sDAAS,CAAC,KAAK,EAAE,QAAQ,CAAC,CAC3B,EAFsD,CAEtD,CAAC,GACC,IAAI,CACH,0DAAG,CAAC,cAAM,uEAAiB,CAAC,eAAe,EAAE,KAAK,CAAC,GAAG,CACpD,sDAAQ,CAAC,UAAC,EAAW;YAAT,oBAAO;QAAO,cAAO;IAAP,CAAO,EAAE,uDAAI,KAAK,CAAC,IAAI,EAAE,EAAG,CACvD,CAAC,EAFQ,CAER,CAAC,CACJ;IAEH,oCAAoC;IACpC,OAAO,MAAM;SACV,IAAI,CACH,0DAAG,CAAC,cAAI,IAAI,QAAC,EAAE,IAAI,QAAE,CAAC,EAAV,CAAU,CAAC,EACvB,2DAAI,CAAC,UAAC,EAAc,EAAE,EAAQ;YAAtB,cAAU;YAAM,cAAI;QAAO,QAAC,EAAE,IAAI,QAAE,IAAI,QAAE,CAAC;IAAhB,CAAgB,CAAC,CACrD;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,GAAkB;IAElB,OAAO,iDAAI;IAET,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAQ;YAAN,cAAI;QACT,IAAI,IAAI;YACN,sEAAsB,CAAC,IAAI,CAAC;IAChC,CAAC,CAAC;IAEF,wCAAwC;IACxC,4DAAK,CAAC,GAAG,CAAC;IAEV,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,0DAAG,CAAC,UAAC,EAAQ;YAAN,cAAI;QACT,oEAAoB,CAAC,IAAI,CAAC;IAC5B,CAAC,CAAC;IAEF,gCAAgC;IAChC,+DAAQ,CAAC;;;YACP,KAAiB,sEAAG;gBAAf,IAAM,EAAE;gBACX,sEAAsB,CACpB,gEAAiB,CAAC,eAAe,EAAE,EAAE,CAAC,CACvC;aAAA;;;;;;;;;IACL,CAAC,CAAC,CACH;AACH,CAAC;;;;;;;;;;;;;AClJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEoB;AACA;AACC;;;;;;;;;;;;;ACxBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE+D;AAM3C;AAEwB;AAyB/C;;+EAE+E;AAE/E;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,KAAK;SACT,OAAO,CAAC,8BAA8B,EAAE,EAAE,CAAC;SAC3C,IAAI,EAAE;SACN,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC;AAC9B,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,gBAAgB,CAC9B,EAAoB,EAAE,EAAgC;QAA9B,+CAAS;IAEjC,IAAM,EAAE,GAAG,SAAS,IAAI,gBAAgB;IAExC,+BAA+B;IAC/B,IAAM,MAAM,GAAG,kDAAK,CAClB,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC,EACtB,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,IAAI,CAAC,4DAAK,CAAC,CAAC,CAAC,CAAC,CACtC;SACE,IAAI,CACH,0DAAG,CAAC,cAAM,SAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAZ,CAAY,CAAC,EACvB,gEAAS,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EACvB,2EAAoB,EAAE,CACvB;IAEH,4BAA4B;IAC5B,IAAM,MAAM,GAAG,gEAAiB,CAAC,EAAE,CAAC;IAEpC,sCAAsC;IACtC,OAAO,0DAAa,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACnC,IAAI,CACH,0DAAG,CAAC,UAAC,EAAc;YAAd,gEAAc,EAAb,aAAK,EAAE,aAAK;QAAM,QAAC,EAAE,KAAK,SAAE,KAAK,SAAE,CAAC;IAAlB,CAAkB,CAAC,CAC5C;AACL,CAAC;;;;;;;;;;;;;ACnHD;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AACN;AAEtC;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,gBAAgB,CAC9B,EAAe;IAEf,OAAO,sDAAS,CAAC,EAAE,EAAE,OAAO,CAAC;SAC1B,IAAI,CACH,4DAAK,CAAC,SAAS,CAAC,CACjB;AACL,CAAC;;;;;;;;;;;;;AC3CD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAOU;AASU;AAOP;AAE8B;AAEC;AAe/C;;+EAE+E;AAE/E;;;;;;;;;;;GAWG;AACI,SAAS,iBAAiB,CAC/B,EAAe,EAAE,EAAgC;QAA9B,kBAAM,EAAE,kBAAM;IAEjC,IAAM,IAAI,GAAG,gEAAiB,CAAC,yBAAyB,EAAE,EAAE,CAAC;IAC7D,IAAM,IAAI,GAAG,gEAAiB,CAAC,yBAAyB,EAAE,EAAE,CAAC;IAC7D,OAAO,iDAAI;IAET,kCAAkC;IAClC,qEAAc,CAAC,MAAM,CAAC,EACtB,0DAAG,CAAC,UAAC,EAAe;YAAf,gEAAe,EAAd,cAAM,EAAE,aAAK;QACjB,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,mEAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;SACzC;aAAM;YACL,qEAAqB,CAAC,IAAI,CAAC;SAC5B;QACD,OAAO,MAAM;IACf,CAAC,CAAC;IAEF,8BAA8B;IAC9B,gEAAS,CAAC,gBAAM,IAAI,aAAM;SACvB,IAAI;IAEH,2CAA2C;IAC3C,gEAAS,CAAC,4DAAuB,CAAC,EAClC,2DAAI,CAAC,eAAK;QACR,IAAM,SAAS,GAAG,EAAE,CAAC,aAAc;QACnC,OAAO,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE;YAC5B,qEAAqB,CAAC,IAAI,EAAE,oEAAkB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,SAAS,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,GAAG,EAAE;gBACtD,MAAK;SACR;QACD,OAAO,KAAK;IACd,CAAC,EAAE,CAAC,CAAC;IAEL,6BAA6B;IAC7B,4DAAK,CAAC,MAAM,CAAC;IAEb,gCAAgC;IAChC,+DAAQ,CAAC;QACP,qEAAqB,CAAC,IAAI,CAAC;IAC7B,CAAC,CAAC,CACH,EAtBiB,CAsBjB,CACF,CACF;AACH,CAAC;;;;;;;;;;;;;AC1HD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEoD;AAQhC;AAEc;AA+BrC;;+EAE+E;AAE/E;;GAEG;AACH,IAAI,QAA+B;AAEnC;;+EAE+E;AAE/E;;;;;GAKG;AACI,SAAS,YAAY,CAC1B,KAAe,EAAE,EAA2B;QAAzB,wBAAS;IAE5B,QAAQ,GAAG,SAAS;SACjB,IAAI;IAEH,8BAA8B;IAC9B,2DAAI,CAAC,CAAC,CAAC;IAEP,sBAAsB;IACtB,0DAAG,CAAC,kBAAQ,IAAI,YAAK,CAAC,MAAM,CAAY,UAAC,OAAO,EAAE,IAAI;;QACpD,IAAM,EAAE,GAAG,yDAAU,CAAC,qBAAmB,IAAI,MAAG,EAAE,QAAQ,CAAC;QAC3D,OAAO,kHACF,OAAO,GACP,OAAO,EAAE,KAAK,WAAW,CAAC,CAAC,WAAG,GAAC,IAAI,IAAG,EAAE,MAAG,CAAC,CAAC,EAAE,EACnD;IACH,CAAC,EAAE,EAAE,CAAC,EANU,CAMV,CAAC;IAEP,+BAA+B;IAC/B,kEAAW,CAAC,CAAC,CAAC,CACf;AACL,CAAC;AAED;;;;;;;;;GASG;AACI,SAAS,SAAS,CACvB,IAAY;IAEZ,OAAO,QAAQ;SACZ,IAAI,CACH,gEAAS,CAAC,iBAAO,IAAI,QACnB,OAAO,OAAO,CAAC,IAAI,CAAC,KAAK,WAAW;QAClC,CAAC,CAAC,+CAAE,CAAC,OAAO,CAAC,IAAI,CAAE,CAAC;QACpB,CAAC,CAAC,0CAAK,CACV,EAJoB,CAIpB,CAAC,EACF,2EAAoB,EAAE,CACvB;AACL,CAAC;AAED,+EAA+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,SAAS,CACvB,EAAoB,EAAE,KAAc;IAEpC,IAAI,EAAE,CAAC,OAAO,KAAK,KAAK;QACtB,EAAE,CAAC,KAAK,EAAE;AACd,CAAC;AAED,+EAA+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,EAAoB;IAEpB,OAAO,sDAAS,CAAC,EAAE,EAAE,QAAQ,CAAC;SAC3B,IAAI,CACH,0DAAG,CAAC,cAAM,SAAE,CAAC,OAAO,EAAV,CAAU,CAAC,EACrB,gEAAS,CAAC,EAAE,CAAC,OAAO,CAAC,CACtB;AACL,CAAC;;;;;;;;;;;;;ACtKD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6B;AACmB;AAM5B;AAMH;AAcpB;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,YAAY,CAC1B,EAAkC;QAAhC,wBAAS,EAAE,gBAAK;IAElB,IAAM,IAAI,GAAG,SAAS;SACnB,IAAI,CACH,0DAAG,CAAC,cAAM,sEAAW,CAAqB,SAAS,CAAC,EAA1C,CAA0C,CAAC,CACtD;IAEH,sCAAsC;IACtC,kDAAK,CACH,8DAAU,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,6DAAM,CAAC,8CAAQ,CAAC,CAAC,EAAE,YAAY,CACxD,sDAAS,CAAC,MAAM,EAAE,aAAa,CAAC,CAAY,YAAY,CACzD;SACE,IAAI,CACH,kEAAW,CAAC,IAAI,CAAC,CAClB;SACE,SAAS,CAAC,aAAG;;;YACZ,KAAiB,sEAAG;gBAAf,IAAM,EAAE;gBACX,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;aAAA;;;;;;;;;IAC/B,CAAC,CAAC;IAEN,6CAA6C;IAC7C,KAAK;SACF,IAAI,CACH,0DAAG,CAAC,YAAE,IAAI,qEAAU,CAAC,WAAQ,EAAE,QAAI,CAAE,EAA3B,CAA2B,CAAC,EACtC,6DAAM,CAAC,YAAE,IAAI,cAAO,EAAE,KAAK,WAAW,EAAzB,CAAyB,CAAC,EACvC,0DAAG,CAAC,YAAE;QACJ,IAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;QACrC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI;YAC1B,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,EAAE,CAAC;IACpC,CAAC,CAAC,CACH;SACE,SAAS,CAAC,YAAE,IAAI,SAAE,CAAC,cAAc,EAAE,EAAnB,CAAmB,CAAC;AAC3C,CAAC;;;;;;;;;;;;;AC9FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEsB;AACD;AACG;AACH;AACD;;;;;;;;;;;;;AC1BvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAGuD;AAEjB;AACA;AAazC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,YAAY,CAC1B,EAA2B;QAAzB,wBAAS;IAEX,IAAM,IAAI,GAAG,SAAS;SACnB,IAAI,CACH,2DAAI,CAAC,CAAC,CAAC,EACP,qEAAc,CAAC,+DAAY,CAAC,WAAW,CAAC,CAAC,EACzC,0DAAG,CAAC,UAAC,EAAM;YAAN,gEAAM,EAAH,UAAE;QAAM,sEAAW,CAAoB,QAAQ,EAAE,EAAE,CAAC;IAA5C,CAA4C,CAAC,CAC9D;IAEH,0CAA0C;IAC1C,IAAI,CAAC,SAAS,CAAC,aAAG;;;YAChB,KAAiB,sEAAG,kEAAE;gBAAjB,IAAM,EAAE;gBACX,IAAI,EAAE,CAAC,GAAG,IAAI,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;oBAChD,IAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;oBAC/C,IAAM,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW;oBACxC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC;oBACrB,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC;iBACvB;aACF;;;;;;;;;IACH,CAAC,CAAC;AACJ,CAAC;;;;;;;;;;;;;ACxED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE4D;AACI;AAE1B;AAazC;;+EAE+E;AAE/E;;;;GAIG;AACH,SAAS,aAAa;IACpB,OAAO,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;;;;GAUG;AACI,SAAS,cAAc,CAC5B,EAA2B;QAAzB,wBAAS;IAEX,IAAM,IAAI,GAAG,SAAS;SACnB,IAAI,CACH,0DAAG,CAAC,cAAM,sEAAW,CAAC,qBAAqB,CAAC,EAAlC,CAAkC,CAAC,EAC7C,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,6DAA6D;IAC7D,IAAI,CAAC,SAAS,CAAC,aAAG;;;YAChB,KAAiB,sEAAG;gBAAf,IAAM,EAAE;gBACX,EAAE,CAAC,eAAe,CAAC,mBAAmB,CAAC;aAAA;;;;;;;;;IAC3C,CAAC,CAAC;IAEF,6CAA6C;IAC7C,gDAAG,CAAC,aAAa,EAAE,IAAI,EAAE,0CAAK,CAAC;SAC5B,IAAI,CACH,gEAAS,CAAC,aAAG,IAAI,iDAAK,sEAAI,GAAG,CAAC,GAAG,CAAC,YAAE,IAAI,QACtC,sDAAS,CAAC,EAAE,EAAE,YAAY,CAAC;SACxB,IAAI,CACH,4DAAK,CAAC,EAAE,CAAC,CACV,CACJ,EALuC,CAKvC,CAAC,IALe,CAKd,CAAC,CACL;SACE,SAAS,CAAC,YAAE;QACX,IAAM,GAAG,GAAG,EAAE,CAAC,SAAS;QAExB,uCAAuC;QACvC,IAAI,GAAG,KAAK,CAAC,EAAE;YACb,EAAE,CAAC,SAAS,GAAG,CAAC;YAElB,0CAA0C;SACzC;aAAM,IAAI,GAAG,GAAG,EAAE,CAAC,YAAY,KAAK,EAAE,CAAC,YAAY,EAAE;YACpD,EAAE,CAAC,SAAS,GAAG,GAAG,GAAG,CAAC;SACvB;IACH,CAAC,CAAC;AACR,CAAC;;;;;;;;;;;;;ACvGD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGkC;AACL;AACyB;AAExB;AAIjC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,0BAA0B,CACxC,IAAY,EAAE,IAAa;IAE3B,OAAO,sDAAI,CAAC;QACV,GAAG,EAAE,OAAO,IAAI,KAAK,WAAW;YAC9B,CAAC,CAAC,kCAAgC,IAAI,SAAI,IAAM;YAChD,CAAC,CAAC,kCAAgC,IAAM;QAC1C,YAAY,EAAE,MAAM;KACrB,CAAC;SACC,IAAI,CACH,6DAAM,CAAC,UAAC,EAAU;YAAR,kBAAM;QAAO,aAAM,KAAK,GAAG;IAAd,CAAc,CAAC,EACtC,4DAAK,CAAC,UAAU,CAAC,EACjB,gEAAS,CAAC,cAAI;QAEZ,uBAAuB;QACvB,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;YACvB,4CAAgB,EAAE,8BAAW,CAAe;YACpD,OAAO,+CAAE,CAAC;gBACL,uDAAK,CAAC,gBAAgB,IAAI,CAAC,CAAC,WAAQ;gBACpC,uDAAK,CAAC,WAAW,IAAI,CAAC,CAAC,WAAQ;aACnC,CAAC;YAEJ,8BAA8B;SAC7B;aAAM;YACG,oCAAY,CAAe;YACnC,OAAO,+CAAE,CAAC;gBACL,uDAAK,CAAC,YAAY,IAAI,CAAC,CAAC,kBAAe;aAC3C,CAAC;SACH;IACH,CAAC,CAAC,CACH;AACL,CAAC;;;;;;;;;;;;;AC1ED;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAI6B;AACmB;AAElB;AAIjC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,0BAA0B,CACxC,IAAY,EAAE,OAAe;IAE7B,OAAO,sDAAI,CAAC;QACV,GAAG,EAAE,aAAW,IAAI,yBAAoB,kBAAkB,CAAC,OAAO,CAAG;QACrE,YAAY,EAAE,MAAM;KACrB,CAAC;SACC,IAAI,CACH,6DAAM,CAAC,UAAC,EAAU;YAAR,kBAAM;QAAO,aAAM,KAAK,GAAG;IAAd,CAAc,CAAC,EACtC,4DAAK,CAAC,UAAU,CAAC,EACjB,0DAAG,CAAC,UAAC,EAA0C;YAAxC,0BAAU,EAAE,4BAAW;QAAsB,QAAC;YAChD,uDAAK,CAAC,UAAU,CAAC,WAAQ;YACzB,uDAAK,CAAC,WAAW,CAAC,WAAQ;SAC9B,CAAC;IAHkD,CAGlD,CAAC,CACJ;AACL,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEqC;AACmB;AAEC;AACpB;AACD;AAEc;AACA;AAsBrD;;+EAE+E;AAE/E;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,GAAW;IAEL,sGAA6C,EAA5C,YAA4C;IACnD,QAAQ,IAAI,CAAC,WAAW,EAAE,EAAE;QAE1B,uBAAuB;QACvB,KAAK,QAAQ;YACL,mHAAkE,EAA/D,YAAI,EAAE,YAAyD;YACxE,OAAO,0EAA0B,CAAC,IAAI,EAAE,IAAI,CAAC;QAE/C,uBAAuB;QACvB,KAAK,QAAQ;YACL,8GAAgE,EAA7D,YAAI,EAAE,eAAuD;YACtE,OAAO,0EAA0B,CAAC,IAAI,EAAE,OAAO,CAAC;QAElD,qBAAqB;QACrB;YACE,OAAO,0CAAK;KACf;AACH,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,WAAW,CACzB,EAA2B;QAAzB,wBAAS;IAEX,SAAS;SACN,IAAI,CACH,0DAAG,CAAC,cAAM,4EAAiB,CAAoB,kBAAkB,CAAC,EAAxD,CAAwD,CAAC,EACnE,gEAAS,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,QACtB,uDAAK,CAAC,KAAG,sDAAI,CAAC,IAAI,CAAG,EAAE,cAAM,uBAAgB,CAAC,IAAI,CAAC,EAAtB,CAAsB,CAAC,CACrD;IAFuB,CAEvB,CAAC,EACF,iEAAU,CAAC,cAAM,iDAAK,EAAL,CAAK,CAAC,CACxB;SACE,SAAS,CAAC,eAAK;;;YACd,KAAiB,+HAAW,CAAC,wBAAwB,CAAC,6CAAE;gBAAnD,IAAM,EAAE;gBACX,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;oBACrC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC;oBACxC,EAAE,CAAC,WAAW,CAAC,8DAAY,CAAC,KAAK,CAAC,CAAC;iBACpC;aACF;;;;;;;;;IACH,CAAC,CAAC;AACR,CAAC;;;;;;;;;;;;;ACpHD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAGiC;AAEK;AACF;AAavC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,WAAW,CACzB,EAA2B;QAAzB,wBAAS;IAEX,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC;IAChD,SAAS;SACN,IAAI,CACH,0DAAG,CAAC,cAAM,sEAAW,CAAmB,oBAAoB,CAAC,EAAnD,CAAmD,CAAC,CAC/D;SACE,SAAS,CAAC,aAAG;;;YACZ,KAAiB,sEAAG,kEAAE;gBAAjB,IAAM,EAAE;gBACX,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACxB,QAAQ,CAAC,WAAW,CAAC,6DAAW,CAAC,EAAE,CAAC,CAAC;aACtC;;;;;;;;;IACH,CAAC,CAAC;AACR,CAAC;;;;;;;;;;;;;ACjED;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqC;AAExC;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,SAAS,EAAE,sBAAsB;CAClC;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,eAAe,CAC7B,EAAU;IAEV,IAAM,IAAI,GAAG,mBAAO,CAAC,2HAAmD,CAAC;IACzE,OAAO,CACL,gEACE,KAAK,EAAE,GAAG,CAAC,SAAS,EACpB,KAAK,EAAE,2DAAS,CAAC,gBAAgB,CAAC,2BACX,MAAI,EAAE,UAAO;QAEpC,6DAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW;YACzD,8DAAM,CAAC,EAAE,IAAI,GAAS,CAClB,CACC,CACV;AACH,CAAC;;;;;;;;;;;;;AC7DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEwB;AACH;AACA;AACD;;;;;;;;;;;;;ACzBvB;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAGoC;AAEvC;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,IAAI,EAAK,wBAAwB;IACjC,IAAI,EAAK,wBAAwB;IACjC,OAAO,EAAE,+DAA+D;IACxE,OAAO,EAAE,2BAA2B;IACpC,KAAK,EAAI,yBAAyB;IAClC,MAAM,EAAG,0BAA0B;CACpC;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,kBAAkB,CAChC,EAAmC;QAAjC,oBAAO,EAAE,sBAAQ;IAGnB,wBAAwB;IACxB,IAAM,IAAI,GAAG,mBAAO,CAAC,yIAA0D,CAAC;IAEhF,IAAM,QAAQ,GAAG,wDAAC,OAAO,GAAK,QAAQ,EAAE,GAAG,CAAC,kBAAQ;QAC1C,gCAAQ,EAAE,sBAAK,EAAE,oBAAI,CAAa;QAC1C,OAAO,CACL,2DAAG,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9C,iEAAS,KAAK,EAAE,QAAQ,IAAI,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO;gBAC7D,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC;oBACtB,CAAC,CAAC,6DAAK,KAAK,EAAC,gCAAgC;wBACzC,6DAAK,KAAK,EAAC,4BAA4B,EAAC,OAAO,EAAC,WAAW;4BACzD,8DAAM,CAAC,EAAE,IAAI,GAAS,CAClB,CACF;oBACR,CAAC,CAAC,IAAI;gBAER,4DAAI,KAAK,EAAE,GAAG,CAAC,KAAK,IAAG,KAAK,CAAM;gBACjC,IAAI,CAAC,MAAM;oBACV,CAAC,CAAC,2DAAG,KAAK,EAAE,GAAG,CAAC,MAAM,IAAG,0DAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAK;oBACjD,CAAC,CAAC,SAAS,CAEL,CACR,CACL;IACH,CAAC,CAAC;IACF,OAAO,CACL,4DAAI,KAAK,EAAE,GAAG,CAAC,IAAI,IAChB,QAAQ,CACN,CACN;AACH,CAAC;;;;;;;;;;;;;ACtFD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAG0B;AAE7B;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,KAAK,EAAE,kBAAkB;IACzB,IAAI,EAAG,iBAAiB;CACzB;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,YAAY,CAC1B,KAAkB;IAElB,IAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,cAAI,IAAI,QACjC,4DAAI,KAAK,EAAE,GAAG,CAAC,IAAI,IAAG,IAAI,CAAM,CACjC,EAFkC,CAElC,CAAC;IACF,OAAO,CACL,4DAAI,KAAK,EAAE,GAAG,CAAC,KAAK,IACjB,QAAQ,CACN,CACN;AACH,CAAC;;;;;;;;;;;;;AC3DD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE0B;AAE7B;;+EAE+E;AAE/E;;GAEG;AACH,IAAM,GAAG,GAAG;IACV,OAAO,EAAE,wBAAwB;IACjC,KAAK,EAAI,mBAAmB;CAC7B;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,WAAW,CACzB,KAAuB;IAEvB,OAAO,CACL,6DAAK,KAAK,EAAE,GAAG,CAAC,OAAO;QACrB,6DAAK,KAAK,EAAE,GAAG,CAAC,KAAK,IAClB,KAAK,CACF,CACF,CACP;AACH,CAAC;;;;;;;;;;;;;ACzDD;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAmBH;;+EAE+E;AAE/E;;;;;;;;;GASG;AACI,SAAS,QAAQ,CAAC,MAAW;IAClC,OAAO,OAAO,MAAM,KAAK,QAAQ;WAC1B,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;WAC/B,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;WACjC,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,QAAQ;AACjD,CAAC;;;;;;;;;;;;;AC1DD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;AACH;AACC;AACE;;;;;;;;;;;;;ACzBxB;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAKyB;AAwB5B;;+EAE+E;AAE/E;;;;;;GAMG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,QAAQ,GAAG,EAAE;QAEX,kBAAkB;QAClB,KAAK,KAAK,CAAC;QACX,KAAK,MAAM;YACT,OAAO,QAAQ,CAAC,eAAe,CAAC,4BAA4B,EAAE,GAAG,CAAC;QAEpE,mBAAmB;QACnB;YACE,OAAO,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC;KACrC;AACH,CAAC;AAED;;;;;;GAMG;AACH,SAAS,YAAY,CACnB,EAA4B,EAAE,IAAY,EAAE,KAAa;IACzD,QAAQ,IAAI,EAAE;QAEZ,8BAA8B;QAC9B,KAAK,OAAO;YACV,MAAK;QAEP,gCAAgC;QAChC,KAAK,SAAS,CAAC;QACf,KAAK,GAAG;YACN,IAAI,OAAO,KAAK,KAAK,SAAS;gBAC5B,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC;iBACjC,IAAI,KAAK;gBACZ,EAAE,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;YACnC,MAAK;QAEP,iCAAiC;QACjC;YACE,IAAI,OAAO,KAAK,KAAK,SAAS;gBAC5B,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC;iBACzB,IAAI,KAAK;gBACZ,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;KAC9B;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,WAAW,CAClB,EAA4B,EAAE,KAAsB;;IAGpD,iDAAiD;IACjD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;QAC1D,EAAE,CAAC,SAAS,IAAI,KAAK,CAAC,QAAQ,EAAE;QAElC,kBAAkB;KACjB;SAAM,IAAI,KAAK,YAAY,IAAI,EAAE;QAChC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC;QAEvB,4BAA4B;KAC3B;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;;YAC/B,KAAmB,0EAAK;gBAAnB,IAAM,IAAI;gBACb,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC;aAAA;;;;;;;;;KACxB;AACH,CAAC;AAED;;+EAE+E;AAE/E;;;;;;;;GAQG;AACI,SAAS,CAAC,CACf,GAAW,EAAE,UAA6B;;IAAE,kBAAoB;SAApB,UAAoB,EAApB,qBAAoB,EAApB,IAAoB;QAApB,iCAAoB;;IAEhE,IAAM,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC;IAE7B,4BAA4B;IAC5B,IAAI,UAAU;;YACZ,KAAmB,kHAAI,CAAC,UAAU,CAAC;gBAA9B,IAAM,IAAI;gBACb,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;aAAA;;;;;;;;SAAA;;QAE5C,wBAAwB;QACxB,KAAoB,gFAAQ;YAAvB,IAAM,KAAK;YACd,WAAW,CAAC,EAAE,EAAE,KAAK,CAAC;SAAA;;;;;;;;;IAExB,oBAAoB;IACpB,OAAO,EAAE;AACX,CAAC;;;;;;;;;;;;;ACjKD;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEyC;AAE5C;;+EAE+E;AAE/E;;;;;;;;;;;;;;GAcG;AACI,SAAS,KAAK,CACnB,GAAW,EAAE,OAA4B;IAEzC,OAAO,kDAAK,CAAC;QACX,IAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC;QACxC,IAAI,IAAI,EAAE;YACR,OAAO,+CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAM,CAAC;YAElC,iEAAiE;SAChE;aAAM;YACL,IAAM,MAAM,GAAG,OAAO,EAAE;YACxB,MAAM,CAAC,SAAS,CAAC,eAAK;gBACpB,IAAI;oBACF,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBACnD;gBAAC,OAAO,GAAG,EAAE;oBACZ,8BAA8B;iBAC/B;YACH,CAAC,CAAC;YAEF,kBAAkB;YAClB,OAAO,MAAM;SACd;IACH,CAAC,CAAC;AACJ,CAAC;;;;;;;;;;;;;AClED;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAE4C;AAE/C;;+EAE+E;AAE/E;;GAEG;AACH,IAAI,IAA4B;AAEhC;;+EAE+E;AAE/E;;;;;;;GAOG;AACI,SAAS,SAAS,CAAC,GAAW,EAAE,KAAc;IACnD,IAAI,OAAO,IAAI,KAAK,WAAW,EAAE;QAC/B,IAAM,EAAE,GAAG,qEAAiB,CAAC,SAAS,CAAC;QACvC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,CAAC;KAChC;IACD,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,WAAW,EAAE;QACpC,MAAM,IAAI,cAAc,CAAC,0BAAwB,GAAK,CAAC;KACxD;IACD,OAAO,OAAO,KAAK,KAAK,WAAW;QACjC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC;QAC/B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;GAYG;AACI,SAAS,QAAQ,CAAC,KAAa,EAAE,CAAS;IAC/C,IAAI,CAAC,GAAG,CAAC;IACT,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC;YAAC,CAAC,CAAC,sBAAsB;QAC3D,OAAU,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,QAAK;KACrC;IACD,OAAO,KAAK;AACd,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACI,SAAS,KAAK,CAAC,KAAa;IACjC,IAAI,KAAK,GAAG,GAAG,EAAE;QACf,IAAM,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,CAAC;QAC3C,OAAU,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAG;KAClD;SAAM;QACL,OAAO,KAAK,CAAC,QAAQ,EAAE;KACxB;AACH,CAAC;AAED;;;;;;;;GAQG;AACI,SAAS,IAAI,CAAC,KAAa;IAC9B,IAAI,CAAC,GAAG,CAAC;IACT,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;QAChD,CAAC,GAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;QACzC,CAAC,IAAI,CAAC,EAAC,2BAA2B;KACnC;IACD,OAAO,CAAC;AACV,CAAC;;;;;;;;;;;;;ACzHH;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEqB;;;;;;;;;;;;;ACtBxB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6C;AAChB;AAQT;AAMH;AAOD;AAenB;;+EAE+E;AAE/E;;;;;;;;;;;;GAYG;AACI,SAAS,iBAAiB,CAC/B,GAAW,EAAE,EAAwC;QAAtC,cAAI,EAAE,gBAAK,EAAE,wBAAS;IAErC,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC;IAE9B,4BAA4B;IAC5B,IAAM,OAAO,GAAG,SAAS;SACtB,IAAI,CACH,2DAAI,CAAC,CAAC,CAAC,EACP,0DAAG,CAAC,UAAC,EAAQ;YAAN,cAAI;QAAO,WAAI,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC;aAClC,QAAQ,EAAE;aACV,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAFH,CAEG,CACpB,CACF;IAEH,8DAA8D;IAC9D,IAAM,GAAG,GAAG,IAAI,4CAAO,EAAiB;IACxC,IAAM,GAAG,GAAG,+DAAW,CAAC,MAAM,EAAE,EAAE,GAAG,OAAE,CAAC;SACrC,IAAI,CACH,qEAAc,CAAC,OAAO,CAAC,EACvB,0DAAG,CAAC,UAAC,EAAiB;;YAAjB,gEAAiB,EAAhB,eAAO,EAAE,cAAM;QACnB,IAAI,sEAAqB,CAAC,OAAO,CAAC,EAAE;;gBAClC,KAAoC,uEAAO,CAAC,IAAI,6CAAE;oBAAvC,iBAAqB,EAAnB,oBAAO,EAAE,sBAAQ;oBAC5B,OAAO,CAAC,QAAQ,GAAM,MAAM,SAAI,OAAO,CAAC,QAAU;;wBAClD,KAAsB,+FAAQ;4BAAzB,IAAM,OAAO;4BAChB,OAAO,CAAC,QAAQ,GAAM,MAAM,SAAI,OAAO,CAAC,QAAU;yBAAA;;;;;;;;;iBACrD;;;;;;;;;SACF;QACD,OAAO,OAAO;IAChB,CAAC,CAAC,EACF,kEAAW,CAAC,CAAC,CAAC,CACf;IAEH,gDAAgD;IAChD,IAAM,MAAM,GAAG,OAAO,KAAK,KAAK,WAAW;QACzC,CAAC,CAAC,iDAAI,CAAC,KAAK,CAAC;QACb,CAAC,CAAC,OAAO;aACJ,IAAI,CACH,gEAAS,CAAC,gBAAM,IAAI,6DAAI,CAAC;YACvB,GAAG,EAAK,MAAM,8BAA2B;YACzC,YAAY,EAAE,MAAM;YACpB,eAAe,EAAE,IAAI;SACtB,CAAC;aACC,IAAI,CACH,4DAAK,CAAC,UAAU,CAAC,CAClB,EAPiB,CAOjB,CAAC,CACL;IAEP,0BAA0B;IAC1B,MAAM;SACH,IAAI,CACH,0DAAG,CAAC,cAAI,IAAI,QAAC;QACX,IAAI,EAAE,0DAAiB,CAAC,KAAK;QAC7B,IAAI;KACL,CAAC,EAHU,CAGV,CAAC,CACJ;SACE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAElC,2BAA2B;IAC3B,OAAO,EAAE,GAAG,OAAE,GAAG,OAAE;AACrB,CAAC;;;;;;;;;;;;;ACxID;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AACM;;;;;;;;;;;;;ACvBzB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;+EAE+E;AAE/E;;GAEG;AACH,IAAkB,iBAKjB;AALD,WAAkB,iBAAiB;IACjC,2DAAK;IACL,yDAAI;IACJ,2DAAK;IACL,6DAAM,EAA+B,oBAAoB;AAC3D,CAAC,EALiB,iBAAiB,KAAjB,iBAAiB,QAKlC;AA+CD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK;AACjD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,mBAAmB,CACjC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI;AAChD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK;AACjD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,qBAAqB,CACnC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;AAClD,CAAC;;;;;;;;;;;;;ACzID;AAAe,sJAAuF,E;;;;;;;;;;;;ACAtG;AAAe,yJAA0F,E","file":"assets/javascripts/bundle.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/assets/javascripts/index.ts\");\n","/*!\n * clipboard.js v2.0.4\n * https://zenorocha.github.io/clipboard.js\n * \n * Licensed MIT © Zeno Rocha\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"ClipboardJS\"] = factory();\n\telse\n\t\troot[\"ClipboardJS\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _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; }; }();\n\nvar _clipboardAction = __webpack_require__(1);\n\nvar _clipboardAction2 = _interopRequireDefault(_clipboardAction);\n\nvar _tinyEmitter = __webpack_require__(3);\n\nvar _tinyEmitter2 = _interopRequireDefault(_tinyEmitter);\n\nvar _goodListener = __webpack_require__(4);\n\nvar _goodListener2 = _interopRequireDefault(_goodListener);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\n/**\n * Base class which takes one or more elements, adds event listeners to them,\n * and instantiates a new `ClipboardAction` on each click.\n */\nvar Clipboard = function (_Emitter) {\n _inherits(Clipboard, _Emitter);\n\n /**\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n * @param {Object} options\n */\n function Clipboard(trigger, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this));\n\n _this.resolveOptions(options);\n _this.listenClick(trigger);\n return _this;\n }\n\n /**\n * Defines if attributes would be resolved using internal setter functions\n * or custom functions that were passed in the constructor.\n * @param {Object} options\n */\n\n\n _createClass(Clipboard, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = typeof options.action === 'function' ? options.action : this.defaultAction;\n this.target = typeof options.target === 'function' ? options.target : this.defaultTarget;\n this.text = typeof options.text === 'function' ? options.text : this.defaultText;\n this.container = _typeof(options.container) === 'object' ? options.container : document.body;\n }\n\n /**\n * Adds a click event listener to the passed trigger.\n * @param {String|HTMLElement|HTMLCollection|NodeList} trigger\n */\n\n }, {\n key: 'listenClick',\n value: function listenClick(trigger) {\n var _this2 = this;\n\n this.listener = (0, _goodListener2.default)(trigger, 'click', function (e) {\n return _this2.onClick(e);\n });\n }\n\n /**\n * Defines a new `ClipboardAction` on each click event.\n * @param {Event} e\n */\n\n }, {\n key: 'onClick',\n value: function onClick(e) {\n var trigger = e.delegateTarget || e.currentTarget;\n\n if (this.clipboardAction) {\n this.clipboardAction = null;\n }\n\n this.clipboardAction = new _clipboardAction2.default({\n action: this.action(trigger),\n target: this.target(trigger),\n text: this.text(trigger),\n container: this.container,\n trigger: trigger,\n emitter: this\n });\n }\n\n /**\n * Default `action` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultAction',\n value: function defaultAction(trigger) {\n return getAttributeValue('action', trigger);\n }\n\n /**\n * Default `target` lookup function.\n * @param {Element} trigger\n */\n\n }, {\n key: 'defaultTarget',\n value: function defaultTarget(trigger) {\n var selector = getAttributeValue('target', trigger);\n\n if (selector) {\n return document.querySelector(selector);\n }\n }\n\n /**\n * Returns the support of the given action, or all actions if no action is\n * given.\n * @param {String} [action]\n */\n\n }, {\n key: 'defaultText',\n\n\n /**\n * Default `text` lookup function.\n * @param {Element} trigger\n */\n value: function defaultText(trigger) {\n return getAttributeValue('text', trigger);\n }\n\n /**\n * Destroy lifecycle.\n */\n\n }, {\n key: 'destroy',\n value: function destroy() {\n this.listener.destroy();\n\n if (this.clipboardAction) {\n this.clipboardAction.destroy();\n this.clipboardAction = null;\n }\n }\n }], [{\n key: 'isSupported',\n value: function isSupported() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ['copy', 'cut'];\n\n var actions = typeof action === 'string' ? [action] : action;\n var support = !!document.queryCommandSupported;\n\n actions.forEach(function (action) {\n support = support && !!document.queryCommandSupported(action);\n });\n\n return support;\n }\n }]);\n\n return Clipboard;\n}(_tinyEmitter2.default);\n\n/**\n * Helper function to retrieve attribute value.\n * @param {String} suffix\n * @param {Element} element\n */\n\n\nfunction getAttributeValue(suffix, element) {\n var attribute = 'data-clipboard-' + suffix;\n\n if (!element.hasAttribute(attribute)) {\n return;\n }\n\n return element.getAttribute(attribute);\n}\n\nmodule.exports = Clipboard;\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _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; }; }();\n\nvar _select = __webpack_require__(2);\n\nvar _select2 = _interopRequireDefault(_select);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\n/**\n * Inner class which performs selection from either `text` or `target`\n * properties and then executes copy or cut operations.\n */\nvar ClipboardAction = function () {\n /**\n * @param {Object} options\n */\n function ClipboardAction(options) {\n _classCallCheck(this, ClipboardAction);\n\n this.resolveOptions(options);\n this.initSelection();\n }\n\n /**\n * Defines base properties passed from constructor.\n * @param {Object} options\n */\n\n\n _createClass(ClipboardAction, [{\n key: 'resolveOptions',\n value: function resolveOptions() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n this.action = options.action;\n this.container = options.container;\n this.emitter = options.emitter;\n this.target = options.target;\n this.text = options.text;\n this.trigger = options.trigger;\n\n this.selectedText = '';\n }\n\n /**\n * Decides which selection strategy is going to be applied based\n * on the existence of `text` and `target` properties.\n */\n\n }, {\n key: 'initSelection',\n value: function initSelection() {\n if (this.text) {\n this.selectFake();\n } else if (this.target) {\n this.selectTarget();\n }\n }\n\n /**\n * Creates a fake textarea element, sets its value from `text` property,\n * and makes a selection on it.\n */\n\n }, {\n key: 'selectFake',\n value: function selectFake() {\n var _this = this;\n\n var isRTL = document.documentElement.getAttribute('dir') == 'rtl';\n\n this.removeFake();\n\n this.fakeHandlerCallback = function () {\n return _this.removeFake();\n };\n this.fakeHandler = this.container.addEventListener('click', this.fakeHandlerCallback) || true;\n\n this.fakeElem = document.createElement('textarea');\n // Prevent zooming on iOS\n this.fakeElem.style.fontSize = '12pt';\n // Reset box model\n this.fakeElem.style.border = '0';\n this.fakeElem.style.padding = '0';\n this.fakeElem.style.margin = '0';\n // Move element out of screen horizontally\n this.fakeElem.style.position = 'absolute';\n this.fakeElem.style[isRTL ? 'right' : 'left'] = '-9999px';\n // Move element to the same position vertically\n var yPosition = window.pageYOffset || document.documentElement.scrollTop;\n this.fakeElem.style.top = yPosition + 'px';\n\n this.fakeElem.setAttribute('readonly', '');\n this.fakeElem.value = this.text;\n\n this.container.appendChild(this.fakeElem);\n\n this.selectedText = (0, _select2.default)(this.fakeElem);\n this.copyText();\n }\n\n /**\n * Only removes the fake element after another click event, that way\n * a user can hit `Ctrl+C` to copy because selection still exists.\n */\n\n }, {\n key: 'removeFake',\n value: function removeFake() {\n if (this.fakeHandler) {\n this.container.removeEventListener('click', this.fakeHandlerCallback);\n this.fakeHandler = null;\n this.fakeHandlerCallback = null;\n }\n\n if (this.fakeElem) {\n this.container.removeChild(this.fakeElem);\n this.fakeElem = null;\n }\n }\n\n /**\n * Selects the content from element passed on `target` property.\n */\n\n }, {\n key: 'selectTarget',\n value: function selectTarget() {\n this.selectedText = (0, _select2.default)(this.target);\n this.copyText();\n }\n\n /**\n * Executes the copy operation based on the current selection.\n */\n\n }, {\n key: 'copyText',\n value: function copyText() {\n var succeeded = void 0;\n\n try {\n succeeded = document.execCommand(this.action);\n } catch (err) {\n succeeded = false;\n }\n\n this.handleResult(succeeded);\n }\n\n /**\n * Fires an event based on the copy operation result.\n * @param {Boolean} succeeded\n */\n\n }, {\n key: 'handleResult',\n value: function handleResult(succeeded) {\n this.emitter.emit(succeeded ? 'success' : 'error', {\n action: this.action,\n text: this.selectedText,\n trigger: this.trigger,\n clearSelection: this.clearSelection.bind(this)\n });\n }\n\n /**\n * Moves focus away from `target` and back to the trigger, removes current selection.\n */\n\n }, {\n key: 'clearSelection',\n value: function clearSelection() {\n if (this.trigger) {\n this.trigger.focus();\n }\n\n window.getSelection().removeAllRanges();\n }\n\n /**\n * Sets the `action` to be performed which can be either 'copy' or 'cut'.\n * @param {String} action\n */\n\n }, {\n key: 'destroy',\n\n\n /**\n * Destroy lifecycle.\n */\n value: function destroy() {\n this.removeFake();\n }\n }, {\n key: 'action',\n set: function set() {\n var action = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'copy';\n\n this._action = action;\n\n if (this._action !== 'copy' && this._action !== 'cut') {\n throw new Error('Invalid \"action\" value, use either \"copy\" or \"cut\"');\n }\n }\n\n /**\n * Gets the `action` property.\n * @return {String}\n */\n ,\n get: function get() {\n return this._action;\n }\n\n /**\n * Sets the `target` property using an element\n * that will be have its content copied.\n * @param {Element} target\n */\n\n }, {\n key: 'target',\n set: function set(target) {\n if (target !== undefined) {\n if (target && (typeof target === 'undefined' ? 'undefined' : _typeof(target)) === 'object' && target.nodeType === 1) {\n if (this.action === 'copy' && target.hasAttribute('disabled')) {\n throw new Error('Invalid \"target\" attribute. Please use \"readonly\" instead of \"disabled\" attribute');\n }\n\n if (this.action === 'cut' && (target.hasAttribute('readonly') || target.hasAttribute('disabled'))) {\n throw new Error('Invalid \"target\" attribute. You can\\'t cut text from elements with \"readonly\" or \"disabled\" attributes');\n }\n\n this._target = target;\n } else {\n throw new Error('Invalid \"target\" value, use a valid Element');\n }\n }\n }\n\n /**\n * Gets the `target` property.\n * @return {String|HTMLElement}\n */\n ,\n get: function get() {\n return this._target;\n }\n }]);\n\n return ClipboardAction;\n}();\n\nmodule.exports = ClipboardAction;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nfunction select(element) {\n var selectedText;\n\n if (element.nodeName === 'SELECT') {\n element.focus();\n\n selectedText = element.value;\n }\n else if (element.nodeName === 'INPUT' || element.nodeName === 'TEXTAREA') {\n var isReadOnly = element.hasAttribute('readonly');\n\n if (!isReadOnly) {\n element.setAttribute('readonly', '');\n }\n\n element.select();\n element.setSelectionRange(0, element.value.length);\n\n if (!isReadOnly) {\n element.removeAttribute('readonly');\n }\n\n selectedText = element.value;\n }\n else {\n if (element.hasAttribute('contenteditable')) {\n element.focus();\n }\n\n var selection = window.getSelection();\n var range = document.createRange();\n\n range.selectNodeContents(element);\n selection.removeAllRanges();\n selection.addRange(range);\n\n selectedText = selection.toString();\n }\n\n return selectedText;\n}\n\nmodule.exports = select;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\nfunction E () {\n // Keep this empty so it's easier to inherit from\n // (via https://github.com/lipsmack from https://github.com/scottcorgan/tiny-emitter/issues/3)\n}\n\nE.prototype = {\n on: function (name, callback, ctx) {\n var e = this.e || (this.e = {});\n\n (e[name] || (e[name] = [])).push({\n fn: callback,\n ctx: ctx\n });\n\n return this;\n },\n\n once: function (name, callback, ctx) {\n var self = this;\n function listener () {\n self.off(name, listener);\n callback.apply(ctx, arguments);\n };\n\n listener._ = callback\n return this.on(name, listener, ctx);\n },\n\n emit: function (name) {\n var data = [].slice.call(arguments, 1);\n var evtArr = ((this.e || (this.e = {}))[name] || []).slice();\n var i = 0;\n var len = evtArr.length;\n\n for (i; i < len; i++) {\n evtArr[i].fn.apply(evtArr[i].ctx, data);\n }\n\n return this;\n },\n\n off: function (name, callback) {\n var e = this.e || (this.e = {});\n var evts = e[name];\n var liveEvents = [];\n\n if (evts && callback) {\n for (var i = 0, len = evts.length; i < len; i++) {\n if (evts[i].fn !== callback && evts[i].fn._ !== callback)\n liveEvents.push(evts[i]);\n }\n }\n\n // Remove event from queue to prevent memory leak\n // Suggested by https://github.com/lazd\n // Ref: https://github.com/scottcorgan/tiny-emitter/commit/c6ebfaa9bc973b33d110a84a307742b7cf94c953#commitcomment-5024910\n\n (liveEvents.length)\n ? e[name] = liveEvents\n : delete e[name];\n\n return this;\n }\n};\n\nmodule.exports = E;\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar is = __webpack_require__(5);\nvar delegate = __webpack_require__(6);\n\n/**\n * Validates all params and calls the right\n * listener function based on its target type.\n *\n * @param {String|HTMLElement|HTMLCollection|NodeList} target\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listen(target, type, callback) {\n if (!target && !type && !callback) {\n throw new Error('Missing required arguments');\n }\n\n if (!is.string(type)) {\n throw new TypeError('Second argument must be a String');\n }\n\n if (!is.fn(callback)) {\n throw new TypeError('Third argument must be a Function');\n }\n\n if (is.node(target)) {\n return listenNode(target, type, callback);\n }\n else if (is.nodeList(target)) {\n return listenNodeList(target, type, callback);\n }\n else if (is.string(target)) {\n return listenSelector(target, type, callback);\n }\n else {\n throw new TypeError('First argument must be a String, HTMLElement, HTMLCollection, or NodeList');\n }\n}\n\n/**\n * Adds an event listener to a HTML element\n * and returns a remove listener function.\n *\n * @param {HTMLElement} node\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNode(node, type, callback) {\n node.addEventListener(type, callback);\n\n return {\n destroy: function() {\n node.removeEventListener(type, callback);\n }\n }\n}\n\n/**\n * Add an event listener to a list of HTML elements\n * and returns a remove listener function.\n *\n * @param {NodeList|HTMLCollection} nodeList\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenNodeList(nodeList, type, callback) {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.addEventListener(type, callback);\n });\n\n return {\n destroy: function() {\n Array.prototype.forEach.call(nodeList, function(node) {\n node.removeEventListener(type, callback);\n });\n }\n }\n}\n\n/**\n * Add an event listener to a selector\n * and returns a remove listener function.\n *\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Object}\n */\nfunction listenSelector(selector, type, callback) {\n return delegate(document.body, selector, type, callback);\n}\n\nmodule.exports = listen;\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports) {\n\n/**\n * Check if argument is a HTML element.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.node = function(value) {\n return value !== undefined\n && value instanceof HTMLElement\n && value.nodeType === 1;\n};\n\n/**\n * Check if argument is a list of HTML elements.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.nodeList = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return value !== undefined\n && (type === '[object NodeList]' || type === '[object HTMLCollection]')\n && ('length' in value)\n && (value.length === 0 || exports.node(value[0]));\n};\n\n/**\n * Check if argument is a string.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.string = function(value) {\n return typeof value === 'string'\n || value instanceof String;\n};\n\n/**\n * Check if argument is a function.\n *\n * @param {Object} value\n * @return {Boolean}\n */\nexports.fn = function(value) {\n var type = Object.prototype.toString.call(value);\n\n return type === '[object Function]';\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar closest = __webpack_require__(7);\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction _delegate(element, selector, type, callback, useCapture) {\n var listenerFn = listener.apply(this, arguments);\n\n element.addEventListener(type, listenerFn, useCapture);\n\n return {\n destroy: function() {\n element.removeEventListener(type, listenerFn, useCapture);\n }\n }\n}\n\n/**\n * Delegates event to a selector.\n *\n * @param {Element|String|Array} [elements]\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @param {Boolean} useCapture\n * @return {Object}\n */\nfunction delegate(elements, selector, type, callback, useCapture) {\n // Handle the regular Element usage\n if (typeof elements.addEventListener === 'function') {\n return _delegate.apply(null, arguments);\n }\n\n // Handle Element-less usage, it defaults to global delegation\n if (typeof type === 'function') {\n // Use `document` as the first parameter, then apply arguments\n // This is a short way to .unshift `arguments` without running into deoptimizations\n return _delegate.bind(null, document).apply(null, arguments);\n }\n\n // Handle Selector-based usage\n if (typeof elements === 'string') {\n elements = document.querySelectorAll(elements);\n }\n\n // Handle Array-like based usage\n return Array.prototype.map.call(elements, function (element) {\n return _delegate(element, selector, type, callback, useCapture);\n });\n}\n\n/**\n * Finds closest match and invokes callback.\n *\n * @param {Element} element\n * @param {String} selector\n * @param {String} type\n * @param {Function} callback\n * @return {Function}\n */\nfunction listener(element, selector, type, callback) {\n return function(e) {\n e.delegateTarget = closest(e.target, selector);\n\n if (e.delegateTarget) {\n callback.call(element, e);\n }\n }\n}\n\nmodule.exports = delegate;\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports) {\n\nvar DOCUMENT_NODE_TYPE = 9;\n\n/**\n * A polyfill for Element.matches()\n */\nif (typeof Element !== 'undefined' && !Element.prototype.matches) {\n var proto = Element.prototype;\n\n proto.matches = proto.matchesSelector ||\n proto.mozMatchesSelector ||\n proto.msMatchesSelector ||\n proto.oMatchesSelector ||\n proto.webkitMatchesSelector;\n}\n\n/**\n * Finds the closest parent that matches a selector.\n *\n * @param {Element} element\n * @param {String} selector\n * @return {Function}\n */\nfunction closest (element, selector) {\n while (element && element.nodeType !== DOCUMENT_NODE_TYPE) {\n if (typeof element.matches === 'function' &&\n element.matches(selector)) {\n return element;\n }\n element = element.parentNode;\n }\n}\n\nmodule.exports = closest;\n\n\n/***/ })\n/******/ ]);\n});","\n\n/**\n * A function that always returns `false`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.T\n * @example\n *\n * R.F(); //=> false\n */\nvar F = function () {\n return false;\n};\nexport default F;","\n\n/**\n * A function that always returns `true`. Any passed in parameters are ignored.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig * -> Boolean\n * @param {*}\n * @return {Boolean}\n * @see R.F\n * @example\n *\n * R.T(); //=> true\n */\nvar T = function () {\n return true;\n};\nexport default T;","/**\n * A special placeholder value used to specify \"gaps\" within curried functions,\n * allowing partial application of any combination of arguments, regardless of\n * their positions.\n *\n * If `g` is a curried ternary function and `_` is `R.__`, the following are\n * equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2, _)(1, 3)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @name __\n * @constant\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @example\n *\n * const greet = R.replace('{name}', R.__, 'Hello, {name}!');\n * greet('Alice'); //=> 'Hello, Alice!'\n */\nexport default { '@@functional/placeholder': true };","import _curry2 from './internal/_curry2.js';\n\n/**\n * Adds two values.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a\n * @param {Number} b\n * @return {Number}\n * @see R.subtract\n * @example\n *\n * R.add(2, 3); //=> 5\n * R.add(7)(10); //=> 17\n */\nvar add = /*#__PURE__*/_curry2(function add(a, b) {\n return Number(a) + Number(b);\n});\nexport default add;","import _concat from './internal/_concat.js';\nimport _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\n\n/**\n * Creates a new list iteration function from an existing one by adding two new\n * parameters to its callback function: the current index, and the entire list.\n *\n * This would turn, for instance, [`R.map`](#map) function into one that\n * more closely resembles `Array.prototype.map`. Note that this will only work\n * for functions in which the iteration callback function is the first\n * parameter, and where the list is the last parameter. (This latter might be\n * unimportant if the list parameter is not used.)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Function\n * @category List\n * @sig ((a ... -> b) ... -> [a] -> *) -> ((a ..., Int, [a] -> b) ... -> [a] -> *)\n * @param {Function} fn A list iteration function that does not pass index or list to its callback\n * @return {Function} An altered list iteration function that passes (item, index, list) to its callback\n * @example\n *\n * const mapIndexed = R.addIndex(R.map);\n * mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);\n * //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']\n */\nvar addIndex = /*#__PURE__*/_curry1(function addIndex(fn) {\n return curryN(fn.length, function () {\n var idx = 0;\n var origFn = arguments[0];\n var list = arguments[arguments.length - 1];\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = function () {\n var result = origFn.apply(this, _concat(arguments, [idx, list]));\n idx += 1;\n return result;\n };\n return fn.apply(this, args);\n });\n});\nexport default addIndex;","import _concat from './internal/_concat.js';\nimport _curry3 from './internal/_curry3.js';\n\n/**\n * Applies a function to the value at the given index of an array, returning a\n * new copy of the array with the element at the given index replaced with the\n * result of the function application.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -> (a -> a) -> [a] -> [a]\n * @param {Number} idx The index.\n * @param {Function} fn The function to apply.\n * @param {Array|Arguments} list An array-like object whose value\n * at the supplied index will be replaced.\n * @return {Array} A copy of the supplied array-like object with\n * the element at index `idx` replaced with the value\n * returned by applying `fn` to the existing element.\n * @see R.update\n * @example\n *\n * R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'B', 'c', 'd']\n * R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c', 'D']\n * @symb R.adjust(-1, f, [a, b]) = [a, f(b)]\n * @symb R.adjust(0, f, [a, b]) = [f(a), b]\n */\nvar adjust = /*#__PURE__*/_curry3(function adjust(idx, fn, list) {\n if (idx >= list.length || idx < -list.length) {\n return list;\n }\n var start = idx < 0 ? list.length : 0;\n var _idx = start + idx;\n var _list = _concat(list);\n _list[_idx] = fn(list[_idx]);\n return _list;\n});\nexport default adjust;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xall from './internal/_xall.js';\n\n/**\n * Returns `true` if all elements of the list match the predicate, `false` if\n * there are any that don't.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by every element, `false`\n * otherwise.\n * @see R.any, R.none, R.transduce\n * @example\n *\n * const equals3 = R.equals(3);\n * R.all(equals3)([3, 3, 3, 3]); //=> true\n * R.all(equals3)([3, 3, 1, 3]); //=> false\n */\nvar all = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['all'], _xall, function all(fn, list) {\n var idx = 0;\n while (idx < list.length) {\n if (!fn(list[idx])) {\n return false;\n }\n idx += 1;\n }\n return true;\n}));\nexport default all;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if every one of the provided predicates is satisfied\n * by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.anyPass\n * @example\n *\n * const isQueen = R.propEq('rank', 'Q');\n * const isSpade = R.propEq('suit', '♠︎');\n * const isQueenOfSpades = R.allPass([isQueen, isSpade]);\n *\n * isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false\n * isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true\n */\nvar allPass = /*#__PURE__*/_curry1(function allPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (!preds[idx].apply(this, arguments)) {\n return false;\n }\n idx += 1;\n }\n return true;\n });\n});\nexport default allPass;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Returns a function that always returns the given value. Note that for\n * non-primitives the value returned is a reference to the original value.\n *\n * This function is known as `const`, `constant`, or `K` (for K combinator) in\n * other languages and libraries.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> (* -> a)\n * @param {*} val The value to wrap in a function\n * @return {Function} A Function :: * -> val.\n * @example\n *\n * const t = R.always('Tee');\n * t(); //=> 'Tee'\n */\nvar always = /*#__PURE__*/_curry1(function always(val) {\n return function () {\n return val;\n };\n});\nexport default always;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if both arguments are `true`; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any} the first argument if it is falsy, otherwise the second argument.\n * @see R.both\n * @example\n *\n * R.and(true, true); //=> true\n * R.and(true, false); //=> false\n * R.and(false, true); //=> false\n * R.and(false, false); //=> false\n */\nvar and = /*#__PURE__*/_curry2(function and(a, b) {\n return a && b;\n});\nexport default and;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xany from './internal/_xany.js';\n\n/**\n * Returns `true` if at least one of the elements of the list match the predicate,\n * `false` otherwise.\n *\n * Dispatches to the `any` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false`\n * otherwise.\n * @see R.all, R.none, R.transduce\n * @example\n *\n * const lessThan0 = R.flip(R.lt)(0);\n * const lessThan2 = R.flip(R.lt)(2);\n * R.any(lessThan0)([1, 2]); //=> false\n * R.any(lessThan2)([1, 2]); //=> true\n */\nvar any = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['any'], _xany, function any(fn, list) {\n var idx = 0;\n while (idx < list.length) {\n if (fn(list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}));\nexport default any;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\n\n/**\n * Takes a list of predicates and returns a predicate that returns true for a\n * given list of arguments if at least one of the provided predicates is\n * satisfied by those arguments.\n *\n * The function returned is a curried function whose arity matches that of the\n * highest-arity predicate.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Logic\n * @sig [(*... -> Boolean)] -> (*... -> Boolean)\n * @param {Array} predicates An array of predicates to check\n * @return {Function} The combined predicate\n * @see R.allPass\n * @example\n *\n * const isClub = R.propEq('suit', '♣');\n * const isSpade = R.propEq('suit', '♠');\n * const isBlackCard = R.anyPass([isClub, isSpade]);\n *\n * isBlackCard({rank: '10', suit: '♣'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♠'}); //=> true\n * isBlackCard({rank: 'Q', suit: '♦'}); //=> false\n */\nvar anyPass = /*#__PURE__*/_curry1(function anyPass(preds) {\n return curryN(reduce(max, 0, pluck('length', preds)), function () {\n var idx = 0;\n var len = preds.length;\n while (idx < len) {\n if (preds[idx].apply(this, arguments)) {\n return true;\n }\n idx += 1;\n }\n return false;\n });\n});\nexport default anyPass;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\nimport _reduce from './internal/_reduce.js';\nimport map from './map.js';\n\n/**\n * ap applies a list of functions to a list of values.\n *\n * Dispatches to the `ap` method of the second argument, if present. Also\n * treats curried functions as applicatives.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig [a -> b] -> [a] -> [b]\n * @sig Apply f => f (a -> b) -> f a -> f b\n * @sig (r -> a -> b) -> (r -> a) -> (r -> b)\n * @param {*} applyF\n * @param {*} applyX\n * @return {*}\n * @example\n *\n * R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]\n * R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> [\"tasty pizza\", \"tasty salad\", \"PIZZA\", \"SALAD\"]\n *\n * // R.ap can also be used as S combinator\n * // when only two functions are passed\n * R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'\n * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]\n */\nvar ap = /*#__PURE__*/_curry2(function ap(applyF, applyX) {\n return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {\n return applyF(x)(applyX(x));\n } : _reduce(function (acc, f) {\n return _concat(acc, map(f, applyX));\n }, [], applyF);\n});\nexport default ap;","import _aperture from './internal/_aperture.js';\nimport _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xaperture from './internal/_xaperture.js';\n\n/**\n * Returns a new list, composed of n-tuples of consecutive elements. If `n` is\n * greater than the length of the list, an empty list is returned.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig Number -> [a] -> [[a]]\n * @param {Number} n The size of the tuples to create\n * @param {Array} list The list to split into `n`-length tuples\n * @return {Array} The resulting list of `n`-length tuples\n * @see R.transduce\n * @example\n *\n * R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]]\n * R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]]\n * R.aperture(7, [1, 2, 3, 4, 5]); //=> []\n */\nvar aperture = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xaperture, _aperture));\nexport default aperture;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list containing the contents of the given list, followed by\n * the given element.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The element to add to the end of the new list.\n * @param {Array} list The list of elements to add a new item to.\n * list.\n * @return {Array} A new list containing the elements of the old list followed by `el`.\n * @see R.prepend\n * @example\n *\n * R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']\n * R.append('tests', []); //=> ['tests']\n * R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]\n */\nvar append = /*#__PURE__*/_curry2(function append(el, list) {\n return _concat(list, [el]);\n});\nexport default append;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Applies function `fn` to the argument list `args`. This is useful for\n * creating a fixed-arity function from a variadic function. `fn` should be a\n * bound function if context is significant.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> a) -> [*] -> a\n * @param {Function} fn The function which will be called with `args`\n * @param {Array} args The arguments to call `fn` with\n * @return {*} result The result, equivalent to `fn(...args)`\n * @see R.call, R.unapply\n * @example\n *\n * const nums = [1, 2, 3, -99, 42, 6, 7];\n * R.apply(Math.max, nums); //=> 42\n * @symb R.apply(f, [a, b, c]) = f(a, b, c)\n */\nvar apply = /*#__PURE__*/_curry2(function apply(fn, args) {\n return fn.apply(this, args);\n});\nexport default apply;","import _curry1 from './internal/_curry1.js';\nimport apply from './apply.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\nimport keys from './keys.js';\nimport values from './values.js';\n\n// Use custom mapValues function to avoid issues with specs that include a \"map\" key and R.map\n// delegating calls to .map\nfunction mapValues(fn, obj) {\n return keys(obj).reduce(function (acc, key) {\n acc[key] = fn(obj[key]);\n return acc;\n }, {});\n}\n\n/**\n * Given a spec object recursively mapping properties to functions, creates a\n * function producing an object of the same structure, by mapping each property\n * to the result of calling its associated function with the supplied arguments.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v})\n * @param {Object} spec an object recursively mapping properties to functions for\n * producing the values for these properties.\n * @return {Function} A function that returns an object of the same structure\n * as `spec', with each property set to the value returned by calling its\n * associated function with the supplied arguments.\n * @see R.converge, R.juxt\n * @example\n *\n * const getMetrics = R.applySpec({\n * sum: R.add,\n * nested: { mul: R.multiply }\n * });\n * getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } }\n * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } }\n */\nvar applySpec = /*#__PURE__*/_curry1(function applySpec(spec) {\n spec = mapValues(function (v) {\n return typeof v == 'function' ? v : applySpec(v);\n }, spec);\n\n return curryN(reduce(max, 0, pluck('length', values(spec))), function () {\n var args = arguments;\n return mapValues(function (f) {\n return apply(f, args);\n }, spec);\n });\n});\nexport default applySpec;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes a value and applies a function to it.\n *\n * This function is also known as the `thrush` combinator.\n *\n * @func\n * @memberOf R\n * @since v0.25.0\n * @category Function\n * @sig a -> (a -> b) -> b\n * @param {*} x The value\n * @param {Function} f The function to apply\n * @return {*} The result of applying `f` to `x`\n * @example\n *\n * const t42 = R.applyTo(42);\n * t42(R.identity); //=> 42\n * t42(R.add(1)); //=> 43\n */\nvar applyTo = /*#__PURE__*/_curry2(function applyTo(x, f) {\n return f(x);\n});\nexport default applyTo;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Makes an ascending comparator function out of a function that returns a value\n * that can be compared with `<` and `>`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b => (a -> b) -> a -> a -> Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0`\n * @see R.descend\n * @example\n *\n * const byAge = R.ascend(R.prop('age'));\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByYoungestFirst = R.sort(byAge, people);\n * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\nvar ascend = /*#__PURE__*/_curry3(function ascend(fn, a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n});\nexport default ascend;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Makes a shallow clone of an object, setting or overriding the specified\n * property with the given value. Note that this copies and flattens prototype\n * properties onto the new object as well. All non-primitive properties are\n * copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig String -> a -> {k: v} -> {k: v}\n * @param {String} prop The property name to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except for the changed property.\n * @see R.dissoc, R.pick\n * @example\n *\n * R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3}\n */\nvar assoc = /*#__PURE__*/_curry3(function assoc(prop, val, obj) {\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n result[prop] = val;\n return result;\n});\nexport default assoc;","import _curry3 from './internal/_curry3.js';\nimport _has from './internal/_has.js';\nimport _isArray from './internal/_isArray.js';\nimport _isInteger from './internal/_isInteger.js';\nimport assoc from './assoc.js';\nimport isNil from './isNil.js';\n\n/**\n * Makes a shallow clone of an object, setting or overriding the nodes required\n * to create the given path, and placing the specific value at the tail end of\n * that path. Note that this copies and flattens prototype properties onto the\n * new object as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> a -> {a} -> {a}\n * @param {Array} path the path to set\n * @param {*} val The new value\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original except along the specified path.\n * @see R.dissocPath\n * @example\n *\n * R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}\n *\n * // Any missing or non-object keys in path will be overridden\n * R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}\n */\nvar assocPath = /*#__PURE__*/_curry3(function assocPath(path, val, obj) {\n if (path.length === 0) {\n return val;\n }\n var idx = path[0];\n if (path.length > 1) {\n var nextObj = !isNil(obj) && _has(idx, obj) ? obj[idx] : _isInteger(path[1]) ? [] : {};\n val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);\n }\n if (_isInteger(idx) && _isArray(obj)) {\n var arr = [].concat(obj);\n arr[idx] = val;\n return arr;\n } else {\n return assoc(idx, val, obj);\n }\n});\nexport default assocPath;","import _curry1 from './internal/_curry1.js';\nimport nAry from './nAry.js';\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 2 parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (* -> c) -> (a, b -> c)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity 2.\n * @see R.nAry, R.unary\n * @example\n *\n * const takesThreeArgs = function(a, b, c) {\n * return [a, b, c];\n * };\n * takesThreeArgs.length; //=> 3\n * takesThreeArgs(1, 2, 3); //=> [1, 2, 3]\n *\n * const takesTwoArgs = R.binary(takesThreeArgs);\n * takesTwoArgs.length; //=> 2\n * // Only 2 arguments are passed to the wrapped function\n * takesTwoArgs(1, 2, 3); //=> [1, 2, undefined]\n * @symb R.binary(f)(a, b, c) = f(a, b)\n */\nvar binary = /*#__PURE__*/_curry1(function binary(fn) {\n return nAry(2, fn);\n});\nexport default binary;","import _arity from './internal/_arity.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a function that is bound to a context.\n * Note: `R.bind` does not provide the additional argument-binding capabilities of\n * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Function\n * @category Object\n * @sig (* -> *) -> {*} -> (* -> *)\n * @param {Function} fn The function to bind to context\n * @param {Object} thisObj The context to bind `fn` to\n * @return {Function} A function that will execute in the context of `thisObj`.\n * @see R.partial\n * @example\n *\n * const log = R.bind(console.log, console);\n * R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}\n * // logs {a: 2}\n * @symb R.bind(f, o)(a, b) = f.call(o, a, b)\n */\nvar bind = /*#__PURE__*/_curry2(function bind(fn, thisObj) {\n return _arity(fn.length, function () {\n return fn.apply(thisObj, arguments);\n });\n});\nexport default bind;","import _curry2 from './internal/_curry2.js';\nimport _isFunction from './internal/_isFunction.js';\nimport and from './and.js';\nimport lift from './lift.js';\n\n/**\n * A function which calls the two provided functions and returns the `&&`\n * of the results.\n * It returns the result of the first function if it is false-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * false-y value.\n *\n * In addition to functions, `R.both` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f A predicate\n * @param {Function} g Another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together.\n * @see R.and\n * @example\n *\n * const gt10 = R.gt(R.__, 10)\n * const lt20 = R.lt(R.__, 20)\n * const f = R.both(gt10, lt20);\n * f(15); //=> true\n * f(30); //=> false\n *\n * R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false)\n * R.both([false, false, 'a'], [11]); //=> [false, false, 11]\n */\nvar both = /*#__PURE__*/_curry2(function both(f, g) {\n return _isFunction(f) ? function _both() {\n return f.apply(this, arguments) && g.apply(this, arguments);\n } : lift(and)(f, g);\n});\nexport default both;","import curry from './curry.js';\n\n/**\n * Returns the result of calling its first argument with the remaining\n * arguments. This is occasionally useful as a converging function for\n * [`R.converge`](#converge): the first branch can produce a function while the\n * remaining branches produce values to be passed to that function as its\n * arguments.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig (*... -> a),*... -> a\n * @param {Function} fn The function to apply to the remaining arguments.\n * @param {...*} args Any number of positional arguments.\n * @return {*}\n * @see R.apply\n * @example\n *\n * R.call(R.add, 1, 2); //=> 3\n *\n * const indentN = R.pipe(R.repeat(' '),\n * R.join(''),\n * R.replace(/^(?!$)/gm));\n *\n * const format = R.converge(R.call, [\n * R.pipe(R.prop('indent'), indentN),\n * R.prop('value')\n * ]);\n *\n * format({indent: 2, value: 'foo\\nbar\\nbaz\\n'}); //=> ' foo\\n bar\\n baz\\n'\n * @symb R.call(f, a, b) = f(a, b)\n */\nvar call = /*#__PURE__*/curry(function call(fn) {\n return fn.apply(this, Array.prototype.slice.call(arguments, 1));\n});\nexport default call;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _makeFlat from './internal/_makeFlat.js';\nimport _xchain from './internal/_xchain.js';\nimport map from './map.js';\n\n/**\n * `chain` maps a function over a list and concatenates the results. `chain`\n * is also known as `flatMap` in some libraries.\n *\n * Dispatches to the `chain` method of the second argument, if present,\n * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain).\n *\n * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain m => (a -> m b) -> m a -> m b\n * @param {Function} fn The function to map with\n * @param {Array} list The list to map over\n * @return {Array} The result of flat-mapping `list` with `fn`\n * @example\n *\n * const duplicate = n => [n, n];\n * R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3]\n *\n * R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1]\n */\nvar chain = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/chain', 'chain'], _xchain, function chain(fn, monad) {\n if (typeof monad === 'function') {\n return function (x) {\n return fn(monad(x))(x);\n };\n }\n return _makeFlat(false)(map(fn, monad));\n}));\nexport default chain;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Restricts a number to be within a range.\n *\n * Also works for other ordered types such as Strings and Dates.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Relation\n * @sig Ord a => a -> a -> a -> a\n * @param {Number} minimum The lower limit of the clamp (inclusive)\n * @param {Number} maximum The upper limit of the clamp (inclusive)\n * @param {Number} value Value to be clamped\n * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise\n * @example\n *\n * R.clamp(1, 10, -5) // => 1\n * R.clamp(1, 10, 15) // => 10\n * R.clamp(1, 10, 4) // => 4\n */\nvar clamp = /*#__PURE__*/_curry3(function clamp(min, max, value) {\n if (min > max) {\n throw new Error('min must not be greater than max in clamp(min, max, value)');\n }\n return value < min ? min : value > max ? max : value;\n});\nexport default clamp;","import _clone from './internal/_clone.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Creates a deep copy of the value which may contain (nested) `Array`s and\n * `Object`s, `Number`s, `String`s, `Boolean`s and `Date`s. `Function`s are\n * assigned by reference rather than copied\n *\n * Dispatches to a `clone` method if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {*} -> {*}\n * @param {*} value The object or array to clone\n * @return {*} A deeply cloned copy of `val`\n * @example\n *\n * const objects = [{}, {}, {}];\n * const objectsClone = R.clone(objects);\n * objects === objectsClone; //=> false\n * objects[0] === objectsClone[0]; //=> false\n */\nvar clone = /*#__PURE__*/_curry1(function clone(value) {\n return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, [], [], true);\n});\nexport default clone;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Makes a comparator function out of a function that reports whether the first\n * element is less than the second.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b) -> Boolean) -> ((a, b) -> Number)\n * @param {Function} pred A predicate function of arity two which will return `true` if the first argument\n * is less than the second, `false` otherwise\n * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0`\n * @example\n *\n * const byAge = R.comparator((a, b) => a.age < b.age);\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByIncreasingAge = R.sort(byAge, people);\n * //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]\n */\nvar comparator = /*#__PURE__*/_curry1(function comparator(pred) {\n return function (a, b) {\n return pred(a, b) ? -1 : pred(b, a) ? 1 : 0;\n };\n});\nexport default comparator;","import lift from './lift.js';\nimport not from './not.js';\n\n/**\n * Takes a function `f` and returns a function `g` such that if called with the same arguments\n * when `f` returns a \"truthy\" value, `g` returns `false` and when `f` returns a \"falsy\" value `g` returns `true`.\n *\n * `R.complement` may be applied to any functor\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> *) -> (*... -> Boolean)\n * @param {Function} f\n * @return {Function}\n * @see R.not\n * @example\n *\n * const isNotNil = R.complement(R.isNil);\n * isNil(null); //=> true\n * isNotNil(null); //=> false\n * isNil(7); //=> false\n * isNotNil(7); //=> true\n */\nvar complement = /*#__PURE__*/lift(not);\nexport default complement;","import pipe from './pipe.js';\nimport reverse from './reverse.js';\n\n/**\n * Performs right-to-left function composition. The rightmost function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipe\n * @example\n *\n * const classyGreeting = (firstName, lastName) => \"The name's \" + lastName + \", \" + firstName + \" \" + lastName\n * const yellGreeting = R.compose(R.toUpper, classyGreeting);\n * yellGreeting('James', 'Bond'); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7\n *\n * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b)))\n */\nexport default function compose() {\n if (arguments.length === 0) {\n throw new Error('compose requires at least one argument');\n }\n return pipe.apply(this, reverse(arguments));\n}","import chain from './chain.js';\nimport compose from './compose.js';\nimport map from './map.js';\n\n/**\n * Returns the right-to-left Kleisli composition of the provided functions,\n * each of which must return a value of a type supported by [`chain`](#chain).\n *\n * `R.composeK(h, g, f)` is equivalent to `R.compose(R.chain(h), R.chain(g), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Function\n * @sig Chain m => ((y -> m z), (x -> m y), ..., (a -> m b)) -> (a -> m z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.pipeK\n * @deprecated since v0.26.0\n * @example\n *\n * // get :: String -> Object -> Maybe *\n * const get = R.curry((propName, obj) => Maybe(obj[propName]))\n *\n * // getStateCode :: Maybe String -> Maybe String\n * const getStateCode = R.composeK(\n * R.compose(Maybe.of, R.toUpper),\n * get('state'),\n * get('address'),\n * get('user'),\n * );\n * getStateCode({\"user\":{\"address\":{\"state\":\"ny\"}}}); //=> Maybe.Just(\"NY\")\n * getStateCode({}); //=> Maybe.Nothing()\n * @symb R.composeK(f, g, h)(a) = R.chain(f, R.chain(g, h(a)))\n */\nexport default function composeK() {\n if (arguments.length === 0) {\n throw new Error('composeK requires at least one argument');\n }\n var init = Array.prototype.slice.call(arguments);\n var last = init.pop();\n return compose(compose.apply(this, map(chain, init)), last);\n}","import pipeP from './pipeP.js';\nimport reverse from './reverse.js';\n\n/**\n * Performs right-to-left composition of one or more Promise-returning\n * functions. The rightmost function may have any arity; the remaining\n * functions must be unary.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((y -> Promise z), (x -> Promise y), ..., (a -> Promise b)) -> (a -> Promise z)\n * @param {...Function} functions The functions to compose\n * @return {Function}\n * @see R.pipeP\n * @deprecated since v0.26.0\n * @example\n *\n * const db = {\n * users: {\n * JOE: {\n * name: 'Joe',\n * followers: ['STEVE', 'SUZY']\n * }\n * }\n * }\n *\n * // We'll pretend to do a db lookup which returns a promise\n * const lookupUser = (userId) => Promise.resolve(db.users[userId])\n * const lookupFollowers = (user) => Promise.resolve(user.followers)\n * lookupUser('JOE').then(lookupFollowers)\n *\n * // followersForUser :: String -> Promise [UserId]\n * const followersForUser = R.composeP(lookupFollowers, lookupUser);\n * followersForUser('JOE').then(followers => console.log('Followers:', followers))\n * // Followers: [\"STEVE\",\"SUZY\"]\n */\nexport default function composeP() {\n if (arguments.length === 0) {\n throw new Error('composeP requires at least one argument');\n }\n return pipeP.apply(this, reverse(arguments));\n}","import _curry2 from './internal/_curry2.js';\nimport pipeWith from './pipeWith.js';\nimport reverse from './reverse.js';\n\n/**\n * Performs right-to-left function composition using transforming function. The rightmost function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of compose is not automatically curried.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig ((* -> *), [(y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)]) -> ((a, b, ..., n) -> z)\n * @param {...Function} ...functions The functions to compose\n * @return {Function}\n * @see R.compose, R.pipeWith\n * @example\n *\n * const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res));\n *\n * composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2\n * composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined\n *\n * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, f(i, ...args)))\n */\nvar composeWith = /*#__PURE__*/_curry2(function composeWith(xf, list) {\n return pipeWith.apply(this, [xf, reverse(list)]);\n});\nexport default composeWith;","import _curry2 from './internal/_curry2.js';\nimport _isArray from './internal/_isArray.js';\nimport _isFunction from './internal/_isFunction.js';\nimport _isString from './internal/_isString.js';\nimport toString from './toString.js';\n\n/**\n * Returns the result of concatenating the given lists or strings.\n *\n * Note: `R.concat` expects both arguments to be of the same type,\n * unlike the native `Array.prototype.concat` method. It will throw\n * an error if you `concat` an Array with a non-Array value.\n *\n * Dispatches to the `concat` method of the first argument, if present.\n * Can also concatenate two members of a [fantasy-land\n * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @sig String -> String -> String\n * @param {Array|String} firstList The first list\n * @param {Array|String} secondList The second list\n * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of\n * `secondList`.\n *\n * @example\n *\n * R.concat('ABC', 'DEF'); // 'ABCDEF'\n * R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n * R.concat([], []); //=> []\n */\nvar concat = /*#__PURE__*/_curry2(function concat(a, b) {\n if (_isArray(a)) {\n if (_isArray(b)) {\n return a.concat(b);\n }\n throw new TypeError(toString(b) + ' is not an array');\n }\n if (_isString(a)) {\n if (_isString(b)) {\n return a + b;\n }\n throw new TypeError(toString(b) + ' is not a string');\n }\n if (a != null && _isFunction(a['fantasy-land/concat'])) {\n return a['fantasy-land/concat'](b);\n }\n if (a != null && _isFunction(a.concat)) {\n return a.concat(b);\n }\n throw new TypeError(toString(a) + ' does not have a method named \"concat\" or \"fantasy-land/concat\"');\n});\nexport default concat;","import _arity from './internal/_arity.js';\nimport _curry1 from './internal/_curry1.js';\nimport map from './map.js';\nimport max from './max.js';\nimport reduce from './reduce.js';\n\n/**\n * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.\n * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments\n * to `fn` are applied to each of the predicates in turn until one returns a\n * \"truthy\" value, at which point `fn` returns the result of applying its\n * arguments to the corresponding transformer. If none of the predicates\n * matches, `fn` returns undefined.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Logic\n * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)\n * @param {Array} pairs A list of [predicate, transformer]\n * @return {Function}\n * @see R.ifElse, R.unless, R.when\n * @example\n *\n * const fn = R.cond([\n * [R.equals(0), R.always('water freezes at 0°C')],\n * [R.equals(100), R.always('water boils at 100°C')],\n * [R.T, temp => 'nothing special happens at ' + temp + '°C']\n * ]);\n * fn(0); //=> 'water freezes at 0°C'\n * fn(50); //=> 'nothing special happens at 50°C'\n * fn(100); //=> 'water boils at 100°C'\n */\nvar cond = /*#__PURE__*/_curry1(function cond(pairs) {\n var arity = reduce(max, 0, map(function (pair) {\n return pair[0].length;\n }, pairs));\n return _arity(arity, function () {\n var idx = 0;\n while (idx < pairs.length) {\n if (pairs[idx][0].apply(this, arguments)) {\n return pairs[idx][1].apply(this, arguments);\n }\n idx += 1;\n }\n });\n});\nexport default cond;","import _curry1 from './internal/_curry1.js';\nimport constructN from './constructN.js';\n\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> {*}) -> (* -> {*})\n * @param {Function} fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @see R.invoker\n * @example\n *\n * // Constructor function\n * function Animal(kind) {\n * this.kind = kind;\n * };\n * Animal.prototype.sighting = function() {\n * return \"It's a \" + this.kind + \"!\";\n * }\n *\n * const AnimalConstructor = R.construct(Animal)\n *\n * // Notice we no longer need the 'new' keyword:\n * AnimalConstructor('Pig'); //=> {\"kind\": \"Pig\", \"sighting\": function (){...}};\n *\n * const animalTypes = [\"Lion\", \"Tiger\", \"Bear\"];\n * const animalSighting = R.invoker(0, 'sighting');\n * const sightNewAnimal = R.compose(animalSighting, AnimalConstructor);\n * R.map(sightNewAnimal, animalTypes); //=> [\"It's a Lion!\", \"It's a Tiger!\", \"It's a Bear!\"]\n */\nvar construct = /*#__PURE__*/_curry1(function construct(Fn) {\n return constructN(Fn.length, Fn);\n});\nexport default construct;","import _curry2 from './internal/_curry2.js';\nimport curry from './curry.js';\nimport nAry from './nAry.js';\n\n/**\n * Wraps a constructor function inside a curried function that can be called\n * with the same arguments and returns the same type. The arity of the function\n * returned is specified to allow using variadic constructor functions.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Function\n * @sig Number -> (* -> {*}) -> (* -> {*})\n * @param {Number} n The arity of the constructor function.\n * @param {Function} Fn The constructor function to wrap.\n * @return {Function} A wrapped, curried constructor function.\n * @example\n *\n * // Variadic Constructor function\n * function Salad() {\n * this.ingredients = arguments;\n * }\n *\n * Salad.prototype.recipe = function() {\n * const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients);\n * return R.join('\\n', instructions);\n * };\n *\n * const ThreeLayerSalad = R.constructN(3, Salad);\n *\n * // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments.\n * const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup');\n *\n * console.log(salad.recipe());\n * // Add a dollop of Mayonnaise\n * // Add a dollop of Potato Chips\n * // Add a dollop of Ketchup\n */\nvar constructN = /*#__PURE__*/_curry2(function constructN(n, Fn) {\n if (n > 10) {\n throw new Error('Constructor with greater than ten arguments');\n }\n if (n === 0) {\n return function () {\n return new Fn();\n };\n }\n return curry(nAry(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {\n switch (arguments.length) {\n case 1:\n return new Fn($0);\n case 2:\n return new Fn($0, $1);\n case 3:\n return new Fn($0, $1, $2);\n case 4:\n return new Fn($0, $1, $2, $3);\n case 5:\n return new Fn($0, $1, $2, $3, $4);\n case 6:\n return new Fn($0, $1, $2, $3, $4, $5);\n case 7:\n return new Fn($0, $1, $2, $3, $4, $5, $6);\n case 8:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7);\n case 9:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8);\n case 10:\n return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9);\n }\n }));\n});\nexport default constructN;","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.includes\n * @deprecated since v0.26.0\n * @example\n *\n * R.contains(3, [1, 2, 3]); //=> true\n * R.contains(4, [1, 2, 3]); //=> false\n * R.contains({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.contains([42], [[42]]); //=> true\n * R.contains('ba', 'banana'); //=>true\n */\nvar contains = /*#__PURE__*/_curry2(_includes);\nexport default contains;","import _curry2 from './internal/_curry2.js';\nimport _map from './internal/_map.js';\nimport curryN from './curryN.js';\nimport max from './max.js';\nimport pluck from './pluck.js';\nimport reduce from './reduce.js';\n\n/**\n * Accepts a converging function and a list of branching functions and returns\n * a new function. The arity of the new function is the same as the arity of\n * the longest branching function. When invoked, this new function is applied\n * to some arguments, and each branching function is applied to those same\n * arguments. The results of each branching function are passed as arguments\n * to the converging function to produce the return value.\n *\n * @func\n * @memberOf R\n * @since v0.4.2\n * @category Function\n * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z)\n * @param {Function} after A function. `after` will be invoked with the return values of\n * `fn1` and `fn2` as its arguments.\n * @param {Array} functions A list of functions.\n * @return {Function} A new function.\n * @see R.useWith\n * @example\n *\n * const average = R.converge(R.divide, [R.sum, R.length])\n * average([1, 2, 3, 4, 5, 6, 7]) //=> 4\n *\n * const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])\n * strangeConcat(\"Yodel\") //=> \"YODELyodel\"\n *\n * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b))\n */\nvar converge = /*#__PURE__*/_curry2(function converge(after, fns) {\n return curryN(reduce(max, 0, pluck('length', fns)), function () {\n var args = arguments;\n var context = this;\n return after.apply(context, _map(function (fn) {\n return fn.apply(context, args);\n }, fns));\n });\n});\nexport default converge;","import reduceBy from './reduceBy.js';\n\n/**\n * Counts the elements of a list according to how many match each value of a\n * key generated by the supplied function. Returns an object mapping the keys\n * produced by `fn` to the number of occurrences in the list. Note that all\n * keys are coerced to strings because of how JavaScript objects work.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig (a -> String) -> [a] -> {*}\n * @param {Function} fn The function used to map values to keys.\n * @param {Array} list The list to count elements from.\n * @return {Object} An object mapping keys to number of occurrences in the list.\n * @example\n *\n * const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2];\n * R.countBy(Math.floor)(numbers); //=> {'1': 3, '2': 2, '3': 1}\n *\n * const letters = ['a', 'b', 'A', 'a', 'B', 'c'];\n * R.countBy(R.toLower)(letters); //=> {'a': 3, 'b': 2, 'c': 1}\n */\nvar countBy = /*#__PURE__*/reduceBy(function (acc, elem) {\n return acc + 1;\n}, 0);\nexport default countBy;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\n\n/**\n * Returns a curried equivalent of the provided function. The curried function\n * has two unusual capabilities. First, its arguments needn't be provided one\n * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (* -> a) -> (* -> a)\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curryN, R.partial\n * @example\n *\n * const addFourNumbers = (a, b, c, d) => a + b + c + d;\n *\n * const curriedAddFourNumbers = R.curry(addFourNumbers);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\nvar curry = /*#__PURE__*/_curry1(function curry(fn) {\n return curryN(fn.length, fn);\n});\nexport default curry;","import _arity from './internal/_arity.js';\nimport _curry1 from './internal/_curry1.js';\nimport _curry2 from './internal/_curry2.js';\nimport _curryN from './internal/_curryN.js';\n\n/**\n * Returns a curried equivalent of the provided function, with the specified\n * arity. The curried function has two unusual capabilities. First, its\n * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the\n * following are equivalent:\n *\n * - `g(1)(2)(3)`\n * - `g(1)(2, 3)`\n * - `g(1, 2)(3)`\n * - `g(1, 2, 3)`\n *\n * Secondly, the special placeholder value [`R.__`](#__) may be used to specify\n * \"gaps\", allowing partial application of any combination of arguments,\n * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),\n * the following are equivalent:\n *\n * - `g(1, 2, 3)`\n * - `g(_, 2, 3)(1)`\n * - `g(_, _, 3)(1)(2)`\n * - `g(_, _, 3)(1, 2)`\n * - `g(_, 2)(1)(3)`\n * - `g(_, 2)(1, 3)`\n * - `g(_, 2)(_, 3)(1)`\n *\n * @func\n * @memberOf R\n * @since v0.5.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to curry.\n * @return {Function} A new, curried function.\n * @see R.curry\n * @example\n *\n * const sumArgs = (...args) => R.sum(args);\n *\n * const curriedAddFourNumbers = R.curryN(4, sumArgs);\n * const f = curriedAddFourNumbers(1, 2);\n * const g = f(3);\n * g(4); //=> 10\n */\nvar curryN = /*#__PURE__*/_curry2(function curryN(length, fn) {\n if (length === 1) {\n return _curry1(fn);\n }\n return _arity(length, _curryN(length, [], fn));\n});\nexport default curryN;","import add from './add.js';\n\n/**\n * Decrements its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number} n - 1\n * @see R.inc\n * @example\n *\n * R.dec(42); //=> 41\n */\nvar dec = /*#__PURE__*/add(-1);\nexport default dec;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns the second argument if it is not `null`, `undefined` or `NaN`;\n * otherwise the first argument is returned.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {a} default The default value.\n * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.\n * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value\n * @example\n *\n * const defaultTo42 = R.defaultTo(42);\n *\n * defaultTo42(null); //=> 42\n * defaultTo42(undefined); //=> 42\n * defaultTo42(false); //=> false\n * defaultTo42('Ramda'); //=> 'Ramda'\n * // parseInt('string') results in NaN\n * defaultTo42(parseInt('string')); //=> 42\n */\nvar defaultTo = /*#__PURE__*/_curry2(function defaultTo(d, v) {\n return v == null || v !== v ? d : v;\n});\nexport default defaultTo;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Makes a descending comparator function out of a function that returns a value\n * that can be compared with `<` and `>`.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Function\n * @sig Ord b => (a -> b) -> a -> a -> Number\n * @param {Function} fn A function of arity one that returns a value that can be compared\n * @param {*} a The first item to be compared.\n * @param {*} b The second item to be compared.\n * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0`\n * @see R.ascend\n * @example\n *\n * const byAge = R.descend(R.prop('age'));\n * const people = [\n * { name: 'Emma', age: 70 },\n * { name: 'Peter', age: 78 },\n * { name: 'Mikhail', age: 62 },\n * ];\n * const peopleByOldestFirst = R.sort(byAge, people);\n * //=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }]\n */\nvar descend = /*#__PURE__*/_curry3(function descend(fn, a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa > bb ? -1 : aa < bb ? 1 : 0;\n});\nexport default descend;","import _curry2 from './internal/_curry2.js';\nimport _Set from './internal/_Set.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Objects and Arrays are compared in terms of\n * value equality, not reference equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without\n * @example\n *\n * R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2]\n * R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5]\n * R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}]\n */\nvar difference = /*#__PURE__*/_curry2(function difference(first, second) {\n var out = [];\n var idx = 0;\n var firstLen = first.length;\n var secondLen = second.length;\n var toFilterOut = new _Set();\n\n for (var i = 0; i < secondLen; i += 1) {\n toFilterOut.add(second[i]);\n }\n\n while (idx < firstLen) {\n if (toFilterOut.add(first[idx])) {\n out[out.length] = first[idx];\n }\n idx += 1;\n }\n return out;\n});\nexport default difference;","import _includesWith from './internal/_includesWith.js';\nimport _curry3 from './internal/_curry3.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements in the first list not\n * contained in the second list. Duplication is determined according to the\n * value returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` that are not in `list2`.\n * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith\n * @example\n *\n * const cmp = (x, y) => x.a === y.a;\n * const l1 = [{a: 1}, {a: 2}, {a: 3}];\n * const l2 = [{a: 3}, {a: 4}];\n * R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}]\n */\nvar differenceWith = /*#__PURE__*/_curry3(function differenceWith(pred, first, second) {\n var out = [];\n var idx = 0;\n var firstLen = first.length;\n while (idx < firstLen) {\n if (!_includesWith(pred, first[idx], second) && !_includesWith(pred, first[idx], out)) {\n out.push(first[idx]);\n }\n idx += 1;\n }\n return out;\n});\nexport default differenceWith;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new object that does not contain a `prop` property.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Object\n * @sig String -> {k: v} -> {k: v}\n * @param {String} prop The name of the property to dissociate\n * @param {Object} obj The object to clone\n * @return {Object} A new object equivalent to the original but without the specified property\n * @see R.assoc, R.omit\n * @example\n *\n * R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3}\n */\nvar dissoc = /*#__PURE__*/_curry2(function dissoc(prop, obj) {\n var result = {};\n for (var p in obj) {\n result[p] = obj[p];\n }\n delete result[prop];\n return result;\n});\nexport default dissoc;","import _curry2 from './internal/_curry2.js';\nimport _isInteger from './internal/_isInteger.js';\nimport _isArray from './internal/_isArray.js';\nimport assoc from './assoc.js';\nimport dissoc from './dissoc.js';\nimport remove from './remove.js';\nimport update from './update.js';\n\n/**\n * Makes a shallow clone of an object, omitting the property at the given path.\n * Note that this copies and flattens prototype properties onto the new object\n * as well. All non-primitive properties are copied by reference.\n *\n * @func\n * @memberOf R\n * @since v0.11.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {k: v} -> {k: v}\n * @param {Array} path The path to the value to omit\n * @param {Object} obj The object to clone\n * @return {Object} A new object without the property at path\n * @see R.assocPath\n * @example\n *\n * R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}}\n */\nvar dissocPath = /*#__PURE__*/_curry2(function dissocPath(path, obj) {\n switch (path.length) {\n case 0:\n return obj;\n case 1:\n return _isInteger(path[0]) && _isArray(obj) ? remove(path[0], 1, obj) : dissoc(path[0], obj);\n default:\n var head = path[0];\n var tail = Array.prototype.slice.call(path, 1);\n if (obj[head] == null) {\n return obj;\n } else if (_isInteger(head) && _isArray(obj)) {\n return update(head, dissocPath(tail, obj[head]), obj);\n } else {\n return assoc(head, dissocPath(tail, obj[head]), obj);\n }\n }\n});\nexport default dissocPath;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Divides two numbers. Equivalent to `a / b`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a / b`.\n * @see R.multiply\n * @example\n *\n * R.divide(71, 100); //=> 0.71\n *\n * const half = R.divide(R.__, 2);\n * half(42); //=> 21\n *\n * const reciprocal = R.divide(1);\n * reciprocal(4); //=> 0.25\n */\nvar divide = /*#__PURE__*/_curry2(function divide(a, b) {\n return a / b;\n});\nexport default divide;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdrop from './internal/_xdrop.js';\nimport slice from './slice.js';\n\n/**\n * Returns all but the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `drop` method).\n *\n * Dispatches to the `drop` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n\n * @param {*} list\n * @return {*} A copy of list without the first `n` elements\n * @see R.take, R.transduce, R.dropLast, R.dropWhile\n * @example\n *\n * R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']\n * R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz']\n * R.drop(3, ['foo', 'bar', 'baz']); //=> []\n * R.drop(4, ['foo', 'bar', 'baz']); //=> []\n * R.drop(3, 'ramda'); //=> 'da'\n */\nvar drop = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['drop'], _xdrop, function drop(n, xs) {\n return slice(Math.max(0, n), Infinity, xs);\n}));\nexport default drop;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _dropLast from './internal/_dropLast.js';\nimport _xdropLast from './internal/_xdropLast.js';\n\n/**\n * Returns a list containing all but the last `n` elements of the given `list`.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n The number of elements of `list` to skip.\n * @param {Array} list The list of elements to consider.\n * @return {Array} A copy of the list with only the first `list.length - n` elements\n * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile\n * @example\n *\n * R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']\n * R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo']\n * R.dropLast(3, ['foo', 'bar', 'baz']); //=> []\n * R.dropLast(4, ['foo', 'bar', 'baz']); //=> []\n * R.dropLast(3, 'ramda'); //=> 'ra'\n */\nvar dropLast = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropLast, _dropLast));\nexport default dropLast;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _dropLastWhile from './internal/_dropLastWhile.js';\nimport _xdropLastWhile from './internal/_xdropLastWhile.js';\n\n/**\n * Returns a new list excluding all the tailing elements of a given list which\n * satisfy the supplied predicate function. It passes each value from the right\n * to the supplied predicate function, skipping elements until the predicate\n * function returns a `falsy` value. The predicate function is applied to one argument:\n * *(value)*.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} predicate The function to be called on each element\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`.\n * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile\n * @example\n *\n * const lteThree = x => x <= 3;\n *\n * R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4]\n *\n * R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd'\n */\nvar dropLastWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropLastWhile, _dropLastWhile));\nexport default dropLastWhile;","import _curry1 from './internal/_curry1.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdropRepeatsWith from './internal/_xdropRepeatsWith.js';\nimport dropRepeatsWith from './dropRepeatsWith.js';\nimport equals from './equals.js';\n\n/**\n * Returns a new list without any consecutively repeating elements.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n * R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2]\n */\nvar dropRepeats = /*#__PURE__*/_curry1( /*#__PURE__*/_dispatchable([], /*#__PURE__*/_xdropRepeatsWith(equals), /*#__PURE__*/dropRepeatsWith(equals)));\nexport default dropRepeats;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdropRepeatsWith from './internal/_xdropRepeatsWith.js';\nimport last from './last.js';\n\n/**\n * Returns a new list without any consecutively repeating elements. Equality is\n * determined by applying the supplied predicate to each pair of consecutive elements. The\n * first element in a series of equal elements will be preserved.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig ((a, a) -> Boolean) -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} `list` without repeating elements.\n * @see R.transduce\n * @example\n *\n * const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3];\n * R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3]\n */\nvar dropRepeatsWith = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) {\n var result = [];\n var idx = 1;\n var len = list.length;\n if (len !== 0) {\n result[0] = list[0];\n while (idx < len) {\n if (!pred(last(result), list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n }\n return result;\n}));\nexport default dropRepeatsWith;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xdropWhile from './internal/_xdropWhile.js';\nimport slice from './slice.js';\n\n/**\n * Returns a new list excluding the leading elements of a given list which\n * satisfy the supplied predicate function. It passes each value to the supplied\n * predicate function, skipping elements while the predicate function returns\n * `true`. The predicate function is applied to one argument: *(value)*.\n *\n * Dispatches to the `dropWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.takeWhile, R.transduce, R.addIndex\n * @example\n *\n * const lteTwo = x => x <= 2;\n *\n * R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1]\n *\n * R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da'\n */\nvar dropWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, xs) {\n var idx = 0;\n var len = xs.length;\n while (idx < len && pred(xs[idx])) {\n idx += 1;\n }\n return slice(idx, Infinity, xs);\n}));\nexport default dropWhile;","import _curry2 from './internal/_curry2.js';\nimport _isFunction from './internal/_isFunction.js';\nimport lift from './lift.js';\nimport or from './or.js';\n\n/**\n * A function wrapping calls to the two functions in an `||` operation,\n * returning the result of the first function if it is truth-y and the result\n * of the second function otherwise. Note that this is short-circuited,\n * meaning that the second function will not be invoked if the first returns a\n * truth-y value.\n *\n * In addition to functions, `R.either` also accepts any fantasy-land compatible\n * applicative functor.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)\n * @param {Function} f a predicate\n * @param {Function} g another predicate\n * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together.\n * @see R.or\n * @example\n *\n * const gt10 = x => x > 10;\n * const even = x => x % 2 === 0;\n * const f = R.either(gt10, even);\n * f(101); //=> true\n * f(8); //=> true\n *\n * R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55)\n * R.either([false, false, 'a'], [11]) // => [11, 11, \"a\"]\n */\nvar either = /*#__PURE__*/_curry2(function either(f, g) {\n return _isFunction(f) ? function _either() {\n return f.apply(this, arguments) || g.apply(this, arguments);\n } : lift(or)(f, g);\n});\nexport default either;","import _curry1 from './internal/_curry1.js';\nimport _isArguments from './internal/_isArguments.js';\nimport _isArray from './internal/_isArray.js';\nimport _isObject from './internal/_isObject.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns the empty value of its argument's type. Ramda defines the empty\n * value of Array (`[]`), Object (`{}`), String (`''`), and Arguments. Other\n * types are supported if they define `.empty`,\n * `.prototype.empty` or implement the\n * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).\n *\n * Dispatches to the `empty` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> a\n * @param {*} x\n * @return {*}\n * @example\n *\n * R.empty(Just(42)); //=> Nothing()\n * R.empty([1, 2, 3]); //=> []\n * R.empty('unicorns'); //=> ''\n * R.empty({x: 1, y: 2}); //=> {}\n */\nvar empty = /*#__PURE__*/_curry1(function empty(x) {\n return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {\n return arguments;\n }() : void 0 // else\n ;\n});\nexport default empty;","import _curry2 from './internal/_curry2.js';\nimport equals from './equals.js';\nimport takeLast from './takeLast.js';\n\n/**\n * Checks if a list ends with the provided sublist.\n *\n * Similarly, checks if a string ends with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -> [a] -> Boolean\n * @sig String -> String -> Boolean\n * @param {*} suffix\n * @param {*} list\n * @return {Boolean}\n * @see R.startsWith\n * @example\n *\n * R.endsWith('c', 'abc') //=> true\n * R.endsWith('b', 'abc') //=> false\n * R.endsWith(['c'], ['a', 'b', 'c']) //=> true\n * R.endsWith(['b'], ['a', 'b', 'c']) //=> false\n */\nvar endsWith = /*#__PURE__*/_curry2(function (suffix, list) {\n return equals(takeLast(suffix.length, list), suffix);\n});\nexport default endsWith;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\n\n/**\n * Takes a function and two values in its domain and returns `true` if the\n * values map to the same value in the codomain; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Relation\n * @sig (a -> b) -> a -> a -> Boolean\n * @param {Function} f\n * @param {*} x\n * @param {*} y\n * @return {Boolean}\n * @example\n *\n * R.eqBy(Math.abs, 5, -5); //=> true\n */\nvar eqBy = /*#__PURE__*/_curry3(function eqBy(f, x, y) {\n return equals(f(x), f(y));\n});\nexport default eqBy;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\n\n/**\n * Reports whether two objects have the same value, in [`R.equals`](#equals)\n * terms, for the specified property. Useful as a curried predicate.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig k -> {k: v} -> {k: v} -> Boolean\n * @param {String} prop The name of the property to compare\n * @param {Object} obj1\n * @param {Object} obj2\n * @return {Boolean}\n *\n * @example\n *\n * const o1 = { a: 1, b: 2, c: 3, d: 4 };\n * const o2 = { a: 10, b: 20, c: 3, d: 40 };\n * R.eqProps('a', o1, o2); //=> false\n * R.eqProps('c', o1, o2); //=> true\n */\nvar eqProps = /*#__PURE__*/_curry3(function eqProps(prop, obj1, obj2) {\n return equals(obj1[prop], obj2[prop]);\n});\nexport default eqProps;","import _curry2 from './internal/_curry2.js';\nimport _equals from './internal/_equals.js';\n\n/**\n * Returns `true` if its arguments are equivalent, `false` otherwise. Handles\n * cyclical data structures.\n *\n * Dispatches symmetrically to the `equals` methods of both arguments, if\n * present.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> b -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * R.equals(1, 1); //=> true\n * R.equals(1, '1'); //=> false\n * R.equals([1, 2, 3], [1, 2, 3]); //=> true\n *\n * const a = {}; a.v = a;\n * const b = {}; b.v = b;\n * R.equals(a, b); //=> true\n */\nvar equals = /*#__PURE__*/_curry2(function equals(a, b) {\n return _equals(a, b, [], []);\n});\nexport default equals;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new object by recursively evolving a shallow copy of `object`,\n * according to the `transformation` functions. All non-primitive properties\n * are copied by reference.\n *\n * A `transformation` function will not be invoked if its corresponding key\n * does not exist in the evolved object.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {k: (v -> v)} -> {k: v} -> {k: v}\n * @param {Object} transformations The object specifying transformation functions to apply\n * to the object.\n * @param {Object} object The object to be transformed.\n * @return {Object} The transformed object.\n * @example\n *\n * const tomato = {firstName: ' Tomato ', data: {elapsed: 100, remaining: 1400}, id:123};\n * const transformations = {\n * firstName: R.trim,\n * lastName: R.trim, // Will not get invoked.\n * data: {elapsed: R.add(1), remaining: R.add(-1)}\n * };\n * R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123}\n */\nvar evolve = /*#__PURE__*/_curry2(function evolve(transformations, object) {\n var result = object instanceof Array ? [] : {};\n var transformation, key, type;\n for (key in object) {\n transformation = transformations[key];\n type = typeof transformation;\n result[key] = type === 'function' ? transformation(object[key]) : transformation && type === 'object' ? evolve(transformation, object[key]) : object[key];\n }\n return result;\n});\nexport default evolve;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _filter from './internal/_filter.js';\nimport _isObject from './internal/_isObject.js';\nimport _reduce from './internal/_reduce.js';\nimport _xfilter from './internal/_xfilter.js';\nimport keys from './keys.js';\n\n/**\n * Takes a predicate and a `Filterable`, and returns a new filterable of the\n * same type containing the members of the given filterable which satisfy the\n * given predicate. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * Dispatches to the `filter` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array} Filterable\n * @see R.reject, R.transduce, R.addIndex\n * @example\n *\n * const isEven = n => n % 2 === 0;\n *\n * R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar filter = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['filter'], _xfilter, function (pred, filterable) {\n return _isObject(filterable) ? _reduce(function (acc, key) {\n if (pred(filterable[key])) {\n acc[key] = filterable[key];\n }\n return acc;\n }, {}, keys(filterable)) :\n // else\n _filter(pred, filterable);\n}));\nexport default filter;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfind from './internal/_xfind.js';\n\n/**\n * Returns the first element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Dispatches to the `find` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.find(R.propEq('a', 2))(xs); //=> {a: 2}\n * R.find(R.propEq('a', 4))(xs); //=> undefined\n */\nvar find = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['find'], _xfind, function find(fn, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (fn(list[idx])) {\n return list[idx];\n }\n idx += 1;\n }\n}));\nexport default find;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfindIndex from './internal/_xfindIndex.js';\n\n/**\n * Returns the index of the first element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1}, {a: 2}, {a: 3}];\n * R.findIndex(R.propEq('a', 2))(xs); //=> 1\n * R.findIndex(R.propEq('a', 4))(xs); //=> -1\n */\nvar findIndex = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindIndex, function findIndex(fn, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n if (fn(list[idx])) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}));\nexport default findIndex;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfindLast from './internal/_xfindLast.js';\n\n/**\n * Returns the last element of the list which matches the predicate, or\n * `undefined` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> a | undefined\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Object} The element found, or `undefined`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n * R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1}\n * R.findLast(R.propEq('a', 4))(xs); //=> undefined\n */\nvar findLast = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindLast, function findLast(fn, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n if (fn(list[idx])) {\n return list[idx];\n }\n idx -= 1;\n }\n}));\nexport default findLast;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xfindLastIndex from './internal/_xfindLastIndex.js';\n\n/**\n * Returns the index of the last element of the list which matches the\n * predicate, or `-1` if no element matches.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> Boolean) -> [a] -> Number\n * @param {Function} fn The predicate function used to determine if the element is the\n * desired one.\n * @param {Array} list The array to consider.\n * @return {Number} The index of the element found, or `-1`.\n * @see R.transduce\n * @example\n *\n * const xs = [{a: 1, b: 0}, {a:1, b: 1}];\n * R.findLastIndex(R.propEq('a', 1))(xs); //=> 1\n * R.findLastIndex(R.propEq('a', 4))(xs); //=> -1\n */\nvar findLastIndex = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n if (fn(list[idx])) {\n return idx;\n }\n idx -= 1;\n }\n return -1;\n}));\nexport default findLastIndex;","import _curry1 from './internal/_curry1.js';\nimport _makeFlat from './internal/_makeFlat.js';\n\n/**\n * Returns a new list by pulling every item out of it (and all its sub-arrays)\n * and putting them in a new array, depth-first.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b]\n * @param {Array} list The array to consider.\n * @return {Array} The flattened list.\n * @see R.unnest\n * @example\n *\n * R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);\n * //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\n */\nvar flatten = /*#__PURE__*/_curry1( /*#__PURE__*/_makeFlat(true));\nexport default flatten;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\n\n/**\n * Returns a new function much like the supplied one, except that the first two\n * arguments' order is reversed.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z)\n * @param {Function} fn The function to invoke with its first two parameters reversed.\n * @return {*} The result of invoking `fn` with its first two parameters' order reversed.\n * @example\n *\n * const mergeThree = (a, b, c) => [].concat(a, b, c);\n *\n * mergeThree(1, 2, 3); //=> [1, 2, 3]\n *\n * R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]\n * @symb R.flip(f)(a, b, c) = f(b, a, c)\n */\nvar flip = /*#__PURE__*/_curry1(function flip(fn) {\n return curryN(fn.length, function (a, b) {\n var args = Array.prototype.slice.call(arguments, 0);\n args[0] = b;\n args[1] = a;\n return fn.apply(this, args);\n });\n});\nexport default flip;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Iterate over an input `list`, calling a provided function `fn` for each\n * element in the list.\n *\n * `fn` receives one argument: *(value)*.\n *\n * Note: `R.forEach` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.forEach` method. For more\n * details on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description\n *\n * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns\n * the original array. In some libraries this function is named `each`.\n *\n * Dispatches to the `forEach` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig (a -> *) -> [a] -> [a]\n * @param {Function} fn The function to invoke. Receives one argument, `value`.\n * @param {Array} list The list to iterate over.\n * @return {Array} The original list.\n * @see R.addIndex\n * @example\n *\n * const printXPlusFive = x => console.log(x + 5);\n * R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3]\n * // logs 6\n * // logs 7\n * // logs 8\n * @symb R.forEach(f, [a, b, c]) = [a, b, c]\n */\nvar forEach = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('forEach', function forEach(fn, list) {\n var len = list.length;\n var idx = 0;\n while (idx < len) {\n fn(list[idx]);\n idx += 1;\n }\n return list;\n}));\nexport default forEach;","import _curry2 from './internal/_curry2.js';\nimport keys from './keys.js';\n\n/**\n * Iterate over an input `object`, calling a provided function `fn` for each\n * key and value in the object.\n *\n * `fn` receives three argument: *(value, key, obj)*.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Object\n * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a\n * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`.\n * @param {Object} obj The object to iterate over.\n * @return {Object} The original object.\n * @example\n *\n * const printKeyConcatValue = (value, key) => console.log(key + ':' + value);\n * R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2}\n * // logs x:1\n * // logs y:2\n * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b}\n */\nvar forEachObjIndexed = /*#__PURE__*/_curry2(function forEachObjIndexed(fn, obj) {\n var keyList = keys(obj);\n var idx = 0;\n while (idx < keyList.length) {\n var key = keyList[idx];\n fn(obj[key], key, obj);\n idx += 1;\n }\n return obj;\n});\nexport default forEachObjIndexed;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Creates a new object from a list key-value pairs. If a key appears in\n * multiple pairs, the rightmost pair is included in the object.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [[k,v]] -> {k: v}\n * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object.\n * @return {Object} The object made by pairing up `keys` and `values`.\n * @see R.toPairs, R.pair\n * @example\n *\n * R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3}\n */\nvar fromPairs = /*#__PURE__*/_curry1(function fromPairs(pairs) {\n var result = {};\n var idx = 0;\n while (idx < pairs.length) {\n result[pairs[idx][0]] = pairs[idx][1];\n idx += 1;\n }\n return result;\n});\nexport default fromPairs;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry2 from './internal/_curry2.js';\nimport reduceBy from './reduceBy.js';\n\n/**\n * Splits a list into sub-lists stored in an object, based on the result of\n * calling a String-returning function on each element, and grouping the\n * results according to values returned.\n *\n * Dispatches to the `groupBy` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> String) -> [a] -> {String: [a]}\n * @param {Function} fn Function :: a -> String\n * @param {Array} list The array to group\n * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements\n * that produced that key when passed to `fn`.\n * @see R.reduceBy, R.transduce\n * @example\n *\n * const byGrade = R.groupBy(function(student) {\n * const score = student.score;\n * return score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A';\n * });\n * const students = [{name: 'Abby', score: 84},\n * {name: 'Eddy', score: 58},\n * // ...\n * {name: 'Jack', score: 69}];\n * byGrade(students);\n * // {\n * // 'A': [{name: 'Dianne', score: 99}],\n * // 'B': [{name: 'Abby', score: 84}]\n * // // ...,\n * // 'F': [{name: 'Eddy', score: 58}]\n * // }\n */\nvar groupBy = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('groupBy', /*#__PURE__*/reduceBy(function (acc, item) {\n if (acc == null) {\n acc = [];\n }\n acc.push(item);\n return acc;\n}, null)));\nexport default groupBy;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes a list and returns a list of lists where each sublist's elements are\n * all satisfied pairwise comparison according to the provided function.\n * Only adjacent elements are passed to the comparison function.\n *\n * @func\n * @memberOf R\n * @since v0.21.0\n * @category List\n * @sig ((a, a) → Boolean) → [a] → [[a]]\n * @param {Function} fn Function for determining whether two given (adjacent)\n * elements should be in the same group\n * @param {Array} list The array to group. Also accepts a string, which will be\n * treated as a list of characters.\n * @return {List} A list that contains sublists of elements,\n * whose concatenations are equal to the original list.\n * @example\n *\n * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]]\n *\n * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21])\n * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]]\n *\n * R.groupWith(R.eqBy(isVowel), 'aestiou')\n * //=> ['ae', 'st', 'iou']\n */\nvar groupWith = /*#__PURE__*/_curry2(function (fn, list) {\n var res = [];\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n var nextidx = idx + 1;\n while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) {\n nextidx += 1;\n }\n res.push(list.slice(idx, nextidx));\n idx = nextidx;\n }\n return res;\n});\nexport default groupWith;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is greater than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.lt\n * @example\n *\n * R.gt(2, 1); //=> true\n * R.gt(2, 2); //=> false\n * R.gt(2, 3); //=> false\n * R.gt('a', 'z'); //=> false\n * R.gt('z', 'a'); //=> true\n */\nvar gt = /*#__PURE__*/_curry2(function gt(a, b) {\n return a > b;\n});\nexport default gt;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is greater than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.lte\n * @example\n *\n * R.gte(2, 1); //=> true\n * R.gte(2, 2); //=> true\n * R.gte(2, 3); //=> false\n * R.gte('a', 'z'); //=> false\n * R.gte('z', 'a'); //=> true\n */\nvar gte = /*#__PURE__*/_curry2(function gte(a, b) {\n return a >= b;\n});\nexport default gte;","import _curry2 from './internal/_curry2.js';\nimport hasPath from './hasPath.js';\n\n/**\n * Returns whether or not an object has an own property with the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -> {s: x} -> Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n * const hasName = R.has('name');\n * hasName({name: 'alice'}); //=> true\n * hasName({name: 'bob'}); //=> true\n * hasName({}); //=> false\n *\n * const point = {x: 0, y: 0};\n * const pointHas = R.has(R.__, point);\n * pointHas('x'); //=> true\n * pointHas('y'); //=> true\n * pointHas('z'); //=> false\n */\nvar has = /*#__PURE__*/_curry2(function has(prop, obj) {\n return hasPath([prop], obj);\n});\nexport default has;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns whether or not an object or its prototype chain has a property with\n * the specified name\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Object\n * @sig s -> {s: x} -> Boolean\n * @param {String} prop The name of the property to check for.\n * @param {Object} obj The object to query.\n * @return {Boolean} Whether the property exists.\n * @example\n *\n * function Rectangle(width, height) {\n * this.width = width;\n * this.height = height;\n * }\n * Rectangle.prototype.area = function() {\n * return this.width * this.height;\n * };\n *\n * const square = new Rectangle(2, 2);\n * R.hasIn('width', square); //=> true\n * R.hasIn('area', square); //=> true\n */\nvar hasIn = /*#__PURE__*/_curry2(function hasIn(prop, obj) {\n return prop in obj;\n});\nexport default hasIn;","import _curry2 from './internal/_curry2.js';\nimport _has from './internal/_has.js';\n\n/**\n * Returns whether or not a path exists in an object. Only the object's\n * own properties are checked.\n *\n * @func\n * @memberOf R\n * @since v0.26.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> Boolean\n * @param {Array} path The path to use.\n * @param {Object} obj The object to check the path in.\n * @return {Boolean} Whether the path exists.\n * @see R.has\n * @example\n *\n * R.hasPath(['a', 'b'], {a: {b: 2}}); // => true\n * R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true\n * R.hasPath(['a', 'b'], {a: {c: 2}}); // => false\n * R.hasPath(['a', 'b'], {}); // => false\n */\nvar hasPath = /*#__PURE__*/_curry2(function hasPath(_path, obj) {\n if (_path.length === 0) {\n return false;\n }\n var val = obj;\n var idx = 0;\n while (idx < _path.length) {\n if (_has(_path[idx], val)) {\n val = val[_path[idx]];\n idx += 1;\n } else {\n return false;\n }\n }\n return true;\n});\nexport default hasPath;","import nth from './nth.js';\n\n/**\n * Returns the first element of the given list or string. In some libraries\n * this function is named `first`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {Array|String} list\n * @return {*}\n * @see R.tail, R.init, R.last\n * @example\n *\n * R.head(['fi', 'fo', 'fum']); //=> 'fi'\n * R.head([]); //=> undefined\n *\n * R.head('abc'); //=> 'a'\n * R.head(''); //=> ''\n */\nvar head = /*#__PURE__*/nth(0);\nexport default head;","import _objectIs from './internal/_objectIs.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns true if its arguments are identical, false otherwise. Values are\n * identical if they reference the same memory. `NaN` is identical to `NaN`;\n * `0` and `-0` are not identical.\n *\n * Note this is merely a curried version of ES6 `Object.is`.\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category Relation\n * @sig a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @example\n *\n * const o = {};\n * R.identical(o, o); //=> true\n * R.identical(1, 1); //=> true\n * R.identical(1, '1'); //=> false\n * R.identical([], []); //=> false\n * R.identical(0, -0); //=> false\n * R.identical(NaN, NaN); //=> true\n */\nvar identical = /*#__PURE__*/_curry2(_objectIs);\nexport default identical;","import _curry1 from './internal/_curry1.js';\nimport _identity from './internal/_identity.js';\n\n/**\n * A function that does nothing but return the parameter supplied to it. Good\n * as a default or placeholder function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig a -> a\n * @param {*} x The value to return.\n * @return {*} The input value, `x`.\n * @example\n *\n * R.identity(1); //=> 1\n *\n * const obj = {};\n * R.identity(obj) === obj; //=> true\n * @symb R.identity(a) = a\n */\nvar identity = /*#__PURE__*/_curry1(_identity);\nexport default identity;","import _curry3 from './internal/_curry3.js';\nimport curryN from './curryN.js';\n\n/**\n * Creates a function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Logic\n * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *)\n * @param {Function} condition A predicate function\n * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.\n * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.\n * @return {Function} A new function that will process either the `onTrue` or the `onFalse`\n * function depending upon the result of the `condition` predicate.\n * @see R.unless, R.when, R.cond\n * @example\n *\n * const incCount = R.ifElse(\n * R.has('count'),\n * R.over(R.lensProp('count'), R.inc),\n * R.assoc('count', 1)\n * );\n * incCount({}); //=> { count: 1 }\n * incCount({ count: 1 }); //=> { count: 2 }\n */\nvar ifElse = /*#__PURE__*/_curry3(function ifElse(condition, onTrue, onFalse) {\n return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {\n return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);\n });\n});\nexport default ifElse;","import add from './add.js';\n\n/**\n * Increments its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number} n + 1\n * @see R.dec\n * @example\n *\n * R.inc(42); //=> 43\n */\nvar inc = /*#__PURE__*/add(1);\nexport default inc;","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the specified value is equal, in [`R.equals`](#equals)\n * terms, to at least one element of the given list; `false` otherwise.\n * Works also with strings.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Boolean\n * @param {Object} a The item to compare against.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.\n * @see R.any\n * @example\n *\n * R.includes(3, [1, 2, 3]); //=> true\n * R.includes(4, [1, 2, 3]); //=> false\n * R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true\n * R.includes([42], [[42]]); //=> true\n * R.includes('ba', 'banana'); //=>true\n */\nvar includes = /*#__PURE__*/_curry2(_includes);\nexport default includes;","export { default as F } from './F.js';\nexport { default as T } from './T.js';\nexport { default as __ } from './__.js';\nexport { default as add } from './add.js';\nexport { default as addIndex } from './addIndex.js';\nexport { default as adjust } from './adjust.js';\nexport { default as all } from './all.js';\nexport { default as allPass } from './allPass.js';\nexport { default as always } from './always.js';\nexport { default as and } from './and.js';\nexport { default as any } from './any.js';\nexport { default as anyPass } from './anyPass.js';\nexport { default as ap } from './ap.js';\nexport { default as aperture } from './aperture.js';\nexport { default as append } from './append.js';\nexport { default as apply } from './apply.js';\nexport { default as applySpec } from './applySpec.js';\nexport { default as applyTo } from './applyTo.js';\nexport { default as ascend } from './ascend.js';\nexport { default as assoc } from './assoc.js';\nexport { default as assocPath } from './assocPath.js';\nexport { default as binary } from './binary.js';\nexport { default as bind } from './bind.js';\nexport { default as both } from './both.js';\nexport { default as call } from './call.js';\nexport { default as chain } from './chain.js';\nexport { default as clamp } from './clamp.js';\nexport { default as clone } from './clone.js';\nexport { default as comparator } from './comparator.js';\nexport { default as complement } from './complement.js';\nexport { default as compose } from './compose.js';\nexport { default as composeK } from './composeK.js';\nexport { default as composeP } from './composeP.js';\nexport { default as composeWith } from './composeWith.js';\nexport { default as concat } from './concat.js';\nexport { default as cond } from './cond.js';\nexport { default as construct } from './construct.js';\nexport { default as constructN } from './constructN.js';\nexport { default as contains } from './contains.js';\nexport { default as converge } from './converge.js';\nexport { default as countBy } from './countBy.js';\nexport { default as curry } from './curry.js';\nexport { default as curryN } from './curryN.js';\nexport { default as dec } from './dec.js';\nexport { default as defaultTo } from './defaultTo.js';\nexport { default as descend } from './descend.js';\nexport { default as difference } from './difference.js';\nexport { default as differenceWith } from './differenceWith.js';\nexport { default as dissoc } from './dissoc.js';\nexport { default as dissocPath } from './dissocPath.js';\nexport { default as divide } from './divide.js';\nexport { default as drop } from './drop.js';\nexport { default as dropLast } from './dropLast.js';\nexport { default as dropLastWhile } from './dropLastWhile.js';\nexport { default as dropRepeats } from './dropRepeats.js';\nexport { default as dropRepeatsWith } from './dropRepeatsWith.js';\nexport { default as dropWhile } from './dropWhile.js';\nexport { default as either } from './either.js';\nexport { default as empty } from './empty.js';\nexport { default as endsWith } from './endsWith.js';\nexport { default as eqBy } from './eqBy.js';\nexport { default as eqProps } from './eqProps.js';\nexport { default as equals } from './equals.js';\nexport { default as evolve } from './evolve.js';\nexport { default as filter } from './filter.js';\nexport { default as find } from './find.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findLast } from './findLast.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as flatten } from './flatten.js';\nexport { default as flip } from './flip.js';\nexport { default as forEach } from './forEach.js';\nexport { default as forEachObjIndexed } from './forEachObjIndexed.js';\nexport { default as fromPairs } from './fromPairs.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as groupWith } from './groupWith.js';\nexport { default as gt } from './gt.js';\nexport { default as gte } from './gte.js';\nexport { default as has } from './has.js';\nexport { default as hasIn } from './hasIn.js';\nexport { default as hasPath } from './hasPath.js';\nexport { default as head } from './head.js';\nexport { default as identical } from './identical.js';\nexport { default as identity } from './identity.js';\nexport { default as ifElse } from './ifElse.js';\nexport { default as inc } from './inc.js';\nexport { default as includes } from './includes.js';\nexport { default as indexBy } from './indexBy.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as init } from './init.js';\nexport { default as innerJoin } from './innerJoin.js';\nexport { default as insert } from './insert.js';\nexport { default as insertAll } from './insertAll.js';\nexport { default as intersection } from './intersection.js';\nexport { default as intersperse } from './intersperse.js';\nexport { default as into } from './into.js';\nexport { default as invert } from './invert.js';\nexport { default as invertObj } from './invertObj.js';\nexport { default as invoker } from './invoker.js';\nexport { default as is } from './is.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isNil } from './isNil.js';\nexport { default as join } from './join.js';\nexport { default as juxt } from './juxt.js';\nexport { default as keys } from './keys.js';\nexport { default as keysIn } from './keysIn.js';\nexport { default as last } from './last.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as length } from './length.js';\nexport { default as lens } from './lens.js';\nexport { default as lensIndex } from './lensIndex.js';\nexport { default as lensPath } from './lensPath.js';\nexport { default as lensProp } from './lensProp.js';\nexport { default as lift } from './lift.js';\nexport { default as liftN } from './liftN.js';\nexport { default as lt } from './lt.js';\nexport { default as lte } from './lte.js';\nexport { default as map } from './map.js';\nexport { default as mapAccum } from './mapAccum.js';\nexport { default as mapAccumRight } from './mapAccumRight.js';\nexport { default as mapObjIndexed } from './mapObjIndexed.js';\nexport { default as match } from './match.js';\nexport { default as mathMod } from './mathMod.js';\nexport { default as max } from './max.js';\nexport { default as maxBy } from './maxBy.js';\nexport { default as mean } from './mean.js';\nexport { default as median } from './median.js';\nexport { default as memoizeWith } from './memoizeWith.js';\nexport { default as merge } from './merge.js';\nexport { default as mergeAll } from './mergeAll.js';\nexport { default as mergeDeepLeft } from './mergeDeepLeft.js';\nexport { default as mergeDeepRight } from './mergeDeepRight.js';\nexport { default as mergeDeepWith } from './mergeDeepWith.js';\nexport { default as mergeDeepWithKey } from './mergeDeepWithKey.js';\nexport { default as mergeLeft } from './mergeLeft.js';\nexport { default as mergeRight } from './mergeRight.js';\nexport { default as mergeWith } from './mergeWith.js';\nexport { default as mergeWithKey } from './mergeWithKey.js';\nexport { default as min } from './min.js';\nexport { default as minBy } from './minBy.js';\nexport { default as modulo } from './modulo.js';\nexport { default as move } from './move.js';\nexport { default as multiply } from './multiply.js';\nexport { default as nAry } from './nAry.js';\nexport { default as negate } from './negate.js';\nexport { default as none } from './none.js';\nexport { default as not } from './not.js';\nexport { default as nth } from './nth.js';\nexport { default as nthArg } from './nthArg.js';\nexport { default as o } from './o.js';\nexport { default as objOf } from './objOf.js';\nexport { default as of } from './of.js';\nexport { default as omit } from './omit.js';\nexport { default as once } from './once.js';\nexport { default as or } from './or.js';\nexport { default as otherwise } from './otherwise.js';\nexport { default as over } from './over.js';\nexport { default as pair } from './pair.js';\nexport { default as partial } from './partial.js';\nexport { default as partialRight } from './partialRight.js';\nexport { default as partition } from './partition.js';\nexport { default as path } from './path.js';\nexport { default as pathEq } from './pathEq.js';\nexport { default as pathOr } from './pathOr.js';\nexport { default as pathSatisfies } from './pathSatisfies.js';\nexport { default as pick } from './pick.js';\nexport { default as pickAll } from './pickAll.js';\nexport { default as pickBy } from './pickBy.js';\nexport { default as pipe } from './pipe.js';\nexport { default as pipeK } from './pipeK.js';\nexport { default as pipeP } from './pipeP.js';\nexport { default as pipeWith } from './pipeWith.js';\nexport { default as pluck } from './pluck.js';\nexport { default as prepend } from './prepend.js';\nexport { default as product } from './product.js';\nexport { default as project } from './project.js';\nexport { default as prop } from './prop.js';\nexport { default as propEq } from './propEq.js';\nexport { default as propIs } from './propIs.js';\nexport { default as propOr } from './propOr.js';\nexport { default as propSatisfies } from './propSatisfies.js';\nexport { default as props } from './props.js';\nexport { default as range } from './range.js';\nexport { default as reduce } from './reduce.js';\nexport { default as reduceBy } from './reduceBy.js';\nexport { default as reduceRight } from './reduceRight.js';\nexport { default as reduceWhile } from './reduceWhile.js';\nexport { default as reduced } from './reduced.js';\nexport { default as reject } from './reject.js';\nexport { default as remove } from './remove.js';\nexport { default as repeat } from './repeat.js';\nexport { default as replace } from './replace.js';\nexport { default as reverse } from './reverse.js';\nexport { default as scan } from './scan.js';\nexport { default as sequence } from './sequence.js';\nexport { default as set } from './set.js';\nexport { default as slice } from './slice.js';\nexport { default as sort } from './sort.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as sortWith } from './sortWith.js';\nexport { default as split } from './split.js';\nexport { default as splitAt } from './splitAt.js';\nexport { default as splitEvery } from './splitEvery.js';\nexport { default as splitWhen } from './splitWhen.js';\nexport { default as startsWith } from './startsWith.js';\nexport { default as subtract } from './subtract.js';\nexport { default as sum } from './sum.js';\nexport { default as symmetricDifference } from './symmetricDifference.js';\nexport { default as symmetricDifferenceWith } from './symmetricDifferenceWith.js';\nexport { default as tail } from './tail.js';\nexport { default as take } from './take.js';\nexport { default as takeLast } from './takeLast.js';\nexport { default as takeLastWhile } from './takeLastWhile.js';\nexport { default as takeWhile } from './takeWhile.js';\nexport { default as tap } from './tap.js';\nexport { default as test } from './test.js';\nexport { default as then } from './then.js';\nexport { default as times } from './times.js';\nexport { default as toLower } from './toLower.js';\nexport { default as toPairs } from './toPairs.js';\nexport { default as toPairsIn } from './toPairsIn.js';\nexport { default as toString } from './toString.js';\nexport { default as toUpper } from './toUpper.js';\nexport { default as transduce } from './transduce.js';\nexport { default as transpose } from './transpose.js';\nexport { default as traverse } from './traverse.js';\nexport { default as trim } from './trim.js';\nexport { default as tryCatch } from './tryCatch.js';\nexport { default as type } from './type.js';\nexport { default as unapply } from './unapply.js';\nexport { default as unary } from './unary.js';\nexport { default as uncurryN } from './uncurryN.js';\nexport { default as unfold } from './unfold.js';\nexport { default as union } from './union.js';\nexport { default as unionWith } from './unionWith.js';\nexport { default as uniq } from './uniq.js';\nexport { default as uniqBy } from './uniqBy.js';\nexport { default as uniqWith } from './uniqWith.js';\nexport { default as unless } from './unless.js';\nexport { default as unnest } from './unnest.js';\nexport { default as until } from './until.js';\nexport { default as update } from './update.js';\nexport { default as useWith } from './useWith.js';\nexport { default as values } from './values.js';\nexport { default as valuesIn } from './valuesIn.js';\nexport { default as view } from './view.js';\nexport { default as when } from './when.js';\nexport { default as where } from './where.js';\nexport { default as whereEq } from './whereEq.js';\nexport { default as without } from './without.js';\nexport { default as xprod } from './xprod.js';\nexport { default as zip } from './zip.js';\nexport { default as zipObj } from './zipObj.js';\nexport { default as zipWith } from './zipWith.js';\nexport { default as thunkify } from './thunkify.js';","import reduceBy from './reduceBy.js';\n\n/**\n * Given a function that generates a key, turns a list of objects into an\n * object indexing the objects by the given key. Note that if multiple\n * objects generate the same value for the indexing key only the last value\n * will be included in the generated object.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (a -> String) -> [{k: v}] -> {k: {k: v}}\n * @param {Function} fn Function :: a -> String\n * @param {Array} array The array of objects to index\n * @return {Object} An object indexing each array element by the given property.\n * @example\n *\n * const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}];\n * R.indexBy(R.prop('id'), list);\n * //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}}\n */\nvar indexBy = /*#__PURE__*/reduceBy(function (acc, elem) {\n return elem;\n}, null);\nexport default indexBy;","import _curry2 from './internal/_curry2.js';\nimport _indexOf from './internal/_indexOf.js';\nimport _isArray from './internal/_isArray.js';\n\n/**\n * Returns the position of the first occurrence of an item in an array, or -1\n * if the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.lastIndexOf\n * @example\n *\n * R.indexOf(3, [1,2,3,4]); //=> 2\n * R.indexOf(10, [1,2,3,4]); //=> -1\n */\nvar indexOf = /*#__PURE__*/_curry2(function indexOf(target, xs) {\n return typeof xs.indexOf === 'function' && !_isArray(xs) ? xs.indexOf(target) : _indexOf(xs, target, 0);\n});\nexport default indexOf;","import slice from './slice.js';\n\n/**\n * Returns all but the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.last, R.head, R.tail\n * @example\n *\n * R.init([1, 2, 3]); //=> [1, 2]\n * R.init([1, 2]); //=> [1]\n * R.init([1]); //=> []\n * R.init([]); //=> []\n *\n * R.init('abc'); //=> 'ab'\n * R.init('ab'); //=> 'a'\n * R.init('a'); //=> ''\n * R.init(''); //=> ''\n */\nvar init = /*#__PURE__*/slice(0, -1);\nexport default init;","import _includesWith from './internal/_includesWith.js';\nimport _curry3 from './internal/_curry3.js';\nimport _filter from './internal/_filter.js';\n\n/**\n * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list\n * `xs'` comprising each of the elements of `xs` which is equal to one or more\n * elements of `ys` according to `pred`.\n *\n * `pred` must be a binary function expecting an element from each list.\n *\n * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should\n * not be significant, but since `xs'` is ordered the implementation guarantees\n * that its values are in the same order as they appear in `xs`. Duplicates are\n * not removed, so `xs'` may contain duplicates if `xs` contains duplicates.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Relation\n * @sig ((a, b) -> Boolean) -> [a] -> [b] -> [a]\n * @param {Function} pred\n * @param {Array} xs\n * @param {Array} ys\n * @return {Array}\n * @see R.intersection\n * @example\n *\n * R.innerJoin(\n * (record, id) => record.id === id,\n * [{id: 824, name: 'Richie Furay'},\n * {id: 956, name: 'Dewey Martin'},\n * {id: 313, name: 'Bruce Palmer'},\n * {id: 456, name: 'Stephen Stills'},\n * {id: 177, name: 'Neil Young'}],\n * [177, 456, 999]\n * );\n * //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}]\n */\nvar innerJoin = /*#__PURE__*/_curry3(function innerJoin(pred, xs, ys) {\n return _filter(function (x) {\n return _includesWith(pred, x, ys);\n }, xs);\n});\nexport default innerJoin;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Inserts the supplied element into the list, at the specified `index`. _Note that\n\n * this is not destructive_: it returns a copy of the list with the changes.\n * No lists have been harmed in the application of this function.\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -> a -> [a] -> [a]\n * @param {Number} index The position to insert the element\n * @param {*} elt The element to insert into the Array\n * @param {Array} list The list to insert into\n * @return {Array} A new Array with `elt` inserted at `index`.\n * @example\n *\n * R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4]\n */\nvar insert = /*#__PURE__*/_curry3(function insert(idx, elt, list) {\n idx = idx < list.length && idx >= 0 ? idx : list.length;\n var result = Array.prototype.slice.call(list, 0);\n result.splice(idx, 0, elt);\n return result;\n});\nexport default insert;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Inserts the sub-list into the list, at the specified `index`. _Note that this is not\n * destructive_: it returns a copy of the list with the changes.\n * No lists have been harmed in the application of this function.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category List\n * @sig Number -> [a] -> [a] -> [a]\n * @param {Number} index The position to insert the sub-list\n * @param {Array} elts The sub-list to insert into the Array\n * @param {Array} list The list to insert the sub-list into\n * @return {Array} A new Array with `elts` inserted starting at `index`.\n * @example\n *\n * R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4]\n */\nvar insertAll = /*#__PURE__*/_curry3(function insertAll(idx, elts, list) {\n idx = idx < list.length && idx >= 0 ? idx : list.length;\n return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx));\n});\nexport default insertAll;","import _includes from './_includes.js';\n\nvar _Set = /*#__PURE__*/function () {\n function _Set() {\n /* globals Set */\n this._nativeSet = typeof Set === 'function' ? new Set() : null;\n this._items = {};\n }\n\n // until we figure out why jsdoc chokes on this\n // @param item The item to add to the Set\n // @returns {boolean} true if the item did not exist prior, otherwise false\n //\n _Set.prototype.add = function (item) {\n return !hasOrAdd(item, true, this);\n };\n\n //\n // @param item The item to check for existence in the Set\n // @returns {boolean} true if the item exists in the Set, otherwise false\n //\n _Set.prototype.has = function (item) {\n return hasOrAdd(item, false, this);\n };\n\n //\n // Combines the logic for checking whether an item is a member of the set and\n // for adding a new item to the set.\n //\n // @param item The item to check or add to the Set instance.\n // @param shouldAdd If true, the item will be added to the set if it doesn't\n // already exist.\n // @param set The set instance to check or add to.\n // @return {boolean} true if the item already existed, otherwise false.\n //\n return _Set;\n}();\n\nfunction hasOrAdd(item, shouldAdd, set) {\n var type = typeof item;\n var prevSize, newSize;\n switch (type) {\n case 'string':\n case 'number':\n // distinguish between +0 and -0\n if (item === 0 && 1 / item === -Infinity) {\n if (set._items['-0']) {\n return true;\n } else {\n if (shouldAdd) {\n set._items['-0'] = true;\n }\n return false;\n }\n }\n // these types can all utilise the native Set\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = {};\n set._items[type][item] = true;\n }\n return false;\n } else if (item in set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][item] = true;\n }\n return false;\n }\n }\n\n case 'boolean':\n // set._items['boolean'] holds a two element array\n // representing [ falseExists, trueExists ]\n if (type in set._items) {\n var bIdx = item ? 1 : 0;\n if (set._items[type][bIdx]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type][bIdx] = true;\n }\n return false;\n }\n } else {\n if (shouldAdd) {\n set._items[type] = item ? [false, true] : [true, false];\n }\n return false;\n }\n\n case 'function':\n // compare functions for reference equality\n if (set._nativeSet !== null) {\n if (shouldAdd) {\n prevSize = set._nativeSet.size;\n set._nativeSet.add(item);\n newSize = set._nativeSet.size;\n return newSize === prevSize;\n } else {\n return set._nativeSet.has(item);\n }\n } else {\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n\n case 'undefined':\n if (set._items[type]) {\n return true;\n } else {\n if (shouldAdd) {\n set._items[type] = true;\n }\n return false;\n }\n\n case 'object':\n if (item === null) {\n if (!set._items['null']) {\n if (shouldAdd) {\n set._items['null'] = true;\n }\n return false;\n }\n return true;\n }\n /* falls through */\n default:\n // reduce the search size of heterogeneous sets by creating buckets\n // for each type.\n type = Object.prototype.toString.call(item);\n if (!(type in set._items)) {\n if (shouldAdd) {\n set._items[type] = [item];\n }\n return false;\n }\n // scan through all previously applied items\n if (!_includes(item, set._items[type])) {\n if (shouldAdd) {\n set._items[type].push(item);\n }\n return false;\n }\n return true;\n }\n}\n\n// A simple Set type that honours R.equals semantics\nexport default _Set;","export default function _aperture(n, list) {\n var idx = 0;\n var limit = list.length - (n - 1);\n var acc = new Array(limit >= 0 ? limit : 0);\n while (idx < limit) {\n acc[idx] = Array.prototype.slice.call(list, idx, idx + n);\n idx += 1;\n }\n return acc;\n}","export default function _arity(n, fn) {\n /* eslint-disable no-unused-vars */\n switch (n) {\n case 0:\n return function () {\n return fn.apply(this, arguments);\n };\n case 1:\n return function (a0) {\n return fn.apply(this, arguments);\n };\n case 2:\n return function (a0, a1) {\n return fn.apply(this, arguments);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.apply(this, arguments);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.apply(this, arguments);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.apply(this, arguments);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.apply(this, arguments);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.apply(this, arguments);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.apply(this, arguments);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.apply(this, arguments);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.apply(this, arguments);\n };\n default:\n throw new Error('First argument to _arity must be a non-negative integer no greater than ten');\n }\n}","export default function _arrayFromIterator(iter) {\n var list = [];\n var next;\n while (!(next = iter.next()).done) {\n list.push(next.value);\n }\n return list;\n}","import _isFunction from './_isFunction.js';\nimport _toString from './_toString.js';\n\nexport default function _assertPromise(name, p) {\n if (p == null || !_isFunction(p.then)) {\n throw new TypeError('`' + name + '` expected a Promise, received ' + _toString(p, []));\n }\n}","import _isArray from './_isArray.js';\n\n/**\n * This checks whether a function has a [methodname] function. If it isn't an\n * array it will execute that function otherwise it will default to the ramda\n * implementation.\n *\n * @private\n * @param {Function} fn ramda implemtation\n * @param {String} methodname property to check for a custom implementation\n * @return {Object} Whatever the return value of the method is.\n */\nexport default function _checkForMethod(methodname, fn) {\n return function () {\n var length = arguments.length;\n if (length === 0) {\n return fn();\n }\n var obj = arguments[length - 1];\n return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));\n };\n}","import _cloneRegExp from './_cloneRegExp.js';\nimport type from '../type.js';\n\n/**\n * Copies an object.\n *\n * @private\n * @param {*} value The value to be copied\n * @param {Array} refFrom Array containing the source references\n * @param {Array} refTo Array containing the copied source references\n * @param {Boolean} deep Whether or not to perform deep cloning.\n * @return {*} The copied value.\n */\nexport default function _clone(value, refFrom, refTo, deep) {\n var copy = function copy(copiedValue) {\n var len = refFrom.length;\n var idx = 0;\n while (idx < len) {\n if (value === refFrom[idx]) {\n return refTo[idx];\n }\n idx += 1;\n }\n refFrom[idx + 1] = value;\n refTo[idx + 1] = copiedValue;\n for (var key in value) {\n copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key];\n }\n return copiedValue;\n };\n switch (type(value)) {\n case 'Object':\n return copy({});\n case 'Array':\n return copy([]);\n case 'Date':\n return new Date(value.valueOf());\n case 'RegExp':\n return _cloneRegExp(value);\n default:\n return value;\n }\n}","export default function _cloneRegExp(pattern) {\n return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : ''));\n}","export default function _complement(f) {\n return function () {\n return !f.apply(this, arguments);\n };\n}","/**\n * Private `concat` function to merge two array-like objects.\n *\n * @private\n * @param {Array|Arguments} [set1=[]] An array-like object.\n * @param {Array|Arguments} [set2=[]] An array-like object.\n * @return {Array} A new, merged array.\n * @example\n *\n * _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]\n */\nexport default function _concat(set1, set2) {\n set1 = set1 || [];\n set2 = set2 || [];\n var idx;\n var len1 = set1.length;\n var len2 = set2.length;\n var result = [];\n\n idx = 0;\n while (idx < len1) {\n result[result.length] = set1[idx];\n idx += 1;\n }\n idx = 0;\n while (idx < len2) {\n result[result.length] = set2[idx];\n idx += 1;\n }\n return result;\n}","import _arity from './_arity.js';\nimport _curry2 from './_curry2.js';\n\nexport default function _createPartialApplicator(concat) {\n return _curry2(function (fn, args) {\n return _arity(Math.max(0, fn.length - args.length), function () {\n return fn.apply(this, concat(args, arguments));\n });\n });\n}","import _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal one-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry1(fn) {\n return function f1(a) {\n if (arguments.length === 0 || _isPlaceholder(a)) {\n return f1;\n } else {\n return fn.apply(this, arguments);\n }\n };\n}","import _curry1 from './_curry1.js';\nimport _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal two-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry2(fn) {\n return function f2(a, b) {\n switch (arguments.length) {\n case 0:\n return f2;\n case 1:\n return _isPlaceholder(a) ? f2 : _curry1(function (_b) {\n return fn(a, _b);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b);\n }) : fn(a, b);\n }\n };\n}","import _curry1 from './_curry1.js';\nimport _curry2 from './_curry2.js';\nimport _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Optimized internal three-arity curry function.\n *\n * @private\n * @category Function\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curry3(fn) {\n return function f3(a, b, c) {\n switch (arguments.length) {\n case 0:\n return f3;\n case 1:\n return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n });\n case 2:\n return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _curry1(function (_c) {\n return fn(a, b, _c);\n });\n default:\n return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {\n return fn(_a, _b, c);\n }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {\n return fn(_a, b, _c);\n }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {\n return fn(a, _b, _c);\n }) : _isPlaceholder(a) ? _curry1(function (_a) {\n return fn(_a, b, c);\n }) : _isPlaceholder(b) ? _curry1(function (_b) {\n return fn(a, _b, c);\n }) : _isPlaceholder(c) ? _curry1(function (_c) {\n return fn(a, b, _c);\n }) : fn(a, b, c);\n }\n };\n}","import _arity from './_arity.js';\nimport _isPlaceholder from './_isPlaceholder.js';\n\n/**\n * Internal curryN function.\n *\n * @private\n * @category Function\n * @param {Number} length The arity of the curried function.\n * @param {Array} received An array of arguments received thus far.\n * @param {Function} fn The function to curry.\n * @return {Function} The curried function.\n */\nexport default function _curryN(length, received, fn) {\n return function () {\n var combined = [];\n var argsIdx = 0;\n var left = length;\n var combinedIdx = 0;\n while (combinedIdx < received.length || argsIdx < arguments.length) {\n var result;\n if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {\n result = received[combinedIdx];\n } else {\n result = arguments[argsIdx];\n argsIdx += 1;\n }\n combined[combinedIdx] = result;\n if (!_isPlaceholder(result)) {\n left -= 1;\n }\n combinedIdx += 1;\n }\n return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));\n };\n}","import _isArray from './_isArray.js';\nimport _isTransformer from './_isTransformer.js';\n\n/**\n * Returns a function that dispatches with different strategies based on the\n * object in list position (last argument). If it is an array, executes [fn].\n * Otherwise, if it has a function with one of the given method names, it will\n * execute that function (functor case). Otherwise, if it is a transformer,\n * uses transducer [xf] to return a new transformer (transducer case).\n * Otherwise, it will default to executing [fn].\n *\n * @private\n * @param {Array} methodNames properties to check for a custom implementation\n * @param {Function} xf transducer to initialize if object is transformer\n * @param {Function} fn default ramda implementation\n * @return {Function} A function that dispatches on object in list position\n */\nexport default function _dispatchable(methodNames, xf, fn) {\n return function () {\n if (arguments.length === 0) {\n return fn();\n }\n var args = Array.prototype.slice.call(arguments, 0);\n var obj = args.pop();\n if (!_isArray(obj)) {\n var idx = 0;\n while (idx < methodNames.length) {\n if (typeof obj[methodNames[idx]] === 'function') {\n return obj[methodNames[idx]].apply(obj, args);\n }\n idx += 1;\n }\n if (_isTransformer(obj)) {\n var transducer = xf.apply(null, args);\n return transducer(obj);\n }\n }\n return fn.apply(this, arguments);\n };\n}","import take from '../take.js';\n\nexport default function dropLast(n, xs) {\n return take(n < xs.length ? xs.length - n : 0, xs);\n}","import slice from '../slice.js';\n\nexport default function dropLastWhile(pred, xs) {\n var idx = xs.length - 1;\n while (idx >= 0 && pred(xs[idx])) {\n idx -= 1;\n }\n return slice(0, idx + 1, xs);\n}","import _arrayFromIterator from './_arrayFromIterator.js';\nimport _includesWith from './_includesWith.js';\nimport _functionName from './_functionName.js';\nimport _has from './_has.js';\nimport _objectIs from './_objectIs.js';\nimport keys from '../keys.js';\nimport type from '../type.js';\n\n/**\n * private _uniqContentEquals function.\n * That function is checking equality of 2 iterator contents with 2 assumptions\n * - iterators lengths are the same\n * - iterators values are unique\n *\n * false-positive result will be returned for comparision of, e.g.\n * - [1,2,3] and [1,2,3,4]\n * - [1,1,1] and [1,2,3]\n * */\n\nfunction _uniqContentEquals(aIterator, bIterator, stackA, stackB) {\n var a = _arrayFromIterator(aIterator);\n var b = _arrayFromIterator(bIterator);\n\n function eq(_a, _b) {\n return _equals(_a, _b, stackA.slice(), stackB.slice());\n }\n\n // if *a* array contains any element that is not included in *b*\n return !_includesWith(function (b, aItem) {\n return !_includesWith(eq, aItem, b);\n }, b, a);\n}\n\nexport default function _equals(a, b, stackA, stackB) {\n if (_objectIs(a, b)) {\n return true;\n }\n\n var typeA = type(a);\n\n if (typeA !== type(b)) {\n return false;\n }\n\n if (a == null || b == null) {\n return false;\n }\n\n if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {\n return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);\n }\n\n if (typeof a.equals === 'function' || typeof b.equals === 'function') {\n return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);\n }\n\n switch (typeA) {\n case 'Arguments':\n case 'Array':\n case 'Object':\n if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {\n return a === b;\n }\n break;\n case 'Boolean':\n case 'Number':\n case 'String':\n if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {\n return false;\n }\n break;\n case 'Date':\n if (!_objectIs(a.valueOf(), b.valueOf())) {\n return false;\n }\n break;\n case 'Error':\n return a.name === b.name && a.message === b.message;\n case 'RegExp':\n if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {\n return false;\n }\n break;\n }\n\n var idx = stackA.length - 1;\n while (idx >= 0) {\n if (stackA[idx] === a) {\n return stackB[idx] === b;\n }\n idx -= 1;\n }\n\n switch (typeA) {\n case 'Map':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));\n case 'Set':\n if (a.size !== b.size) {\n return false;\n }\n\n return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));\n case 'Arguments':\n case 'Array':\n case 'Object':\n case 'Boolean':\n case 'Number':\n case 'String':\n case 'Date':\n case 'Error':\n case 'RegExp':\n case 'Int8Array':\n case 'Uint8Array':\n case 'Uint8ClampedArray':\n case 'Int16Array':\n case 'Uint16Array':\n case 'Int32Array':\n case 'Uint32Array':\n case 'Float32Array':\n case 'Float64Array':\n case 'ArrayBuffer':\n break;\n default:\n // Values of other types are only equal if identical.\n return false;\n }\n\n var keysA = keys(a);\n if (keysA.length !== keys(b).length) {\n return false;\n }\n\n var extendedStackA = stackA.concat([a]);\n var extendedStackB = stackB.concat([b]);\n\n idx = keysA.length - 1;\n while (idx >= 0) {\n var key = keysA[idx];\n if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {\n return false;\n }\n idx -= 1;\n }\n return true;\n}","export default function _filter(fn, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n\n while (idx < len) {\n if (fn(list[idx])) {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n}","import _forceReduced from './_forceReduced.js';\nimport _isArrayLike from './_isArrayLike.js';\nimport _reduce from './_reduce.js';\nimport _xfBase from './_xfBase.js';\n\nvar preservingReduced = function (xf) {\n return {\n '@@transducer/init': _xfBase.init,\n '@@transducer/result': function (result) {\n return xf['@@transducer/result'](result);\n },\n '@@transducer/step': function (result, input) {\n var ret = xf['@@transducer/step'](result, input);\n return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret;\n }\n };\n};\n\nvar _flatCat = function _xcat(xf) {\n var rxf = preservingReduced(xf);\n return {\n '@@transducer/init': _xfBase.init,\n '@@transducer/result': function (result) {\n return rxf['@@transducer/result'](result);\n },\n '@@transducer/step': function (result, input) {\n return !_isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input);\n }\n };\n};\n\nexport default _flatCat;","export default function _forceReduced(x) {\n return {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","export default function _functionName(f) {\n // String(x => x) evaluates to \"x => x\", so the pattern may not match.\n var match = String(f).match(/^function (\\w*)/);\n return match == null ? '' : match[1];\n}","export default function _has(prop, obj) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}","export default function _identity(x) {\n return x;\n}","import _indexOf from './_indexOf.js';\n\nexport default function _includes(a, list) {\n return _indexOf(list, a, 0) >= 0;\n}","export default function _includesWith(pred, x, list) {\n var idx = 0;\n var len = list.length;\n\n while (idx < len) {\n if (pred(x, list[idx])) {\n return true;\n }\n idx += 1;\n }\n return false;\n}","import equals from '../equals.js';\n\nexport default function _indexOf(list, a, idx) {\n var inf, item;\n // Array.prototype.indexOf doesn't exist below IE9\n if (typeof list.indexOf === 'function') {\n switch (typeof a) {\n case 'number':\n if (a === 0) {\n // manually crawl the list to distinguish between +0 and -0\n inf = 1 / a;\n while (idx < list.length) {\n item = list[idx];\n if (item === 0 && 1 / item === inf) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n } else if (a !== a) {\n // NaN\n while (idx < list.length) {\n item = list[idx];\n if (typeof item === 'number' && item !== item) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n }\n // non-zero numbers can utilise Set\n return list.indexOf(a, idx);\n\n // all these types can utilise Set\n case 'string':\n case 'boolean':\n case 'function':\n case 'undefined':\n return list.indexOf(a, idx);\n\n case 'object':\n if (a === null) {\n // null can utilise Set\n return list.indexOf(a, idx);\n }\n }\n }\n // anything else not covered above, defer to R.equals\n while (idx < list.length) {\n if (equals(list[idx], a)) {\n return idx;\n }\n idx += 1;\n }\n return -1;\n}","import _has from './_has.js';\n\nvar toString = Object.prototype.toString;\nvar _isArguments = /*#__PURE__*/function () {\n return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {\n return toString.call(x) === '[object Arguments]';\n } : function _isArguments(x) {\n return _has('callee', x);\n };\n}();\n\nexport default _isArguments;","/**\n * Tests whether or not an object is an array.\n *\n * @private\n * @param {*} val The object to test.\n * @return {Boolean} `true` if `val` is an array, `false` otherwise.\n * @example\n *\n * _isArray([]); //=> true\n * _isArray(null); //=> false\n * _isArray({}); //=> false\n */\nexport default Array.isArray || function _isArray(val) {\n return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';\n};","import _curry1 from './_curry1.js';\nimport _isArray from './_isArray.js';\nimport _isString from './_isString.js';\n\n/**\n * Tests whether or not an object is similar to an array.\n *\n * @private\n * @category Type\n * @category List\n * @sig * -> Boolean\n * @param {*} x The object to test.\n * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.\n * @example\n *\n * _isArrayLike([]); //=> true\n * _isArrayLike(true); //=> false\n * _isArrayLike({}); //=> false\n * _isArrayLike({length: 10}); //=> false\n * _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true\n */\nvar _isArrayLike = /*#__PURE__*/_curry1(function isArrayLike(x) {\n if (_isArray(x)) {\n return true;\n }\n if (!x) {\n return false;\n }\n if (typeof x !== 'object') {\n return false;\n }\n if (_isString(x)) {\n return false;\n }\n if (x.nodeType === 1) {\n return !!x.length;\n }\n if (x.length === 0) {\n return true;\n }\n if (x.length > 0) {\n return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);\n }\n return false;\n});\nexport default _isArrayLike;","export default function _isFunction(x) {\n return Object.prototype.toString.call(x) === '[object Function]';\n}","/**\n * Determine if the passed argument is an integer.\n *\n * @private\n * @param {*} n\n * @category Type\n * @return {Boolean}\n */\nexport default Number.isInteger || function _isInteger(n) {\n return n << 0 === n;\n};","export default function _isNumber(x) {\n return Object.prototype.toString.call(x) === '[object Number]';\n}","export default function _isObject(x) {\n return Object.prototype.toString.call(x) === '[object Object]';\n}","export default function _isPlaceholder(a) {\n return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;\n}","export default function _isRegExp(x) {\n return Object.prototype.toString.call(x) === '[object RegExp]';\n}","export default function _isString(x) {\n return Object.prototype.toString.call(x) === '[object String]';\n}","export default function _isTransformer(obj) {\n return obj != null && typeof obj['@@transducer/step'] === 'function';\n}","import _isArrayLike from './_isArrayLike.js';\n\n/**\n * `_makeFlat` is a helper function that returns a one-level or fully recursive\n * function based on the flag passed in.\n *\n * @private\n */\nexport default function _makeFlat(recursive) {\n return function flatt(list) {\n var value, jlen, j;\n var result = [];\n var idx = 0;\n var ilen = list.length;\n\n while (idx < ilen) {\n if (_isArrayLike(list[idx])) {\n value = recursive ? flatt(list[idx]) : list[idx];\n j = 0;\n jlen = value.length;\n while (j < jlen) {\n result[result.length] = value[j];\n j += 1;\n }\n } else {\n result[result.length] = list[idx];\n }\n idx += 1;\n }\n return result;\n };\n}","export default function _map(fn, functor) {\n var idx = 0;\n var len = functor.length;\n var result = Array(len);\n while (idx < len) {\n result[idx] = fn(functor[idx]);\n idx += 1;\n }\n return result;\n}","import _has from './_has.js';\n\n// Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\nfunction _objectAssign(target) {\n if (target == null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n var idx = 1;\n var length = arguments.length;\n while (idx < length) {\n var source = arguments[idx];\n if (source != null) {\n for (var nextKey in source) {\n if (_has(nextKey, source)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n idx += 1;\n }\n return output;\n}\n\nexport default typeof Object.assign === 'function' ? Object.assign : _objectAssign;","// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\nfunction _objectIs(a, b) {\n // SameValue algorithm\n if (a === b) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return a !== 0 || 1 / a === 1 / b;\n } else {\n // Step 6.a: NaN == NaN\n return a !== a && b !== b;\n }\n}\n\nexport default typeof Object.is === 'function' ? Object.is : _objectIs;","export default function _of(x) {\n return [x];\n}","export default function _pipe(f, g) {\n return function () {\n return g.call(this, f.apply(this, arguments));\n };\n}","export default function _pipeP(f, g) {\n return function () {\n var ctx = this;\n return f.apply(ctx, arguments).then(function (x) {\n return g.call(ctx, x);\n });\n };\n}","export default function _quote(s) {\n var escaped = s.replace(/\\\\/g, '\\\\\\\\').replace(/[\\b]/g, '\\\\b') // \\b matches word boundary; [\\b] matches backspace\n .replace(/\\f/g, '\\\\f').replace(/\\n/g, '\\\\n').replace(/\\r/g, '\\\\r').replace(/\\t/g, '\\\\t').replace(/\\v/g, '\\\\v').replace(/\\0/g, '\\\\0');\n\n return '\"' + escaped.replace(/\"/g, '\\\\\"') + '\"';\n}","import _isArrayLike from './_isArrayLike.js';\nimport _xwrap from './_xwrap.js';\nimport bind from '../bind.js';\n\nfunction _arrayReduce(xf, acc, list) {\n var idx = 0;\n var len = list.length;\n while (idx < len) {\n acc = xf['@@transducer/step'](acc, list[idx]);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n idx += 1;\n }\n return xf['@@transducer/result'](acc);\n}\n\nfunction _iterableReduce(xf, acc, iter) {\n var step = iter.next();\n while (!step.done) {\n acc = xf['@@transducer/step'](acc, step.value);\n if (acc && acc['@@transducer/reduced']) {\n acc = acc['@@transducer/value'];\n break;\n }\n step = iter.next();\n }\n return xf['@@transducer/result'](acc);\n}\n\nfunction _methodReduce(xf, acc, obj, methodName) {\n return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));\n}\n\nvar symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';\n\nexport default function _reduce(fn, acc, list) {\n if (typeof fn === 'function') {\n fn = _xwrap(fn);\n }\n if (_isArrayLike(list)) {\n return _arrayReduce(fn, acc, list);\n }\n if (typeof list['fantasy-land/reduce'] === 'function') {\n return _methodReduce(fn, acc, list, 'fantasy-land/reduce');\n }\n if (list[symIterator] != null) {\n return _iterableReduce(fn, acc, list[symIterator]());\n }\n if (typeof list.next === 'function') {\n return _iterableReduce(fn, acc, list);\n }\n if (typeof list.reduce === 'function') {\n return _methodReduce(fn, acc, list, 'reduce');\n }\n\n throw new TypeError('reduce: list must be array or iterable');\n}","export default function _reduced(x) {\n return x && x['@@transducer/reduced'] ? x : {\n '@@transducer/value': x,\n '@@transducer/reduced': true\n };\n}","import _objectAssign from './_objectAssign.js';\nimport _identity from './_identity.js';\nimport _isArrayLike from './_isArrayLike.js';\nimport _isTransformer from './_isTransformer.js';\nimport objOf from '../objOf.js';\n\nvar _stepCatArray = {\n '@@transducer/init': Array,\n '@@transducer/step': function (xs, x) {\n xs.push(x);\n return xs;\n },\n '@@transducer/result': _identity\n};\nvar _stepCatString = {\n '@@transducer/init': String,\n '@@transducer/step': function (a, b) {\n return a + b;\n },\n '@@transducer/result': _identity\n};\nvar _stepCatObject = {\n '@@transducer/init': Object,\n '@@transducer/step': function (result, input) {\n return _objectAssign(result, _isArrayLike(input) ? objOf(input[0], input[1]) : input);\n },\n '@@transducer/result': _identity\n};\n\nexport default function _stepCat(obj) {\n if (_isTransformer(obj)) {\n return obj;\n }\n if (_isArrayLike(obj)) {\n return _stepCatArray;\n }\n if (typeof obj === 'string') {\n return _stepCatString;\n }\n if (typeof obj === 'object') {\n return _stepCatObject;\n }\n throw new Error('Cannot create transformer for ' + obj);\n}","/**\n * Polyfill from .\n */\nvar pad = function pad(n) {\n return (n < 10 ? '0' : '') + n;\n};\n\nvar _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {\n return d.toISOString();\n} : function _toISOString(d) {\n return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';\n};\n\nexport default _toISOString;","import _includes from './_includes.js';\nimport _map from './_map.js';\nimport _quote from './_quote.js';\nimport _toISOString from './_toISOString.js';\nimport keys from '../keys.js';\nimport reject from '../reject.js';\n\nexport default function _toString(x, seen) {\n var recur = function recur(y) {\n var xs = seen.concat([x]);\n return _includes(y, xs) ? '' : _toString(y, xs);\n };\n\n // mapPairs :: (Object, [String]) -> [String]\n var mapPairs = function (obj, keys) {\n return _map(function (k) {\n return _quote(k) + ': ' + recur(obj[k]);\n }, keys.slice().sort());\n };\n\n switch (Object.prototype.toString.call(x)) {\n case '[object Arguments]':\n return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';\n case '[object Array]':\n return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {\n return (/^\\d+$/.test(k)\n );\n }, keys(x)))).join(', ') + ']';\n case '[object Boolean]':\n return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();\n case '[object Date]':\n return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';\n case '[object Null]':\n return 'null';\n case '[object Number]':\n return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);\n case '[object String]':\n return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);\n case '[object Undefined]':\n return 'undefined';\n default:\n if (typeof x.toString === 'function') {\n var repr = x.toString();\n if (repr !== '[object Object]') {\n return repr;\n }\n }\n return '{' + mapPairs(x, keys(x)).join(', ') + '}';\n }\n}","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XAll = /*#__PURE__*/function () {\n function XAll(f, xf) {\n this.xf = xf;\n this.f = f;\n this.all = true;\n }\n XAll.prototype['@@transducer/init'] = _xfBase.init;\n XAll.prototype['@@transducer/result'] = function (result) {\n if (this.all) {\n result = this.xf['@@transducer/step'](result, true);\n }\n return this.xf['@@transducer/result'](result);\n };\n XAll.prototype['@@transducer/step'] = function (result, input) {\n if (!this.f(input)) {\n this.all = false;\n result = _reduced(this.xf['@@transducer/step'](result, false));\n }\n return result;\n };\n\n return XAll;\n}();\n\nvar _xall = /*#__PURE__*/_curry2(function _xall(f, xf) {\n return new XAll(f, xf);\n});\nexport default _xall;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XAny = /*#__PURE__*/function () {\n function XAny(f, xf) {\n this.xf = xf;\n this.f = f;\n this.any = false;\n }\n XAny.prototype['@@transducer/init'] = _xfBase.init;\n XAny.prototype['@@transducer/result'] = function (result) {\n if (!this.any) {\n result = this.xf['@@transducer/step'](result, false);\n }\n return this.xf['@@transducer/result'](result);\n };\n XAny.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.any = true;\n result = _reduced(this.xf['@@transducer/step'](result, true));\n }\n return result;\n };\n\n return XAny;\n}();\n\nvar _xany = /*#__PURE__*/_curry2(function _xany(f, xf) {\n return new XAny(f, xf);\n});\nexport default _xany;","import _concat from './_concat.js';\nimport _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XAperture = /*#__PURE__*/function () {\n function XAperture(n, xf) {\n this.xf = xf;\n this.pos = 0;\n this.full = false;\n this.acc = new Array(n);\n }\n XAperture.prototype['@@transducer/init'] = _xfBase.init;\n XAperture.prototype['@@transducer/result'] = function (result) {\n this.acc = null;\n return this.xf['@@transducer/result'](result);\n };\n XAperture.prototype['@@transducer/step'] = function (result, input) {\n this.store(input);\n return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result;\n };\n XAperture.prototype.store = function (input) {\n this.acc[this.pos] = input;\n this.pos += 1;\n if (this.pos === this.acc.length) {\n this.pos = 0;\n this.full = true;\n }\n };\n XAperture.prototype.getCopy = function () {\n return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos));\n };\n\n return XAperture;\n}();\n\nvar _xaperture = /*#__PURE__*/_curry2(function _xaperture(n, xf) {\n return new XAperture(n, xf);\n});\nexport default _xaperture;","import _curry2 from './_curry2.js';\nimport _flatCat from './_flatCat.js';\nimport map from '../map.js';\n\nvar _xchain = /*#__PURE__*/_curry2(function _xchain(f, xf) {\n return map(f, _flatCat(xf));\n});\nexport default _xchain;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDrop = /*#__PURE__*/function () {\n function XDrop(n, xf) {\n this.xf = xf;\n this.n = n;\n }\n XDrop.prototype['@@transducer/init'] = _xfBase.init;\n XDrop.prototype['@@transducer/result'] = _xfBase.result;\n XDrop.prototype['@@transducer/step'] = function (result, input) {\n if (this.n > 0) {\n this.n -= 1;\n return result;\n }\n return this.xf['@@transducer/step'](result, input);\n };\n\n return XDrop;\n}();\n\nvar _xdrop = /*#__PURE__*/_curry2(function _xdrop(n, xf) {\n return new XDrop(n, xf);\n});\nexport default _xdrop;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropLast = /*#__PURE__*/function () {\n function XDropLast(n, xf) {\n this.xf = xf;\n this.pos = 0;\n this.full = false;\n this.acc = new Array(n);\n }\n XDropLast.prototype['@@transducer/init'] = _xfBase.init;\n XDropLast.prototype['@@transducer/result'] = function (result) {\n this.acc = null;\n return this.xf['@@transducer/result'](result);\n };\n XDropLast.prototype['@@transducer/step'] = function (result, input) {\n if (this.full) {\n result = this.xf['@@transducer/step'](result, this.acc[this.pos]);\n }\n this.store(input);\n return result;\n };\n XDropLast.prototype.store = function (input) {\n this.acc[this.pos] = input;\n this.pos += 1;\n if (this.pos === this.acc.length) {\n this.pos = 0;\n this.full = true;\n }\n };\n\n return XDropLast;\n}();\n\nvar _xdropLast = /*#__PURE__*/_curry2(function _xdropLast(n, xf) {\n return new XDropLast(n, xf);\n});\nexport default _xdropLast;","import _curry2 from './_curry2.js';\nimport _reduce from './_reduce.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropLastWhile = /*#__PURE__*/function () {\n function XDropLastWhile(fn, xf) {\n this.f = fn;\n this.retained = [];\n this.xf = xf;\n }\n XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init;\n XDropLastWhile.prototype['@@transducer/result'] = function (result) {\n this.retained = null;\n return this.xf['@@transducer/result'](result);\n };\n XDropLastWhile.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.retain(result, input) : this.flush(result, input);\n };\n XDropLastWhile.prototype.flush = function (result, input) {\n result = _reduce(this.xf['@@transducer/step'], result, this.retained);\n this.retained = [];\n return this.xf['@@transducer/step'](result, input);\n };\n XDropLastWhile.prototype.retain = function (result, input) {\n this.retained.push(input);\n return result;\n };\n\n return XDropLastWhile;\n}();\n\nvar _xdropLastWhile = /*#__PURE__*/_curry2(function _xdropLastWhile(fn, xf) {\n return new XDropLastWhile(fn, xf);\n});\nexport default _xdropLastWhile;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropRepeatsWith = /*#__PURE__*/function () {\n function XDropRepeatsWith(pred, xf) {\n this.xf = xf;\n this.pred = pred;\n this.lastValue = undefined;\n this.seenFirstValue = false;\n }\n\n XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init;\n XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result;\n XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) {\n var sameAsLast = false;\n if (!this.seenFirstValue) {\n this.seenFirstValue = true;\n } else if (this.pred(this.lastValue, input)) {\n sameAsLast = true;\n }\n this.lastValue = input;\n return sameAsLast ? result : this.xf['@@transducer/step'](result, input);\n };\n\n return XDropRepeatsWith;\n}();\n\nvar _xdropRepeatsWith = /*#__PURE__*/_curry2(function _xdropRepeatsWith(pred, xf) {\n return new XDropRepeatsWith(pred, xf);\n});\nexport default _xdropRepeatsWith;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XDropWhile = /*#__PURE__*/function () {\n function XDropWhile(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XDropWhile.prototype['@@transducer/init'] = _xfBase.init;\n XDropWhile.prototype['@@transducer/result'] = _xfBase.result;\n XDropWhile.prototype['@@transducer/step'] = function (result, input) {\n if (this.f) {\n if (this.f(input)) {\n return result;\n }\n this.f = null;\n }\n return this.xf['@@transducer/step'](result, input);\n };\n\n return XDropWhile;\n}();\n\nvar _xdropWhile = /*#__PURE__*/_curry2(function _xdropWhile(f, xf) {\n return new XDropWhile(f, xf);\n});\nexport default _xdropWhile;","export default {\n init: function () {\n return this.xf['@@transducer/init']();\n },\n result: function (result) {\n return this.xf['@@transducer/result'](result);\n }\n};","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFilter = /*#__PURE__*/function () {\n function XFilter(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFilter.prototype['@@transducer/init'] = _xfBase.init;\n XFilter.prototype['@@transducer/result'] = _xfBase.result;\n XFilter.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;\n };\n\n return XFilter;\n}();\n\nvar _xfilter = /*#__PURE__*/_curry2(function _xfilter(f, xf) {\n return new XFilter(f, xf);\n});\nexport default _xfilter;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFind = /*#__PURE__*/function () {\n function XFind(f, xf) {\n this.xf = xf;\n this.f = f;\n this.found = false;\n }\n XFind.prototype['@@transducer/init'] = _xfBase.init;\n XFind.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, void 0);\n }\n return this.xf['@@transducer/result'](result);\n };\n XFind.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, input));\n }\n return result;\n };\n\n return XFind;\n}();\n\nvar _xfind = /*#__PURE__*/_curry2(function _xfind(f, xf) {\n return new XFind(f, xf);\n});\nexport default _xfind;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFindIndex = /*#__PURE__*/function () {\n function XFindIndex(f, xf) {\n this.xf = xf;\n this.f = f;\n this.idx = -1;\n this.found = false;\n }\n XFindIndex.prototype['@@transducer/init'] = _xfBase.init;\n XFindIndex.prototype['@@transducer/result'] = function (result) {\n if (!this.found) {\n result = this.xf['@@transducer/step'](result, -1);\n }\n return this.xf['@@transducer/result'](result);\n };\n XFindIndex.prototype['@@transducer/step'] = function (result, input) {\n this.idx += 1;\n if (this.f(input)) {\n this.found = true;\n result = _reduced(this.xf['@@transducer/step'](result, this.idx));\n }\n return result;\n };\n\n return XFindIndex;\n}();\n\nvar _xfindIndex = /*#__PURE__*/_curry2(function _xfindIndex(f, xf) {\n return new XFindIndex(f, xf);\n});\nexport default _xfindIndex;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFindLast = /*#__PURE__*/function () {\n function XFindLast(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XFindLast.prototype['@@transducer/init'] = _xfBase.init;\n XFindLast.prototype['@@transducer/result'] = function (result) {\n return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last));\n };\n XFindLast.prototype['@@transducer/step'] = function (result, input) {\n if (this.f(input)) {\n this.last = input;\n }\n return result;\n };\n\n return XFindLast;\n}();\n\nvar _xfindLast = /*#__PURE__*/_curry2(function _xfindLast(f, xf) {\n return new XFindLast(f, xf);\n});\nexport default _xfindLast;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XFindLastIndex = /*#__PURE__*/function () {\n function XFindLastIndex(f, xf) {\n this.xf = xf;\n this.f = f;\n this.idx = -1;\n this.lastIdx = -1;\n }\n XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init;\n XFindLastIndex.prototype['@@transducer/result'] = function (result) {\n return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx));\n };\n XFindLastIndex.prototype['@@transducer/step'] = function (result, input) {\n this.idx += 1;\n if (this.f(input)) {\n this.lastIdx = this.idx;\n }\n return result;\n };\n\n return XFindLastIndex;\n}();\n\nvar _xfindLastIndex = /*#__PURE__*/_curry2(function _xfindLastIndex(f, xf) {\n return new XFindLastIndex(f, xf);\n});\nexport default _xfindLastIndex;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XMap = /*#__PURE__*/function () {\n function XMap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XMap.prototype['@@transducer/init'] = _xfBase.init;\n XMap.prototype['@@transducer/result'] = _xfBase.result;\n XMap.prototype['@@transducer/step'] = function (result, input) {\n return this.xf['@@transducer/step'](result, this.f(input));\n };\n\n return XMap;\n}();\n\nvar _xmap = /*#__PURE__*/_curry2(function _xmap(f, xf) {\n return new XMap(f, xf);\n});\nexport default _xmap;","import _curryN from './_curryN.js';\nimport _has from './_has.js';\nimport _xfBase from './_xfBase.js';\n\nvar XReduceBy = /*#__PURE__*/function () {\n function XReduceBy(valueFn, valueAcc, keyFn, xf) {\n this.valueFn = valueFn;\n this.valueAcc = valueAcc;\n this.keyFn = keyFn;\n this.xf = xf;\n this.inputs = {};\n }\n XReduceBy.prototype['@@transducer/init'] = _xfBase.init;\n XReduceBy.prototype['@@transducer/result'] = function (result) {\n var key;\n for (key in this.inputs) {\n if (_has(key, this.inputs)) {\n result = this.xf['@@transducer/step'](result, this.inputs[key]);\n if (result['@@transducer/reduced']) {\n result = result['@@transducer/value'];\n break;\n }\n }\n }\n this.inputs = null;\n return this.xf['@@transducer/result'](result);\n };\n XReduceBy.prototype['@@transducer/step'] = function (result, input) {\n var key = this.keyFn(input);\n this.inputs[key] = this.inputs[key] || [key, this.valueAcc];\n this.inputs[key][1] = this.valueFn(this.inputs[key][1], input);\n return result;\n };\n\n return XReduceBy;\n}();\n\nvar _xreduceBy = /*#__PURE__*/_curryN(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) {\n return new XReduceBy(valueFn, valueAcc, keyFn, xf);\n});\nexport default _xreduceBy;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XTake = /*#__PURE__*/function () {\n function XTake(n, xf) {\n this.xf = xf;\n this.n = n;\n this.i = 0;\n }\n XTake.prototype['@@transducer/init'] = _xfBase.init;\n XTake.prototype['@@transducer/result'] = _xfBase.result;\n XTake.prototype['@@transducer/step'] = function (result, input) {\n this.i += 1;\n var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input);\n return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret;\n };\n\n return XTake;\n}();\n\nvar _xtake = /*#__PURE__*/_curry2(function _xtake(n, xf) {\n return new XTake(n, xf);\n});\nexport default _xtake;","import _curry2 from './_curry2.js';\nimport _reduced from './_reduced.js';\nimport _xfBase from './_xfBase.js';\n\nvar XTakeWhile = /*#__PURE__*/function () {\n function XTakeWhile(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XTakeWhile.prototype['@@transducer/init'] = _xfBase.init;\n XTakeWhile.prototype['@@transducer/result'] = _xfBase.result;\n XTakeWhile.prototype['@@transducer/step'] = function (result, input) {\n return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result);\n };\n\n return XTakeWhile;\n}();\n\nvar _xtakeWhile = /*#__PURE__*/_curry2(function _xtakeWhile(f, xf) {\n return new XTakeWhile(f, xf);\n});\nexport default _xtakeWhile;","import _curry2 from './_curry2.js';\nimport _xfBase from './_xfBase.js';\n\nvar XTap = /*#__PURE__*/function () {\n function XTap(f, xf) {\n this.xf = xf;\n this.f = f;\n }\n XTap.prototype['@@transducer/init'] = _xfBase.init;\n XTap.prototype['@@transducer/result'] = _xfBase.result;\n XTap.prototype['@@transducer/step'] = function (result, input) {\n this.f(input);\n return this.xf['@@transducer/step'](result, input);\n };\n\n return XTap;\n}();\n\nvar _xtap = /*#__PURE__*/_curry2(function _xtap(f, xf) {\n return new XTap(f, xf);\n});\nexport default _xtap;","var XWrap = /*#__PURE__*/function () {\n function XWrap(fn) {\n this.f = fn;\n }\n XWrap.prototype['@@transducer/init'] = function () {\n throw new Error('init not implemented on XWrap');\n };\n XWrap.prototype['@@transducer/result'] = function (acc) {\n return acc;\n };\n XWrap.prototype['@@transducer/step'] = function (acc, x) {\n return this.f(acc, x);\n };\n\n return XWrap;\n}();\n\nexport default function _xwrap(fn) {\n return new XWrap(fn);\n}","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\nimport _filter from './internal/_filter.js';\nimport flip from './flip.js';\nimport uniq from './uniq.js';\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of those\n * elements common to both lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The list of elements found in both `list1` and `list2`.\n * @see R.innerJoin\n * @example\n *\n * R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]\n */\nvar intersection = /*#__PURE__*/_curry2(function intersection(list1, list2) {\n var lookupList, filteredList;\n if (list1.length > list2.length) {\n lookupList = list1;\n filteredList = list2;\n } else {\n lookupList = list2;\n filteredList = list1;\n }\n return uniq(_filter(flip(_includes)(lookupList), filteredList));\n});\nexport default intersection;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new list with the separator interposed between elements.\n *\n * Dispatches to the `intersperse` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} separator The element to add to the list.\n * @param {Array} list The list to be interposed.\n * @return {Array} The new list.\n * @example\n *\n * R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's']\n */\nvar intersperse = /*#__PURE__*/_curry2( /*#__PURE__*/_checkForMethod('intersperse', function intersperse(separator, list) {\n var out = [];\n var idx = 0;\n var length = list.length;\n while (idx < length) {\n if (idx === length - 1) {\n out.push(list[idx]);\n } else {\n out.push(list[idx], separator);\n }\n idx += 1;\n }\n return out;\n}));\nexport default intersperse;","import _clone from './internal/_clone.js';\nimport _curry3 from './internal/_curry3.js';\nimport _isTransformer from './internal/_isTransformer.js';\nimport _reduce from './internal/_reduce.js';\nimport _stepCat from './internal/_stepCat.js';\n\n/**\n * Transforms the items of the list with the transducer and appends the\n * transformed items to the accumulator using an appropriate iterator function\n * based on the accumulator type.\n *\n * The accumulator can be an array, string, object or a transformer. Iterated\n * items will be appended to arrays and concatenated to strings. Objects will\n * be merged directly or 2-item arrays will be merged as key, value pairs.\n *\n * The accumulator can also be a transformer object that provides a 2-arity\n * reducing iterator function, step, 0-arity initial value function, init, and\n * 1-arity result extraction function result. The step function is used as the\n * iterator function in reduce. The result function is used to convert the\n * final accumulator into the return type and in most cases is R.identity. The\n * init function is used to provide the initial accumulator.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the\n * transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig a -> (b -> b) -> [c] -> a\n * @param {*} acc The initial accumulator value.\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.transduce\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const transducer = R.compose(R.map(R.add(1)), R.take(2));\n *\n * R.into([], transducer, numbers); //=> [2, 3]\n *\n * const intoArray = R.into([]);\n * intoArray(transducer, numbers); //=> [2, 3]\n */\nvar into = /*#__PURE__*/_curry3(function into(acc, xf, list) {\n return _isTransformer(acc) ? _reduce(xf(acc), acc['@@transducer/init'](), list) : _reduce(xf(_stepCat(acc)), _clone(acc, [], [], false), list);\n});\nexport default into;","import _curry1 from './internal/_curry1.js';\nimport _has from './internal/_has.js';\nimport keys from './keys.js';\n\n/**\n * Same as [`R.invertObj`](#invertObj), however this accounts for objects with\n * duplicate values by putting the values into an array.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -> {x: [ s, ... ]}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object with keys in an array.\n * @see R.invertObj\n * @example\n *\n * const raceResultsByFirstName = {\n * first: 'alice',\n * second: 'jake',\n * third: 'alice',\n * };\n * R.invert(raceResultsByFirstName);\n * //=> { 'alice': ['first', 'third'], 'jake':['second'] }\n */\nvar invert = /*#__PURE__*/_curry1(function invert(obj) {\n var props = keys(obj);\n var len = props.length;\n var idx = 0;\n var out = {};\n\n while (idx < len) {\n var key = props[idx];\n var val = obj[key];\n var list = _has(val, out) ? out[val] : out[val] = [];\n list[list.length] = key;\n idx += 1;\n }\n return out;\n});\nexport default invert;","import _curry1 from './internal/_curry1.js';\nimport keys from './keys.js';\n\n/**\n * Returns a new object with the keys of the given object as values, and the\n * values of the given object, which are coerced to strings, as keys. Note\n * that the last key found is preferred when handling the same value.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig {s: x} -> {x: s}\n * @param {Object} obj The object or array to invert\n * @return {Object} out A new object\n * @see R.invert\n * @example\n *\n * const raceResults = {\n * first: 'alice',\n * second: 'jake'\n * };\n * R.invertObj(raceResults);\n * //=> { 'alice': 'first', 'jake':'second' }\n *\n * // Alternatively:\n * const raceResults = ['alice', 'jake'];\n * R.invertObj(raceResults);\n * //=> { 'alice': '0', 'jake':'1' }\n */\nvar invertObj = /*#__PURE__*/_curry1(function invertObj(obj) {\n var props = keys(obj);\n var len = props.length;\n var idx = 0;\n var out = {};\n\n while (idx < len) {\n var key = props[idx];\n out[obj[key]] = key;\n idx += 1;\n }\n return out;\n});\nexport default invertObj;","import _curry2 from './internal/_curry2.js';\nimport _isFunction from './internal/_isFunction.js';\nimport curryN from './curryN.js';\nimport toString from './toString.js';\n\n/**\n * Turns a named method with a specified arity into a function that can be\n * called directly supplied with arguments and a target object.\n *\n * The returned function is curried and accepts `arity + 1` parameters where\n * the final parameter is the target object.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *)\n * @param {Number} arity Number of arguments the returned function should take\n * before the target object.\n * @param {String} method Name of the method to call.\n * @return {Function} A new curried function.\n * @see R.construct\n * @example\n *\n * const sliceFrom = R.invoker(1, 'slice');\n * sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'\n * const sliceFrom6 = R.invoker(2, 'slice')(6);\n * sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'\n * @symb R.invoker(0, 'method')(o) = o['method']()\n * @symb R.invoker(1, 'method')(a, o) = o['method'](a)\n * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)\n */\nvar invoker = /*#__PURE__*/_curry2(function invoker(arity, method) {\n return curryN(arity + 1, function () {\n var target = arguments[arity];\n if (target != null && _isFunction(target[method])) {\n return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));\n }\n throw new TypeError(toString(target) + ' does not have a method named \"' + method + '\"');\n });\n});\nexport default invoker;","import _curry2 from './internal/_curry2.js';\n\n/**\n * See if an object (`val`) is an instance of the supplied constructor. This\n * function will check up the inheritance chain, if any.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Type\n * @sig (* -> {*}) -> a -> Boolean\n * @param {Object} ctor A constructor\n * @param {*} val The value to test\n * @return {Boolean}\n * @example\n *\n * R.is(Object, {}); //=> true\n * R.is(Number, 1); //=> true\n * R.is(Object, 1); //=> false\n * R.is(String, 's'); //=> true\n * R.is(String, new String('')); //=> true\n * R.is(Object, new String('')); //=> true\n * R.is(Object, 's'); //=> false\n * R.is(Number, {}); //=> false\n */\nvar is = /*#__PURE__*/_curry2(function is(Ctor, val) {\n return val != null && val.constructor === Ctor || val instanceof Ctor;\n});\nexport default is;","import _curry1 from './internal/_curry1.js';\nimport empty from './empty.js';\nimport equals from './equals.js';\n\n/**\n * Returns `true` if the given value is its type's empty value; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> Boolean\n * @param {*} x\n * @return {Boolean}\n * @see R.empty\n * @example\n *\n * R.isEmpty([1, 2, 3]); //=> false\n * R.isEmpty([]); //=> true\n * R.isEmpty(''); //=> true\n * R.isEmpty(null); //=> false\n * R.isEmpty({}); //=> true\n * R.isEmpty({length: 0}); //=> false\n */\nvar isEmpty = /*#__PURE__*/_curry1(function isEmpty(x) {\n return x != null && equals(x, empty(x));\n});\nexport default isEmpty;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Checks if the input value is `null` or `undefined`.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Type\n * @sig * -> Boolean\n * @param {*} x The value to test.\n * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.\n * @example\n *\n * R.isNil(null); //=> true\n * R.isNil(undefined); //=> true\n * R.isNil(0); //=> false\n * R.isNil([]); //=> false\n */\nvar isNil = /*#__PURE__*/_curry1(function isNil(x) {\n return x == null;\n});\nexport default isNil;","import invoker from './invoker.js';\n\n/**\n * Returns a string made by inserting the `separator` between each element and\n * concatenating all the elements into a single string.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig String -> [a] -> String\n * @param {Number|String} separator The string used to separate the elements.\n * @param {Array} xs The elements to join into a string.\n * @return {String} str The string made by concatenating `xs` with `separator`.\n * @see R.split\n * @example\n *\n * const spacer = R.join(' ');\n * spacer(['a', 2, 3.4]); //=> 'a 2 3.4'\n * R.join('|', [1, 2, 3]); //=> '1|2|3'\n */\nvar join = /*#__PURE__*/invoker(1, 'join');\nexport default join;","import _curry1 from './internal/_curry1.js';\nimport converge from './converge.js';\n\n/**\n * juxt applies a list of functions to a list of values.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Function\n * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n])\n * @param {Array} fns An array of functions\n * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters.\n * @see R.applySpec\n * @example\n *\n * const getRange = R.juxt([Math.min, Math.max]);\n * getRange(3, 4, 9, -3); //=> [-3, 9]\n * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)]\n */\nvar juxt = /*#__PURE__*/_curry1(function juxt(fns) {\n return converge(function () {\n return Array.prototype.slice.call(arguments, 0);\n }, fns);\n});\nexport default juxt;","import _curry1 from './internal/_curry1.js';\nimport _has from './internal/_has.js';\nimport _isArguments from './internal/_isArguments.js';\n\n// cover IE < 9 keys issues\nvar hasEnumBug = ! /*#__PURE__*/{ toString: null }.propertyIsEnumerable('toString');\nvar nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n// Safari bug\nvar hasArgsEnumBug = /*#__PURE__*/function () {\n 'use strict';\n\n return arguments.propertyIsEnumerable('length');\n}();\n\nvar contains = function contains(list, item) {\n var idx = 0;\n while (idx < list.length) {\n if (list[idx] === item) {\n return true;\n }\n idx += 1;\n }\n return false;\n};\n\n/**\n * Returns a list containing the names of all the enumerable own properties of\n * the supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own properties.\n * @see R.keysIn, R.values\n * @example\n *\n * R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']\n */\nvar keys = typeof Object.keys === 'function' && !hasArgsEnumBug ? /*#__PURE__*/_curry1(function keys(obj) {\n return Object(obj) !== obj ? [] : Object.keys(obj);\n}) : /*#__PURE__*/_curry1(function keys(obj) {\n if (Object(obj) !== obj) {\n return [];\n }\n var prop, nIdx;\n var ks = [];\n var checkArgsLength = hasArgsEnumBug && _isArguments(obj);\n for (prop in obj) {\n if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {\n ks[ks.length] = prop;\n }\n }\n if (hasEnumBug) {\n nIdx = nonEnumerableProps.length - 1;\n while (nIdx >= 0) {\n prop = nonEnumerableProps[nIdx];\n if (_has(prop, obj) && !contains(ks, prop)) {\n ks[ks.length] = prop;\n }\n nIdx -= 1;\n }\n }\n return ks;\n});\nexport default keys;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Returns a list containing the names of all the properties of the supplied\n * object, including prototype properties.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -> [k]\n * @param {Object} obj The object to extract properties from\n * @return {Array} An array of the object's own and prototype properties.\n * @see R.keys, R.valuesIn\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.keysIn(f); //=> ['x', 'y']\n */\nvar keysIn = /*#__PURE__*/_curry1(function keysIn(obj) {\n var prop;\n var ks = [];\n for (prop in obj) {\n ks[ks.length] = prop;\n }\n return ks;\n});\nexport default keysIn;","import nth from './nth.js';\n\n/**\n * Returns the last element of the given list or string.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig [a] -> a | Undefined\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.init, R.head, R.tail\n * @example\n *\n * R.last(['fi', 'fo', 'fum']); //=> 'fum'\n * R.last([]); //=> undefined\n *\n * R.last('abc'); //=> 'c'\n * R.last(''); //=> ''\n */\nvar last = /*#__PURE__*/nth(-1);\nexport default last;","import _curry2 from './internal/_curry2.js';\nimport _isArray from './internal/_isArray.js';\nimport equals from './equals.js';\n\n/**\n * Returns the position of the last occurrence of an item in an array, or -1 if\n * the item is not included in the array. [`R.equals`](#equals) is used to\n * determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> Number\n * @param {*} target The item to find.\n * @param {Array} xs The array to search in.\n * @return {Number} the index of the target, or -1 if the target is not found.\n * @see R.indexOf\n * @example\n *\n * R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6\n * R.lastIndexOf(10, [1,2,3,4]); //=> -1\n */\nvar lastIndexOf = /*#__PURE__*/_curry2(function lastIndexOf(target, xs) {\n if (typeof xs.lastIndexOf === 'function' && !_isArray(xs)) {\n return xs.lastIndexOf(target);\n } else {\n var idx = xs.length - 1;\n while (idx >= 0) {\n if (equals(xs[idx], target)) {\n return idx;\n }\n idx -= 1;\n }\n return -1;\n }\n});\nexport default lastIndexOf;","import _curry1 from './internal/_curry1.js';\nimport _isNumber from './internal/_isNumber.js';\n\n/**\n * Returns the number of elements in the array by returning `list.length`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [a] -> Number\n * @param {Array} list The array to inspect.\n * @return {Number} The length of the array.\n * @example\n *\n * R.length([]); //=> 0\n * R.length([1, 2, 3]); //=> 3\n */\nvar length = /*#__PURE__*/_curry1(function length(list) {\n return list != null && _isNumber(list.length) ? list.length : NaN;\n});\nexport default length;","import _curry2 from './internal/_curry2.js';\nimport map from './map.js';\n\n/**\n * Returns a lens for the given getter and setter functions. The getter \"gets\"\n * the value of the focus; the setter \"sets\" the value of the focus. The setter\n * should not mutate the data structure.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig (s -> a) -> ((a, s) -> s) -> Lens s a\n * @param {Function} getter\n * @param {Function} setter\n * @return {Lens}\n * @see R.view, R.set, R.over, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lens(R.prop('x'), R.assoc('x'));\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\nvar lens = /*#__PURE__*/_curry2(function lens(getter, setter) {\n return function (toFunctorFn) {\n return function (target) {\n return map(function (focus) {\n return setter(focus, target);\n }, toFunctorFn(getter(target)));\n };\n };\n});\nexport default lens;","import _curry1 from './internal/_curry1.js';\nimport lens from './lens.js';\nimport nth from './nth.js';\nimport update from './update.js';\n\n/**\n * Returns a lens whose focus is the specified index.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Number -> Lens s a\n * @param {Number} n\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const headLens = R.lensIndex(0);\n *\n * R.view(headLens, ['a', 'b', 'c']); //=> 'a'\n * R.set(headLens, 'x', ['a', 'b', 'c']); //=> ['x', 'b', 'c']\n * R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c']\n */\nvar lensIndex = /*#__PURE__*/_curry1(function lensIndex(n) {\n return lens(nth(n), update(n));\n});\nexport default lensIndex;","import _curry1 from './internal/_curry1.js';\nimport assocPath from './assocPath.js';\nimport lens from './lens.js';\nimport path from './path.js';\n\n/**\n * Returns a lens whose focus is the specified path.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @typedefn Idx = String | Int\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig [Idx] -> Lens s a\n * @param {Array} path The path to use.\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xHeadYLens = R.lensPath(['x', 0, 'y']);\n *\n * R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> 2\n * R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]}\n * R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});\n * //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]}\n */\nvar lensPath = /*#__PURE__*/_curry1(function lensPath(p) {\n return lens(path(p), assocPath(p));\n});\nexport default lensPath;","import _curry1 from './internal/_curry1.js';\nimport assoc from './assoc.js';\nimport lens from './lens.js';\nimport prop from './prop.js';\n\n/**\n * Returns a lens whose focus is the specified property.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig String -> Lens s a\n * @param {String} k\n * @return {Lens}\n * @see R.view, R.set, R.over\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.over(xLens, R.negate, {x: 1, y: 2}); //=> {x: -1, y: 2}\n */\nvar lensProp = /*#__PURE__*/_curry1(function lensProp(k) {\n return lens(prop(k), assoc(k));\n});\nexport default lensProp;","import _curry1 from './internal/_curry1.js';\nimport liftN from './liftN.js';\n\n/**\n * \"lifts\" a function of arity > 1 so that it may \"map over\" a list, Function or other\n * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.liftN\n * @example\n *\n * const madd3 = R.lift((a, b, c) => a + b + c);\n *\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n *\n * const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);\n *\n * madd5([1,2], [3], [4, 5], [6], [7, 8]); //=> [21, 22, 22, 23, 22, 23, 23, 24]\n */\nvar lift = /*#__PURE__*/_curry1(function lift(fn) {\n return liftN(fn.length, fn);\n});\nexport default lift;","import _curry2 from './internal/_curry2.js';\nimport _reduce from './internal/_reduce.js';\nimport ap from './ap.js';\nimport curryN from './curryN.js';\nimport map from './map.js';\n\n/**\n * \"lifts\" a function to be the specified arity, so that it may \"map over\" that\n * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Function\n * @sig Number -> (*... -> *) -> ([*]... -> [*])\n * @param {Function} fn The function to lift into higher context\n * @return {Function} The lifted function.\n * @see R.lift, R.ap\n * @example\n *\n * const madd3 = R.liftN(3, (...args) => R.sum(args));\n * madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]\n */\nvar liftN = /*#__PURE__*/_curry2(function liftN(arity, fn) {\n var lifted = curryN(arity, fn);\n return curryN(arity, function () {\n return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));\n });\n});\nexport default liftN;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is less than the second; `false`\n * otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {*} a\n * @param {*} b\n * @return {Boolean}\n * @see R.gt\n * @example\n *\n * R.lt(2, 1); //=> false\n * R.lt(2, 2); //=> false\n * R.lt(2, 3); //=> true\n * R.lt('a', 'z'); //=> true\n * R.lt('z', 'a'); //=> false\n */\nvar lt = /*#__PURE__*/_curry2(function lt(a, b) {\n return a < b;\n});\nexport default lt;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if the first argument is less than or equal to the second;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> Boolean\n * @param {Number} a\n * @param {Number} b\n * @return {Boolean}\n * @see R.gte\n * @example\n *\n * R.lte(2, 1); //=> false\n * R.lte(2, 2); //=> true\n * R.lte(2, 3); //=> true\n * R.lte('a', 'z'); //=> true\n * R.lte('z', 'a'); //=> false\n */\nvar lte = /*#__PURE__*/_curry2(function lte(a, b) {\n return a <= b;\n});\nexport default lte;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _map from './internal/_map.js';\nimport _reduce from './internal/_reduce.js';\nimport _xmap from './internal/_xmap.js';\nimport curryN from './curryN.js';\nimport keys from './keys.js';\n\n/**\n * Takes a function and\n * a [functor](https://github.com/fantasyland/fantasy-land#functor),\n * applies the function to each of the functor's values, and returns\n * a functor of the same shape.\n *\n * Ramda provides suitable `map` implementations for `Array` and `Object`,\n * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.\n *\n * Dispatches to the `map` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * Also treats functions as functors and will compose them together.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => (a -> b) -> f a -> f b\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {Array} list The list to be iterated over.\n * @return {Array} The new list.\n * @see R.transduce, R.addIndex\n * @example\n *\n * const double = x => x * 2;\n *\n * R.map(double, [1, 2, 3]); //=> [2, 4, 6]\n *\n * R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}\n * @symb R.map(f, [a, b]) = [f(a), f(b)]\n * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }\n * @symb R.map(f, functor_o) = functor_o.map(f)\n */\nvar map = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {\n switch (Object.prototype.toString.call(functor)) {\n case '[object Function]':\n return curryN(functor.length, function () {\n return fn.call(this, functor.apply(this, arguments));\n });\n case '[object Object]':\n return _reduce(function (acc, key) {\n acc[key] = fn(functor[key]);\n return acc;\n }, {}, keys(functor));\n default:\n return _map(fn, functor);\n }\n}));\nexport default map;","import _curry3 from './internal/_curry3.js';\n\n/**\n * The `mapAccum` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from left to right, and returning a final value of this\n * accumulator together with the new list.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.scan, R.addIndex, R.mapAccumRight\n * @example\n *\n * const digits = ['1', '2', '3', '4'];\n * const appender = (a, b) => [a + b, a + b];\n *\n * R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']]\n * @symb R.mapAccum(f, a, [b, c, d]) = [\n * f(f(f(a, b)[0], c)[0], d)[0],\n * [\n * f(a, b)[1],\n * f(f(a, b)[0], c)[1],\n * f(f(f(a, b)[0], c)[0], d)[1]\n * ]\n * ]\n */\nvar mapAccum = /*#__PURE__*/_curry3(function mapAccum(fn, acc, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n var tuple = [acc];\n while (idx < len) {\n tuple = fn(tuple[0], list[idx]);\n result[idx] = tuple[1];\n idx += 1;\n }\n return [tuple[0], result];\n});\nexport default mapAccum;","import _curry3 from './internal/_curry3.js';\n\n/**\n * The `mapAccumRight` function behaves like a combination of map and reduce; it\n * applies a function to each element of a list, passing an accumulating\n * parameter from right to left, and returning a final value of this\n * accumulator together with the new list.\n *\n * Similar to [`mapAccum`](#mapAccum), except moves through the input list from\n * the right to the left.\n *\n * The iterator function receives two arguments, *acc* and *value*, and should\n * return a tuple *[acc, value]*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])\n * @param {Function} fn The function to be called on every element of the input `list`.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.addIndex, R.mapAccum\n * @example\n *\n * const digits = ['1', '2', '3', '4'];\n * const appender = (a, b) => [b + a, b + a];\n *\n * R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']]\n * @symb R.mapAccumRight(f, a, [b, c, d]) = [\n * f(f(f(a, d)[0], c)[0], b)[0],\n * [\n * f(a, d)[1],\n * f(f(a, d)[0], c)[1],\n * f(f(f(a, d)[0], c)[0], b)[1]\n * ]\n * ]\n */\nvar mapAccumRight = /*#__PURE__*/_curry3(function mapAccumRight(fn, acc, list) {\n var idx = list.length - 1;\n var result = [];\n var tuple = [acc];\n while (idx >= 0) {\n tuple = fn(tuple[0], list[idx]);\n result[idx] = tuple[1];\n idx -= 1;\n }\n return [tuple[0], result];\n});\nexport default mapAccumRight;","import _curry2 from './internal/_curry2.js';\nimport _reduce from './internal/_reduce.js';\nimport keys from './keys.js';\n\n/**\n * An Object-specific version of [`map`](#map). The function is applied to three\n * arguments: *(value, key, obj)*. If only the value is significant, use\n * [`map`](#map) instead.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Object\n * @sig ((*, String, Object) -> *) -> Object -> Object\n * @param {Function} fn\n * @param {Object} obj\n * @return {Object}\n * @see R.map\n * @example\n *\n * const xyz = { x: 1, y: 2, z: 3 };\n * const prependKeyAndDouble = (num, key, obj) => key + (num * 2);\n *\n * R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' }\n */\nvar mapObjIndexed = /*#__PURE__*/_curry2(function mapObjIndexed(fn, obj) {\n return _reduce(function (acc, key) {\n acc[key] = fn(obj[key], key, obj);\n return acc;\n }, {}, keys(obj));\n});\nexport default mapObjIndexed;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Tests a regular expression against a String. Note that this function will\n * return an empty array when there are no matches. This differs from\n * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)\n * which returns `null` when there are no matches.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig RegExp -> String -> [String | Undefined]\n * @param {RegExp} rx A regular expression.\n * @param {String} str The string to match against\n * @return {Array} The list of matches or empty array.\n * @see R.test\n * @example\n *\n * R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na']\n * R.match(/a/, 'b'); //=> []\n * R.match(/a/, null); //=> TypeError: null does not have a method named \"match\"\n */\nvar match = /*#__PURE__*/_curry2(function match(rx, str) {\n return str.match(rx) || [];\n});\nexport default match;","import _curry2 from './internal/_curry2.js';\nimport _isInteger from './internal/_isInteger.js';\n\n/**\n * `mathMod` behaves like the modulo operator should mathematically, unlike the\n * `%` operator (and by extension, [`R.modulo`](#modulo)). So while\n * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer\n * arguments, and returns NaN when the modulus is zero or negative.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} m The dividend.\n * @param {Number} p the modulus.\n * @return {Number} The result of `b mod a`.\n * @see R.modulo\n * @example\n *\n * R.mathMod(-17, 5); //=> 3\n * R.mathMod(17, 5); //=> 2\n * R.mathMod(17, -5); //=> NaN\n * R.mathMod(17, 0); //=> NaN\n * R.mathMod(17.2, 5); //=> NaN\n * R.mathMod(17, 5.3); //=> NaN\n *\n * const clock = R.mathMod(R.__, 12);\n * clock(15); //=> 3\n * clock(24); //=> 0\n *\n * const seventeenMod = R.mathMod(17);\n * seventeenMod(3); //=> 2\n * seventeenMod(4); //=> 1\n * seventeenMod(10); //=> 7\n */\nvar mathMod = /*#__PURE__*/_curry2(function mathMod(m, p) {\n if (!_isInteger(m)) {\n return NaN;\n }\n if (!_isInteger(p) || p < 1) {\n return NaN;\n }\n return (m % p + p) % p;\n});\nexport default mathMod;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns the larger of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.maxBy, R.min\n * @example\n *\n * R.max(789, 123); //=> 789\n * R.max('a', 'b'); //=> 'b'\n */\nvar max = /*#__PURE__*/_curry2(function max(a, b) {\n return b > a ? b : a;\n});\nexport default max;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Takes a function and two values, and returns whichever value produces the\n * larger result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b => (a -> b) -> a -> a -> a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.max, R.minBy\n * @example\n *\n * // square :: Number -> Number\n * const square = n => n * n;\n *\n * R.maxBy(square, -3, 2); //=> -3\n *\n * R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5\n * R.reduce(R.maxBy(square), 0, []); //=> 0\n */\nvar maxBy = /*#__PURE__*/_curry3(function maxBy(f, a, b) {\n return f(b) > f(a) ? b : a;\n});\nexport default maxBy;","import _curry1 from './internal/_curry1.js';\nimport sum from './sum.js';\n\n/**\n * Returns the mean of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list\n * @return {Number}\n * @see R.median\n * @example\n *\n * R.mean([2, 7, 9]); //=> 6\n * R.mean([]); //=> NaN\n */\nvar mean = /*#__PURE__*/_curry1(function mean(list) {\n return sum(list) / list.length;\n});\nexport default mean;","import _curry1 from './internal/_curry1.js';\nimport mean from './mean.js';\n\n/**\n * Returns the median of the given list of numbers.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list\n * @return {Number}\n * @see R.mean\n * @example\n *\n * R.median([2, 9, 7]); //=> 7\n * R.median([7, 2, 10, 9]); //=> 8\n * R.median([]); //=> NaN\n */\nvar median = /*#__PURE__*/_curry1(function median(list) {\n var len = list.length;\n if (len === 0) {\n return NaN;\n }\n var width = 2 - len % 2;\n var idx = (len - width) / 2;\n return mean(Array.prototype.slice.call(list, 0).sort(function (a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n }).slice(idx, idx + width));\n});\nexport default median;","import _arity from './internal/_arity.js';\nimport _curry2 from './internal/_curry2.js';\nimport _has from './internal/_has.js';\n\n/**\n * Creates a new function that, when invoked, caches the result of calling `fn`\n * for a given argument set and returns the result. Subsequent calls to the\n * memoized `fn` with the same argument set will not result in an additional\n * call to `fn`; instead, the cached result for that set of arguments will be\n * returned.\n *\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (*... -> String) -> (*... -> a) -> (*... -> a)\n * @param {Function} fn The function to generate the cache key.\n * @param {Function} fn The function to memoize.\n * @return {Function} Memoized version of `fn`.\n * @example\n *\n * let count = 0;\n * const factorial = R.memoizeWith(R.identity, n => {\n * count += 1;\n * return R.product(R.range(1, n + 1));\n * });\n * factorial(5); //=> 120\n * factorial(5); //=> 120\n * factorial(5); //=> 120\n * count; //=> 1\n */\nvar memoizeWith = /*#__PURE__*/_curry2(function memoizeWith(mFn, fn) {\n var cache = {};\n return _arity(fn.length, function () {\n var key = mFn.apply(this, arguments);\n if (!_has(key, cache)) {\n cache[key] = fn.apply(this, arguments);\n }\n return cache[key];\n });\n});\nexport default memoizeWith;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeRight, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @deprecated\n * @example\n *\n * R.merge({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const withDefaults = R.merge({x: 0, y: 0});\n * withDefaults({y: 2}); //=> {x: 0, y: 2}\n * @symb R.merge(a, b) = {...a, ...b}\n */\nvar merge = /*#__PURE__*/_curry2(function merge(l, r) {\n return _objectAssign({}, l, r);\n});\nexport default merge;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Merges a list of objects together into one object.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig [{k: v}] -> {k: v}\n * @param {Array} list An array of objects\n * @return {Object} A merged object.\n * @see R.reduce\n * @example\n *\n * R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}\n * R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2}\n * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 }\n */\nvar mergeAll = /*#__PURE__*/_curry1(function mergeAll(list) {\n return _objectAssign.apply(null, [{}].concat(list));\n});\nexport default mergeAll;","import _curry2 from './internal/_curry2.js';\nimport mergeDeepWithKey from './mergeDeepWithKey.js';\n\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -> {a} -> {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n * { age: 40, contact: { email: 'baa@example.com' }});\n * //=> { name: 'fred', age: 10, contact: { email: 'moo@example.com' }}\n */\nvar mergeDeepLeft = /*#__PURE__*/_curry2(function mergeDeepLeft(lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return lVal;\n }, lObj, rObj);\n});\nexport default mergeDeepLeft;","import _curry2 from './internal/_curry2.js';\nimport mergeDeepWithKey from './mergeDeepWithKey.js';\n\n/**\n * Creates a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects:\n * - and both values are objects, the two values will be recursively merged\n * - otherwise the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig {a} -> {a} -> {a}\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: 'moo@example.com' }},\n * { age: 40, contact: { email: 'baa@example.com' }});\n * //=> { name: 'fred', age: 40, contact: { email: 'baa@example.com' }}\n */\nvar mergeDeepRight = /*#__PURE__*/_curry2(function mergeDeepRight(lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return rVal;\n }, lObj, rObj);\n});\nexport default mergeDeepRight;","import _curry3 from './internal/_curry3.js';\nimport mergeDeepWithKey from './mergeDeepWithKey.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to associated values using the\n * resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWith, R.mergeDeepWithKey\n * @example\n *\n * R.mergeDeepWith(R.concat,\n * { a: true, c: { values: [10, 20] }},\n * { b: true, c: { values: [15, 35] }});\n * //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }}\n */\nvar mergeDeepWith = /*#__PURE__*/_curry3(function mergeDeepWith(fn, lObj, rObj) {\n return mergeDeepWithKey(function (k, lVal, rVal) {\n return fn(lVal, rVal);\n }, lObj, rObj);\n});\nexport default mergeDeepWith;","import _curry3 from './internal/_curry3.js';\nimport _isObject from './internal/_isObject.js';\nimport mergeWithKey from './mergeWithKey.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects.\n * If a key exists in both objects:\n * - and both associated values are also objects then the values will be\n * recursively merged.\n * - otherwise the provided function is applied to the key and associated values\n * using the resulting value as the new value associated with the key.\n * If a key only exists in one object, the value will be associated with the key\n * of the resulting object.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} lObj\n * @param {Object} rObj\n * @return {Object}\n * @see R.mergeWithKey, R.mergeDeepWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeDeepWithKey(concatValues,\n * { a: true, c: { thing: 'foo', values: [10, 20] }},\n * { b: true, c: { thing: 'bar', values: [15, 35] }});\n * //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }}\n */\nvar mergeDeepWithKey = /*#__PURE__*/_curry3(function mergeDeepWithKey(fn, lObj, rObj) {\n return mergeWithKey(function (k, lVal, rVal) {\n if (_isObject(lVal) && _isObject(rVal)) {\n return mergeDeepWithKey(fn, lVal, rVal);\n } else {\n return fn(k, lVal, rVal);\n }\n }, lObj, rObj);\n});\nexport default mergeDeepWithKey;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the first object will be used.\n *\n * @func\n * @memberOf R\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey\n * @example\n *\n * R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const resetToDefault = R.mergeLeft({x: 0});\n * resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2}\n * @symb R.mergeLeft(a, b) = {...b, ...a}\n */\nvar mergeLeft = /*#__PURE__*/_curry2(function mergeLeft(l, r) {\n return _objectAssign({}, r, l);\n});\nexport default mergeLeft;","import _objectAssign from './internal/_objectAssign.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Create a new object with the own properties of the first object merged with\n * the own properties of the second object. If a key exists in both objects,\n * the value from the second object will be used.\n *\n * @func\n * @memberOf R\n * @category Object\n * @sig {k: v} -> {k: v} -> {k: v}\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey\n * @example\n *\n * R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 });\n * //=> { 'name': 'fred', 'age': 40 }\n *\n * const withDefaults = R.mergeRight({x: 0, y: 0});\n * withDefaults({y: 2}); //=> {x: 0, y: 2}\n * @symb R.mergeRight(a, b) = {...a, ...b}\n */\nvar mergeRight = /*#__PURE__*/_curry2(function mergeRight(l, r) {\n return _objectAssign({}, l, r);\n});\nexport default mergeRight;","import _curry3 from './internal/_curry3.js';\nimport mergeWithKey from './mergeWithKey.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the values\n * associated with the key in each object, with the result being used as the\n * value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWith, R.merge, R.mergeWithKey\n * @example\n *\n * R.mergeWith(R.concat,\n * { a: true, values: [10, 20] },\n * { b: true, values: [15, 35] });\n * //=> { a: true, b: true, values: [10, 20, 15, 35] }\n */\nvar mergeWith = /*#__PURE__*/_curry3(function mergeWith(fn, l, r) {\n return mergeWithKey(function (_, _l, _r) {\n return fn(_l, _r);\n }, l, r);\n});\nexport default mergeWith;","import _curry3 from './internal/_curry3.js';\nimport _has from './internal/_has.js';\n\n/**\n * Creates a new object with the own properties of the two provided objects. If\n * a key exists in both objects, the provided function is applied to the key\n * and the values associated with the key in each object, with the result being\n * used as the value associated with the key in the returned object.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Object\n * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}\n * @param {Function} fn\n * @param {Object} l\n * @param {Object} r\n * @return {Object}\n * @see R.mergeDeepWithKey, R.merge, R.mergeWith\n * @example\n *\n * let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r\n * R.mergeWithKey(concatValues,\n * { a: true, thing: 'foo', values: [10, 20] },\n * { b: true, thing: 'bar', values: [15, 35] });\n * //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] }\n * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }\n */\nvar mergeWithKey = /*#__PURE__*/_curry3(function mergeWithKey(fn, l, r) {\n var result = {};\n var k;\n\n for (k in l) {\n if (_has(k, l)) {\n result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k];\n }\n }\n\n for (k in r) {\n if (_has(k, r) && !_has(k, result)) {\n result[k] = r[k];\n }\n }\n\n return result;\n});\nexport default mergeWithKey;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns the smaller of its two arguments.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord a => a -> a -> a\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.minBy, R.max\n * @example\n *\n * R.min(789, 123); //=> 123\n * R.min('a', 'b'); //=> 'a'\n */\nvar min = /*#__PURE__*/_curry2(function min(a, b) {\n return b < a ? b : a;\n});\nexport default min;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Takes a function and two values, and returns whichever value produces the\n * smaller result when passed to the provided function.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Relation\n * @sig Ord b => (a -> b) -> a -> a -> a\n * @param {Function} f\n * @param {*} a\n * @param {*} b\n * @return {*}\n * @see R.min, R.maxBy\n * @example\n *\n * // square :: Number -> Number\n * const square = n => n * n;\n *\n * R.minBy(square, -3, 2); //=> 2\n *\n * R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1\n * R.reduce(R.minBy(square), Infinity, []); //=> Infinity\n */\nvar minBy = /*#__PURE__*/_curry3(function minBy(f, a, b) {\n return f(b) < f(a) ? b : a;\n});\nexport default minBy;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Divides the first parameter by the second and returns the remainder. Note\n * that this function preserves the JavaScript-style behavior for modulo. For\n * mathematical modulo see [`mathMod`](#mathMod).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The value to the divide.\n * @param {Number} b The pseudo-modulus\n * @return {Number} The result of `b % a`.\n * @see R.mathMod\n * @example\n *\n * R.modulo(17, 3); //=> 2\n * // JS behavior:\n * R.modulo(-17, 3); //=> -2\n * R.modulo(17, -3); //=> 2\n *\n * const isOdd = R.modulo(R.__, 2);\n * isOdd(42); //=> 0\n * isOdd(21); //=> 1\n */\nvar modulo = /*#__PURE__*/_curry2(function modulo(a, b) {\n return a % b;\n});\nexport default modulo;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Move an item, at index `from`, to index `to`, in a list of elements.\n * A new list will be created containing the new elements order.\n *\n * @func\n * @memberOf R\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {Number} from The source index\n * @param {Number} to The destination index\n * @param {Array} list The list which will serve to realise the move\n * @return {Array} The new list reordered\n * @example\n *\n * R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f']\n * R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation\n */\nvar move = /*#__PURE__*/_curry3(function (from, to, list) {\n var length = list.length;\n var result = list.slice();\n var positiveFrom = from < 0 ? length + from : from;\n var positiveTo = to < 0 ? length + to : to;\n var item = result.splice(positiveFrom, 1);\n\n return positiveFrom < 0 || positiveFrom >= list.length || positiveTo < 0 || positiveTo >= list.length ? list : [].concat(result.slice(0, positiveTo)).concat(item).concat(result.slice(positiveTo, list.length));\n});\n\nexport default move;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Multiplies two numbers. Equivalent to `a * b` but curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a * b`.\n * @see R.divide\n * @example\n *\n * const double = R.multiply(2);\n * const triple = R.multiply(3);\n * double(3); //=> 6\n * triple(4); //=> 12\n * R.multiply(2, 5); //=> 10\n */\nvar multiply = /*#__PURE__*/_curry2(function multiply(a, b) {\n return a * b;\n});\nexport default multiply;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly `n` parameters. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig Number -> (* -> a) -> (* -> a)\n * @param {Number} n The desired arity of the new function.\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity `n`.\n * @see R.binary, R.unary\n * @example\n *\n * const takesTwoArgs = (a, b) => [a, b];\n *\n * takesTwoArgs.length; //=> 2\n * takesTwoArgs(1, 2); //=> [1, 2]\n *\n * const takesOneArg = R.nAry(1, takesTwoArgs);\n * takesOneArg.length; //=> 1\n * // Only `n` arguments are passed to the wrapped function\n * takesOneArg(1, 2); //=> [1, undefined]\n * @symb R.nAry(0, f)(a, b) = f()\n * @symb R.nAry(1, f)(a, b) = f(a)\n * @symb R.nAry(2, f)(a, b) = f(a, b)\n */\nvar nAry = /*#__PURE__*/_curry2(function nAry(n, fn) {\n switch (n) {\n case 0:\n return function () {\n return fn.call(this);\n };\n case 1:\n return function (a0) {\n return fn.call(this, a0);\n };\n case 2:\n return function (a0, a1) {\n return fn.call(this, a0, a1);\n };\n case 3:\n return function (a0, a1, a2) {\n return fn.call(this, a0, a1, a2);\n };\n case 4:\n return function (a0, a1, a2, a3) {\n return fn.call(this, a0, a1, a2, a3);\n };\n case 5:\n return function (a0, a1, a2, a3, a4) {\n return fn.call(this, a0, a1, a2, a3, a4);\n };\n case 6:\n return function (a0, a1, a2, a3, a4, a5) {\n return fn.call(this, a0, a1, a2, a3, a4, a5);\n };\n case 7:\n return function (a0, a1, a2, a3, a4, a5, a6) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6);\n };\n case 8:\n return function (a0, a1, a2, a3, a4, a5, a6, a7) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7);\n };\n case 9:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8);\n };\n case 10:\n return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {\n return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);\n };\n default:\n throw new Error('First argument to nAry must be a non-negative integer no greater than ten');\n }\n});\nexport default nAry;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Negates its argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Math\n * @sig Number -> Number\n * @param {Number} n\n * @return {Number}\n * @example\n *\n * R.negate(42); //=> -42\n */\nvar negate = /*#__PURE__*/_curry1(function negate(n) {\n return -n;\n});\nexport default negate;","import _complement from './internal/_complement.js';\nimport _curry2 from './internal/_curry2.js';\nimport all from './all.js';\n\n/**\n * Returns `true` if no elements of the list match the predicate, `false`\n * otherwise.\n *\n * Dispatches to the `all` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> Boolean\n * @param {Function} fn The predicate function.\n * @param {Array} list The array to consider.\n * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise.\n * @see R.all, R.any\n * @example\n *\n * const isEven = n => n % 2 === 0;\n * const isOdd = n => n % 2 === 1;\n *\n * R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true\n * R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false\n */\nvar none = /*#__PURE__*/_curry2(function none(fn, input) {\n return all(_complement(fn), input);\n});\nexport default none;","import _curry1 from './internal/_curry1.js';\n\n/**\n * A function that returns the `!` of its argument. It will return `true` when\n * passed false-y value, and `false` when passed a truth-y one.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig * -> Boolean\n * @param {*} a any value\n * @return {Boolean} the logical inverse of passed argument.\n * @see R.complement\n * @example\n *\n * R.not(true); //=> false\n * R.not(false); //=> true\n * R.not(0); //=> true\n * R.not(1); //=> false\n */\nvar not = /*#__PURE__*/_curry1(function not(a) {\n return !a;\n});\nexport default not;","import _curry2 from './internal/_curry2.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns the nth element of the given list or string. If n is negative the\n * element at index length + n is returned.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> a | Undefined\n * @sig Number -> String -> String\n * @param {Number} offset\n * @param {*} list\n * @return {*}\n * @example\n *\n * const list = ['foo', 'bar', 'baz', 'quux'];\n * R.nth(1, list); //=> 'bar'\n * R.nth(-1, list); //=> 'quux'\n * R.nth(-99, list); //=> undefined\n *\n * R.nth(2, 'abc'); //=> 'c'\n * R.nth(3, 'abc'); //=> ''\n * @symb R.nth(-1, [a, b, c]) = c\n * @symb R.nth(0, [a, b, c]) = a\n * @symb R.nth(1, [a, b, c]) = b\n */\nvar nth = /*#__PURE__*/_curry2(function nth(offset, list) {\n var idx = offset < 0 ? list.length + offset : offset;\n return _isString(list) ? list.charAt(idx) : list[idx];\n});\nexport default nth;","import _curry1 from './internal/_curry1.js';\nimport curryN from './curryN.js';\nimport nth from './nth.js';\n\n/**\n * Returns a function which returns its nth argument.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category Function\n * @sig Number -> *... -> *\n * @param {Number} n\n * @return {Function}\n * @example\n *\n * R.nthArg(1)('a', 'b', 'c'); //=> 'b'\n * R.nthArg(-1)('a', 'b', 'c'); //=> 'c'\n * @symb R.nthArg(-1)(a, b, c) = c\n * @symb R.nthArg(0)(a, b, c) = a\n * @symb R.nthArg(1)(a, b, c) = b\n */\nvar nthArg = /*#__PURE__*/_curry1(function nthArg(n) {\n var arity = n < 0 ? 1 : n + 1;\n return curryN(arity, function () {\n return nth(n, arguments);\n });\n});\nexport default nthArg;","import _curry3 from './internal/_curry3.js';\n\n/**\n * `o` is a curried composition function that returns a unary function.\n * Like [`compose`](#compose), `o` performs right-to-left function composition.\n * Unlike [`compose`](#compose), the rightmost function passed to `o` will be\n * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is\n * limited to accepting only 2 unary functions. The name o was chosen because\n * of its similarity to the mathematical composition operator ∘.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category Function\n * @sig (b -> c) -> (a -> b) -> a -> c\n * @param {Function} f\n * @param {Function} g\n * @return {Function}\n * @see R.compose, R.pipe\n * @example\n *\n * const classyGreeting = name => \"The name's \" + name.last + \", \" + name.first + \" \" + name.last\n * const yellGreeting = R.o(R.toUpper, classyGreeting);\n * yellGreeting({first: 'James', last: 'Bond'}); //=> \"THE NAME'S BOND, JAMES BOND\"\n *\n * R.o(R.multiply(10), R.add(10))(-4) //=> 60\n *\n * @symb R.o(f, g, x) = f(g(x))\n */\nvar o = /*#__PURE__*/_curry3(function o(f, g, x) {\n return f(g(x));\n});\nexport default o;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates an object containing a single key:value pair.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @sig String -> a -> {String:a}\n * @param {String} key\n * @param {*} val\n * @return {Object}\n * @see R.pair\n * @example\n *\n * const matchPhrases = R.compose(\n * R.objOf('must'),\n * R.map(R.objOf('match_phrase'))\n * );\n * matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]}\n */\nvar objOf = /*#__PURE__*/_curry2(function objOf(key, val) {\n var obj = {};\n obj[key] = val;\n return obj;\n});\nexport default objOf;","import _curry1 from './internal/_curry1.js';\nimport _of from './internal/_of.js';\n\n/**\n * Returns a singleton array containing the value provided.\n *\n * Note this `of` is different from the ES6 `of`; See\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category Function\n * @sig a -> [a]\n * @param {*} x any value\n * @return {Array} An array wrapping `x`.\n * @example\n *\n * R.of(null); //=> [null]\n * R.of([42]); //=> [[42]]\n */\nvar of = /*#__PURE__*/_curry1(_of);\nexport default of;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a partial copy of an object omitting the keys specified.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [String] -> {String: *} -> {String: *}\n * @param {Array} names an array of String property names to omit from the new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with properties from `names` not on it.\n * @see R.pick\n * @example\n *\n * R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}\n */\nvar omit = /*#__PURE__*/_curry2(function omit(names, obj) {\n var result = {};\n var index = {};\n var idx = 0;\n var len = names.length;\n\n while (idx < len) {\n index[names[idx]] = 1;\n idx += 1;\n }\n\n for (var prop in obj) {\n if (!index.hasOwnProperty(prop)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n});\nexport default omit;","import _arity from './internal/_arity.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Accepts a function `fn` and returns a function that guards invocation of\n * `fn` such that `fn` can only ever be called once, no matter how many times\n * the returned function is invoked. The first value calculated is returned in\n * subsequent invocations.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a... -> b) -> (a... -> b)\n * @param {Function} fn The function to wrap in a call-only-once wrapper.\n * @return {Function} The wrapped function.\n * @example\n *\n * const addOneOnce = R.once(x => x + 1);\n * addOneOnce(10); //=> 11\n * addOneOnce(addOneOnce(50)); //=> 11\n */\nvar once = /*#__PURE__*/_curry1(function once(fn) {\n var called = false;\n var result;\n return _arity(fn.length, function () {\n if (called) {\n return result;\n }\n called = true;\n result = fn.apply(this, arguments);\n return result;\n });\n});\nexport default once;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns `true` if one or both of its arguments are `true`. Returns `false`\n * if both arguments are `false`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Logic\n * @sig a -> b -> a | b\n * @param {Any} a\n * @param {Any} b\n * @return {Any} the first argument if truthy, otherwise the second argument.\n * @see R.either\n * @example\n *\n * R.or(true, true); //=> true\n * R.or(true, false); //=> true\n * R.or(false, true); //=> true\n * R.or(false, false); //=> false\n */\nvar or = /*#__PURE__*/_curry2(function or(a, b) {\n return a || b;\n});\nexport default or;","import _curry2 from './internal/_curry2.js';\nimport _assertPromise from './internal/_assertPromise.js';\n\n/**\n * Returns the result of applying the onFailure function to the value inside\n * a failed promise. This is useful for handling rejected promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig (e -> b) -> (Promise e a) -> (Promise e b)\n * @sig (e -> (Promise f b)) -> (Promise e a) -> (Promise f b)\n * @param {Function} onFailure The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(null, onFailure)`\n * @see R.then\n * @example\n *\n * var failedFetch = (id) => Promise.reject('bad ID');\n * var useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' })\n *\n * //recoverFromFailure :: String -> Promise ({firstName, lastName})\n * var recoverFromFailure = R.pipe(\n * failedFetch,\n * R.otherwise(useDefault),\n * R.then(R.pick(['firstName', 'lastName'])),\n * );\n * recoverFromFailure(12345).then(console.log)\n */\nvar otherwise = /*#__PURE__*/_curry2(function otherwise(f, p) {\n _assertPromise('otherwise', p);\n\n return p.then(null, f);\n});\nexport default otherwise;","import _curry3 from './internal/_curry3.js';\n\n// `Identity` is a functor that holds a single value, where `map` simply\n// transforms the held value with the provided function.\nvar Identity = function (x) {\n return { value: x, map: function (f) {\n return Identity(f(x));\n } };\n};\n\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the result of applying the given function to\n * the focused value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> (a -> a) -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const headLens = R.lensIndex(0);\n *\n * R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz']\n */\nvar over = /*#__PURE__*/_curry3(function over(lens, f, x) {\n // The value returned by the getter function is first transformed with `f`,\n // then set as the value of an `Identity`. This is then mapped over with the\n // setter function of the lens.\n return lens(function (y) {\n return Identity(f(y));\n })(x).value;\n});\nexport default over;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category List\n * @sig a -> b -> (a,b)\n * @param {*} fst\n * @param {*} snd\n * @return {Array}\n * @see R.objOf, R.of\n * @example\n *\n * R.pair('foo', 'bar'); //=> ['foo', 'bar']\n */\nvar pair = /*#__PURE__*/_curry2(function pair(fst, snd) {\n return [fst, snd];\n});\nexport default pair;","import _concat from './internal/_concat.js';\nimport _createPartialApplicator from './internal/_createPartialApplicator.js';\n\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided initially followed by the arguments provided to `g`.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partialRight, R.curry\n * @example\n *\n * const multiply2 = (a, b) => a * b;\n * const double = R.partial(multiply2, [2]);\n * double(2); //=> 4\n *\n * const greet = (salutation, title, firstName, lastName) =>\n * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n * const sayHello = R.partial(greet, ['Hello']);\n * const sayHelloToMs = R.partial(sayHello, ['Ms.']);\n * sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!'\n * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d)\n */\nvar partial = /*#__PURE__*/_createPartialApplicator(_concat);\nexport default partial;","import _concat from './internal/_concat.js';\nimport _createPartialApplicator from './internal/_createPartialApplicator.js';\nimport flip from './flip.js';\n\n/**\n * Takes a function `f` and a list of arguments, and returns a function `g`.\n * When applied, `g` returns the result of applying `f` to the arguments\n * provided to `g` followed by the arguments provided initially.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x)\n * @param {Function} f\n * @param {Array} args\n * @return {Function}\n * @see R.partial\n * @example\n *\n * const greet = (salutation, title, firstName, lastName) =>\n * salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';\n *\n * const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']);\n *\n * greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!'\n * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b)\n */\nvar partialRight = /*#__PURE__*/_createPartialApplicator( /*#__PURE__*/flip(_concat));\nexport default partialRight;","import filter from './filter.js';\nimport juxt from './juxt.js';\nimport reject from './reject.js';\n\n/**\n * Takes a predicate and a list or other `Filterable` object and returns the\n * pair of filterable objects of the same type of elements which do and do not\n * satisfy, the predicate, respectively. Filterable objects include plain objects or any object\n * that has a filter method such as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a]\n * @param {Function} pred A predicate to determine which side the element belongs to.\n * @param {Array} filterable the list (or other filterable) to partition.\n * @return {Array} An array, containing first the subset of elements that satisfy the\n * predicate, and second the subset of elements that do not satisfy.\n * @see R.filter, R.reject\n * @example\n *\n * R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']);\n * // => [ [ 'sss', 'bars' ], [ 'ttt', 'foo' ] ]\n *\n * R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' });\n * // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' } ]\n */\nvar partition = /*#__PURE__*/juxt([filter, reject]);\nexport default partition;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Retrieve the value at a given path.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig [Idx] -> {a} -> a | Undefined\n * @param {Array} path The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path`.\n * @see R.prop\n * @example\n *\n * R.path(['a', 'b'], {a: {b: 2}}); //=> 2\n * R.path(['a', 'b'], {c: {b: 2}}); //=> undefined\n */\nvar path = /*#__PURE__*/_curry2(function path(paths, obj) {\n var val = obj;\n var idx = 0;\n while (idx < paths.length) {\n if (val == null) {\n return;\n }\n val = val[paths[idx]];\n idx += 1;\n }\n return val;\n});\nexport default path;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\nimport path from './path.js';\n\n/**\n * Determines whether a nested path on an object has a specific value, in\n * [`R.equals`](#equals) terms. Most likely used to filter a list.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category Relation\n * @typedefn Idx = String | Int\n * @sig [Idx] -> a -> {a} -> Boolean\n * @param {Array} path The path of the nested property to use\n * @param {*} val The value to compare the nested property with\n * @param {Object} obj The object to check the nested property in\n * @return {Boolean} `true` if the value equals the nested object property,\n * `false` otherwise.\n * @example\n *\n * const user1 = { address: { zipCode: 90210 } };\n * const user2 = { address: { zipCode: 55555 } };\n * const user3 = { name: 'Bob' };\n * const users = [ user1, user2, user3 ];\n * const isFamous = R.pathEq(['address', 'zipCode'], 90210);\n * R.filter(isFamous, users); //=> [ user1 ]\n */\nvar pathEq = /*#__PURE__*/_curry3(function pathEq(_path, val, obj) {\n return equals(path(_path, obj), val);\n});\nexport default pathEq;","import _curry3 from './internal/_curry3.js';\nimport defaultTo from './defaultTo.js';\nimport path from './path.js';\n\n/**\n * If the given, non-null object has a value at the given path, returns the\n * value at that path. Otherwise returns the provided default value.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Object\n * @typedefn Idx = String | Int\n * @sig a -> [Idx] -> {a} -> a\n * @param {*} d The default value.\n * @param {Array} p The path to use.\n * @param {Object} obj The object to retrieve the nested property from.\n * @return {*} The data at `path` of the supplied object or the default value.\n * @example\n *\n * R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2\n * R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> \"N/A\"\n */\nvar pathOr = /*#__PURE__*/_curry3(function pathOr(d, p, obj) {\n return defaultTo(d, path(p, obj));\n});\nexport default pathOr;","import _curry3 from './internal/_curry3.js';\nimport path from './path.js';\n\n/**\n * Returns `true` if the specified object property at given path satisfies the\n * given predicate; `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Logic\n * @typedefn Idx = String | Int\n * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean\n * @param {Function} pred\n * @param {Array} propPath\n * @param {*} obj\n * @return {Boolean}\n * @see R.propSatisfies, R.path\n * @example\n *\n * R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true\n */\nvar pathSatisfies = /*#__PURE__*/_curry3(function pathSatisfies(pred, propPath, obj) {\n return propPath.length > 0 && pred(path(propPath, obj));\n});\nexport default pathSatisfies;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a partial copy of an object containing only the keys specified. If\n * the key does not exist, the property is ignored.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.omit, R.props\n * @example\n *\n * R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}\n * R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}\n */\nvar pick = /*#__PURE__*/_curry2(function pick(names, obj) {\n var result = {};\n var idx = 0;\n while (idx < names.length) {\n if (names[idx] in obj) {\n result[names[idx]] = obj[names[idx]];\n }\n idx += 1;\n }\n return result;\n});\nexport default pick;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Similar to `pick` except that this one includes a `key: undefined` pair for\n * properties that don't exist.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> {k: v}\n * @param {Array} names an array of String property names to copy onto a new object\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties from `names` on it.\n * @see R.pick\n * @example\n *\n * R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}\n * R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined}\n */\nvar pickAll = /*#__PURE__*/_curry2(function pickAll(names, obj) {\n var result = {};\n var idx = 0;\n var len = names.length;\n while (idx < len) {\n var name = names[idx];\n result[name] = obj[name];\n idx += 1;\n }\n return result;\n});\nexport default pickAll;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a partial copy of an object containing only the keys that satisfy\n * the supplied predicate.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Object\n * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}\n * @param {Function} pred A predicate to determine whether or not a key\n * should be included on the output object.\n * @param {Object} obj The object to copy from\n * @return {Object} A new object with only properties that satisfy `pred`\n * on it.\n * @see R.pick, R.filter\n * @example\n *\n * const isUpperCase = (val, key) => key.toUpperCase() === key;\n * R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}\n */\nvar pickBy = /*#__PURE__*/_curry2(function pickBy(test, obj) {\n var result = {};\n for (var prop in obj) {\n if (test(obj[prop], prop, obj)) {\n result[prop] = obj[prop];\n }\n }\n return result;\n});\nexport default pickBy;","import _arity from './internal/_arity.js';\nimport _pipe from './internal/_pipe.js';\nimport reduce from './reduce.js';\nimport tail from './tail.js';\n\n/**\n * Performs left-to-right function composition. The leftmost function may have\n * any arity; the remaining functions must be unary.\n *\n * In some libraries this function is named `sequence`.\n *\n * **Note:** The result of pipe is not automatically curried.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.compose\n * @example\n *\n * const f = R.pipe(Math.pow, R.negate, R.inc);\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))\n */\nexport default function pipe() {\n if (arguments.length === 0) {\n throw new Error('pipe requires at least one argument');\n }\n return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));\n}","import composeK from './composeK.js';\nimport reverse from './reverse.js';\n\n/**\n * Returns the left-to-right Kleisli composition of the provided functions,\n * each of which must return a value of a type supported by [`chain`](#chain).\n *\n * `R.pipeK(f, g, h)` is equivalent to `R.pipe(f, R.chain(g), R.chain(h))`.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Function\n * @sig Chain m => ((a -> m b), (b -> m c), ..., (y -> m z)) -> (a -> m z)\n * @param {...Function}\n * @return {Function}\n * @see R.composeK\n * @deprecated since v0.26.0\n * @example\n *\n * // parseJson :: String -> Maybe *\n * // get :: String -> Object -> Maybe *\n *\n * // getStateCode :: Maybe String -> Maybe String\n * const getStateCode = R.pipeK(\n * parseJson,\n * get('user'),\n * get('address'),\n * get('state'),\n * R.compose(Maybe.of, R.toUpper)\n * );\n *\n * getStateCode('{\"user\":{\"address\":{\"state\":\"ny\"}}}');\n * //=> Just('NY')\n * getStateCode('[Invalid JSON]');\n * //=> Nothing()\n * @symb R.pipeK(f, g, h)(a) = R.chain(h, R.chain(g, f(a)))\n */\nexport default function pipeK() {\n if (arguments.length === 0) {\n throw new Error('pipeK requires at least one argument');\n }\n return composeK.apply(this, reverse(arguments));\n}","import _arity from './internal/_arity.js';\nimport _pipeP from './internal/_pipeP.js';\nimport reduce from './reduce.js';\nimport tail from './tail.js';\n\n/**\n * Performs left-to-right composition of one or more Promise-returning\n * functions. The leftmost function may have any arity; the remaining functions\n * must be unary.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category Function\n * @sig ((a -> Promise b), (b -> Promise c), ..., (y -> Promise z)) -> (a -> Promise z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.composeP\n * @deprecated since v0.26.0\n * @example\n *\n * // followersForUser :: String -> Promise [User]\n * const followersForUser = R.pipeP(db.getUserById, db.getFollowers);\n */\nexport default function pipeP() {\n if (arguments.length === 0) {\n throw new Error('pipeP requires at least one argument');\n }\n return _arity(arguments[0].length, reduce(_pipeP, arguments[0], tail(arguments)));\n}","import _arity from './internal/_arity.js';\nimport _curry2 from './internal/_curry2.js';\nimport head from './head.js';\nimport _reduce from './internal/_reduce.js';\nimport tail from './tail.js';\nimport identity from './identity.js';\n\n/**\n * Performs left-to-right function composition using transforming function. The leftmost function may have\n * any arity; the remaining functions must be unary.\n *\n * **Note:** The result of pipeWith is not automatically curried.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig ((* -> *), [((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)]) -> ((a, b, ..., n) -> z)\n * @param {...Function} functions\n * @return {Function}\n * @see R.composeWith, R.pipe\n * @example\n *\n * const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res));\n * const f = pipeWhileNotNil([Math.pow, R.negate, R.inc])\n *\n * f(3, 4); // -(3^4) + 1\n * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, f(g, ...args)))\n */\nvar pipeWith = /*#__PURE__*/_curry2(function pipeWith(xf, list) {\n if (list.length <= 0) {\n return identity;\n }\n\n var headList = head(list);\n var tailList = tail(list);\n\n return _arity(headList.length, function () {\n return _reduce(function (result, f) {\n return xf.call(this, f, result);\n }, headList.apply(this, arguments), tailList);\n });\n});\nexport default pipeWith;","import _curry2 from './internal/_curry2.js';\nimport map from './map.js';\nimport prop from './prop.js';\n\n/**\n * Returns a new list by plucking the same named property off all objects in\n * the list supplied.\n *\n * `pluck` will work on\n * any [functor](https://github.com/fantasyland/fantasy-land#functor) in\n * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Functor f => k -> f {k: v} -> f v\n * @param {Number|String} key The key name to pluck off of each object.\n * @param {Array} f The array or functor to consider.\n * @return {Array} The list of values for the given key.\n * @see R.props\n * @example\n *\n * var getAges = R.pluck('age');\n * getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27]\n *\n * R.pluck(0, [[1, 2], [3, 4]]); //=> [1, 3]\n * R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5}\n * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]\n * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]\n */\nvar pluck = /*#__PURE__*/_curry2(function pluck(p, list) {\n return map(prop(p), list);\n});\nexport default pluck;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list with the given element at the front, followed by the\n * contents of the list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig a -> [a] -> [a]\n * @param {*} el The item to add to the head of the output list.\n * @param {Array} list The array to add to the tail of the output list.\n * @return {Array} A new array.\n * @see R.append\n * @example\n *\n * R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum']\n */\nvar prepend = /*#__PURE__*/_curry2(function prepend(el, list) {\n return _concat([el], list);\n});\nexport default prepend;","import multiply from './multiply.js';\nimport reduce from './reduce.js';\n\n/**\n * Multiplies together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list An array of numbers\n * @return {Number} The product of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n * R.product([2,4,6,8,100,1]); //=> 38400\n */\nvar product = /*#__PURE__*/reduce(multiply, 1);\nexport default product;","import _map from './internal/_map.js';\nimport identity from './identity.js';\nimport pickAll from './pickAll.js';\nimport useWith from './useWith.js';\n\n/**\n * Reasonable analog to SQL `select` statement.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @category Relation\n * @sig [k] -> [{k: v}] -> [{k: v}]\n * @param {Array} props The property names to project\n * @param {Array} objs The objects to query\n * @return {Array} An array of objects with just the `props` properties.\n * @example\n *\n * const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2};\n * const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7};\n * const kids = [abby, fred];\n * R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}]\n */\nvar project = /*#__PURE__*/useWith(_map, [pickAll, identity]); // passing `identity` gives correct arity\nexport default project;","import _curry2 from './internal/_curry2.js';\nimport path from './path.js';\n\n/**\n * Returns a function that when supplied an object returns the indicated\n * property of that object, if it exists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig s -> {s: a} -> a | Undefined\n * @param {String} p The property name\n * @param {Object} obj The object to query\n * @return {*} The value at `obj.p`.\n * @see R.path\n * @example\n *\n * R.prop('x', {x: 100}); //=> 100\n * R.prop('x', {}); //=> undefined\n * R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4\n */\n\nvar prop = /*#__PURE__*/_curry2(function prop(p, obj) {\n return path([p], obj);\n});\nexport default prop;","import _curry3 from './internal/_curry3.js';\nimport equals from './equals.js';\n\n/**\n * Returns `true` if the specified object property is equal, in\n * [`R.equals`](#equals) terms, to the given value; `false` otherwise.\n * You can test multiple properties with [`R.whereEq`](#whereEq).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig String -> a -> Object -> Boolean\n * @param {String} name\n * @param {*} val\n * @param {*} obj\n * @return {Boolean}\n * @see R.whereEq, R.propSatisfies, R.equals\n * @example\n *\n * const abby = {name: 'Abby', age: 7, hair: 'blond'};\n * const fred = {name: 'Fred', age: 12, hair: 'brown'};\n * const rusty = {name: 'Rusty', age: 10, hair: 'brown'};\n * const alois = {name: 'Alois', age: 15, disposition: 'surly'};\n * const kids = [abby, fred, rusty, alois];\n * const hasBrownHair = R.propEq('hair', 'brown');\n * R.filter(hasBrownHair, kids); //=> [fred, rusty]\n */\nvar propEq = /*#__PURE__*/_curry3(function propEq(name, val, obj) {\n return equals(val, obj[name]);\n});\nexport default propEq;","import _curry3 from './internal/_curry3.js';\nimport is from './is.js';\n\n/**\n * Returns `true` if the specified object property is of the given type;\n * `false` otherwise.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Type\n * @sig Type -> String -> Object -> Boolean\n * @param {Function} type\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.is, R.propSatisfies\n * @example\n *\n * R.propIs(Number, 'x', {x: 1, y: 2}); //=> true\n * R.propIs(Number, 'x', {x: 'foo'}); //=> false\n * R.propIs(Number, 'x', {}); //=> false\n */\nvar propIs = /*#__PURE__*/_curry3(function propIs(type, name, obj) {\n return is(type, obj[name]);\n});\nexport default propIs;","import _curry3 from './internal/_curry3.js';\nimport pathOr from './pathOr.js';\n\n/**\n * If the given, non-null object has an own property with the specified name,\n * returns the value of that property. Otherwise returns the provided default\n * value.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category Object\n * @sig a -> String -> Object -> a\n * @param {*} val The default value.\n * @param {String} p The name of the property to return.\n * @param {Object} obj The object to query.\n * @return {*} The value of given property of the supplied object or the default value.\n * @example\n *\n * const alice = {\n * name: 'ALICE',\n * age: 101\n * };\n * const favorite = R.prop('favoriteLibrary');\n * const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary');\n *\n * favorite(alice); //=> undefined\n * favoriteWithDefault(alice); //=> 'Ramda'\n */\nvar propOr = /*#__PURE__*/_curry3(function propOr(val, p, obj) {\n return pathOr(val, [p], obj);\n});\nexport default propOr;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Returns `true` if the specified object property satisfies the given\n * predicate; `false` otherwise. You can test multiple properties with\n * [`R.where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Logic\n * @sig (a -> Boolean) -> String -> {String: a} -> Boolean\n * @param {Function} pred\n * @param {String} name\n * @param {*} obj\n * @return {Boolean}\n * @see R.where, R.propEq, R.propIs\n * @example\n *\n * R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true\n */\nvar propSatisfies = /*#__PURE__*/_curry3(function propSatisfies(pred, name, obj) {\n return pred(obj[name]);\n});\nexport default propSatisfies;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Acts as multiple `prop`: array of keys in, array of values out. Preserves\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig [k] -> {k: v} -> [v]\n * @param {Array} ps The property names to fetch\n * @param {Object} obj The object to query\n * @return {Array} The corresponding values or partially applied function.\n * @example\n *\n * R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2]\n * R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2]\n *\n * const fullName = R.compose(R.join(' '), R.props(['first', 'last']));\n * fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth'\n */\nvar props = /*#__PURE__*/_curry2(function props(ps, obj) {\n var len = ps.length;\n var out = [];\n var idx = 0;\n\n while (idx < len) {\n out[idx] = obj[ps[idx]];\n idx += 1;\n }\n\n return out;\n});\nexport default props;","import _curry2 from './internal/_curry2.js';\nimport _isNumber from './internal/_isNumber.js';\n\n/**\n * Returns a list of numbers from `from` (inclusive) to `to` (exclusive).\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> Number -> [Number]\n * @param {Number} from The first number in the list.\n * @param {Number} to One more than the last number in the list.\n * @return {Array} The list of numbers in the set `[a, b)`.\n * @example\n *\n * R.range(1, 5); //=> [1, 2, 3, 4]\n * R.range(50, 53); //=> [50, 51, 52]\n */\nvar range = /*#__PURE__*/_curry2(function range(from, to) {\n if (!(_isNumber(from) && _isNumber(to))) {\n throw new TypeError('Both arguments to range must be numbers');\n }\n var result = [];\n var n = from;\n while (n < to) {\n result.push(n);\n n += 1;\n }\n return result;\n});\nexport default range;","import _curry3 from './internal/_curry3.js';\nimport _reduce from './internal/_reduce.js';\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It may use\n * [`R.reduced`](#reduced) to shortcut the iteration.\n *\n * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function\n * is *(value, acc)*.\n *\n * Note: `R.reduce` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduce` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description\n *\n * Dispatches to the `reduce` method of the third argument, if present. When\n * doing so, it is up to the user to handle the [`R.reduced`](#reduced)\n * shortcuting, as this is not implemented by `reduce`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduced, R.addIndex, R.reduceRight\n * @example\n *\n * R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10\n * // - -10\n * // / \\ / \\\n * // - 4 -6 4\n * // / \\ / \\\n * // - 3 ==> -3 3\n * // / \\ / \\\n * // - 2 -1 2\n * // / \\ / \\\n * // 0 1 0 1\n *\n * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)\n */\nvar reduce = /*#__PURE__*/_curry3(_reduce);\nexport default reduce;","import _curryN from './internal/_curryN.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _has from './internal/_has.js';\nimport _reduce from './internal/_reduce.js';\nimport _xreduceBy from './internal/_xreduceBy.js';\n\n/**\n * Groups the elements of the list according to the result of calling\n * the String-returning function `keyFn` on each element and reduces the elements\n * of each group to a single value via the reducer function `valueFn`.\n *\n * This function is basically a more general [`groupBy`](#groupBy) function.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category List\n * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a}\n * @param {Function} valueFn The function that reduces the elements of each group to a single\n * value. Receives two values, accumulator for a particular group and the current element.\n * @param {*} acc The (initial) accumulator value for each group.\n * @param {Function} keyFn The function that maps the list's element into a key.\n * @param {Array} list The array to group.\n * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of\n * `valueFn` for elements which produced that key when passed to `keyFn`.\n * @see R.groupBy, R.reduce\n * @example\n *\n * const groupNames = (acc, {name}) => acc.concat(name)\n * const toGrade = ({score}) =>\n * score < 65 ? 'F' :\n * score < 70 ? 'D' :\n * score < 80 ? 'C' :\n * score < 90 ? 'B' : 'A'\n *\n * var students = [\n * {name: 'Abby', score: 83},\n * {name: 'Bart', score: 62},\n * {name: 'Curt', score: 88},\n * {name: 'Dora', score: 92},\n * ]\n *\n * reduceBy(groupNames, [], toGrade, students)\n * //=> {\"A\": [\"Dora\"], \"B\": [\"Abby\", \"Curt\"], \"F\": [\"Bart\"]}\n */\nvar reduceBy = /*#__PURE__*/_curryN(4, [], /*#__PURE__*/_dispatchable([], _xreduceBy, function reduceBy(valueFn, valueAcc, keyFn, list) {\n return _reduce(function (acc, elt) {\n var key = keyFn(elt);\n acc[key] = valueFn(_has(key, acc) ? acc[key] : valueAcc, elt);\n return acc;\n }, {}, list);\n}));\nexport default reduceBy;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Returns a single item by iterating through the list, successively calling\n * the iterator function and passing it an accumulator value and the current\n * value from the array, and then passing the result to the next call.\n *\n * Similar to [`reduce`](#reduce), except moves through the input list from the\n * right to the left.\n *\n * The iterator function receives two values: *(value, acc)*, while the arguments'\n * order of `reduce`'s iterator function is *(acc, value)*.\n *\n * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse\n * arrays), unlike the native `Array.prototype.reduceRight` method. For more details\n * on this behavior, see:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> b) -> b -> [a] -> b\n * @param {Function} fn The iterator function. Receives two values, the current element from the array\n * and the accumulator.\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.addIndex\n * @example\n *\n * R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2\n * // - -2\n * // / \\ / \\\n * // 1 - 1 3\n * // / \\ / \\\n * // 2 - ==> 2 -1\n * // / \\ / \\\n * // 3 - 3 4\n * // / \\ / \\\n * // 4 0 4 0\n *\n * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a)))\n */\nvar reduceRight = /*#__PURE__*/_curry3(function reduceRight(fn, acc, list) {\n var idx = list.length - 1;\n while (idx >= 0) {\n acc = fn(list[idx], acc);\n idx -= 1;\n }\n return acc;\n});\nexport default reduceRight;","import _curryN from './internal/_curryN.js';\nimport _reduce from './internal/_reduce.js';\nimport _reduced from './internal/_reduced.js';\n\n/**\n * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating\n * through the list, successively calling the iterator function. `reduceWhile`\n * also takes a predicate that is evaluated before each step. If the predicate\n * returns `false`, it \"short-circuits\" the iteration and returns the current\n * value of the accumulator.\n *\n * @func\n * @memberOf R\n * @since v0.22.0\n * @category List\n * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} pred The predicate. It is passed the accumulator and the\n * current element.\n * @param {Function} fn The iterator function. Receives two values, the\n * accumulator and the current element.\n * @param {*} a The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced\n * @example\n *\n * const isOdd = (acc, x) => x % 2 === 1;\n * const xs = [1, 3, 5, 60, 777, 800];\n * R.reduceWhile(isOdd, R.add, 0, xs); //=> 9\n *\n * const ys = [2, 4, 6]\n * R.reduceWhile(isOdd, R.add, 111, ys); //=> 111\n */\nvar reduceWhile = /*#__PURE__*/_curryN(4, [], function _reduceWhile(pred, fn, a, list) {\n return _reduce(function (acc, x) {\n return pred(acc, x) ? fn(acc, x) : _reduced(acc);\n }, a, list);\n});\nexport default reduceWhile;","import _curry1 from './internal/_curry1.js';\nimport _reduced from './internal/_reduced.js';\n\n/**\n * Returns a value wrapped to indicate that it is the final value of the reduce\n * and transduce functions. The returned value should be considered a black\n * box: the internal structure is not guaranteed to be stable.\n *\n * Note: this optimization is only available to the below functions:\n * - [`reduce`](#reduce)\n * - [`reduceWhile`](#reduceWhile)\n * - [`transduce`](#transduce)\n *\n * @func\n * @memberOf R\n * @since v0.15.0\n * @category List\n * @sig a -> *\n * @param {*} x The final value of the reduce.\n * @return {*} The wrapped value.\n * @see R.reduce, R.reduceWhile, R.transduce\n * @example\n *\n * R.reduce(\n * (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item),\n * [],\n * [1, 2, 3, 4, 5]) // [1, 2, 3]\n */\nvar reduced = /*#__PURE__*/_curry1(_reduced);\nexport default reduced;","import _complement from './internal/_complement.js';\nimport _curry2 from './internal/_curry2.js';\nimport filter from './filter.js';\n\n/**\n * The complement of [`filter`](#filter).\n *\n * Acts as a transducer if a transformer is given in list position. Filterable\n * objects include plain objects or any object that has a filter method such\n * as `Array`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Filterable f => (a -> Boolean) -> f a -> f a\n * @param {Function} pred\n * @param {Array} filterable\n * @return {Array}\n * @see R.filter, R.transduce, R.addIndex\n * @example\n *\n * const isOdd = (n) => n % 2 === 1;\n *\n * R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]\n *\n * R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}\n */\nvar reject = /*#__PURE__*/_curry2(function reject(pred, filterable) {\n return filter(_complement(pred), filterable);\n});\nexport default reject;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Removes the sub-list of `list` starting at index `start` and containing\n * `count` elements. _Note that this is not destructive_: it returns a copy of\n * the list with the changes.\n * No lists have been harmed in the application of this function.\n *\n * @func\n * @memberOf R\n * @since v0.2.2\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @param {Number} start The position to start removing elements\n * @param {Number} count The number of elements to remove\n * @param {Array} list The list to remove from\n * @return {Array} A new Array with `count` elements from `start` removed.\n * @see R.without\n * @example\n *\n * R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8]\n */\nvar remove = /*#__PURE__*/_curry3(function remove(start, count, list) {\n var result = Array.prototype.slice.call(list, 0);\n result.splice(start, count);\n return result;\n});\nexport default remove;","import _curry2 from './internal/_curry2.js';\nimport always from './always.js';\nimport times from './times.js';\n\n/**\n * Returns a fixed list of size `n` containing a specified identical value.\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category List\n * @sig a -> n -> [a]\n * @param {*} value The value to repeat.\n * @param {Number} n The desired size of the output list.\n * @return {Array} A new array containing `n` `value`s.\n * @see R.times\n * @example\n *\n * R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi']\n *\n * const obj = {};\n * const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}]\n * repeatedObjs[0] === repeatedObjs[1]; //=> true\n * @symb R.repeat(a, 0) = []\n * @symb R.repeat(a, 1) = [a]\n * @symb R.repeat(a, 2) = [a, a]\n */\nvar repeat = /*#__PURE__*/_curry2(function repeat(value, n) {\n return times(always(value), n);\n});\nexport default repeat;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Replace a substring or regex match in a string with a replacement.\n *\n * The first two parameters correspond to the parameters of the\n * `String.prototype.replace()` function, so the second parameter can also be a\n * function.\n *\n * @func\n * @memberOf R\n * @since v0.7.0\n * @category String\n * @sig RegExp|String -> String -> String -> String\n * @param {RegExp|String} pattern A regular expression or a substring to match.\n * @param {String} replacement The string to replace the matches with.\n * @param {String} str The String to do the search and replacement in.\n * @return {String} The result.\n * @example\n *\n * R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'\n * R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'\n *\n * // Use the \"g\" (global) flag to replace all occurrences:\n * R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar'\n */\nvar replace = /*#__PURE__*/_curry3(function replace(regex, replacement, str) {\n return str.replace(regex, replacement);\n});\nexport default replace;","import _curry1 from './internal/_curry1.js';\nimport _isString from './internal/_isString.js';\n\n/**\n * Returns a new list or string with the elements or characters in reverse\n * order.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {Array|String} list\n * @return {Array|String}\n * @example\n *\n * R.reverse([1, 2, 3]); //=> [3, 2, 1]\n * R.reverse([1, 2]); //=> [2, 1]\n * R.reverse([1]); //=> [1]\n * R.reverse([]); //=> []\n *\n * R.reverse('abc'); //=> 'cba'\n * R.reverse('ab'); //=> 'ba'\n * R.reverse('a'); //=> 'a'\n * R.reverse(''); //=> ''\n */\nvar reverse = /*#__PURE__*/_curry1(function reverse(list) {\n return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();\n});\nexport default reverse;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Scan is similar to [`reduce`](#reduce), but returns a list of successively\n * reduced values from the left\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig ((a, b) -> a) -> a -> [b] -> [a]\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array\n * @param {*} acc The accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {Array} A list of all intermediately reduced values.\n * @see R.reduce, R.mapAccum\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24]\n * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)]\n */\nvar scan = /*#__PURE__*/_curry3(function scan(fn, acc, list) {\n var idx = 0;\n var len = list.length;\n var result = [acc];\n while (idx < len) {\n acc = fn(acc, list[idx]);\n result[idx + 1] = acc;\n idx += 1;\n }\n return result;\n});\nexport default scan;","import _curry2 from './internal/_curry2.js';\nimport ap from './ap.js';\nimport map from './map.js';\nimport prepend from './prepend.js';\nimport reduceRight from './reduceRight.js';\n\n/**\n * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable)\n * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an\n * Applicative of Traversable.\n *\n * Dispatches to the `sequence` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a)\n * @param {Function} of\n * @param {*} traversable\n * @return {*}\n * @see R.traverse\n * @example\n *\n * R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]); //=> Just([1, 2, 3])\n * R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing()\n *\n * R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)]\n * R.sequence(R.of, Nothing()); //=> [Nothing()]\n */\nvar sequence = /*#__PURE__*/_curry2(function sequence(of, traversable) {\n return typeof traversable.sequence === 'function' ? traversable.sequence(of) : reduceRight(function (x, acc) {\n return ap(map(prepend, x), acc);\n }, of([]), traversable);\n});\nexport default sequence;","import _curry3 from './internal/_curry3.js';\nimport always from './always.js';\nimport over from './over.js';\n\n/**\n * Returns the result of \"setting\" the portion of the given data structure\n * focused by the given lens to the given value.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> a -> s -> s\n * @param {Lens} lens\n * @param {*} v\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.set(xLens, 4, {x: 1, y: 2}); //=> {x: 4, y: 2}\n * R.set(xLens, 8, {x: 1, y: 2}); //=> {x: 8, y: 2}\n */\nvar set = /*#__PURE__*/_curry3(function set(lens, v, x) {\n return over(lens, always(v), x);\n});\nexport default set;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry3 from './internal/_curry3.js';\n\n/**\n * Returns the elements of the given list or string (or object with a `slice`\n * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).\n *\n * Dispatches to the `slice` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.4\n * @category List\n * @sig Number -> Number -> [a] -> [a]\n * @sig Number -> Number -> String -> String\n * @param {Number} fromIndex The start index (inclusive).\n * @param {Number} toIndex The end index (exclusive).\n * @param {*} list\n * @return {*}\n * @example\n *\n * R.slice(1, 3, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']\n * R.slice(0, -1, ['a', 'b', 'c', 'd']); //=> ['a', 'b', 'c']\n * R.slice(-3, -1, ['a', 'b', 'c', 'd']); //=> ['b', 'c']\n * R.slice(0, 3, 'ramda'); //=> 'ram'\n */\nvar slice = /*#__PURE__*/_curry3( /*#__PURE__*/_checkForMethod('slice', function slice(fromIndex, toIndex, list) {\n return Array.prototype.slice.call(list, fromIndex, toIndex);\n}));\nexport default slice;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a copy of the list, sorted according to the comparator function,\n * which should accept two values at a time and return a negative number if the\n * first value is smaller, a positive number if it's larger, and zero if they\n * are equal. Please note that this is a **copy** of the list. It does not\n * modify the original.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, a) -> Number) -> [a] -> [a]\n * @param {Function} comparator A sorting function :: a -> b -> Int\n * @param {Array} list The list to sort\n * @return {Array} a new array with its elements sorted by the comparator function.\n * @example\n *\n * const diff = function(a, b) { return a - b; };\n * R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7]\n */\nvar sort = /*#__PURE__*/_curry2(function sort(comparator, list) {\n return Array.prototype.slice.call(list, 0).sort(comparator);\n});\nexport default sort;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Sorts the list according to the supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig Ord b => (a -> b) -> [a] -> [a]\n * @param {Function} fn\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted by the keys generated by `fn`.\n * @example\n *\n * const sortByFirstItem = R.sortBy(R.prop(0));\n * const pairs = [[-1, 1], [-2, 2], [-3, 3]];\n * sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]]\n *\n * const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));\n * const alice = {\n * name: 'ALICE',\n * age: 101\n * };\n * const bob = {\n * name: 'Bob',\n * age: -10\n * };\n * const clara = {\n * name: 'clara',\n * age: 314.159\n * };\n * const people = [clara, bob, alice];\n * sortByNameCaseInsensitive(people); //=> [alice, bob, clara]\n */\nvar sortBy = /*#__PURE__*/_curry2(function sortBy(fn, list) {\n return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n var aa = fn(a);\n var bb = fn(b);\n return aa < bb ? -1 : aa > bb ? 1 : 0;\n });\n});\nexport default sortBy;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Sorts a list according to a list of comparators.\n *\n * @func\n * @memberOf R\n * @since v0.23.0\n * @category Relation\n * @sig [(a, a) -> Number] -> [a] -> [a]\n * @param {Array} functions A list of comparator functions.\n * @param {Array} list The list to sort.\n * @return {Array} A new list sorted according to the comarator functions.\n * @example\n *\n * const alice = {\n * name: 'alice',\n * age: 40\n * };\n * const bob = {\n * name: 'bob',\n * age: 30\n * };\n * const clara = {\n * name: 'clara',\n * age: 40\n * };\n * const people = [clara, bob, alice];\n * const ageNameSort = R.sortWith([\n * R.descend(R.prop('age')),\n * R.ascend(R.prop('name'))\n * ]);\n * ageNameSort(people); //=> [alice, clara, bob]\n */\nvar sortWith = /*#__PURE__*/_curry2(function sortWith(fns, list) {\n return Array.prototype.slice.call(list, 0).sort(function (a, b) {\n var result = 0;\n var i = 0;\n while (result === 0 && i < fns.length) {\n result = fns[i](a, b);\n i += 1;\n }\n return result;\n });\n});\nexport default sortWith;","import invoker from './invoker.js';\n\n/**\n * Splits a string into an array of strings based on the given\n * separator.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category String\n * @sig (String | RegExp) -> String -> [String]\n * @param {String|RegExp} sep The pattern.\n * @param {String} str The string to separate into an array.\n * @return {Array} The array of strings from `str` separated by `str`.\n * @see R.join\n * @example\n *\n * const pathComponents = R.split('/');\n * R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node']\n *\n * R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd']\n */\nvar split = /*#__PURE__*/invoker(1, 'split');\nexport default split;","import _curry2 from './internal/_curry2.js';\nimport length from './length.js';\nimport slice from './slice.js';\n\n/**\n * Splits a given list or string at a given index.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig Number -> [a] -> [[a], [a]]\n * @sig Number -> String -> [String, String]\n * @param {Number} index The index where the array/string is split.\n * @param {Array|String} array The array/string to be split.\n * @return {Array}\n * @example\n *\n * R.splitAt(1, [1, 2, 3]); //=> [[1], [2, 3]]\n * R.splitAt(5, 'hello world'); //=> ['hello', ' world']\n * R.splitAt(-1, 'foobar'); //=> ['fooba', 'r']\n */\nvar splitAt = /*#__PURE__*/_curry2(function splitAt(index, array) {\n return [slice(0, index, array), slice(index, length(array), array)];\n});\nexport default splitAt;","import _curry2 from './internal/_curry2.js';\nimport slice from './slice.js';\n\n/**\n * Splits a collection into slices of the specified length.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [[a]]\n * @sig Number -> String -> [String]\n * @param {Number} n\n * @param {Array} list\n * @return {Array}\n * @example\n *\n * R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]]\n * R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz']\n */\nvar splitEvery = /*#__PURE__*/_curry2(function splitEvery(n, list) {\n if (n <= 0) {\n throw new Error('First argument to splitEvery must be a positive integer');\n }\n var result = [];\n var idx = 0;\n while (idx < list.length) {\n result.push(slice(idx, idx += n, list));\n }\n return result;\n});\nexport default splitEvery;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Takes a list and a predicate and returns a pair of lists with the following properties:\n *\n * - the result of concatenating the two output lists is equivalent to the input list;\n * - none of the elements of the first output list satisfies the predicate; and\n * - if the second output list is non-empty, its first element satisfies the predicate.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [[a], [a]]\n * @param {Function} pred The predicate that determines where the array is split.\n * @param {Array} list The array to be split.\n * @return {Array}\n * @example\n *\n * R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]); //=> [[1], [2, 3, 1, 2, 3]]\n */\nvar splitWhen = /*#__PURE__*/_curry2(function splitWhen(pred, list) {\n var idx = 0;\n var len = list.length;\n var prefix = [];\n\n while (idx < len && !pred(list[idx])) {\n prefix.push(list[idx]);\n idx += 1;\n }\n\n return [prefix, Array.prototype.slice.call(list, idx)];\n});\nexport default splitWhen;","import _curry2 from './internal/_curry2.js';\nimport equals from './equals.js';\nimport take from './take.js';\n\n/**\n * Checks if a list starts with the provided sublist.\n *\n * Similarly, checks if a string starts with the provided substring.\n *\n * @func\n * @memberOf R\n * @since v0.24.0\n * @category List\n * @sig [a] -> [a] -> Boolean\n * @sig String -> String -> Boolean\n * @param {*} prefix\n * @param {*} list\n * @return {Boolean}\n * @see R.endsWith\n * @example\n *\n * R.startsWith('a', 'abc') //=> true\n * R.startsWith('b', 'abc') //=> false\n * R.startsWith(['a'], ['a', 'b', 'c']) //=> true\n * R.startsWith(['b'], ['a', 'b', 'c']) //=> false\n */\nvar startsWith = /*#__PURE__*/_curry2(function (prefix, list) {\n return equals(take(prefix.length, list), prefix);\n});\nexport default startsWith;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Subtracts its second argument from its first argument.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig Number -> Number -> Number\n * @param {Number} a The first value.\n * @param {Number} b The second value.\n * @return {Number} The result of `a - b`.\n * @see R.add\n * @example\n *\n * R.subtract(10, 8); //=> 2\n *\n * const minus5 = R.subtract(R.__, 5);\n * minus5(17); //=> 12\n *\n * const complementaryAngle = R.subtract(90);\n * complementaryAngle(30); //=> 60\n * complementaryAngle(72); //=> 18\n */\nvar subtract = /*#__PURE__*/_curry2(function subtract(a, b) {\n return Number(a) - Number(b);\n});\nexport default subtract;","import add from './add.js';\nimport reduce from './reduce.js';\n\n/**\n * Adds together all the elements of a list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Math\n * @sig [Number] -> Number\n * @param {Array} list An array of numbers\n * @return {Number} The sum of all the numbers in the list.\n * @see R.reduce\n * @example\n *\n * R.sum([2,4,6,8,100,1]); //=> 121\n */\nvar sum = /*#__PURE__*/reduce(add, 0);\nexport default sum;","import _curry2 from './internal/_curry2.js';\nimport concat from './concat.js';\nimport difference from './difference.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifferenceWith, R.difference, R.differenceWith\n * @example\n *\n * R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5]\n * R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2]\n */\nvar symmetricDifference = /*#__PURE__*/_curry2(function symmetricDifference(list1, list2) {\n return concat(difference(list1, list2), difference(list2, list1));\n});\nexport default symmetricDifference;","import _curry3 from './internal/_curry3.js';\nimport concat from './concat.js';\nimport differenceWith from './differenceWith.js';\n\n/**\n * Finds the set (i.e. no duplicates) of all elements contained in the first or\n * second list, but not both. Duplication is determined according to the value\n * returned by applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The elements in `list1` or `list2`, but not both.\n * @see R.symmetricDifference, R.difference, R.differenceWith\n * @example\n *\n * const eqA = R.eqBy(R.prop('a'));\n * const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}];\n * const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}];\n * R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}]\n */\nvar symmetricDifferenceWith = /*#__PURE__*/_curry3(function symmetricDifferenceWith(pred, list1, list2) {\n return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1));\n});\nexport default symmetricDifferenceWith;","import _checkForMethod from './internal/_checkForMethod.js';\nimport _curry1 from './internal/_curry1.js';\nimport slice from './slice.js';\n\n/**\n * Returns all but the first element of the given list or string (or object\n * with a `tail` method).\n *\n * Dispatches to the `slice` method of the first argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @sig String -> String\n * @param {*} list\n * @return {*}\n * @see R.head, R.init, R.last\n * @example\n *\n * R.tail([1, 2, 3]); //=> [2, 3]\n * R.tail([1, 2]); //=> [2]\n * R.tail([1]); //=> []\n * R.tail([]); //=> []\n *\n * R.tail('abc'); //=> 'bc'\n * R.tail('ab'); //=> 'b'\n * R.tail('a'); //=> ''\n * R.tail(''); //=> ''\n */\nvar tail = /*#__PURE__*/_curry1( /*#__PURE__*/_checkForMethod('tail', /*#__PURE__*/slice(1, Infinity)));\nexport default tail;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xtake from './internal/_xtake.js';\nimport slice from './slice.js';\n\n/**\n * Returns the first `n` elements of the given list, string, or\n * transducer/transformer (or object with a `take` method).\n *\n * Dispatches to the `take` method of the second argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n\n * @param {*} list\n * @return {*}\n * @see R.drop\n * @example\n *\n * R.take(1, ['foo', 'bar', 'baz']); //=> ['foo']\n * R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']\n * R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.take(3, 'ramda'); //=> 'ram'\n *\n * const personnel = [\n * 'Dave Brubeck',\n * 'Paul Desmond',\n * 'Eugene Wright',\n * 'Joe Morello',\n * 'Gerry Mulligan',\n * 'Bob Bates',\n * 'Joe Dodge',\n * 'Ron Crotty'\n * ];\n *\n * const takeFive = R.take(5);\n * takeFive(personnel);\n * //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']\n * @symb R.take(-1, [a, b]) = [a, b]\n * @symb R.take(0, [a, b]) = []\n * @symb R.take(1, [a, b]) = [a]\n * @symb R.take(2, [a, b]) = [a, b]\n */\nvar take = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['take'], _xtake, function take(n, xs) {\n return slice(0, n < 0 ? Infinity : n, xs);\n}));\nexport default take;","import _curry2 from './internal/_curry2.js';\nimport drop from './drop.js';\n\n/**\n * Returns a new list containing the last `n` elements of the given list.\n * If `n > list.length`, returns a list of `list.length` elements.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig Number -> [a] -> [a]\n * @sig Number -> String -> String\n * @param {Number} n The number of elements to return.\n * @param {Array} xs The collection to consider.\n * @return {Array}\n * @see R.dropLast\n * @example\n *\n * R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz']\n * R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']\n * R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']\n * R.takeLast(3, 'ramda'); //=> 'mda'\n */\nvar takeLast = /*#__PURE__*/_curry2(function takeLast(n, xs) {\n return drop(n >= 0 ? xs.length - n : 0, xs);\n});\nexport default takeLast;","import _curry2 from './internal/_curry2.js';\nimport slice from './slice.js';\n\n/**\n * Returns a new list containing the last `n` elements of a given list, passing\n * each value to the supplied predicate function, and terminating when the\n * predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropLastWhile, R.addIndex\n * @example\n *\n * const isNotOne = x => x !== 1;\n *\n * R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4]\n *\n * R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda'\n */\nvar takeLastWhile = /*#__PURE__*/_curry2(function takeLastWhile(fn, xs) {\n var idx = xs.length - 1;\n while (idx >= 0 && fn(xs[idx])) {\n idx -= 1;\n }\n return slice(idx + 1, Infinity, xs);\n});\nexport default takeLastWhile;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xtakeWhile from './internal/_xtakeWhile.js';\nimport slice from './slice.js';\n\n/**\n * Returns a new list containing the first `n` elements of a given list,\n * passing each value to the supplied predicate function, and terminating when\n * the predicate function returns `false`. Excludes the element that caused the\n * predicate function to fail. The predicate function is passed one argument:\n * *(value)*.\n *\n * Dispatches to the `takeWhile` method of the second argument, if present.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig (a -> Boolean) -> [a] -> [a]\n * @sig (a -> Boolean) -> String -> String\n * @param {Function} fn The function called per iteration.\n * @param {Array} xs The collection to iterate over.\n * @return {Array} A new array.\n * @see R.dropWhile, R.transduce, R.addIndex\n * @example\n *\n * const isNotFour = x => x !== 4;\n *\n * R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3]\n *\n * R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram'\n */\nvar takeWhile = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) {\n var idx = 0;\n var len = xs.length;\n while (idx < len && fn(xs[idx])) {\n idx += 1;\n }\n return slice(0, idx, xs);\n}));\nexport default takeWhile;","import _curry2 from './internal/_curry2.js';\nimport _dispatchable from './internal/_dispatchable.js';\nimport _xtap from './internal/_xtap.js';\n\n/**\n * Runs the given function with the supplied object, then returns the object.\n *\n * Acts as a transducer if a transformer is given as second parameter.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig (a -> *) -> a -> a\n * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away.\n * @param {*} x\n * @return {*} `x`.\n * @example\n *\n * const sayX = x => console.log('x is ' + x);\n * R.tap(sayX, 100); //=> 100\n * // logs 'x is 100'\n * @symb R.tap(f, a) = a\n */\nvar tap = /*#__PURE__*/_curry2( /*#__PURE__*/_dispatchable([], _xtap, function tap(fn, x) {\n fn(x);\n return x;\n}));\nexport default tap;","import _cloneRegExp from './internal/_cloneRegExp.js';\nimport _curry2 from './internal/_curry2.js';\nimport _isRegExp from './internal/_isRegExp.js';\nimport toString from './toString.js';\n\n/**\n * Determines whether a given string matches a given regular expression.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category String\n * @sig RegExp -> String -> Boolean\n * @param {RegExp} pattern\n * @param {String} str\n * @return {Boolean}\n * @see R.match\n * @example\n *\n * R.test(/^x/, 'xyz'); //=> true\n * R.test(/^y/, 'xyz'); //=> false\n */\nvar test = /*#__PURE__*/_curry2(function test(pattern, str) {\n if (!_isRegExp(pattern)) {\n throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern));\n }\n return _cloneRegExp(pattern).test(str);\n});\nexport default test;","import _curry2 from './internal/_curry2.js';\nimport _assertPromise from './internal/_assertPromise.js';\n\n/**\n * Returns the result of applying the onSuccess function to the value inside\n * a successfully resolved promise. This is useful for working with promises\n * inside function compositions.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig (a -> b) -> (Promise e a) -> (Promise e b)\n * @sig (a -> (Promise e b)) -> (Promise e a) -> (Promise e b)\n * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value.\n * @param {Promise} p\n * @return {Promise} The result of calling `p.then(onSuccess)`\n * @see R.otherwise\n * @example\n *\n * var makeQuery = (email) => ({ query: { email }});\n *\n * //getMemberName :: String -> Promise ({firstName, lastName})\n * var getMemberName = R.pipe(\n * makeQuery,\n * fetchMember,\n * R.then(R.pick(['firstName', 'lastName']))\n * );\n */\nvar then = /*#__PURE__*/_curry2(function then(f, p) {\n _assertPromise('then', p);\n\n return p.then(f);\n});\nexport default then;","import curryN from './curryN.js';\nimport _curry1 from './internal/_curry1.js';\n\n/**\n * Creates a thunk out of a function. A thunk delays a calculation until\n * its result is needed, providing lazy evaluation of arguments.\n *\n * @func\n * @memberOf R\n * @category Function\n * @sig ((a, b, ..., j) -> k) -> (a, b, ..., j) -> (() -> k)\n * @param {Function} fn A function to wrap in a thunk\n * @return {Function} Expects arguments for `fn` and returns a new function\n * that, when called, applies those arguments to `fn`.\n * @see R.partial, R.partialRight\n * @example\n *\n * R.thunkify(R.identity)(42)(); //=> 42\n * R.thunkify((a, b) => a + b)(25, 17)(); //=> 42\n */\nvar thunkify = /*#__PURE__*/_curry1(function thunkify(fn) {\n return curryN(fn.length, function createThunk() {\n var fnArgs = arguments;\n return function invokeThunk() {\n return fn.apply(this, fnArgs);\n };\n });\n});\n\nexport default thunkify;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Calls an input function `n` times, returning an array containing the results\n * of those function calls.\n *\n * `fn` is passed one argument: The current value of `n`, which begins at `0`\n * and is gradually incremented to `n - 1`.\n *\n * @func\n * @memberOf R\n * @since v0.2.3\n * @category List\n * @sig (Number -> a) -> Number -> [a]\n * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`.\n * @param {Number} n A value between `0` and `n - 1`. Increments after each function call.\n * @return {Array} An array containing the return values of all calls to `fn`.\n * @see R.repeat\n * @example\n *\n * R.times(R.identity, 5); //=> [0, 1, 2, 3, 4]\n * @symb R.times(f, 0) = []\n * @symb R.times(f, 1) = [f(0)]\n * @symb R.times(f, 2) = [f(0), f(1)]\n */\nvar times = /*#__PURE__*/_curry2(function times(fn, n) {\n var len = Number(n);\n var idx = 0;\n var list;\n\n if (len < 0 || isNaN(len)) {\n throw new RangeError('n must be a non-negative number');\n }\n list = new Array(len);\n while (idx < len) {\n list[idx] = fn(idx);\n idx += 1;\n }\n return list;\n});\nexport default times;","import invoker from './invoker.js';\n\n/**\n * The lower case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to lower case.\n * @return {String} The lower case version of `str`.\n * @see R.toUpper\n * @example\n *\n * R.toLower('XYZ'); //=> 'xyz'\n */\nvar toLower = /*#__PURE__*/invoker(0, 'toLowerCase');\nexport default toLower;","import _curry1 from './internal/_curry1.js';\nimport _has from './internal/_has.js';\n\n/**\n * Converts an object into an array of key, value arrays. Only the object's\n * own properties are used.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -> [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own properties.\n * @see R.fromPairs\n * @example\n *\n * R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]]\n */\nvar toPairs = /*#__PURE__*/_curry1(function toPairs(obj) {\n var pairs = [];\n for (var prop in obj) {\n if (_has(prop, obj)) {\n pairs[pairs.length] = [prop, obj[prop]];\n }\n }\n return pairs;\n});\nexport default toPairs;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Converts an object into an array of key, value arrays. The object's own\n * properties and prototype properties are used. Note that the order of the\n * output array is not guaranteed to be consistent across different JS\n * platforms.\n *\n * @func\n * @memberOf R\n * @since v0.4.0\n * @category Object\n * @sig {String: *} -> [[String,*]]\n * @param {Object} obj The object to extract from\n * @return {Array} An array of key, value arrays from the object's own\n * and prototype properties.\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.toPairsIn(f); //=> [['x','X'], ['y','Y']]\n */\nvar toPairsIn = /*#__PURE__*/_curry1(function toPairsIn(obj) {\n var pairs = [];\n for (var prop in obj) {\n pairs[pairs.length] = [prop, obj[prop]];\n }\n return pairs;\n});\nexport default toPairsIn;","import _curry1 from './internal/_curry1.js';\nimport _toString from './internal/_toString.js';\n\n/**\n * Returns the string representation of the given value. `eval`'ing the output\n * should result in a value equivalent to the input value. Many of the built-in\n * `toString` methods do not satisfy this requirement.\n *\n * If the given value is an `[object Object]` with a `toString` method other\n * than `Object.prototype.toString`, this method is invoked with no arguments\n * to produce the return value. This means user-defined constructor functions\n * can provide a suitable `toString` method. For example:\n *\n * function Point(x, y) {\n * this.x = x;\n * this.y = y;\n * }\n *\n * Point.prototype.toString = function() {\n * return 'new Point(' + this.x + ', ' + this.y + ')';\n * };\n *\n * R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category String\n * @sig * -> String\n * @param {*} val\n * @return {String}\n * @example\n *\n * R.toString(42); //=> '42'\n * R.toString('abc'); //=> '\"abc\"'\n * R.toString([1, 2, 3]); //=> '[1, 2, 3]'\n * R.toString({foo: 1, bar: 2, baz: 3}); //=> '{\"bar\": 2, \"baz\": 3, \"foo\": 1}'\n * R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date(\"2001-02-03T04:05:06.000Z\")'\n */\nvar toString = /*#__PURE__*/_curry1(function toString(val) {\n return _toString(val, []);\n});\nexport default toString;","import invoker from './invoker.js';\n\n/**\n * The upper case version of a string.\n *\n * @func\n * @memberOf R\n * @since v0.9.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to upper case.\n * @return {String} The upper case version of `str`.\n * @see R.toLower\n * @example\n *\n * R.toUpper('abc'); //=> 'ABC'\n */\nvar toUpper = /*#__PURE__*/invoker(0, 'toUpperCase');\nexport default toUpper;","import _reduce from './internal/_reduce.js';\nimport _xwrap from './internal/_xwrap.js';\nimport curryN from './curryN.js';\n\n/**\n * Initializes a transducer using supplied iterator function. Returns a single\n * item by iterating through the list, successively calling the transformed\n * iterator function and passing it an accumulator value and the current value\n * from the array, and then passing the result to the next call.\n *\n * The iterator function receives two values: *(acc, value)*. It will be\n * wrapped as a transformer to initialize the transducer. A transformer can be\n * passed directly in place of an iterator function. In both cases, iteration\n * may be stopped early with the [`R.reduced`](#reduced) function.\n *\n * A transducer is a function that accepts a transformer and returns a\n * transformer and can be composed directly.\n *\n * A transformer is an an object that provides a 2-arity reducing iterator\n * function, step, 0-arity initial value function, init, and 1-arity result\n * extraction function, result. The step function is used as the iterator\n * function in reduce. The result function is used to convert the final\n * accumulator into the return type and in most cases is\n * [`R.identity`](#identity). The init function can be used to provide an\n * initial accumulator, but is ignored by transduce.\n *\n * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer.\n *\n * @func\n * @memberOf R\n * @since v0.12.0\n * @category List\n * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a\n * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.\n * @param {Function} fn The iterator function. Receives two values, the accumulator and the\n * current element from the array. Wrapped as transformer, if necessary, and used to\n * initialize the transducer\n * @param {*} acc The initial accumulator value.\n * @param {Array} list The list to iterate over.\n * @return {*} The final, accumulated value.\n * @see R.reduce, R.reduced, R.into\n * @example\n *\n * const numbers = [1, 2, 3, 4];\n * const transducer = R.compose(R.map(R.add(1)), R.take(2));\n * R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3]\n *\n * const isOdd = (x) => x % 2 === 1;\n * const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1));\n * R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1]\n */\nvar transduce = /*#__PURE__*/curryN(4, function transduce(xf, fn, acc, list) {\n return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list);\n});\nexport default transduce;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Transposes the rows and columns of a 2D list.\n * When passed a list of `n` lists of length `x`,\n * returns a list of `x` lists of length `n`.\n *\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [[a]] -> [[a]]\n * @param {Array} list A 2D list\n * @return {Array} A 2D list\n * @example\n *\n * R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']]\n * R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']]\n *\n * // If some of the rows are shorter than the following rows, their elements are skipped:\n * R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]]\n * @symb R.transpose([[a], [b], [c]]) = [a, b, c]\n * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]]\n * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]]\n */\nvar transpose = /*#__PURE__*/_curry1(function transpose(outerlist) {\n var i = 0;\n var result = [];\n while (i < outerlist.length) {\n var innerlist = outerlist[i];\n var j = 0;\n while (j < innerlist.length) {\n if (typeof result[j] === 'undefined') {\n result[j] = [];\n }\n result[j].push(innerlist[j]);\n j += 1;\n }\n i += 1;\n }\n return result;\n});\nexport default transpose;","import _curry3 from './internal/_curry3.js';\nimport map from './map.js';\nimport sequence from './sequence.js';\n\n/**\n * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning\n * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable),\n * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative\n * into an Applicative of Traversable.\n *\n * Dispatches to the `traverse` method of the third argument, if present.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b)\n * @param {Function} of\n * @param {Function} f\n * @param {*} traversable\n * @return {*}\n * @see R.sequence\n * @example\n *\n * // Returns `Maybe.Nothing` if the given divisor is `0`\n * const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d)\n *\n * R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2])\n * R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing\n */\nvar traverse = /*#__PURE__*/_curry3(function traverse(of, f, traversable) {\n return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : sequence(of, map(f, traversable));\n});\nexport default traverse;","import _curry1 from './internal/_curry1.js';\n\nvar ws = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' + '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028' + '\\u2029\\uFEFF';\nvar zeroWidth = '\\u200b';\nvar hasProtoTrim = typeof String.prototype.trim === 'function';\n/**\n * Removes (strips) whitespace from both ends of the string.\n *\n * @func\n * @memberOf R\n * @since v0.6.0\n * @category String\n * @sig String -> String\n * @param {String} str The string to trim.\n * @return {String} Trimmed version of `str`.\n * @example\n *\n * R.trim(' xyz '); //=> 'xyz'\n * R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z']\n */\nvar trim = !hasProtoTrim || /*#__PURE__*/ws.trim() || ! /*#__PURE__*/zeroWidth.trim() ? /*#__PURE__*/_curry1(function trim(str) {\n var beginRx = new RegExp('^[' + ws + '][' + ws + ']*');\n var endRx = new RegExp('[' + ws + '][' + ws + ']*$');\n return str.replace(beginRx, '').replace(endRx, '');\n}) : /*#__PURE__*/_curry1(function trim(str) {\n return str.trim();\n});\nexport default trim;","import _arity from './internal/_arity.js';\nimport _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned\n * function evaluates the `tryer`; if it does not throw, it simply returns the\n * result. If the `tryer` *does* throw, the returned function evaluates the\n * `catcher` function and returns its result. Note that for effective\n * composition with this function, both the `tryer` and `catcher` functions\n * must return the same type of results.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Function\n * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a)\n * @param {Function} tryer The function that may throw.\n * @param {Function} catcher The function that will be evaluated if `tryer` throws.\n * @return {Function} A new function that will catch exceptions and send then to the catcher.\n * @example\n *\n * R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true\n * R.tryCatch(() => { throw 'foo'}, R.always('catched'))('bar') // => 'catched'\n * R.tryCatch(R.times(R.identity), R.always([]))('s') // => []\n `` */\nvar tryCatch = /*#__PURE__*/_curry2(function _tryCatch(tryer, catcher) {\n return _arity(tryer.length, function () {\n try {\n return tryer.apply(this, arguments);\n } catch (e) {\n return catcher.apply(this, _concat([e], arguments));\n }\n });\n});\nexport default tryCatch;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Gives a single-word string description of the (native) type of a value,\n * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not\n * attempt to distinguish user Object types any further, reporting them all as\n * 'Object'.\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Type\n * @sig (* -> {*}) -> String\n * @param {*} val The value to test\n * @return {String}\n * @example\n *\n * R.type({}); //=> \"Object\"\n * R.type(1); //=> \"Number\"\n * R.type(false); //=> \"Boolean\"\n * R.type('s'); //=> \"String\"\n * R.type(null); //=> \"Null\"\n * R.type([]); //=> \"Array\"\n * R.type(/[A-z]/); //=> \"RegExp\"\n * R.type(() => {}); //=> \"Function\"\n * R.type(undefined); //=> \"Undefined\"\n */\nvar type = /*#__PURE__*/_curry1(function type(val) {\n return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);\n});\nexport default type;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Takes a function `fn`, which takes a single array argument, and returns a\n * function which:\n *\n * - takes any number of positional arguments;\n * - passes these arguments to `fn` as an array; and\n * - returns the result.\n *\n * In other words, `R.unapply` derives a variadic function from a function which\n * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply).\n *\n * @func\n * @memberOf R\n * @since v0.8.0\n * @category Function\n * @sig ([*...] -> a) -> (*... -> a)\n * @param {Function} fn\n * @return {Function}\n * @see R.apply\n * @example\n *\n * R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]'\n * @symb R.unapply(f)(a, b) = f([a, b])\n */\nvar unapply = /*#__PURE__*/_curry1(function unapply(fn) {\n return function () {\n return fn(Array.prototype.slice.call(arguments, 0));\n };\n});\nexport default unapply;","import _curry1 from './internal/_curry1.js';\nimport nAry from './nAry.js';\n\n/**\n * Wraps a function of any arity (including nullary) in a function that accepts\n * exactly 1 parameter. Any extraneous parameters will not be passed to the\n * supplied function.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Function\n * @sig (* -> b) -> (a -> b)\n * @param {Function} fn The function to wrap.\n * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of\n * arity 1.\n * @see R.binary, R.nAry\n * @example\n *\n * const takesTwoArgs = function(a, b) {\n * return [a, b];\n * };\n * takesTwoArgs.length; //=> 2\n * takesTwoArgs(1, 2); //=> [1, 2]\n *\n * const takesOneArg = R.unary(takesTwoArgs);\n * takesOneArg.length; //=> 1\n * // Only 1 argument is passed to the wrapped function\n * takesOneArg(1, 2); //=> [1, undefined]\n * @symb R.unary(f)(a, b, c) = f(a)\n */\nvar unary = /*#__PURE__*/_curry1(function unary(fn) {\n return nAry(1, fn);\n});\nexport default unary;","import _curry2 from './internal/_curry2.js';\nimport curryN from './curryN.js';\n\n/**\n * Returns a function of arity `n` from a (manually) curried function.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Function\n * @sig Number -> (a -> b) -> (a -> c)\n * @param {Number} length The arity for the returned function.\n * @param {Function} fn The function to uncurry.\n * @return {Function} A new function.\n * @see R.curry\n * @example\n *\n * const addFour = a => b => c => d => a + b + c + d;\n *\n * const uncurriedAddFour = R.uncurryN(4, addFour);\n * uncurriedAddFour(1, 2, 3, 4); //=> 10\n */\nvar uncurryN = /*#__PURE__*/_curry2(function uncurryN(depth, fn) {\n return curryN(depth, function () {\n var currentDepth = 1;\n var value = fn;\n var idx = 0;\n var endIdx;\n while (currentDepth <= depth && typeof value === 'function') {\n endIdx = currentDepth === depth ? arguments.length : idx + value.length;\n value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx));\n currentDepth += 1;\n idx = endIdx;\n }\n return value;\n });\n});\nexport default uncurryN;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Builds a list from a seed value. Accepts an iterator function, which returns\n * either false to stop iteration or an array of length 2 containing the value\n * to add to the resulting list and the seed to be used in the next call to the\n * iterator function.\n *\n * The iterator function receives one argument: *(seed)*.\n *\n * @func\n * @memberOf R\n * @since v0.10.0\n * @category List\n * @sig (a -> [b]) -> * -> [b]\n * @param {Function} fn The iterator function. receives one argument, `seed`, and returns\n * either false to quit iteration or an array of length two to proceed. The element\n * at index 0 of this array will be added to the resulting array, and the element\n * at index 1 will be passed to the next call to `fn`.\n * @param {*} seed The seed value.\n * @return {Array} The final list.\n * @example\n *\n * const f = n => n > 50 ? false : [-n, n + 10];\n * R.unfold(f, 10); //=> [-10, -20, -30, -40, -50]\n * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...]\n */\nvar unfold = /*#__PURE__*/_curry2(function unfold(fn, seed) {\n var pair = fn(seed);\n var result = [];\n while (pair && pair.length) {\n result[result.length] = pair[0];\n pair = fn(pair[1]);\n }\n return result;\n});\nexport default unfold;","import _concat from './internal/_concat.js';\nimport _curry2 from './internal/_curry2.js';\nimport compose from './compose.js';\nimport uniq from './uniq.js';\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig [*] -> [*] -> [*]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The first and second lists concatenated, with\n * duplicates removed.\n * @example\n *\n * R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4]\n */\nvar union = /*#__PURE__*/_curry2( /*#__PURE__*/compose(uniq, _concat));\nexport default union;","import _concat from './internal/_concat.js';\nimport _curry3 from './internal/_curry3.js';\nimport uniqWith from './uniqWith.js';\n\n/**\n * Combines two lists into a set (i.e. no duplicates) composed of the elements\n * of each list. Duplication is determined according to the value returned by\n * applying the supplied predicate to two list elements.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Relation\n * @sig ((a, a) -> Boolean) -> [*] -> [*] -> [*]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list1 The first list.\n * @param {Array} list2 The second list.\n * @return {Array} The first and second lists concatenated, with\n * duplicates removed.\n * @see R.union\n * @example\n *\n * const l1 = [{a: 1}, {a: 2}];\n * const l2 = [{a: 1}, {a: 4}];\n * R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}]\n */\nvar unionWith = /*#__PURE__*/_curry3(function unionWith(pred, list1, list2) {\n return uniqWith(pred, _concat(list1, list2));\n});\nexport default unionWith;","import identity from './identity.js';\nimport uniqBy from './uniqBy.js';\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list. [`R.equals`](#equals) is used to determine equality.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [a]\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniq([1, 1, 2, 1]); //=> [1, 2]\n * R.uniq([1, '1']); //=> [1, '1']\n * R.uniq([[42], [42]]); //=> [[42]]\n */\nvar uniq = /*#__PURE__*/uniqBy(identity);\nexport default uniq;","import _Set from './internal/_Set.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied function to\n * each list element. Prefers the first item if the supplied function produces\n * the same value on two items. [`R.equals`](#equals) is used for comparison.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category List\n * @sig (a -> b) -> [a] -> [a]\n * @param {Function} fn A function used to produce a value to use during comparisons.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]\n */\nvar uniqBy = /*#__PURE__*/_curry2(function uniqBy(fn, list) {\n var set = new _Set();\n var result = [];\n var idx = 0;\n var appliedItem, item;\n\n while (idx < list.length) {\n item = list[idx];\n appliedItem = fn(item);\n if (set.add(appliedItem)) {\n result.push(item);\n }\n idx += 1;\n }\n return result;\n});\nexport default uniqBy;","import _includesWith from './internal/_includesWith.js';\nimport _curry2 from './internal/_curry2.js';\n\n/**\n * Returns a new list containing only one copy of each element in the original\n * list, based upon the value returned by applying the supplied predicate to\n * two list elements. Prefers the first item if two items compare equal based\n * on the predicate.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category List\n * @sig ((a, a) -> Boolean) -> [a] -> [a]\n * @param {Function} pred A predicate used to test whether two items are equal.\n * @param {Array} list The array to consider.\n * @return {Array} The list of unique items.\n * @example\n *\n * const strEq = R.eqBy(String);\n * R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2]\n * R.uniqWith(strEq)([{}, {}]); //=> [{}]\n * R.uniqWith(strEq)([1, '1', 1]); //=> [1]\n * R.uniqWith(strEq)(['1', 1, 1]); //=> ['1']\n */\nvar uniqWith = /*#__PURE__*/_curry2(function uniqWith(pred, list) {\n var idx = 0;\n var len = list.length;\n var result = [];\n var item;\n while (idx < len) {\n item = list[idx];\n if (!_includesWith(pred, item, result)) {\n result[result.length] = item;\n }\n idx += 1;\n }\n return result;\n});\nexport default uniqWith;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is not satisfied, the function will return the result of\n * calling the `whenFalseFn` function with the same argument. If the predicate\n * is satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> a) -> a -> a\n * @param {Function} pred A predicate function\n * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates\n * to a falsy value.\n * @param {*} x An object to test with the `pred` function and\n * pass to `whenFalseFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`.\n * @see R.ifElse, R.when, R.cond\n * @example\n *\n * let safeInc = R.unless(R.isNil, R.inc);\n * safeInc(null); //=> null\n * safeInc(1); //=> 2\n */\nvar unless = /*#__PURE__*/_curry3(function unless(pred, whenFalseFn, x) {\n return pred(x) ? x : whenFalseFn(x);\n});\nexport default unless;","import _identity from './internal/_identity.js';\nimport chain from './chain.js';\n\n/**\n * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from\n * any [Chain](https://github.com/fantasyland/fantasy-land#chain).\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig Chain c => c (c a) -> c a\n * @param {*} list\n * @return {*}\n * @see R.flatten, R.chain\n * @example\n *\n * R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]]\n * R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6]\n */\nvar unnest = /*#__PURE__*/chain(_identity);\nexport default unnest;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Takes a predicate, a transformation function, and an initial value,\n * and returns a value of the same type as the initial value.\n * It does so by applying the transformation until the predicate is satisfied,\n * at which point it returns the satisfactory value.\n *\n * @func\n * @memberOf R\n * @since v0.20.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> a) -> a -> a\n * @param {Function} pred A predicate function\n * @param {Function} fn The iterator function\n * @param {*} init Initial value\n * @return {*} Final value that satisfies predicate\n * @example\n *\n * R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128\n */\nvar until = /*#__PURE__*/_curry3(function until(pred, fn, init) {\n var val = init;\n while (!pred(val)) {\n val = fn(val);\n }\n return val;\n});\nexport default until;","import _curry3 from './internal/_curry3.js';\nimport adjust from './adjust.js';\nimport always from './always.js';\n\n/**\n * Returns a new copy of the array with the element at the provided index\n * replaced with the given value.\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category List\n * @sig Number -> a -> [a] -> [a]\n * @param {Number} idx The index to update.\n * @param {*} x The value to exist at the given index of the returned array.\n * @param {Array|Arguments} list The source array-like object to be updated.\n * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`.\n * @see R.adjust\n * @example\n *\n * R.update(1, '_', ['a', 'b', 'c']); //=> ['a', '_', 'c']\n * R.update(-1, '_', ['a', 'b', 'c']); //=> ['a', 'b', '_']\n * @symb R.update(-1, a, [b, c]) = [b, a]\n * @symb R.update(0, a, [b, c]) = [a, c]\n * @symb R.update(1, a, [b, c]) = [b, a]\n */\nvar update = /*#__PURE__*/_curry3(function update(idx, x, list) {\n return adjust(idx, always(x), list);\n});\nexport default update;","import _curry2 from './internal/_curry2.js';\nimport curryN from './curryN.js';\n\n/**\n * Accepts a function `fn` and a list of transformer functions and returns a\n * new curried function. When the new function is invoked, it calls the\n * function `fn` with parameters consisting of the result of calling each\n * supplied handler on successive arguments to the new function.\n *\n * If more arguments are passed to the returned function than transformer\n * functions, those arguments are passed directly to `fn` as additional\n * parameters. If you expect additional arguments that don't need to be\n * transformed, although you can ignore them, it's best to pass an identity\n * function so that the new function reports the correct arity.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Function\n * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z)\n * @param {Function} fn The function to wrap.\n * @param {Array} transformers A list of transformer functions\n * @return {Function} The wrapped function.\n * @see R.converge\n * @example\n *\n * R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81\n * R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81\n * R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32\n * R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32\n * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b))\n */\nvar useWith = /*#__PURE__*/_curry2(function useWith(fn, transformers) {\n return curryN(transformers.length, function () {\n var args = [];\n var idx = 0;\n while (idx < transformers.length) {\n args.push(transformers[idx].call(this, arguments[idx]));\n idx += 1;\n }\n return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length)));\n });\n});\nexport default useWith;","import _curry1 from './internal/_curry1.js';\nimport keys from './keys.js';\n\n/**\n * Returns a list of all the enumerable own properties of the supplied object.\n * Note that the order of the output array is not guaranteed across different\n * JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own properties.\n * @see R.valuesIn, R.keys\n * @example\n *\n * R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]\n */\nvar values = /*#__PURE__*/_curry1(function values(obj) {\n var props = keys(obj);\n var len = props.length;\n var vals = [];\n var idx = 0;\n while (idx < len) {\n vals[idx] = obj[props[idx]];\n idx += 1;\n }\n return vals;\n});\nexport default values;","import _curry1 from './internal/_curry1.js';\n\n/**\n * Returns a list of all the properties, including prototype properties, of the\n * supplied object.\n * Note that the order of the output array is not guaranteed to be consistent\n * across different JS platforms.\n *\n * @func\n * @memberOf R\n * @since v0.2.0\n * @category Object\n * @sig {k: v} -> [v]\n * @param {Object} obj The object to extract values from\n * @return {Array} An array of the values of the object's own and prototype properties.\n * @see R.values, R.keysIn\n * @example\n *\n * const F = function() { this.x = 'X'; };\n * F.prototype.y = 'Y';\n * const f = new F();\n * R.valuesIn(f); //=> ['X', 'Y']\n */\nvar valuesIn = /*#__PURE__*/_curry1(function valuesIn(obj) {\n var prop;\n var vs = [];\n for (prop in obj) {\n vs[vs.length] = obj[prop];\n }\n return vs;\n});\nexport default valuesIn;","import _curry2 from './internal/_curry2.js';\n\n// `Const` is a functor that effectively ignores the function given to `map`.\nvar Const = function (x) {\n return { value: x, 'fantasy-land/map': function () {\n return this;\n } };\n};\n\n/**\n * Returns a \"view\" of the given data structure, determined by the given lens.\n * The lens's focus determines which portion of the data structure is visible.\n *\n * @func\n * @memberOf R\n * @since v0.16.0\n * @category Object\n * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s\n * @sig Lens s a -> s -> a\n * @param {Lens} lens\n * @param {*} x\n * @return {*}\n * @see R.prop, R.lensIndex, R.lensProp\n * @example\n *\n * const xLens = R.lensProp('x');\n *\n * R.view(xLens, {x: 1, y: 2}); //=> 1\n * R.view(xLens, {x: 4, y: 2}); //=> 4\n */\nvar view = /*#__PURE__*/_curry2(function view(lens, x) {\n // Using `Const` effectively ignores the setter function of the `lens`,\n // leaving the value returned by the getter function unmodified.\n return lens(Const)(x).value;\n});\nexport default view;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Tests the final argument by passing it to the given predicate function. If\n * the predicate is satisfied, the function will return the result of calling\n * the `whenTrueFn` function with the same argument. If the predicate is not\n * satisfied, the argument is returned as is.\n *\n * @func\n * @memberOf R\n * @since v0.18.0\n * @category Logic\n * @sig (a -> Boolean) -> (a -> a) -> a -> a\n * @param {Function} pred A predicate function\n * @param {Function} whenTrueFn A function to invoke when the `condition`\n * evaluates to a truthy value.\n * @param {*} x An object to test with the `pred` function and\n * pass to `whenTrueFn` if necessary.\n * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`.\n * @see R.ifElse, R.unless, R.cond\n * @example\n *\n * // truncate :: String -> String\n * const truncate = R.when(\n * R.propSatisfies(R.gt(R.__, 10), 'length'),\n * R.pipe(R.take(10), R.append('…'), R.join(''))\n * );\n * truncate('12345'); //=> '12345'\n * truncate('0123456789ABC'); //=> '0123456789…'\n */\nvar when = /*#__PURE__*/_curry3(function when(pred, whenTrueFn, x) {\n return pred(x) ? whenTrueFn(x) : x;\n});\nexport default when;","import _curry2 from './internal/_curry2.js';\nimport _has from './internal/_has.js';\n\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec. Each of the spec's own properties must be a predicate function.\n * Each predicate is applied to the value of the corresponding property of the\n * test object. `where` returns true if all the predicates return true, false\n * otherwise.\n *\n * `where` is well suited to declaratively expressing constraints for other\n * functions such as [`filter`](#filter) and [`find`](#find).\n *\n * @func\n * @memberOf R\n * @since v0.1.1\n * @category Object\n * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propSatisfies, R.whereEq\n * @example\n *\n * // pred :: Object -> Boolean\n * const pred = R.where({\n * a: R.equals('foo'),\n * b: R.complement(R.equals('bar')),\n * x: R.gt(R.__, 10),\n * y: R.lt(R.__, 20)\n * });\n *\n * pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true\n * pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false\n * pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false\n * pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false\n * pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false\n */\nvar where = /*#__PURE__*/_curry2(function where(spec, testObj) {\n for (var prop in spec) {\n if (_has(prop, spec) && !spec[prop](testObj[prop])) {\n return false;\n }\n }\n return true;\n});\nexport default where;","import _curry2 from './internal/_curry2.js';\nimport equals from './equals.js';\nimport map from './map.js';\nimport where from './where.js';\n\n/**\n * Takes a spec object and a test object; returns true if the test satisfies\n * the spec, false otherwise. An object satisfies the spec if, for each of the\n * spec's own properties, accessing that property of the object gives the same\n * value (in [`R.equals`](#equals) terms) as accessing that property of the\n * spec.\n *\n * `whereEq` is a specialization of [`where`](#where).\n *\n * @func\n * @memberOf R\n * @since v0.14.0\n * @category Object\n * @sig {String: *} -> {String: *} -> Boolean\n * @param {Object} spec\n * @param {Object} testObj\n * @return {Boolean}\n * @see R.propEq, R.where\n * @example\n *\n * // pred :: Object -> Boolean\n * const pred = R.whereEq({a: 1, b: 2});\n *\n * pred({a: 1}); //=> false\n * pred({a: 1, b: 2}); //=> true\n * pred({a: 1, b: 2, c: 3}); //=> true\n * pred({a: 1, b: 1}); //=> false\n */\nvar whereEq = /*#__PURE__*/_curry2(function whereEq(spec, testObj) {\n return where(map(equals, spec), testObj);\n});\nexport default whereEq;","import _includes from './internal/_includes.js';\nimport _curry2 from './internal/_curry2.js';\nimport flip from './flip.js';\nimport reject from './reject.js';\n\n/**\n * Returns a new list without values in the first argument.\n * [`R.equals`](#equals) is used to determine equality.\n *\n * Acts as a transducer if a transformer is given in list position.\n *\n * @func\n * @memberOf R\n * @since v0.19.0\n * @category List\n * @sig [a] -> [a] -> [a]\n * @param {Array} list1 The values to be removed from `list2`.\n * @param {Array} list2 The array to remove values from.\n * @return {Array} The new array without values in `list1`.\n * @see R.transduce, R.difference, R.remove\n * @example\n *\n * R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]\n */\nvar without = /*#__PURE__*/_curry2(function (xs, list) {\n return reject(flip(_includes)(xs), list);\n});\nexport default without;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new list out of the two supplied by creating each possible pair\n * from the lists.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b] -> [[a,b]]\n * @param {Array} as The first list.\n * @param {Array} bs The second list.\n * @return {Array} The list made by combining each possible pair from\n * `as` and `bs` into pairs (`[a, b]`).\n * @example\n *\n * R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]\n * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]]\n */\nvar xprod = /*#__PURE__*/_curry2(function xprod(a, b) {\n // = xprodWith(prepend); (takes about 3 times as long...)\n var idx = 0;\n var ilen = a.length;\n var j;\n var jlen = b.length;\n var result = [];\n while (idx < ilen) {\n j = 0;\n while (j < jlen) {\n result[result.length] = [a[idx], b[j]];\n j += 1;\n }\n idx += 1;\n }\n return result;\n});\nexport default xprod;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new list out of the two supplied by pairing up equally-positioned\n * items from both lists. The returned list is truncated to the length of the\n * shorter of the two input lists.\n * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`.\n *\n * @func\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig [a] -> [b] -> [[a,b]]\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`.\n * @example\n *\n * R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']]\n * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]]\n */\nvar zip = /*#__PURE__*/_curry2(function zip(a, b) {\n var rv = [];\n var idx = 0;\n var len = Math.min(a.length, b.length);\n while (idx < len) {\n rv[idx] = [a[idx], b[idx]];\n idx += 1;\n }\n return rv;\n});\nexport default zip;","import _curry2 from './internal/_curry2.js';\n\n/**\n * Creates a new object out of a list of keys and a list of values.\n * Key/value pairing is truncated to the length of the shorter of the two lists.\n * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`.\n *\n * @func\n * @memberOf R\n * @since v0.3.0\n * @category List\n * @sig [String] -> [*] -> {String: *}\n * @param {Array} keys The array that will be properties on the output object.\n * @param {Array} values The list of values on the output object.\n * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`.\n * @example\n *\n * R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3}\n */\nvar zipObj = /*#__PURE__*/_curry2(function zipObj(keys, values) {\n var idx = 0;\n var len = Math.min(keys.length, values.length);\n var out = {};\n while (idx < len) {\n out[keys[idx]] = values[idx];\n idx += 1;\n }\n return out;\n});\nexport default zipObj;","import _curry3 from './internal/_curry3.js';\n\n/**\n * Creates a new list out of the two supplied by applying the function to each\n * equally-positioned pair in the lists. The returned list is truncated to the\n * length of the shorter of the two input lists.\n *\n * @function\n * @memberOf R\n * @since v0.1.0\n * @category List\n * @sig ((a, b) -> c) -> [a] -> [b] -> [c]\n * @param {Function} fn The function used to combine the two elements into one value.\n * @param {Array} list1 The first array to consider.\n * @param {Array} list2 The second array to consider.\n * @return {Array} The list made by combining same-indexed elements of `list1` and `list2`\n * using `fn`.\n * @example\n *\n * const f = (x, y) => {\n * // ...\n * };\n * R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']);\n * //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')]\n * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)]\n */\nvar zipWith = /*#__PURE__*/_curry3(function zipWith(fn, a, b) {\n var rv = [];\n var idx = 0;\n var len = Math.min(a.length, b.length);\n while (idx < len) {\n rv[idx] = fn(a[idx], b[idx]);\n idx += 1;\n }\n return rv;\n});\nexport default zipWith;","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport { ajax } from '../internal/observable/dom/ajax';\nexport { AjaxResponse, AjaxError, AjaxTimeoutError } from '../internal/observable/dom/AjaxObservable';\n//# sourceMappingURL=index.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport { Observable } from './internal/Observable';\nexport { ConnectableObservable } from './internal/observable/ConnectableObservable';\nexport { GroupedObservable } from './internal/operators/groupBy';\nexport { observable } from './internal/symbol/observable';\nexport { Subject } from './internal/Subject';\nexport { BehaviorSubject } from './internal/BehaviorSubject';\nexport { ReplaySubject } from './internal/ReplaySubject';\nexport { AsyncSubject } from './internal/AsyncSubject';\nexport { asap as asapScheduler } from './internal/scheduler/asap';\nexport { async as asyncScheduler } from './internal/scheduler/async';\nexport { queue as queueScheduler } from './internal/scheduler/queue';\nexport { animationFrame as animationFrameScheduler } from './internal/scheduler/animationFrame';\nexport { VirtualTimeScheduler, VirtualAction } from './internal/scheduler/VirtualTimeScheduler';\nexport { Scheduler } from './internal/Scheduler';\nexport { Subscription } from './internal/Subscription';\nexport { Subscriber } from './internal/Subscriber';\nexport { Notification, NotificationKind } from './internal/Notification';\nexport { pipe } from './internal/util/pipe';\nexport { noop } from './internal/util/noop';\nexport { identity } from './internal/util/identity';\nexport { isObservable } from './internal/util/isObservable';\nexport { ArgumentOutOfRangeError } from './internal/util/ArgumentOutOfRangeError';\nexport { EmptyError } from './internal/util/EmptyError';\nexport { ObjectUnsubscribedError } from './internal/util/ObjectUnsubscribedError';\nexport { UnsubscriptionError } from './internal/util/UnsubscriptionError';\nexport { TimeoutError } from './internal/util/TimeoutError';\nexport { bindCallback } from './internal/observable/bindCallback';\nexport { bindNodeCallback } from './internal/observable/bindNodeCallback';\nexport { combineLatest } from './internal/observable/combineLatest';\nexport { concat } from './internal/observable/concat';\nexport { defer } from './internal/observable/defer';\nexport { empty } from './internal/observable/empty';\nexport { forkJoin } from './internal/observable/forkJoin';\nexport { from } from './internal/observable/from';\nexport { fromEvent } from './internal/observable/fromEvent';\nexport { fromEventPattern } from './internal/observable/fromEventPattern';\nexport { generate } from './internal/observable/generate';\nexport { iif } from './internal/observable/iif';\nexport { interval } from './internal/observable/interval';\nexport { merge } from './internal/observable/merge';\nexport { never } from './internal/observable/never';\nexport { of } from './internal/observable/of';\nexport { onErrorResumeNext } from './internal/observable/onErrorResumeNext';\nexport { pairs } from './internal/observable/pairs';\nexport { partition } from './internal/observable/partition';\nexport { race } from './internal/observable/race';\nexport { range } from './internal/observable/range';\nexport { throwError } from './internal/observable/throwError';\nexport { timer } from './internal/observable/timer';\nexport { using } from './internal/observable/using';\nexport { zip } from './internal/observable/zip';\nexport { scheduled } from './internal/scheduled/scheduled';\nexport { EMPTY } from './internal/observable/empty';\nexport { NEVER } from './internal/observable/never';\nexport { config } from './internal/config';\n//# sourceMappingURL=index.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { Subscription } from './Subscription';\nvar AsyncSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncSubject, _super);\n function AsyncSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.value = null;\n _this.hasNext = false;\n _this.hasCompleted = false;\n return _this;\n }\n AsyncSubject.prototype._subscribe = function (subscriber) {\n if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.hasCompleted && this.hasNext) {\n subscriber.next(this.value);\n subscriber.complete();\n return Subscription.EMPTY;\n }\n return _super.prototype._subscribe.call(this, subscriber);\n };\n AsyncSubject.prototype.next = function (value) {\n if (!this.hasCompleted) {\n this.value = value;\n this.hasNext = true;\n }\n };\n AsyncSubject.prototype.error = function (error) {\n if (!this.hasCompleted) {\n _super.prototype.error.call(this, error);\n }\n };\n AsyncSubject.prototype.complete = function () {\n this.hasCompleted = true;\n if (this.hasNext) {\n _super.prototype.next.call(this, this.value);\n }\n _super.prototype.complete.call(this);\n };\n return AsyncSubject;\n}(Subject));\nexport { AsyncSubject };\n//# sourceMappingURL=AsyncSubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_util_ObjectUnsubscribedError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nvar BehaviorSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BehaviorSubject, _super);\n function BehaviorSubject(_value) {\n var _this = _super.call(this) || this;\n _this._value = _value;\n return _this;\n }\n Object.defineProperty(BehaviorSubject.prototype, \"value\", {\n get: function () {\n return this.getValue();\n },\n enumerable: true,\n configurable: true\n });\n BehaviorSubject.prototype._subscribe = function (subscriber) {\n var subscription = _super.prototype._subscribe.call(this, subscriber);\n if (subscription && !subscription.closed) {\n subscriber.next(this._value);\n }\n return subscription;\n };\n BehaviorSubject.prototype.getValue = function () {\n if (this.hasError) {\n throw this.thrownError;\n }\n else if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return this._value;\n }\n };\n BehaviorSubject.prototype.next = function (value) {\n _super.prototype.next.call(this, this._value = value);\n };\n return BehaviorSubject;\n}(Subject));\nexport { BehaviorSubject };\n//# sourceMappingURL=BehaviorSubject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar InnerSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerSubscriber, _super);\n function InnerSubscriber(parent, outerValue, outerIndex) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.outerValue = outerValue;\n _this.outerIndex = outerIndex;\n _this.index = 0;\n return _this;\n }\n InnerSubscriber.prototype._next = function (value) {\n this.parent.notifyNext(this.outerValue, value, this.outerIndex, this.index++, this);\n };\n InnerSubscriber.prototype._error = function (error) {\n this.parent.notifyError(error, this);\n this.unsubscribe();\n };\n InnerSubscriber.prototype._complete = function () {\n this.parent.notifyComplete(this);\n this.unsubscribe();\n };\n return InnerSubscriber;\n}(Subscriber));\nexport { InnerSubscriber };\n//# sourceMappingURL=InnerSubscriber.js.map\n","/** PURE_IMPORTS_START _observable_empty,_observable_of,_observable_throwError PURE_IMPORTS_END */\nimport { empty } from './observable/empty';\nimport { of } from './observable/of';\nimport { throwError } from './observable/throwError';\nexport var NotificationKind;\n/*@__PURE__*/ (function (NotificationKind) {\n NotificationKind[\"NEXT\"] = \"N\";\n NotificationKind[\"ERROR\"] = \"E\";\n NotificationKind[\"COMPLETE\"] = \"C\";\n})(NotificationKind || (NotificationKind = {}));\nvar Notification = /*@__PURE__*/ (function () {\n function Notification(kind, value, error) {\n this.kind = kind;\n this.value = value;\n this.error = error;\n this.hasValue = kind === 'N';\n }\n Notification.prototype.observe = function (observer) {\n switch (this.kind) {\n case 'N':\n return observer.next && observer.next(this.value);\n case 'E':\n return observer.error && observer.error(this.error);\n case 'C':\n return observer.complete && observer.complete();\n }\n };\n Notification.prototype.do = function (next, error, complete) {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return next && next(this.value);\n case 'E':\n return error && error(this.error);\n case 'C':\n return complete && complete();\n }\n };\n Notification.prototype.accept = function (nextOrObserver, error, complete) {\n if (nextOrObserver && typeof nextOrObserver.next === 'function') {\n return this.observe(nextOrObserver);\n }\n else {\n return this.do(nextOrObserver, error, complete);\n }\n };\n Notification.prototype.toObservable = function () {\n var kind = this.kind;\n switch (kind) {\n case 'N':\n return of(this.value);\n case 'E':\n return throwError(this.error);\n case 'C':\n return empty();\n }\n throw new Error('unexpected notification kind value');\n };\n Notification.createNext = function (value) {\n if (typeof value !== 'undefined') {\n return new Notification('N', value);\n }\n return Notification.undefinedValueNotification;\n };\n Notification.createError = function (err) {\n return new Notification('E', undefined, err);\n };\n Notification.createComplete = function () {\n return Notification.completeNotification;\n };\n Notification.completeNotification = new Notification('C');\n Notification.undefinedValueNotification = new Notification('N', undefined);\n return Notification;\n}());\nexport { Notification };\n//# sourceMappingURL=Notification.js.map\n","/** PURE_IMPORTS_START _util_canReportError,_util_toSubscriber,_symbol_observable,_util_pipe,_config PURE_IMPORTS_END */\nimport { canReportError } from './util/canReportError';\nimport { toSubscriber } from './util/toSubscriber';\nimport { observable as Symbol_observable } from './symbol/observable';\nimport { pipeFromArray } from './util/pipe';\nimport { config } from './config';\nvar Observable = /*@__PURE__*/ (function () {\n function Observable(subscribe) {\n this._isScalar = false;\n if (subscribe) {\n this._subscribe = subscribe;\n }\n }\n Observable.prototype.lift = function (operator) {\n var observable = new Observable();\n observable.source = this;\n observable.operator = operator;\n return observable;\n };\n Observable.prototype.subscribe = function (observerOrNext, error, complete) {\n var operator = this.operator;\n var sink = toSubscriber(observerOrNext, error, complete);\n if (operator) {\n sink.add(operator.call(sink, this.source));\n }\n else {\n sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ?\n this._subscribe(sink) :\n this._trySubscribe(sink));\n }\n if (config.useDeprecatedSynchronousErrorHandling) {\n if (sink.syncErrorThrowable) {\n sink.syncErrorThrowable = false;\n if (sink.syncErrorThrown) {\n throw sink.syncErrorValue;\n }\n }\n }\n return sink;\n };\n Observable.prototype._trySubscribe = function (sink) {\n try {\n return this._subscribe(sink);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n sink.syncErrorThrown = true;\n sink.syncErrorValue = err;\n }\n if (canReportError(sink)) {\n sink.error(err);\n }\n else {\n console.warn(err);\n }\n }\n };\n Observable.prototype.forEach = function (next, promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var subscription;\n subscription = _this.subscribe(function (value) {\n try {\n next(value);\n }\n catch (err) {\n reject(err);\n if (subscription) {\n subscription.unsubscribe();\n }\n }\n }, reject, resolve);\n });\n };\n Observable.prototype._subscribe = function (subscriber) {\n var source = this.source;\n return source && source.subscribe(subscriber);\n };\n Observable.prototype[Symbol_observable] = function () {\n return this;\n };\n Observable.prototype.pipe = function () {\n var operations = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n operations[_i] = arguments[_i];\n }\n if (operations.length === 0) {\n return this;\n }\n return pipeFromArray(operations)(this);\n };\n Observable.prototype.toPromise = function (promiseCtor) {\n var _this = this;\n promiseCtor = getPromiseCtor(promiseCtor);\n return new promiseCtor(function (resolve, reject) {\n var value;\n _this.subscribe(function (x) { return value = x; }, function (err) { return reject(err); }, function () { return resolve(value); });\n });\n };\n Observable.create = function (subscribe) {\n return new Observable(subscribe);\n };\n return Observable;\n}());\nexport { Observable };\nfunction getPromiseCtor(promiseCtor) {\n if (!promiseCtor) {\n promiseCtor = config.Promise || Promise;\n }\n if (!promiseCtor) {\n throw new Error('no Promise impl found');\n }\n return promiseCtor;\n}\n//# sourceMappingURL=Observable.js.map\n","/** PURE_IMPORTS_START _config,_util_hostReportError PURE_IMPORTS_END */\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nexport var empty = {\n closed: true,\n next: function (value) { },\n error: function (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n },\n complete: function () { }\n};\n//# sourceMappingURL=Observer.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from './Subscriber';\nvar OuterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OuterSubscriber, _super);\n function OuterSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n OuterSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n OuterSubscriber.prototype.notifyError = function (error, innerSub) {\n this.destination.error(error);\n };\n OuterSubscriber.prototype.notifyComplete = function (innerSub) {\n this.destination.complete();\n };\n return OuterSubscriber;\n}(Subscriber));\nexport { OuterSubscriber };\n//# sourceMappingURL=OuterSubscriber.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_queue,_Subscription,_operators_observeOn,_util_ObjectUnsubscribedError,_SubjectSubscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from './Subject';\nimport { queue } from './scheduler/queue';\nimport { Subscription } from './Subscription';\nimport { ObserveOnSubscriber } from './operators/observeOn';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nvar ReplaySubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ReplaySubject, _super);\n function ReplaySubject(bufferSize, windowTime, scheduler) {\n if (bufferSize === void 0) {\n bufferSize = Number.POSITIVE_INFINITY;\n }\n if (windowTime === void 0) {\n windowTime = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this) || this;\n _this.scheduler = scheduler;\n _this._events = [];\n _this._infiniteTimeWindow = false;\n _this._bufferSize = bufferSize < 1 ? 1 : bufferSize;\n _this._windowTime = windowTime < 1 ? 1 : windowTime;\n if (windowTime === Number.POSITIVE_INFINITY) {\n _this._infiniteTimeWindow = true;\n _this.next = _this.nextInfiniteTimeWindow;\n }\n else {\n _this.next = _this.nextTimeWindow;\n }\n return _this;\n }\n ReplaySubject.prototype.nextInfiniteTimeWindow = function (value) {\n var _events = this._events;\n _events.push(value);\n if (_events.length > this._bufferSize) {\n _events.shift();\n }\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype.nextTimeWindow = function (value) {\n this._events.push(new ReplayEvent(this._getNow(), value));\n this._trimBufferThenGetEvents();\n _super.prototype.next.call(this, value);\n };\n ReplaySubject.prototype._subscribe = function (subscriber) {\n var _infiniteTimeWindow = this._infiniteTimeWindow;\n var _events = _infiniteTimeWindow ? this._events : this._trimBufferThenGetEvents();\n var scheduler = this.scheduler;\n var len = _events.length;\n var subscription;\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.isStopped || this.hasError) {\n subscription = Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n subscription = new SubjectSubscription(this, subscriber);\n }\n if (scheduler) {\n subscriber.add(subscriber = new ObserveOnSubscriber(subscriber, scheduler));\n }\n if (_infiniteTimeWindow) {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i]);\n }\n }\n else {\n for (var i = 0; i < len && !subscriber.closed; i++) {\n subscriber.next(_events[i].value);\n }\n }\n if (this.hasError) {\n subscriber.error(this.thrownError);\n }\n else if (this.isStopped) {\n subscriber.complete();\n }\n return subscription;\n };\n ReplaySubject.prototype._getNow = function () {\n return (this.scheduler || queue).now();\n };\n ReplaySubject.prototype._trimBufferThenGetEvents = function () {\n var now = this._getNow();\n var _bufferSize = this._bufferSize;\n var _windowTime = this._windowTime;\n var _events = this._events;\n var eventsCount = _events.length;\n var spliceCount = 0;\n while (spliceCount < eventsCount) {\n if ((now - _events[spliceCount].time) < _windowTime) {\n break;\n }\n spliceCount++;\n }\n if (eventsCount > _bufferSize) {\n spliceCount = Math.max(spliceCount, eventsCount - _bufferSize);\n }\n if (spliceCount > 0) {\n _events.splice(0, spliceCount);\n }\n return _events;\n };\n return ReplaySubject;\n}(Subject));\nexport { ReplaySubject };\nvar ReplayEvent = /*@__PURE__*/ (function () {\n function ReplayEvent(time, value) {\n this.time = time;\n this.value = value;\n }\n return ReplayEvent;\n}());\n//# sourceMappingURL=ReplaySubject.js.map\n","var Scheduler = /*@__PURE__*/ (function () {\n function Scheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n this.SchedulerAction = SchedulerAction;\n this.now = now;\n }\n Scheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n return new this.SchedulerAction(this, work).schedule(state, delay);\n };\n Scheduler.now = function () { return Date.now(); };\n return Scheduler;\n}());\nexport { Scheduler };\n//# sourceMappingURL=Scheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_Subscriber,_Subscription,_util_ObjectUnsubscribedError,_SubjectSubscription,_internal_symbol_rxSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from './Observable';\nimport { Subscriber } from './Subscriber';\nimport { Subscription } from './Subscription';\nimport { ObjectUnsubscribedError } from './util/ObjectUnsubscribedError';\nimport { SubjectSubscription } from './SubjectSubscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nvar SubjectSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscriber, _super);\n function SubjectSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n return _this;\n }\n return SubjectSubscriber;\n}(Subscriber));\nexport { SubjectSubscriber };\nvar Subject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subject, _super);\n function Subject() {\n var _this = _super.call(this) || this;\n _this.observers = [];\n _this.closed = false;\n _this.isStopped = false;\n _this.hasError = false;\n _this.thrownError = null;\n return _this;\n }\n Subject.prototype[rxSubscriberSymbol] = function () {\n return new SubjectSubscriber(this);\n };\n Subject.prototype.lift = function (operator) {\n var subject = new AnonymousSubject(this, this);\n subject.operator = operator;\n return subject;\n };\n Subject.prototype.next = function (value) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n if (!this.isStopped) {\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].next(value);\n }\n }\n };\n Subject.prototype.error = function (err) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.hasError = true;\n this.thrownError = err;\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].error(err);\n }\n this.observers.length = 0;\n };\n Subject.prototype.complete = function () {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n this.isStopped = true;\n var observers = this.observers;\n var len = observers.length;\n var copy = observers.slice();\n for (var i = 0; i < len; i++) {\n copy[i].complete();\n }\n this.observers.length = 0;\n };\n Subject.prototype.unsubscribe = function () {\n this.isStopped = true;\n this.closed = true;\n this.observers = null;\n };\n Subject.prototype._trySubscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else {\n return _super.prototype._trySubscribe.call(this, subscriber);\n }\n };\n Subject.prototype._subscribe = function (subscriber) {\n if (this.closed) {\n throw new ObjectUnsubscribedError();\n }\n else if (this.hasError) {\n subscriber.error(this.thrownError);\n return Subscription.EMPTY;\n }\n else if (this.isStopped) {\n subscriber.complete();\n return Subscription.EMPTY;\n }\n else {\n this.observers.push(subscriber);\n return new SubjectSubscription(this, subscriber);\n }\n };\n Subject.prototype.asObservable = function () {\n var observable = new Observable();\n observable.source = this;\n return observable;\n };\n Subject.create = function (destination, source) {\n return new AnonymousSubject(destination, source);\n };\n return Subject;\n}(Observable));\nexport { Subject };\nvar AnonymousSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnonymousSubject, _super);\n function AnonymousSubject(destination, source) {\n var _this = _super.call(this) || this;\n _this.destination = destination;\n _this.source = source;\n return _this;\n }\n AnonymousSubject.prototype.next = function (value) {\n var destination = this.destination;\n if (destination && destination.next) {\n destination.next(value);\n }\n };\n AnonymousSubject.prototype.error = function (err) {\n var destination = this.destination;\n if (destination && destination.error) {\n this.destination.error(err);\n }\n };\n AnonymousSubject.prototype.complete = function () {\n var destination = this.destination;\n if (destination && destination.complete) {\n this.destination.complete();\n }\n };\n AnonymousSubject.prototype._subscribe = function (subscriber) {\n var source = this.source;\n if (source) {\n return this.source.subscribe(subscriber);\n }\n else {\n return Subscription.EMPTY;\n }\n };\n return AnonymousSubject;\n}(Subject));\nexport { AnonymousSubject };\n//# sourceMappingURL=Subject.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from './Subscription';\nvar SubjectSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubjectSubscription, _super);\n function SubjectSubscription(subject, subscriber) {\n var _this = _super.call(this) || this;\n _this.subject = subject;\n _this.subscriber = subscriber;\n _this.closed = false;\n return _this;\n }\n SubjectSubscription.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.closed = true;\n var subject = this.subject;\n var observers = subject.observers;\n this.subject = null;\n if (!observers || observers.length === 0 || subject.isStopped || subject.closed) {\n return;\n }\n var subscriberIndex = observers.indexOf(this.subscriber);\n if (subscriberIndex !== -1) {\n observers.splice(subscriberIndex, 1);\n }\n };\n return SubjectSubscription;\n}(Subscription));\nexport { SubjectSubscription };\n//# sourceMappingURL=SubjectSubscription.js.map\n","/** PURE_IMPORTS_START tslib,_util_isFunction,_Observer,_Subscription,_internal_symbol_rxSubscriber,_config,_util_hostReportError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isFunction } from './util/isFunction';\nimport { empty as emptyObserver } from './Observer';\nimport { Subscription } from './Subscription';\nimport { rxSubscriber as rxSubscriberSymbol } from '../internal/symbol/rxSubscriber';\nimport { config } from './config';\nimport { hostReportError } from './util/hostReportError';\nvar Subscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Subscriber, _super);\n function Subscriber(destinationOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this.syncErrorValue = null;\n _this.syncErrorThrown = false;\n _this.syncErrorThrowable = false;\n _this.isStopped = false;\n switch (arguments.length) {\n case 0:\n _this.destination = emptyObserver;\n break;\n case 1:\n if (!destinationOrNext) {\n _this.destination = emptyObserver;\n break;\n }\n if (typeof destinationOrNext === 'object') {\n if (destinationOrNext instanceof Subscriber) {\n _this.syncErrorThrowable = destinationOrNext.syncErrorThrowable;\n _this.destination = destinationOrNext;\n destinationOrNext.add(_this);\n }\n else {\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext);\n }\n break;\n }\n default:\n _this.syncErrorThrowable = true;\n _this.destination = new SafeSubscriber(_this, destinationOrNext, error, complete);\n break;\n }\n return _this;\n }\n Subscriber.prototype[rxSubscriberSymbol] = function () { return this; };\n Subscriber.create = function (next, error, complete) {\n var subscriber = new Subscriber(next, error, complete);\n subscriber.syncErrorThrowable = false;\n return subscriber;\n };\n Subscriber.prototype.next = function (value) {\n if (!this.isStopped) {\n this._next(value);\n }\n };\n Subscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n this.isStopped = true;\n this._error(err);\n }\n };\n Subscriber.prototype.complete = function () {\n if (!this.isStopped) {\n this.isStopped = true;\n this._complete();\n }\n };\n Subscriber.prototype.unsubscribe = function () {\n if (this.closed) {\n return;\n }\n this.isStopped = true;\n _super.prototype.unsubscribe.call(this);\n };\n Subscriber.prototype._next = function (value) {\n this.destination.next(value);\n };\n Subscriber.prototype._error = function (err) {\n this.destination.error(err);\n this.unsubscribe();\n };\n Subscriber.prototype._complete = function () {\n this.destination.complete();\n this.unsubscribe();\n };\n Subscriber.prototype._unsubscribeAndRecycle = function () {\n var _parentOrParents = this._parentOrParents;\n this._parentOrParents = null;\n this.unsubscribe();\n this.closed = false;\n this.isStopped = false;\n this._parentOrParents = _parentOrParents;\n return this;\n };\n return Subscriber;\n}(Subscription));\nexport { Subscriber };\nvar SafeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SafeSubscriber, _super);\n function SafeSubscriber(_parentSubscriber, observerOrNext, error, complete) {\n var _this = _super.call(this) || this;\n _this._parentSubscriber = _parentSubscriber;\n var next;\n var context = _this;\n if (isFunction(observerOrNext)) {\n next = observerOrNext;\n }\n else if (observerOrNext) {\n next = observerOrNext.next;\n error = observerOrNext.error;\n complete = observerOrNext.complete;\n if (observerOrNext !== emptyObserver) {\n context = Object.create(observerOrNext);\n if (isFunction(context.unsubscribe)) {\n _this.add(context.unsubscribe.bind(context));\n }\n context.unsubscribe = _this.unsubscribe.bind(_this);\n }\n }\n _this._context = context;\n _this._next = next;\n _this._error = error;\n _this._complete = complete;\n return _this;\n }\n SafeSubscriber.prototype.next = function (value) {\n if (!this.isStopped && this._next) {\n var _parentSubscriber = this._parentSubscriber;\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._next, value);\n }\n else if (this.__tryOrSetError(_parentSubscriber, this._next, value)) {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n var useDeprecatedSynchronousErrorHandling = config.useDeprecatedSynchronousErrorHandling;\n if (this._error) {\n if (!useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(this._error, err);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, this._error, err);\n this.unsubscribe();\n }\n }\n else if (!_parentSubscriber.syncErrorThrowable) {\n this.unsubscribe();\n if (useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n hostReportError(err);\n }\n else {\n if (useDeprecatedSynchronousErrorHandling) {\n _parentSubscriber.syncErrorValue = err;\n _parentSubscriber.syncErrorThrown = true;\n }\n else {\n hostReportError(err);\n }\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.complete = function () {\n var _this = this;\n if (!this.isStopped) {\n var _parentSubscriber = this._parentSubscriber;\n if (this._complete) {\n var wrappedComplete = function () { return _this._complete.call(_this._context); };\n if (!config.useDeprecatedSynchronousErrorHandling || !_parentSubscriber.syncErrorThrowable) {\n this.__tryOrUnsub(wrappedComplete);\n this.unsubscribe();\n }\n else {\n this.__tryOrSetError(_parentSubscriber, wrappedComplete);\n this.unsubscribe();\n }\n }\n else {\n this.unsubscribe();\n }\n }\n };\n SafeSubscriber.prototype.__tryOrUnsub = function (fn, value) {\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n this.unsubscribe();\n if (config.useDeprecatedSynchronousErrorHandling) {\n throw err;\n }\n else {\n hostReportError(err);\n }\n }\n };\n SafeSubscriber.prototype.__tryOrSetError = function (parent, fn, value) {\n if (!config.useDeprecatedSynchronousErrorHandling) {\n throw new Error('bad call');\n }\n try {\n fn.call(this._context, value);\n }\n catch (err) {\n if (config.useDeprecatedSynchronousErrorHandling) {\n parent.syncErrorValue = err;\n parent.syncErrorThrown = true;\n return true;\n }\n else {\n hostReportError(err);\n return true;\n }\n }\n return false;\n };\n SafeSubscriber.prototype._unsubscribe = function () {\n var _parentSubscriber = this._parentSubscriber;\n this._context = null;\n this._parentSubscriber = null;\n _parentSubscriber.unsubscribe();\n };\n return SafeSubscriber;\n}(Subscriber));\nexport { SafeSubscriber };\n//# sourceMappingURL=Subscriber.js.map\n","/** PURE_IMPORTS_START _util_isArray,_util_isObject,_util_isFunction,_util_UnsubscriptionError PURE_IMPORTS_END */\nimport { isArray } from './util/isArray';\nimport { isObject } from './util/isObject';\nimport { isFunction } from './util/isFunction';\nimport { UnsubscriptionError } from './util/UnsubscriptionError';\nvar Subscription = /*@__PURE__*/ (function () {\n function Subscription(unsubscribe) {\n this.closed = false;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (unsubscribe) {\n this._unsubscribe = unsubscribe;\n }\n }\n Subscription.prototype.unsubscribe = function () {\n var errors;\n if (this.closed) {\n return;\n }\n var _a = this, _parentOrParents = _a._parentOrParents, _unsubscribe = _a._unsubscribe, _subscriptions = _a._subscriptions;\n this.closed = true;\n this._parentOrParents = null;\n this._subscriptions = null;\n if (_parentOrParents instanceof Subscription) {\n _parentOrParents.remove(this);\n }\n else if (_parentOrParents !== null) {\n for (var index = 0; index < _parentOrParents.length; ++index) {\n var parent_1 = _parentOrParents[index];\n parent_1.remove(this);\n }\n }\n if (isFunction(_unsubscribe)) {\n try {\n _unsubscribe.call(this);\n }\n catch (e) {\n errors = e instanceof UnsubscriptionError ? flattenUnsubscriptionErrors(e.errors) : [e];\n }\n }\n if (isArray(_subscriptions)) {\n var index = -1;\n var len = _subscriptions.length;\n while (++index < len) {\n var sub = _subscriptions[index];\n if (isObject(sub)) {\n try {\n sub.unsubscribe();\n }\n catch (e) {\n errors = errors || [];\n if (e instanceof UnsubscriptionError) {\n errors = errors.concat(flattenUnsubscriptionErrors(e.errors));\n }\n else {\n errors.push(e);\n }\n }\n }\n }\n }\n if (errors) {\n throw new UnsubscriptionError(errors);\n }\n };\n Subscription.prototype.add = function (teardown) {\n var subscription = teardown;\n if (!teardown) {\n return Subscription.EMPTY;\n }\n switch (typeof teardown) {\n case 'function':\n subscription = new Subscription(teardown);\n case 'object':\n if (subscription === this || subscription.closed || typeof subscription.unsubscribe !== 'function') {\n return subscription;\n }\n else if (this.closed) {\n subscription.unsubscribe();\n return subscription;\n }\n else if (!(subscription instanceof Subscription)) {\n var tmp = subscription;\n subscription = new Subscription();\n subscription._subscriptions = [tmp];\n }\n break;\n default: {\n throw new Error('unrecognized teardown ' + teardown + ' added to Subscription.');\n }\n }\n var _parentOrParents = subscription._parentOrParents;\n if (_parentOrParents === null) {\n subscription._parentOrParents = this;\n }\n else if (_parentOrParents instanceof Subscription) {\n if (_parentOrParents === this) {\n return subscription;\n }\n subscription._parentOrParents = [_parentOrParents, this];\n }\n else if (_parentOrParents.indexOf(this) === -1) {\n _parentOrParents.push(this);\n }\n else {\n return subscription;\n }\n var subscriptions = this._subscriptions;\n if (subscriptions === null) {\n this._subscriptions = [subscription];\n }\n else {\n subscriptions.push(subscription);\n }\n return subscription;\n };\n Subscription.prototype.remove = function (subscription) {\n var subscriptions = this._subscriptions;\n if (subscriptions) {\n var subscriptionIndex = subscriptions.indexOf(subscription);\n if (subscriptionIndex !== -1) {\n subscriptions.splice(subscriptionIndex, 1);\n }\n }\n };\n Subscription.EMPTY = (function (empty) {\n empty.closed = true;\n return empty;\n }(new Subscription()));\n return Subscription;\n}());\nexport { Subscription };\nfunction flattenUnsubscriptionErrors(errors) {\n return errors.reduce(function (errs, err) { return errs.concat((err instanceof UnsubscriptionError) ? err.errors : err); }, []);\n}\n//# sourceMappingURL=Subscription.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar _enable_super_gross_mode_that_will_cause_bad_things = false;\nexport var config = {\n Promise: undefined,\n set useDeprecatedSynchronousErrorHandling(value) {\n if (value) {\n var error = /*@__PURE__*/ new Error();\n /*@__PURE__*/ console.warn('DEPRECATED! RxJS was set to use deprecated synchronous error handling behavior by code at: \\n' + error.stack);\n }\n else if (_enable_super_gross_mode_that_will_cause_bad_things) {\n /*@__PURE__*/ console.log('RxJS: Back to a better error behavior. Thank you. <3');\n }\n _enable_super_gross_mode_that_will_cause_bad_things = value;\n },\n get useDeprecatedSynchronousErrorHandling() {\n return _enable_super_gross_mode_that_will_cause_bad_things;\n },\n};\n//# sourceMappingURL=config.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Observable,_Subscriber,_Subscription,_operators_refCount PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { SubjectSubscriber } from '../Subject';\nimport { Observable } from '../Observable';\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { refCount as higherOrderRefCount } from '../operators/refCount';\nvar ConnectableObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableObservable, _super);\n function ConnectableObservable(source, subjectFactory) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subjectFactory = subjectFactory;\n _this._refCount = 0;\n _this._isComplete = false;\n return _this;\n }\n ConnectableObservable.prototype._subscribe = function (subscriber) {\n return this.getSubject().subscribe(subscriber);\n };\n ConnectableObservable.prototype.getSubject = function () {\n var subject = this._subject;\n if (!subject || subject.isStopped) {\n this._subject = this.subjectFactory();\n }\n return this._subject;\n };\n ConnectableObservable.prototype.connect = function () {\n var connection = this._connection;\n if (!connection) {\n this._isComplete = false;\n connection = this._connection = new Subscription();\n connection.add(this.source\n .subscribe(new ConnectableSubscriber(this.getSubject(), this)));\n if (connection.closed) {\n this._connection = null;\n connection = Subscription.EMPTY;\n }\n }\n return connection;\n };\n ConnectableObservable.prototype.refCount = function () {\n return higherOrderRefCount()(this);\n };\n return ConnectableObservable;\n}(Observable));\nexport { ConnectableObservable };\nexport var connectableObservableDescriptor = /*@__PURE__*/ (function () {\n var connectableProto = ConnectableObservable.prototype;\n return {\n operator: { value: null },\n _refCount: { value: 0, writable: true },\n _subject: { value: null, writable: true },\n _connection: { value: null, writable: true },\n _subscribe: { value: connectableProto._subscribe },\n _isComplete: { value: connectableProto._isComplete, writable: true },\n getSubject: { value: connectableProto.getSubject },\n connect: { value: connectableProto.connect },\n refCount: { value: connectableProto.refCount }\n };\n})();\nvar ConnectableSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ConnectableSubscriber, _super);\n function ConnectableSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n ConnectableSubscriber.prototype._error = function (err) {\n this._unsubscribe();\n _super.prototype._error.call(this, err);\n };\n ConnectableSubscriber.prototype._complete = function () {\n this.connectable._isComplete = true;\n this._unsubscribe();\n _super.prototype._complete.call(this);\n };\n ConnectableSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (connectable) {\n this.connectable = null;\n var connection = connectable._connection;\n connectable._refCount = 0;\n connectable._subject = null;\n connectable._connection = null;\n if (connection) {\n connection.unsubscribe();\n }\n }\n };\n return ConnectableSubscriber;\n}(SubjectSubscriber));\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ConnectableObservable.js.map\n","/** PURE_IMPORTS_START tslib,_Observable,_scheduler_asap,_util_isNumeric PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Observable } from '../Observable';\nimport { asap } from '../scheduler/asap';\nimport { isNumeric } from '../util/isNumeric';\nvar SubscribeOnObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubscribeOnObservable, _super);\n function SubscribeOnObservable(source, delayTime, scheduler) {\n if (delayTime === void 0) {\n delayTime = 0;\n }\n if (scheduler === void 0) {\n scheduler = asap;\n }\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.delayTime = delayTime;\n _this.scheduler = scheduler;\n if (!isNumeric(delayTime) || delayTime < 0) {\n _this.delayTime = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n _this.scheduler = asap;\n }\n return _this;\n }\n SubscribeOnObservable.create = function (source, delay, scheduler) {\n if (delay === void 0) {\n delay = 0;\n }\n if (scheduler === void 0) {\n scheduler = asap;\n }\n return new SubscribeOnObservable(source, delay, scheduler);\n };\n SubscribeOnObservable.dispatch = function (arg) {\n var source = arg.source, subscriber = arg.subscriber;\n return this.add(source.subscribe(subscriber));\n };\n SubscribeOnObservable.prototype._subscribe = function (subscriber) {\n var delay = this.delayTime;\n var source = this.source;\n var scheduler = this.scheduler;\n return scheduler.schedule(SubscribeOnObservable.dispatch, delay, {\n source: source, subscriber: subscriber\n });\n };\n return SubscribeOnObservable;\n}(Observable));\nexport { SubscribeOnObservable };\n//# sourceMappingURL=SubscribeOnObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isArray,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isArray } from '../util/isArray';\nimport { isScheduler } from '../util/isScheduler';\nexport function bindCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var context = this;\n var subject;\n var params = {\n context: context,\n subject: subject,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n };\n return new Observable(function (subscriber) {\n if (!scheduler) {\n if (!subject) {\n subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n var state = {\n args: args, subscriber: subscriber, params: params,\n };\n return scheduler.schedule(dispatch, 0, state);\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var self = this;\n var args = state.args, subscriber = state.subscriber, params = state.params;\n var callbackFunc = params.callbackFunc, context = params.context, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n subject.error(err);\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(state) {\n var value = state.value, subject = state.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(state) {\n var err = state.err, subject = state.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindCallback.js.map\n","/** PURE_IMPORTS_START _Observable,_AsyncSubject,_operators_map,_util_canReportError,_util_isScheduler,_util_isArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { AsyncSubject } from '../AsyncSubject';\nimport { map } from '../operators/map';\nimport { canReportError } from '../util/canReportError';\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nexport function bindNodeCallback(callbackFunc, resultSelector, scheduler) {\n if (resultSelector) {\n if (isScheduler(resultSelector)) {\n scheduler = resultSelector;\n }\n else {\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return bindNodeCallback(callbackFunc, scheduler).apply(void 0, args).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n };\n }\n }\n return function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var params = {\n subject: undefined,\n args: args,\n callbackFunc: callbackFunc,\n scheduler: scheduler,\n context: this,\n };\n return new Observable(function (subscriber) {\n var context = params.context;\n var subject = params.subject;\n if (!scheduler) {\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n subject.error(err);\n return;\n }\n subject.next(innerArgs.length <= 1 ? innerArgs[0] : innerArgs);\n subject.complete();\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n if (canReportError(subject)) {\n subject.error(err);\n }\n else {\n console.warn(err);\n }\n }\n }\n return subject.subscribe(subscriber);\n }\n else {\n return scheduler.schedule(dispatch, 0, { params: params, subscriber: subscriber, context: context });\n }\n });\n };\n}\nfunction dispatch(state) {\n var _this = this;\n var params = state.params, subscriber = state.subscriber, context = state.context;\n var callbackFunc = params.callbackFunc, args = params.args, scheduler = params.scheduler;\n var subject = params.subject;\n if (!subject) {\n subject = params.subject = new AsyncSubject();\n var handler = function () {\n var innerArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n innerArgs[_i] = arguments[_i];\n }\n var err = innerArgs.shift();\n if (err) {\n _this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n else {\n var value = innerArgs.length <= 1 ? innerArgs[0] : innerArgs;\n _this.add(scheduler.schedule(dispatchNext, 0, { value: value, subject: subject }));\n }\n };\n try {\n callbackFunc.apply(context, args.concat([handler]));\n }\n catch (err) {\n this.add(scheduler.schedule(dispatchError, 0, { err: err, subject: subject }));\n }\n }\n this.add(subject.subscribe(subscriber));\n}\nfunction dispatchNext(arg) {\n var value = arg.value, subject = arg.subject;\n subject.next(value);\n subject.complete();\n}\nfunction dispatchError(arg) {\n var err = arg.err, subject = arg.subject;\n subject.error(err);\n}\n//# sourceMappingURL=bindNodeCallback.js.map\n","/** PURE_IMPORTS_START tslib,_util_isScheduler,_util_isArray,_OuterSubscriber,_util_subscribeToResult,_fromArray PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isScheduler } from '../util/isScheduler';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { fromArray } from './fromArray';\nvar NONE = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = null;\n var scheduler = null;\n if (isScheduler(observables[observables.length - 1])) {\n scheduler = observables.pop();\n }\n if (typeof observables[observables.length - 1] === 'function') {\n resultSelector = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return fromArray(observables, scheduler).lift(new CombineLatestOperator(resultSelector));\n}\nvar CombineLatestOperator = /*@__PURE__*/ (function () {\n function CombineLatestOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n CombineLatestOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CombineLatestSubscriber(subscriber, this.resultSelector));\n };\n return CombineLatestOperator;\n}());\nexport { CombineLatestOperator };\nvar CombineLatestSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CombineLatestSubscriber, _super);\n function CombineLatestSubscriber(destination, resultSelector) {\n var _this = _super.call(this, destination) || this;\n _this.resultSelector = resultSelector;\n _this.active = 0;\n _this.values = [];\n _this.observables = [];\n return _this;\n }\n CombineLatestSubscriber.prototype._next = function (observable) {\n this.values.push(NONE);\n this.observables.push(observable);\n };\n CombineLatestSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n this.active = len;\n this.toRespond = len;\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n this.add(subscribeToResult(this, observable, observable, i));\n }\n }\n };\n CombineLatestSubscriber.prototype.notifyComplete = function (unused) {\n if ((this.active -= 1) === 0) {\n this.destination.complete();\n }\n };\n CombineLatestSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var values = this.values;\n var oldVal = values[outerIndex];\n var toRespond = !this.toRespond\n ? 0\n : oldVal === NONE ? --this.toRespond : this.toRespond;\n values[outerIndex] = innerValue;\n if (toRespond === 0) {\n if (this.resultSelector) {\n this._tryResultSelector(values);\n }\n else {\n this.destination.next(values.slice());\n }\n }\n };\n CombineLatestSubscriber.prototype._tryResultSelector = function (values) {\n var result;\n try {\n result = this.resultSelector.apply(this, values);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return CombineLatestSubscriber;\n}(OuterSubscriber));\nexport { CombineLatestSubscriber };\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START _of,_operators_concatAll PURE_IMPORTS_END */\nimport { of } from './of';\nimport { concatAll } from '../operators/concatAll';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return concatAll()(of.apply(void 0, observables));\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { empty } from './empty';\nexport function defer(observableFactory) {\n return new Observable(function (subscriber) {\n var input;\n try {\n input = observableFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = input ? from(input) : empty();\n return source.subscribe(subscriber);\n });\n}\n//# sourceMappingURL=defer.js.map\n","/** PURE_IMPORTS_START tslib,_.._util_root,_.._Observable,_.._Subscriber,_.._operators_map PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { root } from '../../util/root';\nimport { Observable } from '../../Observable';\nimport { Subscriber } from '../../Subscriber';\nimport { map } from '../../operators/map';\nfunction getCORSRequest() {\n if (root.XMLHttpRequest) {\n return new root.XMLHttpRequest();\n }\n else if (!!root.XDomainRequest) {\n return new root.XDomainRequest();\n }\n else {\n throw new Error('CORS is not supported by your browser');\n }\n}\nfunction getXMLHttpRequest() {\n if (root.XMLHttpRequest) {\n return new root.XMLHttpRequest();\n }\n else {\n var progId = void 0;\n try {\n var progIds = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.4.0'];\n for (var i = 0; i < 3; i++) {\n try {\n progId = progIds[i];\n if (new root.ActiveXObject(progId)) {\n break;\n }\n }\n catch (e) {\n }\n }\n return new root.ActiveXObject(progId);\n }\n catch (e) {\n throw new Error('XMLHttpRequest is not supported by your browser');\n }\n }\n}\nexport function ajaxGet(url, headers) {\n if (headers === void 0) {\n headers = null;\n }\n return new AjaxObservable({ method: 'GET', url: url, headers: headers });\n}\nexport function ajaxPost(url, body, headers) {\n return new AjaxObservable({ method: 'POST', url: url, body: body, headers: headers });\n}\nexport function ajaxDelete(url, headers) {\n return new AjaxObservable({ method: 'DELETE', url: url, headers: headers });\n}\nexport function ajaxPut(url, body, headers) {\n return new AjaxObservable({ method: 'PUT', url: url, body: body, headers: headers });\n}\nexport function ajaxPatch(url, body, headers) {\n return new AjaxObservable({ method: 'PATCH', url: url, body: body, headers: headers });\n}\nvar mapResponse = /*@__PURE__*/ map(function (x, index) { return x.response; });\nexport function ajaxGetJSON(url, headers) {\n return mapResponse(new AjaxObservable({\n method: 'GET',\n url: url,\n responseType: 'json',\n headers: headers\n }));\n}\nvar AjaxObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AjaxObservable, _super);\n function AjaxObservable(urlOrRequest) {\n var _this = _super.call(this) || this;\n var request = {\n async: true,\n createXHR: function () {\n return this.crossDomain ? getCORSRequest() : getXMLHttpRequest();\n },\n crossDomain: true,\n withCredentials: false,\n headers: {},\n method: 'GET',\n responseType: 'json',\n timeout: 0\n };\n if (typeof urlOrRequest === 'string') {\n request.url = urlOrRequest;\n }\n else {\n for (var prop in urlOrRequest) {\n if (urlOrRequest.hasOwnProperty(prop)) {\n request[prop] = urlOrRequest[prop];\n }\n }\n }\n _this.request = request;\n return _this;\n }\n AjaxObservable.prototype._subscribe = function (subscriber) {\n return new AjaxSubscriber(subscriber, this.request);\n };\n AjaxObservable.create = (function () {\n var create = function (urlOrRequest) {\n return new AjaxObservable(urlOrRequest);\n };\n create.get = ajaxGet;\n create.post = ajaxPost;\n create.delete = ajaxDelete;\n create.put = ajaxPut;\n create.patch = ajaxPatch;\n create.getJSON = ajaxGetJSON;\n return create;\n })();\n return AjaxObservable;\n}(Observable));\nexport { AjaxObservable };\nvar AjaxSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AjaxSubscriber, _super);\n function AjaxSubscriber(destination, request) {\n var _this = _super.call(this, destination) || this;\n _this.request = request;\n _this.done = false;\n var headers = request.headers = request.headers || {};\n if (!request.crossDomain && !_this.getHeader(headers, 'X-Requested-With')) {\n headers['X-Requested-With'] = 'XMLHttpRequest';\n }\n var contentTypeHeader = _this.getHeader(headers, 'Content-Type');\n if (!contentTypeHeader && !(root.FormData && request.body instanceof root.FormData) && typeof request.body !== 'undefined') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n }\n request.body = _this.serializeBody(request.body, _this.getHeader(request.headers, 'Content-Type'));\n _this.send();\n return _this;\n }\n AjaxSubscriber.prototype.next = function (e) {\n this.done = true;\n var _a = this, xhr = _a.xhr, request = _a.request, destination = _a.destination;\n var result;\n try {\n result = new AjaxResponse(e, xhr, request);\n }\n catch (err) {\n return destination.error(err);\n }\n destination.next(result);\n };\n AjaxSubscriber.prototype.send = function () {\n var _a = this, request = _a.request, _b = _a.request, user = _b.user, method = _b.method, url = _b.url, async = _b.async, password = _b.password, headers = _b.headers, body = _b.body;\n try {\n var xhr = this.xhr = request.createXHR();\n this.setupEvents(xhr, request);\n if (user) {\n xhr.open(method, url, async, user, password);\n }\n else {\n xhr.open(method, url, async);\n }\n if (async) {\n xhr.timeout = request.timeout;\n xhr.responseType = request.responseType;\n }\n if ('withCredentials' in xhr) {\n xhr.withCredentials = !!request.withCredentials;\n }\n this.setHeaders(xhr, headers);\n if (body) {\n xhr.send(body);\n }\n else {\n xhr.send();\n }\n }\n catch (err) {\n this.error(err);\n }\n };\n AjaxSubscriber.prototype.serializeBody = function (body, contentType) {\n if (!body || typeof body === 'string') {\n return body;\n }\n else if (root.FormData && body instanceof root.FormData) {\n return body;\n }\n if (contentType) {\n var splitIndex = contentType.indexOf(';');\n if (splitIndex !== -1) {\n contentType = contentType.substring(0, splitIndex);\n }\n }\n switch (contentType) {\n case 'application/x-www-form-urlencoded':\n return Object.keys(body).map(function (key) { return encodeURIComponent(key) + \"=\" + encodeURIComponent(body[key]); }).join('&');\n case 'application/json':\n return JSON.stringify(body);\n default:\n return body;\n }\n };\n AjaxSubscriber.prototype.setHeaders = function (xhr, headers) {\n for (var key in headers) {\n if (headers.hasOwnProperty(key)) {\n xhr.setRequestHeader(key, headers[key]);\n }\n }\n };\n AjaxSubscriber.prototype.getHeader = function (headers, headerName) {\n for (var key in headers) {\n if (key.toLowerCase() === headerName.toLowerCase()) {\n return headers[key];\n }\n }\n return undefined;\n };\n AjaxSubscriber.prototype.setupEvents = function (xhr, request) {\n var progressSubscriber = request.progressSubscriber;\n function xhrTimeout(e) {\n var _a = xhrTimeout, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error;\n try {\n error = new AjaxTimeoutError(this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n }\n xhr.ontimeout = xhrTimeout;\n xhrTimeout.request = request;\n xhrTimeout.subscriber = this;\n xhrTimeout.progressSubscriber = progressSubscriber;\n if (xhr.upload && 'withCredentials' in xhr) {\n if (progressSubscriber) {\n var xhrProgress_1;\n xhrProgress_1 = function (e) {\n var progressSubscriber = xhrProgress_1.progressSubscriber;\n progressSubscriber.next(e);\n };\n if (root.XDomainRequest) {\n xhr.onprogress = xhrProgress_1;\n }\n else {\n xhr.upload.onprogress = xhrProgress_1;\n }\n xhrProgress_1.progressSubscriber = progressSubscriber;\n }\n var xhrError_1;\n xhrError_1 = function (e) {\n var _a = xhrError_1, progressSubscriber = _a.progressSubscriber, subscriber = _a.subscriber, request = _a.request;\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error;\n try {\n error = new AjaxError('ajax error', this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n };\n xhr.onerror = xhrError_1;\n xhrError_1.request = request;\n xhrError_1.subscriber = this;\n xhrError_1.progressSubscriber = progressSubscriber;\n }\n function xhrReadyStateChange(e) {\n return;\n }\n xhr.onreadystatechange = xhrReadyStateChange;\n xhrReadyStateChange.subscriber = this;\n xhrReadyStateChange.progressSubscriber = progressSubscriber;\n xhrReadyStateChange.request = request;\n function xhrLoad(e) {\n var _a = xhrLoad, subscriber = _a.subscriber, progressSubscriber = _a.progressSubscriber, request = _a.request;\n if (this.readyState === 4) {\n var status_1 = this.status === 1223 ? 204 : this.status;\n var response = (this.responseType === 'text' ? (this.response || this.responseText) : this.response);\n if (status_1 === 0) {\n status_1 = response ? 200 : 0;\n }\n if (status_1 < 400) {\n if (progressSubscriber) {\n progressSubscriber.complete();\n }\n subscriber.next(e);\n subscriber.complete();\n }\n else {\n if (progressSubscriber) {\n progressSubscriber.error(e);\n }\n var error = void 0;\n try {\n error = new AjaxError('ajax error ' + status_1, this, request);\n }\n catch (err) {\n error = err;\n }\n subscriber.error(error);\n }\n }\n }\n xhr.onload = xhrLoad;\n xhrLoad.subscriber = this;\n xhrLoad.progressSubscriber = progressSubscriber;\n xhrLoad.request = request;\n };\n AjaxSubscriber.prototype.unsubscribe = function () {\n var _a = this, done = _a.done, xhr = _a.xhr;\n if (!done && xhr && xhr.readyState !== 4 && typeof xhr.abort === 'function') {\n xhr.abort();\n }\n _super.prototype.unsubscribe.call(this);\n };\n return AjaxSubscriber;\n}(Subscriber));\nexport { AjaxSubscriber };\nvar AjaxResponse = /*@__PURE__*/ (function () {\n function AjaxResponse(originalEvent, xhr, request) {\n this.originalEvent = originalEvent;\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n }\n return AjaxResponse;\n}());\nexport { AjaxResponse };\nvar AjaxErrorImpl = /*@__PURE__*/ (function () {\n function AjaxErrorImpl(message, xhr, request) {\n Error.call(this);\n this.message = message;\n this.name = 'AjaxError';\n this.xhr = xhr;\n this.request = request;\n this.status = xhr.status;\n this.responseType = xhr.responseType || request.responseType;\n this.response = parseXhrResponse(this.responseType, xhr);\n return this;\n }\n AjaxErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return AjaxErrorImpl;\n})();\nexport var AjaxError = AjaxErrorImpl;\nfunction parseJson(xhr) {\n if ('response' in xhr) {\n return xhr.responseType ? xhr.response : JSON.parse(xhr.response || xhr.responseText || 'null');\n }\n else {\n return JSON.parse(xhr.responseText || 'null');\n }\n}\nfunction parseXhrResponse(responseType, xhr) {\n switch (responseType) {\n case 'json':\n return parseJson(xhr);\n case 'xml':\n return xhr.responseXML;\n case 'text':\n default:\n return ('response' in xhr) ? xhr.response : xhr.responseText;\n }\n}\nfunction AjaxTimeoutErrorImpl(xhr, request) {\n AjaxError.call(this, 'ajax timeout', xhr, request);\n this.name = 'AjaxTimeoutError';\n return this;\n}\nexport var AjaxTimeoutError = AjaxTimeoutErrorImpl;\n//# sourceMappingURL=AjaxObservable.js.map\n","/** PURE_IMPORTS_START _AjaxObservable PURE_IMPORTS_END */\nimport { AjaxObservable } from './AjaxObservable';\nexport var ajax = /*@__PURE__*/ (function () { return AjaxObservable.create; })();\n//# sourceMappingURL=ajax.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport var EMPTY = /*@__PURE__*/ new Observable(function (subscriber) { return subscriber.complete(); });\nexport function empty(scheduler) {\n return scheduler ? emptyScheduled(scheduler) : EMPTY;\n}\nfunction emptyScheduled(scheduler) {\n return new Observable(function (subscriber) { return scheduler.schedule(function () { return subscriber.complete(); }); });\n}\n//# sourceMappingURL=empty.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_operators_map,_util_isObject,_from PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { map } from '../operators/map';\nimport { isObject } from '../util/isObject';\nimport { from } from './from';\nexport function forkJoin() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 1) {\n var first_1 = sources[0];\n if (isArray(first_1)) {\n return forkJoinInternal(first_1, null);\n }\n if (isObject(first_1) && Object.getPrototypeOf(first_1) === Object.prototype) {\n var keys = Object.keys(first_1);\n return forkJoinInternal(keys.map(function (key) { return first_1[key]; }), keys);\n }\n }\n if (typeof sources[sources.length - 1] === 'function') {\n var resultSelector_1 = sources.pop();\n sources = (sources.length === 1 && isArray(sources[0])) ? sources[0] : sources;\n return forkJoinInternal(sources, null).pipe(map(function (args) { return resultSelector_1.apply(void 0, args); }));\n }\n return forkJoinInternal(sources, null);\n}\nfunction forkJoinInternal(sources, keys) {\n return new Observable(function (subscriber) {\n var len = sources.length;\n if (len === 0) {\n subscriber.complete();\n return;\n }\n var values = new Array(len);\n var completed = 0;\n var emitted = 0;\n var _loop_1 = function (i) {\n var source = from(sources[i]);\n var hasValue = false;\n subscriber.add(source.subscribe({\n next: function (value) {\n if (!hasValue) {\n hasValue = true;\n emitted++;\n }\n values[i] = value;\n },\n error: function (err) { return subscriber.error(err); },\n complete: function () {\n completed++;\n if (completed === len || !hasValue) {\n if (emitted === len) {\n subscriber.next(keys ?\n keys.reduce(function (result, key, i) { return (result[key] = values[i], result); }, {}) :\n values);\n }\n subscriber.complete();\n }\n }\n }));\n };\n for (var i = 0; i < len; i++) {\n _loop_1(i);\n }\n });\n}\n//# sourceMappingURL=forkJoin.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeTo,_scheduled_scheduled PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { scheduled } from '../scheduled/scheduled';\nexport function from(input, scheduler) {\n if (!scheduler) {\n if (input instanceof Observable) {\n return input;\n }\n return new Observable(subscribeTo(input));\n }\n else {\n return scheduled(input, scheduler);\n }\n}\n//# sourceMappingURL=from.js.map\n","/** PURE_IMPORTS_START _Observable,_util_subscribeToArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { subscribeToArray } from '../util/subscribeToArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function fromArray(input, scheduler) {\n if (!scheduler) {\n return new Observable(subscribeToArray(input));\n }\n else {\n return scheduleArray(input, scheduler);\n }\n}\n//# sourceMappingURL=fromArray.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nvar toString = /*@__PURE__*/ (function () { return Object.prototype.toString; })();\nexport function fromEvent(target, eventName, options, resultSelector) {\n if (isFunction(options)) {\n resultSelector = options;\n options = undefined;\n }\n if (resultSelector) {\n return fromEvent(target, eventName, options).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n function handler(e) {\n if (arguments.length > 1) {\n subscriber.next(Array.prototype.slice.call(arguments));\n }\n else {\n subscriber.next(e);\n }\n }\n setupSubscription(target, eventName, handler, subscriber, options);\n });\n}\nfunction setupSubscription(sourceObj, eventName, handler, subscriber, options) {\n var unsubscribe;\n if (isEventTarget(sourceObj)) {\n var source_1 = sourceObj;\n sourceObj.addEventListener(eventName, handler, options);\n unsubscribe = function () { return source_1.removeEventListener(eventName, handler, options); };\n }\n else if (isJQueryStyleEventEmitter(sourceObj)) {\n var source_2 = sourceObj;\n sourceObj.on(eventName, handler);\n unsubscribe = function () { return source_2.off(eventName, handler); };\n }\n else if (isNodeStyleEventEmitter(sourceObj)) {\n var source_3 = sourceObj;\n sourceObj.addListener(eventName, handler);\n unsubscribe = function () { return source_3.removeListener(eventName, handler); };\n }\n else if (sourceObj && sourceObj.length) {\n for (var i = 0, len = sourceObj.length; i < len; i++) {\n setupSubscription(sourceObj[i], eventName, handler, subscriber, options);\n }\n }\n else {\n throw new TypeError('Invalid event target');\n }\n subscriber.add(unsubscribe);\n}\nfunction isNodeStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.addListener === 'function' && typeof sourceObj.removeListener === 'function';\n}\nfunction isJQueryStyleEventEmitter(sourceObj) {\n return sourceObj && typeof sourceObj.on === 'function' && typeof sourceObj.off === 'function';\n}\nfunction isEventTarget(sourceObj) {\n return sourceObj && typeof sourceObj.addEventListener === 'function' && typeof sourceObj.removeEventListener === 'function';\n}\n//# sourceMappingURL=fromEvent.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isArray,_util_isFunction,_operators_map PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isArray } from '../util/isArray';\nimport { isFunction } from '../util/isFunction';\nimport { map } from '../operators/map';\nexport function fromEventPattern(addHandler, removeHandler, resultSelector) {\n if (resultSelector) {\n return fromEventPattern(addHandler, removeHandler).pipe(map(function (args) { return isArray(args) ? resultSelector.apply(void 0, args) : resultSelector(args); }));\n }\n return new Observable(function (subscriber) {\n var handler = function () {\n var e = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n e[_i] = arguments[_i];\n }\n return subscriber.next(e.length === 1 ? e[0] : e);\n };\n var retValue;\n try {\n retValue = addHandler(handler);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!isFunction(removeHandler)) {\n return undefined;\n }\n return function () { return removeHandler(handler, retValue); };\n });\n}\n//# sourceMappingURL=fromEventPattern.js.map\n","/** PURE_IMPORTS_START _Observable,_util_identity,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { identity } from '../util/identity';\nimport { isScheduler } from '../util/isScheduler';\nexport function generate(initialStateOrOptions, condition, iterate, resultSelectorOrObservable, scheduler) {\n var resultSelector;\n var initialState;\n if (arguments.length == 1) {\n var options = initialStateOrOptions;\n initialState = options.initialState;\n condition = options.condition;\n iterate = options.iterate;\n resultSelector = options.resultSelector || identity;\n scheduler = options.scheduler;\n }\n else if (resultSelectorOrObservable === undefined || isScheduler(resultSelectorOrObservable)) {\n initialState = initialStateOrOptions;\n resultSelector = identity;\n scheduler = resultSelectorOrObservable;\n }\n else {\n initialState = initialStateOrOptions;\n resultSelector = resultSelectorOrObservable;\n }\n return new Observable(function (subscriber) {\n var state = initialState;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n subscriber: subscriber,\n iterate: iterate,\n condition: condition,\n resultSelector: resultSelector,\n state: state\n });\n }\n do {\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n break;\n }\n }\n var value = void 0;\n try {\n value = resultSelector(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n break;\n }\n try {\n state = iterate(state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n } while (true);\n return undefined;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, condition = state.condition;\n if (subscriber.closed) {\n return undefined;\n }\n if (state.needIterate) {\n try {\n state.state = state.iterate(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n }\n else {\n state.needIterate = true;\n }\n if (condition) {\n var conditionResult = void 0;\n try {\n conditionResult = condition(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (!conditionResult) {\n subscriber.complete();\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n }\n var value;\n try {\n value = state.resultSelector(state.state);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n if (subscriber.closed) {\n return undefined;\n }\n subscriber.next(value);\n if (subscriber.closed) {\n return undefined;\n }\n return this.schedule(state);\n}\n//# sourceMappingURL=generate.js.map\n","/** PURE_IMPORTS_START _defer,_empty PURE_IMPORTS_END */\nimport { defer } from './defer';\nimport { EMPTY } from './empty';\nexport function iif(condition, trueResult, falseResult) {\n if (trueResult === void 0) {\n trueResult = EMPTY;\n }\n if (falseResult === void 0) {\n falseResult = EMPTY;\n }\n return defer(function () { return condition() ? trueResult : falseResult; });\n}\n//# sourceMappingURL=iif.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nexport function interval(period, scheduler) {\n if (period === void 0) {\n period = 0;\n }\n if (scheduler === void 0) {\n scheduler = async;\n }\n if (!isNumeric(period) || period < 0) {\n period = 0;\n }\n if (!scheduler || typeof scheduler.schedule !== 'function') {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n subscriber.add(scheduler.schedule(dispatch, period, { subscriber: subscriber, counter: 0, period: period }));\n return subscriber;\n });\n}\nfunction dispatch(state) {\n var subscriber = state.subscriber, counter = state.counter, period = state.period;\n subscriber.next(counter);\n this.schedule({ subscriber: subscriber, counter: counter + 1, period: period }, period);\n}\n//# sourceMappingURL=interval.js.map\n","/** PURE_IMPORTS_START _Observable,_util_isScheduler,_operators_mergeAll,_fromArray PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { isScheduler } from '../util/isScheduler';\nimport { mergeAll } from '../operators/mergeAll';\nimport { fromArray } from './fromArray';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var concurrent = Number.POSITIVE_INFINITY;\n var scheduler = null;\n var last = observables[observables.length - 1];\n if (isScheduler(last)) {\n scheduler = observables.pop();\n if (observables.length > 1 && typeof observables[observables.length - 1] === 'number') {\n concurrent = observables.pop();\n }\n }\n else if (typeof last === 'number') {\n concurrent = observables.pop();\n }\n if (scheduler === null && observables.length === 1 && observables[0] instanceof Observable) {\n return observables[0];\n }\n return mergeAll(concurrent)(fromArray(observables, scheduler));\n}\n//# sourceMappingURL=merge.js.map\n","/** PURE_IMPORTS_START _Observable,_util_noop PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { noop } from '../util/noop';\nexport var NEVER = /*@__PURE__*/ new Observable(noop);\nexport function never() {\n return NEVER;\n}\n//# sourceMappingURL=never.js.map\n","/** PURE_IMPORTS_START _util_isScheduler,_fromArray,_scheduled_scheduleArray PURE_IMPORTS_END */\nimport { isScheduler } from '../util/isScheduler';\nimport { fromArray } from './fromArray';\nimport { scheduleArray } from '../scheduled/scheduleArray';\nexport function of() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var scheduler = args[args.length - 1];\n if (isScheduler(scheduler)) {\n args.pop();\n return scheduleArray(args, scheduler);\n }\n else {\n return fromArray(args);\n }\n}\n//# sourceMappingURL=of.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_util_isArray,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { isArray } from '../util/isArray';\nimport { EMPTY } from './empty';\nexport function onErrorResumeNext() {\n var sources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n sources[_i] = arguments[_i];\n }\n if (sources.length === 0) {\n return EMPTY;\n }\n var first = sources[0], remainder = sources.slice(1);\n if (sources.length === 1 && isArray(first)) {\n return onErrorResumeNext.apply(void 0, first);\n }\n return new Observable(function (subscriber) {\n var subNext = function () { return subscriber.add(onErrorResumeNext.apply(void 0, remainder).subscribe(subscriber)); };\n return from(first).subscribe({\n next: function (value) { subscriber.next(value); },\n error: subNext,\n complete: subNext,\n });\n });\n}\n//# sourceMappingURL=onErrorResumeNext.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function pairs(obj, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length && !subscriber.closed; i++) {\n var key = keys[i];\n if (obj.hasOwnProperty(key)) {\n subscriber.next([key, obj[key]]);\n }\n }\n subscriber.complete();\n });\n }\n else {\n return new Observable(function (subscriber) {\n var keys = Object.keys(obj);\n var subscription = new Subscription();\n subscription.add(scheduler.schedule(dispatch, 0, { keys: keys, index: 0, subscriber: subscriber, subscription: subscription, obj: obj }));\n return subscription;\n });\n }\n}\nexport function dispatch(state) {\n var keys = state.keys, index = state.index, subscriber = state.subscriber, subscription = state.subscription, obj = state.obj;\n if (!subscriber.closed) {\n if (index < keys.length) {\n var key = keys[index];\n subscriber.next([key, obj[key]]);\n subscription.add(this.schedule({ keys: keys, index: index + 1, subscriber: subscriber, subscription: subscription, obj: obj }));\n }\n else {\n subscriber.complete();\n }\n }\n}\n//# sourceMappingURL=pairs.js.map\n","/** PURE_IMPORTS_START _util_not,_util_subscribeTo,_operators_filter,_Observable PURE_IMPORTS_END */\nimport { not } from '../util/not';\nimport { subscribeTo } from '../util/subscribeTo';\nimport { filter } from '../operators/filter';\nimport { Observable } from '../Observable';\nexport function partition(source, predicate, thisArg) {\n return [\n filter(predicate, thisArg)(new Observable(subscribeTo(source))),\n filter(not(predicate, thisArg))(new Observable(subscribeTo(source)))\n ];\n}\n//# sourceMappingURL=partition.js.map\n","/** PURE_IMPORTS_START tslib,_util_isArray,_fromArray,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { isArray } from '../util/isArray';\nimport { fromArray } from './fromArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n if (observables.length === 1) {\n if (isArray(observables[0])) {\n observables = observables[0];\n }\n else {\n return observables[0];\n }\n }\n return fromArray(observables, undefined).lift(new RaceOperator());\n}\nvar RaceOperator = /*@__PURE__*/ (function () {\n function RaceOperator() {\n }\n RaceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RaceSubscriber(subscriber));\n };\n return RaceOperator;\n}());\nexport { RaceOperator };\nvar RaceSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RaceSubscriber, _super);\n function RaceSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasFirst = false;\n _this.observables = [];\n _this.subscriptions = [];\n return _this;\n }\n RaceSubscriber.prototype._next = function (observable) {\n this.observables.push(observable);\n };\n RaceSubscriber.prototype._complete = function () {\n var observables = this.observables;\n var len = observables.length;\n if (len === 0) {\n this.destination.complete();\n }\n else {\n for (var i = 0; i < len && !this.hasFirst; i++) {\n var observable = observables[i];\n var subscription = subscribeToResult(this, observable, observable, i);\n if (this.subscriptions) {\n this.subscriptions.push(subscription);\n }\n this.add(subscription);\n }\n this.observables = null;\n }\n };\n RaceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (!this.hasFirst) {\n this.hasFirst = true;\n for (var i = 0; i < this.subscriptions.length; i++) {\n if (i !== outerIndex) {\n var subscription = this.subscriptions[i];\n subscription.unsubscribe();\n this.remove(subscription);\n }\n }\n this.subscriptions = null;\n }\n this.destination.next(innerValue);\n };\n return RaceSubscriber;\n}(OuterSubscriber));\nexport { RaceSubscriber };\n//# sourceMappingURL=race.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function range(start, count, scheduler) {\n if (start === void 0) {\n start = 0;\n }\n return new Observable(function (subscriber) {\n if (count === undefined) {\n count = start;\n start = 0;\n }\n var index = 0;\n var current = start;\n if (scheduler) {\n return scheduler.schedule(dispatch, 0, {\n index: index, count: count, start: start, subscriber: subscriber\n });\n }\n else {\n do {\n if (index++ >= count) {\n subscriber.complete();\n break;\n }\n subscriber.next(current++);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n }\n return undefined;\n });\n}\nexport function dispatch(state) {\n var start = state.start, index = state.index, count = state.count, subscriber = state.subscriber;\n if (index >= count) {\n subscriber.complete();\n return;\n }\n subscriber.next(start);\n if (subscriber.closed) {\n return;\n }\n state.index = index + 1;\n state.start = start + 1;\n this.schedule(state);\n}\n//# sourceMappingURL=range.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function throwError(error, scheduler) {\n if (!scheduler) {\n return new Observable(function (subscriber) { return subscriber.error(error); });\n }\n else {\n return new Observable(function (subscriber) { return scheduler.schedule(dispatch, 0, { error: error, subscriber: subscriber }); });\n }\n}\nfunction dispatch(_a) {\n var error = _a.error, subscriber = _a.subscriber;\n subscriber.error(error);\n}\n//# sourceMappingURL=throwError.js.map\n","/** PURE_IMPORTS_START _Observable,_scheduler_async,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { async } from '../scheduler/async';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function timer(dueTime, periodOrScheduler, scheduler) {\n if (dueTime === void 0) {\n dueTime = 0;\n }\n var period = -1;\n if (isNumeric(periodOrScheduler)) {\n period = Number(periodOrScheduler) < 1 && 1 || Number(periodOrScheduler);\n }\n else if (isScheduler(periodOrScheduler)) {\n scheduler = periodOrScheduler;\n }\n if (!isScheduler(scheduler)) {\n scheduler = async;\n }\n return new Observable(function (subscriber) {\n var due = isNumeric(dueTime)\n ? dueTime\n : (+dueTime - scheduler.now());\n return scheduler.schedule(dispatch, due, {\n index: 0, period: period, subscriber: subscriber\n });\n });\n}\nfunction dispatch(state) {\n var index = state.index, period = state.period, subscriber = state.subscriber;\n subscriber.next(index);\n if (subscriber.closed) {\n return;\n }\n else if (period === -1) {\n return subscriber.complete();\n }\n state.index = index + 1;\n this.schedule(state, period);\n}\n//# sourceMappingURL=timer.js.map\n","/** PURE_IMPORTS_START _Observable,_from,_empty PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { from } from './from';\nimport { EMPTY } from './empty';\nexport function using(resourceFactory, observableFactory) {\n return new Observable(function (subscriber) {\n var resource;\n try {\n resource = resourceFactory();\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var result;\n try {\n result = observableFactory(resource);\n }\n catch (err) {\n subscriber.error(err);\n return undefined;\n }\n var source = result ? from(result) : EMPTY;\n var subscription = source.subscribe(subscriber);\n return function () {\n subscription.unsubscribe();\n if (resource) {\n resource.unsubscribe();\n }\n };\n });\n}\n//# sourceMappingURL=using.js.map\n","/** PURE_IMPORTS_START tslib,_fromArray,_util_isArray,_Subscriber,_OuterSubscriber,_util_subscribeToResult,_.._internal_symbol_iterator PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { fromArray } from './fromArray';\nimport { isArray } from '../util/isArray';\nimport { Subscriber } from '../Subscriber';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { iterator as Symbol_iterator } from '../../internal/symbol/iterator';\nexport function zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var resultSelector = observables[observables.length - 1];\n if (typeof resultSelector === 'function') {\n observables.pop();\n }\n return fromArray(observables, undefined).lift(new ZipOperator(resultSelector));\n}\nvar ZipOperator = /*@__PURE__*/ (function () {\n function ZipOperator(resultSelector) {\n this.resultSelector = resultSelector;\n }\n ZipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ZipSubscriber(subscriber, this.resultSelector));\n };\n return ZipOperator;\n}());\nexport { ZipOperator };\nvar ZipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipSubscriber, _super);\n function ZipSubscriber(destination, resultSelector, values) {\n if (values === void 0) {\n values = Object.create(null);\n }\n var _this = _super.call(this, destination) || this;\n _this.iterators = [];\n _this.active = 0;\n _this.resultSelector = (typeof resultSelector === 'function') ? resultSelector : null;\n _this.values = values;\n return _this;\n }\n ZipSubscriber.prototype._next = function (value) {\n var iterators = this.iterators;\n if (isArray(value)) {\n iterators.push(new StaticArrayIterator(value));\n }\n else if (typeof value[Symbol_iterator] === 'function') {\n iterators.push(new StaticIterator(value[Symbol_iterator]()));\n }\n else {\n iterators.push(new ZipBufferIterator(this.destination, this, value));\n }\n };\n ZipSubscriber.prototype._complete = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n this.unsubscribe();\n if (len === 0) {\n this.destination.complete();\n return;\n }\n this.active = len;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (iterator.stillUnsubscribed) {\n var destination = this.destination;\n destination.add(iterator.subscribe(iterator, i));\n }\n else {\n this.active--;\n }\n }\n };\n ZipSubscriber.prototype.notifyInactive = function () {\n this.active--;\n if (this.active === 0) {\n this.destination.complete();\n }\n };\n ZipSubscriber.prototype.checkIterators = function () {\n var iterators = this.iterators;\n var len = iterators.length;\n var destination = this.destination;\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n if (typeof iterator.hasValue === 'function' && !iterator.hasValue()) {\n return;\n }\n }\n var shouldComplete = false;\n var args = [];\n for (var i = 0; i < len; i++) {\n var iterator = iterators[i];\n var result = iterator.next();\n if (iterator.hasCompleted()) {\n shouldComplete = true;\n }\n if (result.done) {\n destination.complete();\n return;\n }\n args.push(result.value);\n }\n if (this.resultSelector) {\n this._tryresultSelector(args);\n }\n else {\n destination.next(args);\n }\n if (shouldComplete) {\n destination.complete();\n }\n };\n ZipSubscriber.prototype._tryresultSelector = function (args) {\n var result;\n try {\n result = this.resultSelector.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return ZipSubscriber;\n}(Subscriber));\nexport { ZipSubscriber };\nvar StaticIterator = /*@__PURE__*/ (function () {\n function StaticIterator(iterator) {\n this.iterator = iterator;\n this.nextResult = iterator.next();\n }\n StaticIterator.prototype.hasValue = function () {\n return true;\n };\n StaticIterator.prototype.next = function () {\n var result = this.nextResult;\n this.nextResult = this.iterator.next();\n return result;\n };\n StaticIterator.prototype.hasCompleted = function () {\n var nextResult = this.nextResult;\n return nextResult && nextResult.done;\n };\n return StaticIterator;\n}());\nvar StaticArrayIterator = /*@__PURE__*/ (function () {\n function StaticArrayIterator(array) {\n this.array = array;\n this.index = 0;\n this.length = 0;\n this.length = array.length;\n }\n StaticArrayIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n StaticArrayIterator.prototype.next = function (value) {\n var i = this.index++;\n var array = this.array;\n return i < this.length ? { value: array[i], done: false } : { value: null, done: true };\n };\n StaticArrayIterator.prototype.hasValue = function () {\n return this.array.length > this.index;\n };\n StaticArrayIterator.prototype.hasCompleted = function () {\n return this.array.length === this.index;\n };\n return StaticArrayIterator;\n}());\nvar ZipBufferIterator = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ZipBufferIterator, _super);\n function ZipBufferIterator(destination, parent, observable) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n _this.observable = observable;\n _this.stillUnsubscribed = true;\n _this.buffer = [];\n _this.isComplete = false;\n return _this;\n }\n ZipBufferIterator.prototype[Symbol_iterator] = function () {\n return this;\n };\n ZipBufferIterator.prototype.next = function () {\n var buffer = this.buffer;\n if (buffer.length === 0 && this.isComplete) {\n return { value: null, done: true };\n }\n else {\n return { value: buffer.shift(), done: false };\n }\n };\n ZipBufferIterator.prototype.hasValue = function () {\n return this.buffer.length > 0;\n };\n ZipBufferIterator.prototype.hasCompleted = function () {\n return this.buffer.length === 0 && this.isComplete;\n };\n ZipBufferIterator.prototype.notifyComplete = function () {\n if (this.buffer.length > 0) {\n this.isComplete = true;\n this.parent.notifyInactive();\n }\n else {\n this.destination.complete();\n }\n };\n ZipBufferIterator.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.buffer.push(innerValue);\n this.parent.checkIterators();\n };\n ZipBufferIterator.prototype.subscribe = function (value, index) {\n return subscribeToResult(this, this.observable, this, index);\n };\n return ZipBufferIterator;\n}(OuterSubscriber));\n//# sourceMappingURL=zip.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function audit(durationSelector) {\n return function auditOperatorFunction(source) {\n return source.lift(new AuditOperator(durationSelector));\n };\n}\nvar AuditOperator = /*@__PURE__*/ (function () {\n function AuditOperator(durationSelector) {\n this.durationSelector = durationSelector;\n }\n AuditOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new AuditSubscriber(subscriber, this.durationSelector));\n };\n return AuditOperator;\n}());\nvar AuditSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AuditSubscriber, _super);\n function AuditSubscriber(destination, durationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.durationSelector = durationSelector;\n _this.hasValue = false;\n return _this;\n }\n AuditSubscriber.prototype._next = function (value) {\n this.value = value;\n this.hasValue = true;\n if (!this.throttled) {\n var duration = void 0;\n try {\n var durationSelector = this.durationSelector;\n duration = durationSelector(value);\n }\n catch (err) {\n return this.destination.error(err);\n }\n var innerSubscription = subscribeToResult(this, duration);\n if (!innerSubscription || innerSubscription.closed) {\n this.clearThrottle();\n }\n else {\n this.add(this.throttled = innerSubscription);\n }\n }\n };\n AuditSubscriber.prototype.clearThrottle = function () {\n var _a = this, value = _a.value, hasValue = _a.hasValue, throttled = _a.throttled;\n if (throttled) {\n this.remove(throttled);\n this.throttled = null;\n throttled.unsubscribe();\n }\n if (hasValue) {\n this.value = null;\n this.hasValue = false;\n this.destination.next(value);\n }\n };\n AuditSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex) {\n this.clearThrottle();\n };\n AuditSubscriber.prototype.notifyComplete = function () {\n this.clearThrottle();\n };\n return AuditSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=audit.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_audit,_observable_timer PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { audit } from './audit';\nimport { timer } from '../observable/timer';\nexport function auditTime(duration, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return audit(function () { return timer(duration, scheduler); });\n}\n//# sourceMappingURL=auditTime.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function buffer(closingNotifier) {\n return function bufferOperatorFunction(source) {\n return source.lift(new BufferOperator(closingNotifier));\n };\n}\nvar BufferOperator = /*@__PURE__*/ (function () {\n function BufferOperator(closingNotifier) {\n this.closingNotifier = closingNotifier;\n }\n BufferOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferSubscriber(subscriber, this.closingNotifier));\n };\n return BufferOperator;\n}());\nvar BufferSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferSubscriber, _super);\n function BufferSubscriber(destination, closingNotifier) {\n var _this = _super.call(this, destination) || this;\n _this.buffer = [];\n _this.add(subscribeToResult(_this, closingNotifier));\n return _this;\n }\n BufferSubscriber.prototype._next = function (value) {\n this.buffer.push(value);\n };\n BufferSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var buffer = this.buffer;\n this.buffer = [];\n this.destination.next(buffer);\n };\n return BufferSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=buffer.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function bufferCount(bufferSize, startBufferEvery) {\n if (startBufferEvery === void 0) {\n startBufferEvery = null;\n }\n return function bufferCountOperatorFunction(source) {\n return source.lift(new BufferCountOperator(bufferSize, startBufferEvery));\n };\n}\nvar BufferCountOperator = /*@__PURE__*/ (function () {\n function BufferCountOperator(bufferSize, startBufferEvery) {\n this.bufferSize = bufferSize;\n this.startBufferEvery = startBufferEvery;\n if (!startBufferEvery || bufferSize === startBufferEvery) {\n this.subscriberClass = BufferCountSubscriber;\n }\n else {\n this.subscriberClass = BufferSkipCountSubscriber;\n }\n }\n BufferCountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new this.subscriberClass(subscriber, this.bufferSize, this.startBufferEvery));\n };\n return BufferCountOperator;\n}());\nvar BufferCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferCountSubscriber, _super);\n function BufferCountSubscriber(destination, bufferSize) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.buffer = [];\n return _this;\n }\n BufferCountSubscriber.prototype._next = function (value) {\n var buffer = this.buffer;\n buffer.push(value);\n if (buffer.length == this.bufferSize) {\n this.destination.next(buffer);\n this.buffer = [];\n }\n };\n BufferCountSubscriber.prototype._complete = function () {\n var buffer = this.buffer;\n if (buffer.length > 0) {\n this.destination.next(buffer);\n }\n _super.prototype._complete.call(this);\n };\n return BufferCountSubscriber;\n}(Subscriber));\nvar BufferSkipCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferSkipCountSubscriber, _super);\n function BufferSkipCountSubscriber(destination, bufferSize, startBufferEvery) {\n var _this = _super.call(this, destination) || this;\n _this.bufferSize = bufferSize;\n _this.startBufferEvery = startBufferEvery;\n _this.buffers = [];\n _this.count = 0;\n return _this;\n }\n BufferSkipCountSubscriber.prototype._next = function (value) {\n var _a = this, bufferSize = _a.bufferSize, startBufferEvery = _a.startBufferEvery, buffers = _a.buffers, count = _a.count;\n this.count++;\n if (count % startBufferEvery === 0) {\n buffers.push([]);\n }\n for (var i = buffers.length; i--;) {\n var buffer = buffers[i];\n buffer.push(value);\n if (buffer.length === bufferSize) {\n buffers.splice(i, 1);\n this.destination.next(buffer);\n }\n }\n };\n BufferSkipCountSubscriber.prototype._complete = function () {\n var _a = this, buffers = _a.buffers, destination = _a.destination;\n while (buffers.length > 0) {\n var buffer = buffers.shift();\n if (buffer.length > 0) {\n destination.next(buffer);\n }\n }\n _super.prototype._complete.call(this);\n };\n return BufferSkipCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=bufferCount.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_Subscriber,_util_isScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { isScheduler } from '../util/isScheduler';\nexport function bufferTime(bufferTimeSpan) {\n var length = arguments.length;\n var scheduler = async;\n if (isScheduler(arguments[arguments.length - 1])) {\n scheduler = arguments[arguments.length - 1];\n length--;\n }\n var bufferCreationInterval = null;\n if (length >= 2) {\n bufferCreationInterval = arguments[1];\n }\n var maxBufferSize = Number.POSITIVE_INFINITY;\n if (length >= 3) {\n maxBufferSize = arguments[2];\n }\n return function bufferTimeOperatorFunction(source) {\n return source.lift(new BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler));\n };\n}\nvar BufferTimeOperator = /*@__PURE__*/ (function () {\n function BufferTimeOperator(bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n this.bufferTimeSpan = bufferTimeSpan;\n this.bufferCreationInterval = bufferCreationInterval;\n this.maxBufferSize = maxBufferSize;\n this.scheduler = scheduler;\n }\n BufferTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferTimeSubscriber(subscriber, this.bufferTimeSpan, this.bufferCreationInterval, this.maxBufferSize, this.scheduler));\n };\n return BufferTimeOperator;\n}());\nvar Context = /*@__PURE__*/ (function () {\n function Context() {\n this.buffer = [];\n }\n return Context;\n}());\nvar BufferTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferTimeSubscriber, _super);\n function BufferTimeSubscriber(destination, bufferTimeSpan, bufferCreationInterval, maxBufferSize, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.bufferTimeSpan = bufferTimeSpan;\n _this.bufferCreationInterval = bufferCreationInterval;\n _this.maxBufferSize = maxBufferSize;\n _this.scheduler = scheduler;\n _this.contexts = [];\n var context = _this.openContext();\n _this.timespanOnly = bufferCreationInterval == null || bufferCreationInterval < 0;\n if (_this.timespanOnly) {\n var timeSpanOnlyState = { subscriber: _this, context: context, bufferTimeSpan: bufferTimeSpan };\n _this.add(context.closeAction = scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n else {\n var closeState = { subscriber: _this, context: context };\n var creationState = { bufferTimeSpan: bufferTimeSpan, bufferCreationInterval: bufferCreationInterval, subscriber: _this, scheduler: scheduler };\n _this.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, closeState));\n _this.add(scheduler.schedule(dispatchBufferCreation, bufferCreationInterval, creationState));\n }\n return _this;\n }\n BufferTimeSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n var len = contexts.length;\n var filledBufferContext;\n for (var i = 0; i < len; i++) {\n var context_1 = contexts[i];\n var buffer = context_1.buffer;\n buffer.push(value);\n if (buffer.length == this.maxBufferSize) {\n filledBufferContext = context_1;\n }\n }\n if (filledBufferContext) {\n this.onBufferFull(filledBufferContext);\n }\n };\n BufferTimeSubscriber.prototype._error = function (err) {\n this.contexts.length = 0;\n _super.prototype._error.call(this, err);\n };\n BufferTimeSubscriber.prototype._complete = function () {\n var _a = this, contexts = _a.contexts, destination = _a.destination;\n while (contexts.length > 0) {\n var context_2 = contexts.shift();\n destination.next(context_2.buffer);\n }\n _super.prototype._complete.call(this);\n };\n BufferTimeSubscriber.prototype._unsubscribe = function () {\n this.contexts = null;\n };\n BufferTimeSubscriber.prototype.onBufferFull = function (context) {\n this.closeContext(context);\n var closeAction = context.closeAction;\n closeAction.unsubscribe();\n this.remove(closeAction);\n if (!this.closed && this.timespanOnly) {\n context = this.openContext();\n var bufferTimeSpan = this.bufferTimeSpan;\n var timeSpanOnlyState = { subscriber: this, context: context, bufferTimeSpan: bufferTimeSpan };\n this.add(context.closeAction = this.scheduler.schedule(dispatchBufferTimeSpanOnly, bufferTimeSpan, timeSpanOnlyState));\n }\n };\n BufferTimeSubscriber.prototype.openContext = function () {\n var context = new Context();\n this.contexts.push(context);\n return context;\n };\n BufferTimeSubscriber.prototype.closeContext = function (context) {\n this.destination.next(context.buffer);\n var contexts = this.contexts;\n var spliceIndex = contexts ? contexts.indexOf(context) : -1;\n if (spliceIndex >= 0) {\n contexts.splice(contexts.indexOf(context), 1);\n }\n };\n return BufferTimeSubscriber;\n}(Subscriber));\nfunction dispatchBufferTimeSpanOnly(state) {\n var subscriber = state.subscriber;\n var prevContext = state.context;\n if (prevContext) {\n subscriber.closeContext(prevContext);\n }\n if (!subscriber.closed) {\n state.context = subscriber.openContext();\n state.context.closeAction = this.schedule(state, state.bufferTimeSpan);\n }\n}\nfunction dispatchBufferCreation(state) {\n var bufferCreationInterval = state.bufferCreationInterval, bufferTimeSpan = state.bufferTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler;\n var context = subscriber.openContext();\n var action = this;\n if (!subscriber.closed) {\n subscriber.add(context.closeAction = scheduler.schedule(dispatchBufferClose, bufferTimeSpan, { subscriber: subscriber, context: context }));\n action.schedule(state, bufferCreationInterval);\n }\n}\nfunction dispatchBufferClose(arg) {\n var subscriber = arg.subscriber, context = arg.context;\n subscriber.closeContext(context);\n}\n//# sourceMappingURL=bufferTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription,_util_subscribeToResult,_OuterSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nexport function bufferToggle(openings, closingSelector) {\n return function bufferToggleOperatorFunction(source) {\n return source.lift(new BufferToggleOperator(openings, closingSelector));\n };\n}\nvar BufferToggleOperator = /*@__PURE__*/ (function () {\n function BufferToggleOperator(openings, closingSelector) {\n this.openings = openings;\n this.closingSelector = closingSelector;\n }\n BufferToggleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferToggleSubscriber(subscriber, this.openings, this.closingSelector));\n };\n return BufferToggleOperator;\n}());\nvar BufferToggleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferToggleSubscriber, _super);\n function BufferToggleSubscriber(destination, openings, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.openings = openings;\n _this.closingSelector = closingSelector;\n _this.contexts = [];\n _this.add(subscribeToResult(_this, openings));\n return _this;\n }\n BufferToggleSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n var len = contexts.length;\n for (var i = 0; i < len; i++) {\n contexts[i].buffer.push(value);\n }\n };\n BufferToggleSubscriber.prototype._error = function (err) {\n var contexts = this.contexts;\n while (contexts.length > 0) {\n var context_1 = contexts.shift();\n context_1.subscription.unsubscribe();\n context_1.buffer = null;\n context_1.subscription = null;\n }\n this.contexts = null;\n _super.prototype._error.call(this, err);\n };\n BufferToggleSubscriber.prototype._complete = function () {\n var contexts = this.contexts;\n while (contexts.length > 0) {\n var context_2 = contexts.shift();\n this.destination.next(context_2.buffer);\n context_2.subscription.unsubscribe();\n context_2.buffer = null;\n context_2.subscription = null;\n }\n this.contexts = null;\n _super.prototype._complete.call(this);\n };\n BufferToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n outerValue ? this.closeBuffer(outerValue) : this.openBuffer(innerValue);\n };\n BufferToggleSubscriber.prototype.notifyComplete = function (innerSub) {\n this.closeBuffer(innerSub.context);\n };\n BufferToggleSubscriber.prototype.openBuffer = function (value) {\n try {\n var closingSelector = this.closingSelector;\n var closingNotifier = closingSelector.call(this, value);\n if (closingNotifier) {\n this.trySubscribe(closingNotifier);\n }\n }\n catch (err) {\n this._error(err);\n }\n };\n BufferToggleSubscriber.prototype.closeBuffer = function (context) {\n var contexts = this.contexts;\n if (contexts && context) {\n var buffer = context.buffer, subscription = context.subscription;\n this.destination.next(buffer);\n contexts.splice(contexts.indexOf(context), 1);\n this.remove(subscription);\n subscription.unsubscribe();\n }\n };\n BufferToggleSubscriber.prototype.trySubscribe = function (closingNotifier) {\n var contexts = this.contexts;\n var buffer = [];\n var subscription = new Subscription();\n var context = { buffer: buffer, subscription: subscription };\n contexts.push(context);\n var innerSubscription = subscribeToResult(this, closingNotifier, context);\n if (!innerSubscription || innerSubscription.closed) {\n this.closeBuffer(context);\n }\n else {\n innerSubscription.context = context;\n this.add(innerSubscription);\n subscription.add(innerSubscription);\n }\n };\n return BufferToggleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=bufferToggle.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function bufferWhen(closingSelector) {\n return function (source) {\n return source.lift(new BufferWhenOperator(closingSelector));\n };\n}\nvar BufferWhenOperator = /*@__PURE__*/ (function () {\n function BufferWhenOperator(closingSelector) {\n this.closingSelector = closingSelector;\n }\n BufferWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new BufferWhenSubscriber(subscriber, this.closingSelector));\n };\n return BufferWhenOperator;\n}());\nvar BufferWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(BufferWhenSubscriber, _super);\n function BufferWhenSubscriber(destination, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.closingSelector = closingSelector;\n _this.subscribing = false;\n _this.openBuffer();\n return _this;\n }\n BufferWhenSubscriber.prototype._next = function (value) {\n this.buffer.push(value);\n };\n BufferWhenSubscriber.prototype._complete = function () {\n var buffer = this.buffer;\n if (buffer) {\n this.destination.next(buffer);\n }\n _super.prototype._complete.call(this);\n };\n BufferWhenSubscriber.prototype._unsubscribe = function () {\n this.buffer = null;\n this.subscribing = false;\n };\n BufferWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openBuffer();\n };\n BufferWhenSubscriber.prototype.notifyComplete = function () {\n if (this.subscribing) {\n this.complete();\n }\n else {\n this.openBuffer();\n }\n };\n BufferWhenSubscriber.prototype.openBuffer = function () {\n var closingSubscription = this.closingSubscription;\n if (closingSubscription) {\n this.remove(closingSubscription);\n closingSubscription.unsubscribe();\n }\n var buffer = this.buffer;\n if (this.buffer) {\n this.destination.next(buffer);\n }\n this.buffer = [];\n var closingNotifier;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector();\n }\n catch (err) {\n return this.error(err);\n }\n closingSubscription = new Subscription();\n this.closingSubscription = closingSubscription;\n this.add(closingSubscription);\n this.subscribing = true;\n closingSubscription.add(subscribeToResult(this, closingNotifier));\n this.subscribing = false;\n };\n return BufferWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=bufferWhen.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function catchError(selector) {\n return function catchErrorOperatorFunction(source) {\n var operator = new CatchOperator(selector);\n var caught = source.lift(operator);\n return (operator.caught = caught);\n };\n}\nvar CatchOperator = /*@__PURE__*/ (function () {\n function CatchOperator(selector) {\n this.selector = selector;\n }\n CatchOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CatchSubscriber(subscriber, this.selector, this.caught));\n };\n return CatchOperator;\n}());\nvar CatchSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CatchSubscriber, _super);\n function CatchSubscriber(destination, selector, caught) {\n var _this = _super.call(this, destination) || this;\n _this.selector = selector;\n _this.caught = caught;\n return _this;\n }\n CatchSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var result = void 0;\n try {\n result = this.selector(err, this.caught);\n }\n catch (err2) {\n _super.prototype.error.call(this, err2);\n return;\n }\n this._unsubscribeAndRecycle();\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n this.add(innerSubscriber);\n subscribeToResult(this, result, undefined, undefined, innerSubscriber);\n }\n };\n return CatchSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=catchError.js.map\n","/** PURE_IMPORTS_START _observable_combineLatest PURE_IMPORTS_END */\nimport { CombineLatestOperator } from '../observable/combineLatest';\nexport function combineAll(project) {\n return function (source) { return source.lift(new CombineLatestOperator(project)); };\n}\n//# sourceMappingURL=combineAll.js.map\n","/** PURE_IMPORTS_START _util_isArray,_observable_combineLatest,_observable_from PURE_IMPORTS_END */\nimport { isArray } from '../util/isArray';\nimport { CombineLatestOperator } from '../observable/combineLatest';\nimport { from } from '../observable/from';\nvar none = {};\nexport function combineLatest() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n var project = null;\n if (typeof observables[observables.length - 1] === 'function') {\n project = observables.pop();\n }\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0].slice();\n }\n return function (source) { return source.lift.call(from([source].concat(observables)), new CombineLatestOperator(project)); };\n}\n//# sourceMappingURL=combineLatest.js.map\n","/** PURE_IMPORTS_START _observable_concat PURE_IMPORTS_END */\nimport { concat as concatStatic } from '../observable/concat';\nexport function concat() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function (source) { return source.lift.call(concatStatic.apply(void 0, [source].concat(observables))); };\n}\n//# sourceMappingURL=concat.js.map\n","/** PURE_IMPORTS_START _mergeAll PURE_IMPORTS_END */\nimport { mergeAll } from './mergeAll';\nexport function concatAll() {\n return mergeAll(1);\n}\n//# sourceMappingURL=concatAll.js.map\n","/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nexport function concatMap(project, resultSelector) {\n return mergeMap(project, resultSelector, 1);\n}\n//# sourceMappingURL=concatMap.js.map\n","/** PURE_IMPORTS_START _concatMap PURE_IMPORTS_END */\nimport { concatMap } from './concatMap';\nexport function concatMapTo(innerObservable, resultSelector) {\n return concatMap(function () { return innerObservable; }, resultSelector);\n}\n//# sourceMappingURL=concatMapTo.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function count(predicate) {\n return function (source) { return source.lift(new CountOperator(predicate, source)); };\n}\nvar CountOperator = /*@__PURE__*/ (function () {\n function CountOperator(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n CountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new CountSubscriber(subscriber, this.predicate, this.source));\n };\n return CountOperator;\n}());\nvar CountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CountSubscriber, _super);\n function CountSubscriber(destination, predicate, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.count = 0;\n _this.index = 0;\n return _this;\n }\n CountSubscriber.prototype._next = function (value) {\n if (this.predicate) {\n this._tryPredicate(value);\n }\n else {\n this.count++;\n }\n };\n CountSubscriber.prototype._tryPredicate = function (value) {\n var result;\n try {\n result = this.predicate(value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.count++;\n }\n };\n CountSubscriber.prototype._complete = function () {\n this.destination.next(this.count);\n this.destination.complete();\n };\n return CountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=count.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function debounce(durationSelector) {\n return function (source) { return source.lift(new DebounceOperator(durationSelector)); };\n}\nvar DebounceOperator = /*@__PURE__*/ (function () {\n function DebounceOperator(durationSelector) {\n this.durationSelector = durationSelector;\n }\n DebounceOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceSubscriber(subscriber, this.durationSelector));\n };\n return DebounceOperator;\n}());\nvar DebounceSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DebounceSubscriber, _super);\n function DebounceSubscriber(destination, durationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.durationSelector = durationSelector;\n _this.hasValue = false;\n _this.durationSubscription = null;\n return _this;\n }\n DebounceSubscriber.prototype._next = function (value) {\n try {\n var result = this.durationSelector.call(this, value);\n if (result) {\n this._tryNext(value, result);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n DebounceSubscriber.prototype._complete = function () {\n this.emitValue();\n this.destination.complete();\n };\n DebounceSubscriber.prototype._tryNext = function (value, duration) {\n var subscription = this.durationSubscription;\n this.value = value;\n this.hasValue = true;\n if (subscription) {\n subscription.unsubscribe();\n this.remove(subscription);\n }\n subscription = subscribeToResult(this, duration);\n if (subscription && !subscription.closed) {\n this.add(this.durationSubscription = subscription);\n }\n };\n DebounceSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.emitValue();\n };\n DebounceSubscriber.prototype.notifyComplete = function () {\n this.emitValue();\n };\n DebounceSubscriber.prototype.emitValue = function () {\n if (this.hasValue) {\n var value = this.value;\n var subscription = this.durationSubscription;\n if (subscription) {\n this.durationSubscription = null;\n subscription.unsubscribe();\n this.remove(subscription);\n }\n this.value = null;\n this.hasValue = false;\n _super.prototype._next.call(this, value);\n }\n };\n return DebounceSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=debounce.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function debounceTime(dueTime, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) { return source.lift(new DebounceTimeOperator(dueTime, scheduler)); };\n}\nvar DebounceTimeOperator = /*@__PURE__*/ (function () {\n function DebounceTimeOperator(dueTime, scheduler) {\n this.dueTime = dueTime;\n this.scheduler = scheduler;\n }\n DebounceTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DebounceTimeSubscriber(subscriber, this.dueTime, this.scheduler));\n };\n return DebounceTimeOperator;\n}());\nvar DebounceTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DebounceTimeSubscriber, _super);\n function DebounceTimeSubscriber(destination, dueTime, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.dueTime = dueTime;\n _this.scheduler = scheduler;\n _this.debouncedSubscription = null;\n _this.lastValue = null;\n _this.hasValue = false;\n return _this;\n }\n DebounceTimeSubscriber.prototype._next = function (value) {\n this.clearDebounce();\n this.lastValue = value;\n this.hasValue = true;\n this.add(this.debouncedSubscription = this.scheduler.schedule(dispatchNext, this.dueTime, this));\n };\n DebounceTimeSubscriber.prototype._complete = function () {\n this.debouncedNext();\n this.destination.complete();\n };\n DebounceTimeSubscriber.prototype.debouncedNext = function () {\n this.clearDebounce();\n if (this.hasValue) {\n var lastValue = this.lastValue;\n this.lastValue = null;\n this.hasValue = false;\n this.destination.next(lastValue);\n }\n };\n DebounceTimeSubscriber.prototype.clearDebounce = function () {\n var debouncedSubscription = this.debouncedSubscription;\n if (debouncedSubscription !== null) {\n this.remove(debouncedSubscription);\n debouncedSubscription.unsubscribe();\n this.debouncedSubscription = null;\n }\n };\n return DebounceTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(subscriber) {\n subscriber.debouncedNext();\n}\n//# sourceMappingURL=debounceTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function defaultIfEmpty(defaultValue) {\n if (defaultValue === void 0) {\n defaultValue = null;\n }\n return function (source) { return source.lift(new DefaultIfEmptyOperator(defaultValue)); };\n}\nvar DefaultIfEmptyOperator = /*@__PURE__*/ (function () {\n function DefaultIfEmptyOperator(defaultValue) {\n this.defaultValue = defaultValue;\n }\n DefaultIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DefaultIfEmptySubscriber(subscriber, this.defaultValue));\n };\n return DefaultIfEmptyOperator;\n}());\nvar DefaultIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DefaultIfEmptySubscriber, _super);\n function DefaultIfEmptySubscriber(destination, defaultValue) {\n var _this = _super.call(this, destination) || this;\n _this.defaultValue = defaultValue;\n _this.isEmpty = true;\n return _this;\n }\n DefaultIfEmptySubscriber.prototype._next = function (value) {\n this.isEmpty = false;\n this.destination.next(value);\n };\n DefaultIfEmptySubscriber.prototype._complete = function () {\n if (this.isEmpty) {\n this.destination.next(this.defaultValue);\n }\n this.destination.complete();\n };\n return DefaultIfEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=defaultIfEmpty.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function delay(delay, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n var absoluteDelay = isDate(delay);\n var delayFor = absoluteDelay ? (+delay - scheduler.now()) : Math.abs(delay);\n return function (source) { return source.lift(new DelayOperator(delayFor, scheduler)); };\n}\nvar DelayOperator = /*@__PURE__*/ (function () {\n function DelayOperator(delay, scheduler) {\n this.delay = delay;\n this.scheduler = scheduler;\n }\n DelayOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelaySubscriber(subscriber, this.delay, this.scheduler));\n };\n return DelayOperator;\n}());\nvar DelaySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DelaySubscriber, _super);\n function DelaySubscriber(destination, delay, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.delay = delay;\n _this.scheduler = scheduler;\n _this.queue = [];\n _this.active = false;\n _this.errored = false;\n return _this;\n }\n DelaySubscriber.dispatch = function (state) {\n var source = state.source;\n var queue = source.queue;\n var scheduler = state.scheduler;\n var destination = state.destination;\n while (queue.length > 0 && (queue[0].time - scheduler.now()) <= 0) {\n queue.shift().notification.observe(destination);\n }\n if (queue.length > 0) {\n var delay_1 = Math.max(0, queue[0].time - scheduler.now());\n this.schedule(state, delay_1);\n }\n else {\n this.unsubscribe();\n source.active = false;\n }\n };\n DelaySubscriber.prototype._schedule = function (scheduler) {\n this.active = true;\n var destination = this.destination;\n destination.add(scheduler.schedule(DelaySubscriber.dispatch, this.delay, {\n source: this, destination: this.destination, scheduler: scheduler\n }));\n };\n DelaySubscriber.prototype.scheduleNotification = function (notification) {\n if (this.errored === true) {\n return;\n }\n var scheduler = this.scheduler;\n var message = new DelayMessage(scheduler.now() + this.delay, notification);\n this.queue.push(message);\n if (this.active === false) {\n this._schedule(scheduler);\n }\n };\n DelaySubscriber.prototype._next = function (value) {\n this.scheduleNotification(Notification.createNext(value));\n };\n DelaySubscriber.prototype._error = function (err) {\n this.errored = true;\n this.queue = [];\n this.destination.error(err);\n this.unsubscribe();\n };\n DelaySubscriber.prototype._complete = function () {\n this.scheduleNotification(Notification.createComplete());\n this.unsubscribe();\n };\n return DelaySubscriber;\n}(Subscriber));\nvar DelayMessage = /*@__PURE__*/ (function () {\n function DelayMessage(time, notification) {\n this.time = time;\n this.notification = notification;\n }\n return DelayMessage;\n}());\n//# sourceMappingURL=delay.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Observable,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Observable } from '../Observable';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function delayWhen(delayDurationSelector, subscriptionDelay) {\n if (subscriptionDelay) {\n return function (source) {\n return new SubscriptionDelayObservable(source, subscriptionDelay)\n .lift(new DelayWhenOperator(delayDurationSelector));\n };\n }\n return function (source) { return source.lift(new DelayWhenOperator(delayDurationSelector)); };\n}\nvar DelayWhenOperator = /*@__PURE__*/ (function () {\n function DelayWhenOperator(delayDurationSelector) {\n this.delayDurationSelector = delayDurationSelector;\n }\n DelayWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DelayWhenSubscriber(subscriber, this.delayDurationSelector));\n };\n return DelayWhenOperator;\n}());\nvar DelayWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DelayWhenSubscriber, _super);\n function DelayWhenSubscriber(destination, delayDurationSelector) {\n var _this = _super.call(this, destination) || this;\n _this.delayDurationSelector = delayDurationSelector;\n _this.completed = false;\n _this.delayNotifierSubscriptions = [];\n _this.index = 0;\n return _this;\n }\n DelayWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(outerValue);\n this.removeSubscription(innerSub);\n this.tryComplete();\n };\n DelayWhenSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n DelayWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n var value = this.removeSubscription(innerSub);\n if (value) {\n this.destination.next(value);\n }\n this.tryComplete();\n };\n DelayWhenSubscriber.prototype._next = function (value) {\n var index = this.index++;\n try {\n var delayNotifier = this.delayDurationSelector(value, index);\n if (delayNotifier) {\n this.tryDelay(delayNotifier, value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n DelayWhenSubscriber.prototype._complete = function () {\n this.completed = true;\n this.tryComplete();\n this.unsubscribe();\n };\n DelayWhenSubscriber.prototype.removeSubscription = function (subscription) {\n subscription.unsubscribe();\n var subscriptionIdx = this.delayNotifierSubscriptions.indexOf(subscription);\n if (subscriptionIdx !== -1) {\n this.delayNotifierSubscriptions.splice(subscriptionIdx, 1);\n }\n return subscription.outerValue;\n };\n DelayWhenSubscriber.prototype.tryDelay = function (delayNotifier, value) {\n var notifierSubscription = subscribeToResult(this, delayNotifier, value);\n if (notifierSubscription && !notifierSubscription.closed) {\n var destination = this.destination;\n destination.add(notifierSubscription);\n this.delayNotifierSubscriptions.push(notifierSubscription);\n }\n };\n DelayWhenSubscriber.prototype.tryComplete = function () {\n if (this.completed && this.delayNotifierSubscriptions.length === 0) {\n this.destination.complete();\n }\n };\n return DelayWhenSubscriber;\n}(OuterSubscriber));\nvar SubscriptionDelayObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubscriptionDelayObservable, _super);\n function SubscriptionDelayObservable(source, subscriptionDelay) {\n var _this = _super.call(this) || this;\n _this.source = source;\n _this.subscriptionDelay = subscriptionDelay;\n return _this;\n }\n SubscriptionDelayObservable.prototype._subscribe = function (subscriber) {\n this.subscriptionDelay.subscribe(new SubscriptionDelaySubscriber(subscriber, this.source));\n };\n return SubscriptionDelayObservable;\n}(Observable));\nvar SubscriptionDelaySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SubscriptionDelaySubscriber, _super);\n function SubscriptionDelaySubscriber(parent, source) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n _this.source = source;\n _this.sourceSubscribed = false;\n return _this;\n }\n SubscriptionDelaySubscriber.prototype._next = function (unused) {\n this.subscribeToSource();\n };\n SubscriptionDelaySubscriber.prototype._error = function (err) {\n this.unsubscribe();\n this.parent.error(err);\n };\n SubscriptionDelaySubscriber.prototype._complete = function () {\n this.unsubscribe();\n this.subscribeToSource();\n };\n SubscriptionDelaySubscriber.prototype.subscribeToSource = function () {\n if (!this.sourceSubscribed) {\n this.sourceSubscribed = true;\n this.unsubscribe();\n this.source.subscribe(this.parent);\n }\n };\n return SubscriptionDelaySubscriber;\n}(Subscriber));\n//# sourceMappingURL=delayWhen.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function dematerialize() {\n return function dematerializeOperatorFunction(source) {\n return source.lift(new DeMaterializeOperator());\n };\n}\nvar DeMaterializeOperator = /*@__PURE__*/ (function () {\n function DeMaterializeOperator() {\n }\n DeMaterializeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DeMaterializeSubscriber(subscriber));\n };\n return DeMaterializeOperator;\n}());\nvar DeMaterializeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DeMaterializeSubscriber, _super);\n function DeMaterializeSubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n DeMaterializeSubscriber.prototype._next = function (value) {\n value.observe(this.destination);\n };\n return DeMaterializeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=dematerialize.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function distinct(keySelector, flushes) {\n return function (source) { return source.lift(new DistinctOperator(keySelector, flushes)); };\n}\nvar DistinctOperator = /*@__PURE__*/ (function () {\n function DistinctOperator(keySelector, flushes) {\n this.keySelector = keySelector;\n this.flushes = flushes;\n }\n DistinctOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctSubscriber(subscriber, this.keySelector, this.flushes));\n };\n return DistinctOperator;\n}());\nvar DistinctSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DistinctSubscriber, _super);\n function DistinctSubscriber(destination, keySelector, flushes) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.values = new Set();\n if (flushes) {\n _this.add(subscribeToResult(_this, flushes));\n }\n return _this;\n }\n DistinctSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values.clear();\n };\n DistinctSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n DistinctSubscriber.prototype._next = function (value) {\n if (this.keySelector) {\n this._useKeySelector(value);\n }\n else {\n this._finalizeNext(value, value);\n }\n };\n DistinctSubscriber.prototype._useKeySelector = function (value) {\n var key;\n var destination = this.destination;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this._finalizeNext(key, value);\n };\n DistinctSubscriber.prototype._finalizeNext = function (key, value) {\n var values = this.values;\n if (!values.has(key)) {\n values.add(key);\n this.destination.next(value);\n }\n };\n return DistinctSubscriber;\n}(OuterSubscriber));\nexport { DistinctSubscriber };\n//# sourceMappingURL=distinct.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function distinctUntilChanged(compare, keySelector) {\n return function (source) { return source.lift(new DistinctUntilChangedOperator(compare, keySelector)); };\n}\nvar DistinctUntilChangedOperator = /*@__PURE__*/ (function () {\n function DistinctUntilChangedOperator(compare, keySelector) {\n this.compare = compare;\n this.keySelector = keySelector;\n }\n DistinctUntilChangedOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new DistinctUntilChangedSubscriber(subscriber, this.compare, this.keySelector));\n };\n return DistinctUntilChangedOperator;\n}());\nvar DistinctUntilChangedSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(DistinctUntilChangedSubscriber, _super);\n function DistinctUntilChangedSubscriber(destination, compare, keySelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.hasKey = false;\n if (typeof compare === 'function') {\n _this.compare = compare;\n }\n return _this;\n }\n DistinctUntilChangedSubscriber.prototype.compare = function (x, y) {\n return x === y;\n };\n DistinctUntilChangedSubscriber.prototype._next = function (value) {\n var key;\n try {\n var keySelector = this.keySelector;\n key = keySelector ? keySelector(value) : value;\n }\n catch (err) {\n return this.destination.error(err);\n }\n var result = false;\n if (this.hasKey) {\n try {\n var compare = this.compare;\n result = compare(this.key, key);\n }\n catch (err) {\n return this.destination.error(err);\n }\n }\n else {\n this.hasKey = true;\n }\n if (!result) {\n this.key = key;\n this.destination.next(value);\n }\n };\n return DistinctUntilChangedSubscriber;\n}(Subscriber));\n//# sourceMappingURL=distinctUntilChanged.js.map\n","/** PURE_IMPORTS_START _distinctUntilChanged PURE_IMPORTS_END */\nimport { distinctUntilChanged } from './distinctUntilChanged';\nexport function distinctUntilKeyChanged(key, compare) {\n return distinctUntilChanged(function (x, y) { return compare ? compare(x[key], y[key]) : x[key] === y[key]; });\n}\n//# sourceMappingURL=distinctUntilKeyChanged.js.map\n","/** PURE_IMPORTS_START _util_ArgumentOutOfRangeError,_filter,_throwIfEmpty,_defaultIfEmpty,_take PURE_IMPORTS_END */\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { filter } from './filter';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { take } from './take';\nexport function elementAt(index, defaultValue) {\n if (index < 0) {\n throw new ArgumentOutOfRangeError();\n }\n var hasDefaultValue = arguments.length >= 2;\n return function (source) {\n return source.pipe(filter(function (v, i) { return i === index; }), take(1), hasDefaultValue\n ? defaultIfEmpty(defaultValue)\n : throwIfEmpty(function () { return new ArgumentOutOfRangeError(); }));\n };\n}\n//# sourceMappingURL=elementAt.js.map\n","/** PURE_IMPORTS_START _observable_concat,_observable_of PURE_IMPORTS_END */\nimport { concat } from '../observable/concat';\nimport { of } from '../observable/of';\nexport function endWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n return function (source) { return concat(source, of.apply(void 0, array)); };\n}\n//# sourceMappingURL=endWith.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function every(predicate, thisArg) {\n return function (source) { return source.lift(new EveryOperator(predicate, thisArg, source)); };\n}\nvar EveryOperator = /*@__PURE__*/ (function () {\n function EveryOperator(predicate, thisArg, source) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n this.source = source;\n }\n EveryOperator.prototype.call = function (observer, source) {\n return source.subscribe(new EverySubscriber(observer, this.predicate, this.thisArg, this.source));\n };\n return EveryOperator;\n}());\nvar EverySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(EverySubscriber, _super);\n function EverySubscriber(destination, predicate, thisArg, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.source = source;\n _this.index = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n EverySubscriber.prototype.notifyComplete = function (everyValueMatch) {\n this.destination.next(everyValueMatch);\n this.destination.complete();\n };\n EverySubscriber.prototype._next = function (value) {\n var result = false;\n try {\n result = this.predicate.call(this.thisArg, value, this.index++, this.source);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (!result) {\n this.notifyComplete(false);\n }\n };\n EverySubscriber.prototype._complete = function () {\n this.notifyComplete(true);\n };\n return EverySubscriber;\n}(Subscriber));\n//# sourceMappingURL=every.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function exhaust() {\n return function (source) { return source.lift(new SwitchFirstOperator()); };\n}\nvar SwitchFirstOperator = /*@__PURE__*/ (function () {\n function SwitchFirstOperator() {\n }\n SwitchFirstOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchFirstSubscriber(subscriber));\n };\n return SwitchFirstOperator;\n}());\nvar SwitchFirstSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SwitchFirstSubscriber, _super);\n function SwitchFirstSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasCompleted = false;\n _this.hasSubscription = false;\n return _this;\n }\n SwitchFirstSubscriber.prototype._next = function (value) {\n if (!this.hasSubscription) {\n this.hasSubscription = true;\n this.add(subscribeToResult(this, value));\n }\n };\n SwitchFirstSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete();\n }\n };\n SwitchFirstSubscriber.prototype.notifyComplete = function (innerSub) {\n this.remove(innerSub);\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete();\n }\n };\n return SwitchFirstSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=exhaust.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function exhaustMap(project, resultSelector) {\n if (resultSelector) {\n return function (source) { return source.pipe(exhaustMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) {\n return source.lift(new ExhaustMapOperator(project));\n };\n}\nvar ExhaustMapOperator = /*@__PURE__*/ (function () {\n function ExhaustMapOperator(project) {\n this.project = project;\n }\n ExhaustMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ExhaustMapSubscriber(subscriber, this.project));\n };\n return ExhaustMapOperator;\n}());\nvar ExhaustMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ExhaustMapSubscriber, _super);\n function ExhaustMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.hasSubscription = false;\n _this.hasCompleted = false;\n _this.index = 0;\n return _this;\n }\n ExhaustMapSubscriber.prototype._next = function (value) {\n if (!this.hasSubscription) {\n this.tryNext(value);\n }\n };\n ExhaustMapSubscriber.prototype.tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.hasSubscription = true;\n this._innerSub(result, value, index);\n };\n ExhaustMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, result, value, index, innerSubscriber);\n };\n ExhaustMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (!this.hasSubscription) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n ExhaustMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n ExhaustMapSubscriber.prototype.notifyError = function (err) {\n this.destination.error(err);\n };\n ExhaustMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n destination.remove(innerSub);\n this.hasSubscription = false;\n if (this.hasCompleted) {\n this.destination.complete();\n }\n };\n return ExhaustMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=exhaustMap.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function expand(project, concurrent, scheduler) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (scheduler === void 0) {\n scheduler = undefined;\n }\n concurrent = (concurrent || 0) < 1 ? Number.POSITIVE_INFINITY : concurrent;\n return function (source) { return source.lift(new ExpandOperator(project, concurrent, scheduler)); };\n}\nvar ExpandOperator = /*@__PURE__*/ (function () {\n function ExpandOperator(project, concurrent, scheduler) {\n this.project = project;\n this.concurrent = concurrent;\n this.scheduler = scheduler;\n }\n ExpandOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ExpandSubscriber(subscriber, this.project, this.concurrent, this.scheduler));\n };\n return ExpandOperator;\n}());\nexport { ExpandOperator };\nvar ExpandSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ExpandSubscriber, _super);\n function ExpandSubscriber(destination, project, concurrent, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.scheduler = scheduler;\n _this.index = 0;\n _this.active = 0;\n _this.hasCompleted = false;\n if (concurrent < Number.POSITIVE_INFINITY) {\n _this.buffer = [];\n }\n return _this;\n }\n ExpandSubscriber.dispatch = function (arg) {\n var subscriber = arg.subscriber, result = arg.result, value = arg.value, index = arg.index;\n subscriber.subscribeToProjection(result, value, index);\n };\n ExpandSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n if (destination.closed) {\n this._complete();\n return;\n }\n var index = this.index++;\n if (this.active < this.concurrent) {\n destination.next(value);\n try {\n var project = this.project;\n var result = project(value, index);\n if (!this.scheduler) {\n this.subscribeToProjection(result, value, index);\n }\n else {\n var state = { subscriber: this, result: result, value: value, index: index };\n var destination_1 = this.destination;\n destination_1.add(this.scheduler.schedule(ExpandSubscriber.dispatch, 0, state));\n }\n }\n catch (e) {\n destination.error(e);\n }\n }\n else {\n this.buffer.push(value);\n }\n };\n ExpandSubscriber.prototype.subscribeToProjection = function (result, value, index) {\n this.active++;\n var destination = this.destination;\n destination.add(subscribeToResult(this, result, value, index));\n };\n ExpandSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n ExpandSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this._next(innerValue);\n };\n ExpandSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n var destination = this.destination;\n destination.remove(innerSub);\n this.active--;\n if (buffer && buffer.length > 0) {\n this._next(buffer.shift());\n }\n if (this.hasCompleted && this.active === 0) {\n this.destination.complete();\n }\n };\n return ExpandSubscriber;\n}(OuterSubscriber));\nexport { ExpandSubscriber };\n//# sourceMappingURL=expand.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function filter(predicate, thisArg) {\n return function filterOperatorFunction(source) {\n return source.lift(new FilterOperator(predicate, thisArg));\n };\n}\nvar FilterOperator = /*@__PURE__*/ (function () {\n function FilterOperator(predicate, thisArg) {\n this.predicate = predicate;\n this.thisArg = thisArg;\n }\n FilterOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FilterSubscriber(subscriber, this.predicate, this.thisArg));\n };\n return FilterOperator;\n}());\nvar FilterSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FilterSubscriber, _super);\n function FilterSubscriber(destination, predicate, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.thisArg = thisArg;\n _this.count = 0;\n return _this;\n }\n FilterSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.predicate.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n if (result) {\n this.destination.next(value);\n }\n };\n return FilterSubscriber;\n}(Subscriber));\n//# sourceMappingURL=filter.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nexport function finalize(callback) {\n return function (source) { return source.lift(new FinallyOperator(callback)); };\n}\nvar FinallyOperator = /*@__PURE__*/ (function () {\n function FinallyOperator(callback) {\n this.callback = callback;\n }\n FinallyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new FinallySubscriber(subscriber, this.callback));\n };\n return FinallyOperator;\n}());\nvar FinallySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FinallySubscriber, _super);\n function FinallySubscriber(destination, callback) {\n var _this = _super.call(this, destination) || this;\n _this.add(new Subscription(callback));\n return _this;\n }\n return FinallySubscriber;\n}(Subscriber));\n//# sourceMappingURL=finalize.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function find(predicate, thisArg) {\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate is not a function');\n }\n return function (source) { return source.lift(new FindValueOperator(predicate, source, false, thisArg)); };\n}\nvar FindValueOperator = /*@__PURE__*/ (function () {\n function FindValueOperator(predicate, source, yieldIndex, thisArg) {\n this.predicate = predicate;\n this.source = source;\n this.yieldIndex = yieldIndex;\n this.thisArg = thisArg;\n }\n FindValueOperator.prototype.call = function (observer, source) {\n return source.subscribe(new FindValueSubscriber(observer, this.predicate, this.source, this.yieldIndex, this.thisArg));\n };\n return FindValueOperator;\n}());\nexport { FindValueOperator };\nvar FindValueSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(FindValueSubscriber, _super);\n function FindValueSubscriber(destination, predicate, source, yieldIndex, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.yieldIndex = yieldIndex;\n _this.thisArg = thisArg;\n _this.index = 0;\n return _this;\n }\n FindValueSubscriber.prototype.notifyComplete = function (value) {\n var destination = this.destination;\n destination.next(value);\n destination.complete();\n this.unsubscribe();\n };\n FindValueSubscriber.prototype._next = function (value) {\n var _a = this, predicate = _a.predicate, thisArg = _a.thisArg;\n var index = this.index++;\n try {\n var result = predicate.call(thisArg || this, value, index, this.source);\n if (result) {\n this.notifyComplete(this.yieldIndex ? index : value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n FindValueSubscriber.prototype._complete = function () {\n this.notifyComplete(this.yieldIndex ? -1 : undefined);\n };\n return FindValueSubscriber;\n}(Subscriber));\nexport { FindValueSubscriber };\n//# sourceMappingURL=find.js.map\n","/** PURE_IMPORTS_START _operators_find PURE_IMPORTS_END */\nimport { FindValueOperator } from '../operators/find';\nexport function findIndex(predicate, thisArg) {\n return function (source) { return source.lift(new FindValueOperator(predicate, source, true, thisArg)); };\n}\n//# sourceMappingURL=findIndex.js.map\n","/** PURE_IMPORTS_START _util_EmptyError,_filter,_take,_defaultIfEmpty,_throwIfEmpty,_util_identity PURE_IMPORTS_END */\nimport { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { take } from './take';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { identity } from '../util/identity';\nexport function first(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); })); };\n}\n//# sourceMappingURL=first.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subscription,_Observable,_Subject PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subscription } from '../Subscription';\nimport { Observable } from '../Observable';\nimport { Subject } from '../Subject';\nexport function groupBy(keySelector, elementSelector, durationSelector, subjectSelector) {\n return function (source) {\n return source.lift(new GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector));\n };\n}\nvar GroupByOperator = /*@__PURE__*/ (function () {\n function GroupByOperator(keySelector, elementSelector, durationSelector, subjectSelector) {\n this.keySelector = keySelector;\n this.elementSelector = elementSelector;\n this.durationSelector = durationSelector;\n this.subjectSelector = subjectSelector;\n }\n GroupByOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new GroupBySubscriber(subscriber, this.keySelector, this.elementSelector, this.durationSelector, this.subjectSelector));\n };\n return GroupByOperator;\n}());\nvar GroupBySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupBySubscriber, _super);\n function GroupBySubscriber(destination, keySelector, elementSelector, durationSelector, subjectSelector) {\n var _this = _super.call(this, destination) || this;\n _this.keySelector = keySelector;\n _this.elementSelector = elementSelector;\n _this.durationSelector = durationSelector;\n _this.subjectSelector = subjectSelector;\n _this.groups = null;\n _this.attemptedToUnsubscribe = false;\n _this.count = 0;\n return _this;\n }\n GroupBySubscriber.prototype._next = function (value) {\n var key;\n try {\n key = this.keySelector(value);\n }\n catch (err) {\n this.error(err);\n return;\n }\n this._group(value, key);\n };\n GroupBySubscriber.prototype._group = function (value, key) {\n var groups = this.groups;\n if (!groups) {\n groups = this.groups = new Map();\n }\n var group = groups.get(key);\n var element;\n if (this.elementSelector) {\n try {\n element = this.elementSelector(value);\n }\n catch (err) {\n this.error(err);\n }\n }\n else {\n element = value;\n }\n if (!group) {\n group = (this.subjectSelector ? this.subjectSelector() : new Subject());\n groups.set(key, group);\n var groupedObservable = new GroupedObservable(key, group, this);\n this.destination.next(groupedObservable);\n if (this.durationSelector) {\n var duration = void 0;\n try {\n duration = this.durationSelector(new GroupedObservable(key, group));\n }\n catch (err) {\n this.error(err);\n return;\n }\n this.add(duration.subscribe(new GroupDurationSubscriber(key, group, this)));\n }\n }\n if (!group.closed) {\n group.next(element);\n }\n };\n GroupBySubscriber.prototype._error = function (err) {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.error(err);\n });\n groups.clear();\n }\n this.destination.error(err);\n };\n GroupBySubscriber.prototype._complete = function () {\n var groups = this.groups;\n if (groups) {\n groups.forEach(function (group, key) {\n group.complete();\n });\n groups.clear();\n }\n this.destination.complete();\n };\n GroupBySubscriber.prototype.removeGroup = function (key) {\n this.groups.delete(key);\n };\n GroupBySubscriber.prototype.unsubscribe = function () {\n if (!this.closed) {\n this.attemptedToUnsubscribe = true;\n if (this.count === 0) {\n _super.prototype.unsubscribe.call(this);\n }\n }\n };\n return GroupBySubscriber;\n}(Subscriber));\nvar GroupDurationSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupDurationSubscriber, _super);\n function GroupDurationSubscriber(key, group, parent) {\n var _this = _super.call(this, group) || this;\n _this.key = key;\n _this.group = group;\n _this.parent = parent;\n return _this;\n }\n GroupDurationSubscriber.prototype._next = function (value) {\n this.complete();\n };\n GroupDurationSubscriber.prototype._unsubscribe = function () {\n var _a = this, parent = _a.parent, key = _a.key;\n this.key = this.parent = null;\n if (parent) {\n parent.removeGroup(key);\n }\n };\n return GroupDurationSubscriber;\n}(Subscriber));\nvar GroupedObservable = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(GroupedObservable, _super);\n function GroupedObservable(key, groupSubject, refCountSubscription) {\n var _this = _super.call(this) || this;\n _this.key = key;\n _this.groupSubject = groupSubject;\n _this.refCountSubscription = refCountSubscription;\n return _this;\n }\n GroupedObservable.prototype._subscribe = function (subscriber) {\n var subscription = new Subscription();\n var _a = this, refCountSubscription = _a.refCountSubscription, groupSubject = _a.groupSubject;\n if (refCountSubscription && !refCountSubscription.closed) {\n subscription.add(new InnerRefCountSubscription(refCountSubscription));\n }\n subscription.add(groupSubject.subscribe(subscriber));\n return subscription;\n };\n return GroupedObservable;\n}(Observable));\nexport { GroupedObservable };\nvar InnerRefCountSubscription = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(InnerRefCountSubscription, _super);\n function InnerRefCountSubscription(parent) {\n var _this = _super.call(this) || this;\n _this.parent = parent;\n parent.count++;\n return _this;\n }\n InnerRefCountSubscription.prototype.unsubscribe = function () {\n var parent = this.parent;\n if (!parent.closed && !this.closed) {\n _super.prototype.unsubscribe.call(this);\n parent.count -= 1;\n if (parent.count === 0 && parent.attemptedToUnsubscribe) {\n parent.unsubscribe();\n }\n }\n };\n return InnerRefCountSubscription;\n}(Subscription));\n//# sourceMappingURL=groupBy.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function ignoreElements() {\n return function ignoreElementsOperatorFunction(source) {\n return source.lift(new IgnoreElementsOperator());\n };\n}\nvar IgnoreElementsOperator = /*@__PURE__*/ (function () {\n function IgnoreElementsOperator() {\n }\n IgnoreElementsOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new IgnoreElementsSubscriber(subscriber));\n };\n return IgnoreElementsOperator;\n}());\nvar IgnoreElementsSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(IgnoreElementsSubscriber, _super);\n function IgnoreElementsSubscriber() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n IgnoreElementsSubscriber.prototype._next = function (unused) {\n };\n return IgnoreElementsSubscriber;\n}(Subscriber));\n//# sourceMappingURL=ignoreElements.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function isEmpty() {\n return function (source) { return source.lift(new IsEmptyOperator()); };\n}\nvar IsEmptyOperator = /*@__PURE__*/ (function () {\n function IsEmptyOperator() {\n }\n IsEmptyOperator.prototype.call = function (observer, source) {\n return source.subscribe(new IsEmptySubscriber(observer));\n };\n return IsEmptyOperator;\n}());\nvar IsEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(IsEmptySubscriber, _super);\n function IsEmptySubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n IsEmptySubscriber.prototype.notifyComplete = function (isEmpty) {\n var destination = this.destination;\n destination.next(isEmpty);\n destination.complete();\n };\n IsEmptySubscriber.prototype._next = function (value) {\n this.notifyComplete(false);\n };\n IsEmptySubscriber.prototype._complete = function () {\n this.notifyComplete(true);\n };\n return IsEmptySubscriber;\n}(Subscriber));\n//# sourceMappingURL=isEmpty.js.map\n","/** PURE_IMPORTS_START _util_EmptyError,_filter,_takeLast,_throwIfEmpty,_defaultIfEmpty,_util_identity PURE_IMPORTS_END */\nimport { EmptyError } from '../util/EmptyError';\nimport { filter } from './filter';\nimport { takeLast } from './takeLast';\nimport { throwIfEmpty } from './throwIfEmpty';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { identity } from '../util/identity';\nexport function last(predicate, defaultValue) {\n var hasDefaultValue = arguments.length >= 2;\n return function (source) { return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity, takeLast(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); })); };\n}\n//# sourceMappingURL=last.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function map(project, thisArg) {\n return function mapOperation(source) {\n if (typeof project !== 'function') {\n throw new TypeError('argument is not a function. Are you looking for `mapTo()`?');\n }\n return source.lift(new MapOperator(project, thisArg));\n };\n}\nvar MapOperator = /*@__PURE__*/ (function () {\n function MapOperator(project, thisArg) {\n this.project = project;\n this.thisArg = thisArg;\n }\n MapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapSubscriber(subscriber, this.project, this.thisArg));\n };\n return MapOperator;\n}());\nexport { MapOperator };\nvar MapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapSubscriber, _super);\n function MapSubscriber(destination, project, thisArg) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.count = 0;\n _this.thisArg = thisArg || _this;\n return _this;\n }\n MapSubscriber.prototype._next = function (value) {\n var result;\n try {\n result = this.project.call(this.thisArg, value, this.count++);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return MapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=map.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function mapTo(value) {\n return function (source) { return source.lift(new MapToOperator(value)); };\n}\nvar MapToOperator = /*@__PURE__*/ (function () {\n function MapToOperator(value) {\n this.value = value;\n }\n MapToOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MapToSubscriber(subscriber, this.value));\n };\n return MapToOperator;\n}());\nvar MapToSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MapToSubscriber, _super);\n function MapToSubscriber(destination, value) {\n var _this = _super.call(this, destination) || this;\n _this.value = value;\n return _this;\n }\n MapToSubscriber.prototype._next = function (x) {\n this.destination.next(this.value);\n };\n return MapToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=mapTo.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function materialize() {\n return function materializeOperatorFunction(source) {\n return source.lift(new MaterializeOperator());\n };\n}\nvar MaterializeOperator = /*@__PURE__*/ (function () {\n function MaterializeOperator() {\n }\n MaterializeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MaterializeSubscriber(subscriber));\n };\n return MaterializeOperator;\n}());\nvar MaterializeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MaterializeSubscriber, _super);\n function MaterializeSubscriber(destination) {\n return _super.call(this, destination) || this;\n }\n MaterializeSubscriber.prototype._next = function (value) {\n this.destination.next(Notification.createNext(value));\n };\n MaterializeSubscriber.prototype._error = function (err) {\n var destination = this.destination;\n destination.next(Notification.createError(err));\n destination.complete();\n };\n MaterializeSubscriber.prototype._complete = function () {\n var destination = this.destination;\n destination.next(Notification.createComplete());\n destination.complete();\n };\n return MaterializeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=materialize.js.map\n","/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */\nimport { reduce } from './reduce';\nexport function max(comparer) {\n var max = (typeof comparer === 'function')\n ? function (x, y) { return comparer(x, y) > 0 ? x : y; }\n : function (x, y) { return x > y ? x : y; };\n return reduce(max);\n}\n//# sourceMappingURL=max.js.map\n","/** PURE_IMPORTS_START _observable_merge PURE_IMPORTS_END */\nimport { merge as mergeStatic } from '../observable/merge';\nexport function merge() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function (source) { return source.lift.call(mergeStatic.apply(void 0, [source].concat(observables))); };\n}\n//# sourceMappingURL=merge.js.map\n","/** PURE_IMPORTS_START _mergeMap,_util_identity PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nimport { identity } from '../util/identity';\nexport function mergeAll(concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return mergeMap(identity, concurrent);\n}\n//# sourceMappingURL=mergeAll.js.map\n","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function mergeMap(project, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(mergeMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); }, concurrent)); };\n }\n else if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return function (source) { return source.lift(new MergeMapOperator(project, concurrent)); };\n}\nvar MergeMapOperator = /*@__PURE__*/ (function () {\n function MergeMapOperator(project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n this.project = project;\n this.concurrent = concurrent;\n }\n MergeMapOperator.prototype.call = function (observer, source) {\n return source.subscribe(new MergeMapSubscriber(observer, this.project, this.concurrent));\n };\n return MergeMapOperator;\n}());\nexport { MergeMapOperator };\nvar MergeMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeMapSubscriber, _super);\n function MergeMapSubscriber(destination, project, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.concurrent = concurrent;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeMapSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n this._tryNext(value);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeMapSubscriber.prototype._tryNext = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.active++;\n this._innerSub(result, value, index);\n };\n MergeMapSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeMapSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n MergeMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n this.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n this.destination.complete();\n }\n };\n return MergeMapSubscriber;\n}(OuterSubscriber));\nexport { MergeMapSubscriber };\n//# sourceMappingURL=mergeMap.js.map\n","/** PURE_IMPORTS_START _mergeMap PURE_IMPORTS_END */\nimport { mergeMap } from './mergeMap';\nexport function mergeMapTo(innerObservable, resultSelector, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n if (typeof resultSelector === 'function') {\n return mergeMap(function () { return innerObservable; }, resultSelector, concurrent);\n }\n if (typeof resultSelector === 'number') {\n concurrent = resultSelector;\n }\n return mergeMap(function () { return innerObservable; }, concurrent);\n}\n//# sourceMappingURL=mergeMapTo.js.map\n","/** PURE_IMPORTS_START tslib,_util_subscribeToResult,_OuterSubscriber,_InnerSubscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nexport function mergeScan(accumulator, seed, concurrent) {\n if (concurrent === void 0) {\n concurrent = Number.POSITIVE_INFINITY;\n }\n return function (source) { return source.lift(new MergeScanOperator(accumulator, seed, concurrent)); };\n}\nvar MergeScanOperator = /*@__PURE__*/ (function () {\n function MergeScanOperator(accumulator, seed, concurrent) {\n this.accumulator = accumulator;\n this.seed = seed;\n this.concurrent = concurrent;\n }\n MergeScanOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new MergeScanSubscriber(subscriber, this.accumulator, this.seed, this.concurrent));\n };\n return MergeScanOperator;\n}());\nexport { MergeScanOperator };\nvar MergeScanSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(MergeScanSubscriber, _super);\n function MergeScanSubscriber(destination, accumulator, acc, concurrent) {\n var _this = _super.call(this, destination) || this;\n _this.accumulator = accumulator;\n _this.acc = acc;\n _this.concurrent = concurrent;\n _this.hasValue = false;\n _this.hasCompleted = false;\n _this.buffer = [];\n _this.active = 0;\n _this.index = 0;\n return _this;\n }\n MergeScanSubscriber.prototype._next = function (value) {\n if (this.active < this.concurrent) {\n var index = this.index++;\n var destination = this.destination;\n var ish = void 0;\n try {\n var accumulator = this.accumulator;\n ish = accumulator(this.acc, value, index);\n }\n catch (e) {\n return destination.error(e);\n }\n this.active++;\n this._innerSub(ish, value, index);\n }\n else {\n this.buffer.push(value);\n }\n };\n MergeScanSubscriber.prototype._innerSub = function (ish, value, index) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, ish, value, index, innerSubscriber);\n };\n MergeScanSubscriber.prototype._complete = function () {\n this.hasCompleted = true;\n if (this.active === 0 && this.buffer.length === 0) {\n if (this.hasValue === false) {\n this.destination.next(this.acc);\n }\n this.destination.complete();\n }\n this.unsubscribe();\n };\n MergeScanSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var destination = this.destination;\n this.acc = innerValue;\n this.hasValue = true;\n destination.next(innerValue);\n };\n MergeScanSubscriber.prototype.notifyComplete = function (innerSub) {\n var buffer = this.buffer;\n var destination = this.destination;\n destination.remove(innerSub);\n this.active--;\n if (buffer.length > 0) {\n this._next(buffer.shift());\n }\n else if (this.active === 0 && this.hasCompleted) {\n if (this.hasValue === false) {\n this.destination.next(this.acc);\n }\n this.destination.complete();\n }\n };\n return MergeScanSubscriber;\n}(OuterSubscriber));\nexport { MergeScanSubscriber };\n//# sourceMappingURL=mergeScan.js.map\n","/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */\nimport { reduce } from './reduce';\nexport function min(comparer) {\n var min = (typeof comparer === 'function')\n ? function (x, y) { return comparer(x, y) < 0 ? x : y; }\n : function (x, y) { return x < y ? x : y; };\n return reduce(min);\n}\n//# sourceMappingURL=min.js.map\n","/** PURE_IMPORTS_START _observable_ConnectableObservable PURE_IMPORTS_END */\nimport { connectableObservableDescriptor } from '../observable/ConnectableObservable';\nexport function multicast(subjectOrSubjectFactory, selector) {\n return function multicastOperatorFunction(source) {\n var subjectFactory;\n if (typeof subjectOrSubjectFactory === 'function') {\n subjectFactory = subjectOrSubjectFactory;\n }\n else {\n subjectFactory = function subjectFactory() {\n return subjectOrSubjectFactory;\n };\n }\n if (typeof selector === 'function') {\n return source.lift(new MulticastOperator(subjectFactory, selector));\n }\n var connectable = Object.create(source, connectableObservableDescriptor);\n connectable.source = source;\n connectable.subjectFactory = subjectFactory;\n return connectable;\n };\n}\nvar MulticastOperator = /*@__PURE__*/ (function () {\n function MulticastOperator(subjectFactory, selector) {\n this.subjectFactory = subjectFactory;\n this.selector = selector;\n }\n MulticastOperator.prototype.call = function (subscriber, source) {\n var selector = this.selector;\n var subject = this.subjectFactory();\n var subscription = selector(subject).subscribe(subscriber);\n subscription.add(source.subscribe(subject));\n return subscription;\n };\n return MulticastOperator;\n}());\nexport { MulticastOperator };\n//# sourceMappingURL=multicast.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Notification PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Notification } from '../Notification';\nexport function observeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function observeOnOperatorFunction(source) {\n return source.lift(new ObserveOnOperator(scheduler, delay));\n };\n}\nvar ObserveOnOperator = /*@__PURE__*/ (function () {\n function ObserveOnOperator(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.scheduler = scheduler;\n this.delay = delay;\n }\n ObserveOnOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ObserveOnSubscriber(subscriber, this.scheduler, this.delay));\n };\n return ObserveOnOperator;\n}());\nexport { ObserveOnOperator };\nvar ObserveOnSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ObserveOnSubscriber, _super);\n function ObserveOnSubscriber(destination, scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n var _this = _super.call(this, destination) || this;\n _this.scheduler = scheduler;\n _this.delay = delay;\n return _this;\n }\n ObserveOnSubscriber.dispatch = function (arg) {\n var notification = arg.notification, destination = arg.destination;\n notification.observe(destination);\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype.scheduleMessage = function (notification) {\n var destination = this.destination;\n destination.add(this.scheduler.schedule(ObserveOnSubscriber.dispatch, this.delay, new ObserveOnMessage(notification, this.destination)));\n };\n ObserveOnSubscriber.prototype._next = function (value) {\n this.scheduleMessage(Notification.createNext(value));\n };\n ObserveOnSubscriber.prototype._error = function (err) {\n this.scheduleMessage(Notification.createError(err));\n this.unsubscribe();\n };\n ObserveOnSubscriber.prototype._complete = function () {\n this.scheduleMessage(Notification.createComplete());\n this.unsubscribe();\n };\n return ObserveOnSubscriber;\n}(Subscriber));\nexport { ObserveOnSubscriber };\nvar ObserveOnMessage = /*@__PURE__*/ (function () {\n function ObserveOnMessage(notification, destination) {\n this.notification = notification;\n this.destination = destination;\n }\n return ObserveOnMessage;\n}());\nexport { ObserveOnMessage };\n//# sourceMappingURL=observeOn.js.map\n","/** PURE_IMPORTS_START tslib,_observable_from,_util_isArray,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { from } from '../observable/from';\nimport { isArray } from '../util/isArray';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function onErrorResumeNext() {\n var nextSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nextSources[_i] = arguments[_i];\n }\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0];\n }\n return function (source) { return source.lift(new OnErrorResumeNextOperator(nextSources)); };\n}\nexport function onErrorResumeNextStatic() {\n var nextSources = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nextSources[_i] = arguments[_i];\n }\n var source = null;\n if (nextSources.length === 1 && isArray(nextSources[0])) {\n nextSources = nextSources[0];\n }\n source = nextSources.shift();\n return from(source, null).lift(new OnErrorResumeNextOperator(nextSources));\n}\nvar OnErrorResumeNextOperator = /*@__PURE__*/ (function () {\n function OnErrorResumeNextOperator(nextSources) {\n this.nextSources = nextSources;\n }\n OnErrorResumeNextOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));\n };\n return OnErrorResumeNextOperator;\n}());\nvar OnErrorResumeNextSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(OnErrorResumeNextSubscriber, _super);\n function OnErrorResumeNextSubscriber(destination, nextSources) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.nextSources = nextSources;\n return _this;\n }\n OnErrorResumeNextSubscriber.prototype.notifyError = function (error, innerSub) {\n this.subscribeToNextSource();\n };\n OnErrorResumeNextSubscriber.prototype.notifyComplete = function (innerSub) {\n this.subscribeToNextSource();\n };\n OnErrorResumeNextSubscriber.prototype._error = function (err) {\n this.subscribeToNextSource();\n this.unsubscribe();\n };\n OnErrorResumeNextSubscriber.prototype._complete = function () {\n this.subscribeToNextSource();\n this.unsubscribe();\n };\n OnErrorResumeNextSubscriber.prototype.subscribeToNextSource = function () {\n var next = this.nextSources.shift();\n if (!!next) {\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n subscribeToResult(this, next, undefined, undefined, innerSubscriber);\n }\n else {\n this.destination.complete();\n }\n };\n return OnErrorResumeNextSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=onErrorResumeNext.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function pairwise() {\n return function (source) { return source.lift(new PairwiseOperator()); };\n}\nvar PairwiseOperator = /*@__PURE__*/ (function () {\n function PairwiseOperator() {\n }\n PairwiseOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new PairwiseSubscriber(subscriber));\n };\n return PairwiseOperator;\n}());\nvar PairwiseSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(PairwiseSubscriber, _super);\n function PairwiseSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.hasPrev = false;\n return _this;\n }\n PairwiseSubscriber.prototype._next = function (value) {\n var pair;\n if (this.hasPrev) {\n pair = [this.prev, value];\n }\n else {\n this.hasPrev = true;\n }\n this.prev = value;\n if (pair) {\n this.destination.next(pair);\n }\n };\n return PairwiseSubscriber;\n}(Subscriber));\n//# sourceMappingURL=pairwise.js.map\n","/** PURE_IMPORTS_START _util_not,_filter PURE_IMPORTS_END */\nimport { not } from '../util/not';\nimport { filter } from './filter';\nexport function partition(predicate, thisArg) {\n return function (source) {\n return [\n filter(predicate, thisArg)(source),\n filter(not(predicate, thisArg))(source)\n ];\n };\n}\n//# sourceMappingURL=partition.js.map\n","/** PURE_IMPORTS_START _map PURE_IMPORTS_END */\nimport { map } from './map';\nexport function pluck() {\n var properties = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n properties[_i] = arguments[_i];\n }\n var length = properties.length;\n if (length === 0) {\n throw new Error('list of properties cannot be empty.');\n }\n return function (source) { return map(plucker(properties, length))(source); };\n}\nfunction plucker(props, length) {\n var mapper = function (x) {\n var currentProp = x;\n for (var i = 0; i < length; i++) {\n var p = currentProp[props[i]];\n if (typeof p !== 'undefined') {\n currentProp = p;\n }\n else {\n return undefined;\n }\n }\n return currentProp;\n };\n return mapper;\n}\n//# sourceMappingURL=pluck.js.map\n","/** PURE_IMPORTS_START _Subject,_multicast PURE_IMPORTS_END */\nimport { Subject } from '../Subject';\nimport { multicast } from './multicast';\nexport function publish(selector) {\n return selector ?\n multicast(function () { return new Subject(); }, selector) :\n multicast(new Subject());\n}\n//# sourceMappingURL=publish.js.map\n","/** PURE_IMPORTS_START _BehaviorSubject,_multicast PURE_IMPORTS_END */\nimport { BehaviorSubject } from '../BehaviorSubject';\nimport { multicast } from './multicast';\nexport function publishBehavior(value) {\n return function (source) { return multicast(new BehaviorSubject(value))(source); };\n}\n//# sourceMappingURL=publishBehavior.js.map\n","/** PURE_IMPORTS_START _AsyncSubject,_multicast PURE_IMPORTS_END */\nimport { AsyncSubject } from '../AsyncSubject';\nimport { multicast } from './multicast';\nexport function publishLast() {\n return function (source) { return multicast(new AsyncSubject())(source); };\n}\n//# sourceMappingURL=publishLast.js.map\n","/** PURE_IMPORTS_START _ReplaySubject,_multicast PURE_IMPORTS_END */\nimport { ReplaySubject } from '../ReplaySubject';\nimport { multicast } from './multicast';\nexport function publishReplay(bufferSize, windowTime, selectorOrScheduler, scheduler) {\n if (selectorOrScheduler && typeof selectorOrScheduler !== 'function') {\n scheduler = selectorOrScheduler;\n }\n var selector = typeof selectorOrScheduler === 'function' ? selectorOrScheduler : undefined;\n var subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n return function (source) { return multicast(function () { return subject; }, selector)(source); };\n}\n//# sourceMappingURL=publishReplay.js.map\n","/** PURE_IMPORTS_START _util_isArray,_observable_race PURE_IMPORTS_END */\nimport { isArray } from '../util/isArray';\nimport { race as raceStatic } from '../observable/race';\nexport function race() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function raceOperatorFunction(source) {\n if (observables.length === 1 && isArray(observables[0])) {\n observables = observables[0];\n }\n return source.lift.call(raceStatic.apply(void 0, [source].concat(observables)));\n };\n}\n//# sourceMappingURL=race.js.map\n","/** PURE_IMPORTS_START _scan,_takeLast,_defaultIfEmpty,_util_pipe PURE_IMPORTS_END */\nimport { scan } from './scan';\nimport { takeLast } from './takeLast';\nimport { defaultIfEmpty } from './defaultIfEmpty';\nimport { pipe } from '../util/pipe';\nexport function reduce(accumulator, seed) {\n if (arguments.length >= 2) {\n return function reduceOperatorFunctionWithSeed(source) {\n return pipe(scan(accumulator, seed), takeLast(1), defaultIfEmpty(seed))(source);\n };\n }\n return function reduceOperatorFunction(source) {\n return pipe(scan(function (acc, value, index) { return accumulator(acc, value, index + 1); }), takeLast(1))(source);\n };\n}\n//# sourceMappingURL=reduce.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function refCount() {\n return function refCountOperatorFunction(source) {\n return source.lift(new RefCountOperator(source));\n };\n}\nvar RefCountOperator = /*@__PURE__*/ (function () {\n function RefCountOperator(connectable) {\n this.connectable = connectable;\n }\n RefCountOperator.prototype.call = function (subscriber, source) {\n var connectable = this.connectable;\n connectable._refCount++;\n var refCounter = new RefCountSubscriber(subscriber, connectable);\n var subscription = source.subscribe(refCounter);\n if (!refCounter.closed) {\n refCounter.connection = connectable.connect();\n }\n return subscription;\n };\n return RefCountOperator;\n}());\nvar RefCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RefCountSubscriber, _super);\n function RefCountSubscriber(destination, connectable) {\n var _this = _super.call(this, destination) || this;\n _this.connectable = connectable;\n return _this;\n }\n RefCountSubscriber.prototype._unsubscribe = function () {\n var connectable = this.connectable;\n if (!connectable) {\n this.connection = null;\n return;\n }\n this.connectable = null;\n var refCount = connectable._refCount;\n if (refCount <= 0) {\n this.connection = null;\n return;\n }\n connectable._refCount = refCount - 1;\n if (refCount > 1) {\n this.connection = null;\n return;\n }\n var connection = this.connection;\n var sharedConnection = connectable._connection;\n this.connection = null;\n if (sharedConnection && (!connection || sharedConnection === connection)) {\n sharedConnection.unsubscribe();\n }\n };\n return RefCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=refCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { empty } from '../observable/empty';\nexport function repeat(count) {\n if (count === void 0) {\n count = -1;\n }\n return function (source) {\n if (count === 0) {\n return empty();\n }\n else if (count < 0) {\n return source.lift(new RepeatOperator(-1, source));\n }\n else {\n return source.lift(new RepeatOperator(count - 1, source));\n }\n };\n}\nvar RepeatOperator = /*@__PURE__*/ (function () {\n function RepeatOperator(count, source) {\n this.count = count;\n this.source = source;\n }\n RepeatOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RepeatSubscriber(subscriber, this.count, this.source));\n };\n return RepeatOperator;\n}());\nvar RepeatSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RepeatSubscriber, _super);\n function RepeatSubscriber(destination, count, source) {\n var _this = _super.call(this, destination) || this;\n _this.count = count;\n _this.source = source;\n return _this;\n }\n RepeatSubscriber.prototype.complete = function () {\n if (!this.isStopped) {\n var _a = this, source = _a.source, count = _a.count;\n if (count === 0) {\n return _super.prototype.complete.call(this);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n };\n return RepeatSubscriber;\n}(Subscriber));\n//# sourceMappingURL=repeat.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function repeatWhen(notifier) {\n return function (source) { return source.lift(new RepeatWhenOperator(notifier)); };\n}\nvar RepeatWhenOperator = /*@__PURE__*/ (function () {\n function RepeatWhenOperator(notifier) {\n this.notifier = notifier;\n }\n RepeatWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RepeatWhenSubscriber(subscriber, this.notifier, source));\n };\n return RepeatWhenOperator;\n}());\nvar RepeatWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RepeatWhenSubscriber, _super);\n function RepeatWhenSubscriber(destination, notifier, source) {\n var _this = _super.call(this, destination) || this;\n _this.notifier = notifier;\n _this.source = source;\n _this.sourceIsBeingSubscribedTo = true;\n return _this;\n }\n RepeatWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.sourceIsBeingSubscribedTo = true;\n this.source.subscribe(this);\n };\n RepeatWhenSubscriber.prototype.notifyComplete = function (innerSub) {\n if (this.sourceIsBeingSubscribedTo === false) {\n return _super.prototype.complete.call(this);\n }\n };\n RepeatWhenSubscriber.prototype.complete = function () {\n this.sourceIsBeingSubscribedTo = false;\n if (!this.isStopped) {\n if (!this.retries) {\n this.subscribeToRetries();\n }\n if (!this.retriesSubscription || this.retriesSubscription.closed) {\n return _super.prototype.complete.call(this);\n }\n this._unsubscribeAndRecycle();\n this.notifications.next();\n }\n };\n RepeatWhenSubscriber.prototype._unsubscribe = function () {\n var _a = this, notifications = _a.notifications, retriesSubscription = _a.retriesSubscription;\n if (notifications) {\n notifications.unsubscribe();\n this.notifications = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n };\n RepeatWhenSubscriber.prototype._unsubscribeAndRecycle = function () {\n var _unsubscribe = this._unsubscribe;\n this._unsubscribe = null;\n _super.prototype._unsubscribeAndRecycle.call(this);\n this._unsubscribe = _unsubscribe;\n return this;\n };\n RepeatWhenSubscriber.prototype.subscribeToRetries = function () {\n this.notifications = new Subject();\n var retries;\n try {\n var notifier = this.notifier;\n retries = notifier(this.notifications);\n }\n catch (e) {\n return _super.prototype.complete.call(this);\n }\n this.retries = retries;\n this.retriesSubscription = subscribeToResult(this, retries);\n };\n return RepeatWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=repeatWhen.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function retry(count) {\n if (count === void 0) {\n count = -1;\n }\n return function (source) { return source.lift(new RetryOperator(count, source)); };\n}\nvar RetryOperator = /*@__PURE__*/ (function () {\n function RetryOperator(count, source) {\n this.count = count;\n this.source = source;\n }\n RetryOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetrySubscriber(subscriber, this.count, this.source));\n };\n return RetryOperator;\n}());\nvar RetrySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RetrySubscriber, _super);\n function RetrySubscriber(destination, count, source) {\n var _this = _super.call(this, destination) || this;\n _this.count = count;\n _this.source = source;\n return _this;\n }\n RetrySubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var _a = this, source = _a.source, count = _a.count;\n if (count === 0) {\n return _super.prototype.error.call(this, err);\n }\n else if (count > -1) {\n this.count = count - 1;\n }\n source.subscribe(this._unsubscribeAndRecycle());\n }\n };\n return RetrySubscriber;\n}(Subscriber));\n//# sourceMappingURL=retry.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function retryWhen(notifier) {\n return function (source) { return source.lift(new RetryWhenOperator(notifier, source)); };\n}\nvar RetryWhenOperator = /*@__PURE__*/ (function () {\n function RetryWhenOperator(notifier, source) {\n this.notifier = notifier;\n this.source = source;\n }\n RetryWhenOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new RetryWhenSubscriber(subscriber, this.notifier, this.source));\n };\n return RetryWhenOperator;\n}());\nvar RetryWhenSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(RetryWhenSubscriber, _super);\n function RetryWhenSubscriber(destination, notifier, source) {\n var _this = _super.call(this, destination) || this;\n _this.notifier = notifier;\n _this.source = source;\n return _this;\n }\n RetryWhenSubscriber.prototype.error = function (err) {\n if (!this.isStopped) {\n var errors = this.errors;\n var retries = this.retries;\n var retriesSubscription = this.retriesSubscription;\n if (!retries) {\n errors = new Subject();\n try {\n var notifier = this.notifier;\n retries = notifier(errors);\n }\n catch (e) {\n return _super.prototype.error.call(this, e);\n }\n retriesSubscription = subscribeToResult(this, retries);\n }\n else {\n this.errors = null;\n this.retriesSubscription = null;\n }\n this._unsubscribeAndRecycle();\n this.errors = errors;\n this.retries = retries;\n this.retriesSubscription = retriesSubscription;\n errors.next(err);\n }\n };\n RetryWhenSubscriber.prototype._unsubscribe = function () {\n var _a = this, errors = _a.errors, retriesSubscription = _a.retriesSubscription;\n if (errors) {\n errors.unsubscribe();\n this.errors = null;\n }\n if (retriesSubscription) {\n retriesSubscription.unsubscribe();\n this.retriesSubscription = null;\n }\n this.retries = null;\n };\n RetryWhenSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n var _unsubscribe = this._unsubscribe;\n this._unsubscribe = null;\n this._unsubscribeAndRecycle();\n this._unsubscribe = _unsubscribe;\n this.source.subscribe(this);\n };\n return RetryWhenSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=retryWhen.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function sample(notifier) {\n return function (source) { return source.lift(new SampleOperator(notifier)); };\n}\nvar SampleOperator = /*@__PURE__*/ (function () {\n function SampleOperator(notifier) {\n this.notifier = notifier;\n }\n SampleOperator.prototype.call = function (subscriber, source) {\n var sampleSubscriber = new SampleSubscriber(subscriber);\n var subscription = source.subscribe(sampleSubscriber);\n subscription.add(subscribeToResult(sampleSubscriber, this.notifier));\n return subscription;\n };\n return SampleOperator;\n}());\nvar SampleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SampleSubscriber, _super);\n function SampleSubscriber() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.hasValue = false;\n return _this;\n }\n SampleSubscriber.prototype._next = function (value) {\n this.value = value;\n this.hasValue = true;\n };\n SampleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.emitValue();\n };\n SampleSubscriber.prototype.notifyComplete = function () {\n this.emitValue();\n };\n SampleSubscriber.prototype.emitValue = function () {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.value);\n }\n };\n return SampleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=sample.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nexport function sampleTime(period, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) { return source.lift(new SampleTimeOperator(period, scheduler)); };\n}\nvar SampleTimeOperator = /*@__PURE__*/ (function () {\n function SampleTimeOperator(period, scheduler) {\n this.period = period;\n this.scheduler = scheduler;\n }\n SampleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SampleTimeSubscriber(subscriber, this.period, this.scheduler));\n };\n return SampleTimeOperator;\n}());\nvar SampleTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SampleTimeSubscriber, _super);\n function SampleTimeSubscriber(destination, period, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.period = period;\n _this.scheduler = scheduler;\n _this.hasValue = false;\n _this.add(scheduler.schedule(dispatchNotification, period, { subscriber: _this, period: period }));\n return _this;\n }\n SampleTimeSubscriber.prototype._next = function (value) {\n this.lastValue = value;\n this.hasValue = true;\n };\n SampleTimeSubscriber.prototype.notifyNext = function () {\n if (this.hasValue) {\n this.hasValue = false;\n this.destination.next(this.lastValue);\n }\n };\n return SampleTimeSubscriber;\n}(Subscriber));\nfunction dispatchNotification(state) {\n var subscriber = state.subscriber, period = state.period;\n subscriber.notifyNext();\n this.schedule(state, period);\n}\n//# sourceMappingURL=sampleTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function scan(accumulator, seed) {\n var hasSeed = false;\n if (arguments.length >= 2) {\n hasSeed = true;\n }\n return function scanOperatorFunction(source) {\n return source.lift(new ScanOperator(accumulator, seed, hasSeed));\n };\n}\nvar ScanOperator = /*@__PURE__*/ (function () {\n function ScanOperator(accumulator, seed, hasSeed) {\n if (hasSeed === void 0) {\n hasSeed = false;\n }\n this.accumulator = accumulator;\n this.seed = seed;\n this.hasSeed = hasSeed;\n }\n ScanOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ScanSubscriber(subscriber, this.accumulator, this.seed, this.hasSeed));\n };\n return ScanOperator;\n}());\nvar ScanSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ScanSubscriber, _super);\n function ScanSubscriber(destination, accumulator, _seed, hasSeed) {\n var _this = _super.call(this, destination) || this;\n _this.accumulator = accumulator;\n _this._seed = _seed;\n _this.hasSeed = hasSeed;\n _this.index = 0;\n return _this;\n }\n Object.defineProperty(ScanSubscriber.prototype, \"seed\", {\n get: function () {\n return this._seed;\n },\n set: function (value) {\n this.hasSeed = true;\n this._seed = value;\n },\n enumerable: true,\n configurable: true\n });\n ScanSubscriber.prototype._next = function (value) {\n if (!this.hasSeed) {\n this.seed = value;\n this.destination.next(value);\n }\n else {\n return this._tryNext(value);\n }\n };\n ScanSubscriber.prototype._tryNext = function (value) {\n var index = this.index++;\n var result;\n try {\n result = this.accumulator(this.seed, value, index);\n }\n catch (err) {\n this.destination.error(err);\n }\n this.seed = result;\n this.destination.next(result);\n };\n return ScanSubscriber;\n}(Subscriber));\n//# sourceMappingURL=scan.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function sequenceEqual(compareTo, comparator) {\n return function (source) { return source.lift(new SequenceEqualOperator(compareTo, comparator)); };\n}\nvar SequenceEqualOperator = /*@__PURE__*/ (function () {\n function SequenceEqualOperator(compareTo, comparator) {\n this.compareTo = compareTo;\n this.comparator = comparator;\n }\n SequenceEqualOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SequenceEqualSubscriber(subscriber, this.compareTo, this.comparator));\n };\n return SequenceEqualOperator;\n}());\nexport { SequenceEqualOperator };\nvar SequenceEqualSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SequenceEqualSubscriber, _super);\n function SequenceEqualSubscriber(destination, compareTo, comparator) {\n var _this = _super.call(this, destination) || this;\n _this.compareTo = compareTo;\n _this.comparator = comparator;\n _this._a = [];\n _this._b = [];\n _this._oneComplete = false;\n _this.destination.add(compareTo.subscribe(new SequenceEqualCompareToSubscriber(destination, _this)));\n return _this;\n }\n SequenceEqualSubscriber.prototype._next = function (value) {\n if (this._oneComplete && this._b.length === 0) {\n this.emit(false);\n }\n else {\n this._a.push(value);\n this.checkValues();\n }\n };\n SequenceEqualSubscriber.prototype._complete = function () {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n }\n else {\n this._oneComplete = true;\n }\n this.unsubscribe();\n };\n SequenceEqualSubscriber.prototype.checkValues = function () {\n var _c = this, _a = _c._a, _b = _c._b, comparator = _c.comparator;\n while (_a.length > 0 && _b.length > 0) {\n var a = _a.shift();\n var b = _b.shift();\n var areEqual = false;\n try {\n areEqual = comparator ? comparator(a, b) : a === b;\n }\n catch (e) {\n this.destination.error(e);\n }\n if (!areEqual) {\n this.emit(false);\n }\n }\n };\n SequenceEqualSubscriber.prototype.emit = function (value) {\n var destination = this.destination;\n destination.next(value);\n destination.complete();\n };\n SequenceEqualSubscriber.prototype.nextB = function (value) {\n if (this._oneComplete && this._a.length === 0) {\n this.emit(false);\n }\n else {\n this._b.push(value);\n this.checkValues();\n }\n };\n SequenceEqualSubscriber.prototype.completeB = function () {\n if (this._oneComplete) {\n this.emit(this._a.length === 0 && this._b.length === 0);\n }\n else {\n this._oneComplete = true;\n }\n };\n return SequenceEqualSubscriber;\n}(Subscriber));\nexport { SequenceEqualSubscriber };\nvar SequenceEqualCompareToSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SequenceEqualCompareToSubscriber, _super);\n function SequenceEqualCompareToSubscriber(destination, parent) {\n var _this = _super.call(this, destination) || this;\n _this.parent = parent;\n return _this;\n }\n SequenceEqualCompareToSubscriber.prototype._next = function (value) {\n this.parent.nextB(value);\n };\n SequenceEqualCompareToSubscriber.prototype._error = function (err) {\n this.parent.error(err);\n this.unsubscribe();\n };\n SequenceEqualCompareToSubscriber.prototype._complete = function () {\n this.parent.completeB();\n this.unsubscribe();\n };\n return SequenceEqualCompareToSubscriber;\n}(Subscriber));\n//# sourceMappingURL=sequenceEqual.js.map\n","/** PURE_IMPORTS_START _multicast,_refCount,_Subject PURE_IMPORTS_END */\nimport { multicast } from './multicast';\nimport { refCount } from './refCount';\nimport { Subject } from '../Subject';\nfunction shareSubjectFactory() {\n return new Subject();\n}\nexport function share() {\n return function (source) { return refCount()(multicast(shareSubjectFactory)(source)); };\n}\n//# sourceMappingURL=share.js.map\n","/** PURE_IMPORTS_START _ReplaySubject PURE_IMPORTS_END */\nimport { ReplaySubject } from '../ReplaySubject';\nexport function shareReplay(configOrBufferSize, windowTime, scheduler) {\n var config;\n if (configOrBufferSize && typeof configOrBufferSize === 'object') {\n config = configOrBufferSize;\n }\n else {\n config = {\n bufferSize: configOrBufferSize,\n windowTime: windowTime,\n refCount: false,\n scheduler: scheduler\n };\n }\n return function (source) { return source.lift(shareReplayOperator(config)); };\n}\nfunction shareReplayOperator(_a) {\n var _b = _a.bufferSize, bufferSize = _b === void 0 ? Number.POSITIVE_INFINITY : _b, _c = _a.windowTime, windowTime = _c === void 0 ? Number.POSITIVE_INFINITY : _c, useRefCount = _a.refCount, scheduler = _a.scheduler;\n var subject;\n var refCount = 0;\n var subscription;\n var hasError = false;\n var isComplete = false;\n return function shareReplayOperation(source) {\n refCount++;\n if (!subject || hasError) {\n hasError = false;\n subject = new ReplaySubject(bufferSize, windowTime, scheduler);\n subscription = source.subscribe({\n next: function (value) { subject.next(value); },\n error: function (err) {\n hasError = true;\n subject.error(err);\n },\n complete: function () {\n isComplete = true;\n subject.complete();\n },\n });\n }\n var innerSub = subject.subscribe(this);\n this.add(function () {\n refCount--;\n innerSub.unsubscribe();\n if (subscription && !isComplete && useRefCount && refCount === 0) {\n subscription.unsubscribe();\n subscription = undefined;\n subject = undefined;\n }\n });\n };\n}\n//# sourceMappingURL=shareReplay.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_EmptyError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { EmptyError } from '../util/EmptyError';\nexport function single(predicate) {\n return function (source) { return source.lift(new SingleOperator(predicate, source)); };\n}\nvar SingleOperator = /*@__PURE__*/ (function () {\n function SingleOperator(predicate, source) {\n this.predicate = predicate;\n this.source = source;\n }\n SingleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SingleSubscriber(subscriber, this.predicate, this.source));\n };\n return SingleOperator;\n}());\nvar SingleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SingleSubscriber, _super);\n function SingleSubscriber(destination, predicate, source) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.source = source;\n _this.seenValue = false;\n _this.index = 0;\n return _this;\n }\n SingleSubscriber.prototype.applySingleValue = function (value) {\n if (this.seenValue) {\n this.destination.error('Sequence contains more than one element');\n }\n else {\n this.seenValue = true;\n this.singleValue = value;\n }\n };\n SingleSubscriber.prototype._next = function (value) {\n var index = this.index++;\n if (this.predicate) {\n this.tryNext(value, index);\n }\n else {\n this.applySingleValue(value);\n }\n };\n SingleSubscriber.prototype.tryNext = function (value, index) {\n try {\n if (this.predicate(value, index, this.source)) {\n this.applySingleValue(value);\n }\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n SingleSubscriber.prototype._complete = function () {\n var destination = this.destination;\n if (this.index > 0) {\n destination.next(this.seenValue ? this.singleValue : undefined);\n destination.complete();\n }\n else {\n destination.error(new EmptyError);\n }\n };\n return SingleSubscriber;\n}(Subscriber));\n//# sourceMappingURL=single.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function skip(count) {\n return function (source) { return source.lift(new SkipOperator(count)); };\n}\nvar SkipOperator = /*@__PURE__*/ (function () {\n function SkipOperator(total) {\n this.total = total;\n }\n SkipOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SkipSubscriber(subscriber, this.total));\n };\n return SkipOperator;\n}());\nvar SkipSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipSubscriber, _super);\n function SkipSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n SkipSubscriber.prototype._next = function (x) {\n if (++this.count > this.total) {\n this.destination.next(x);\n }\n };\n return SkipSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skip.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nexport function skipLast(count) {\n return function (source) { return source.lift(new SkipLastOperator(count)); };\n}\nvar SkipLastOperator = /*@__PURE__*/ (function () {\n function SkipLastOperator(_skipCount) {\n this._skipCount = _skipCount;\n if (this._skipCount < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n SkipLastOperator.prototype.call = function (subscriber, source) {\n if (this._skipCount === 0) {\n return source.subscribe(new Subscriber(subscriber));\n }\n else {\n return source.subscribe(new SkipLastSubscriber(subscriber, this._skipCount));\n }\n };\n return SkipLastOperator;\n}());\nvar SkipLastSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipLastSubscriber, _super);\n function SkipLastSubscriber(destination, _skipCount) {\n var _this = _super.call(this, destination) || this;\n _this._skipCount = _skipCount;\n _this._count = 0;\n _this._ring = new Array(_skipCount);\n return _this;\n }\n SkipLastSubscriber.prototype._next = function (value) {\n var skipCount = this._skipCount;\n var count = this._count++;\n if (count < skipCount) {\n this._ring[count] = value;\n }\n else {\n var currentIndex = count % skipCount;\n var ring = this._ring;\n var oldValue = ring[currentIndex];\n ring[currentIndex] = value;\n this.destination.next(oldValue);\n }\n };\n return SkipLastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skipLast.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function skipUntil(notifier) {\n return function (source) { return source.lift(new SkipUntilOperator(notifier)); };\n}\nvar SkipUntilOperator = /*@__PURE__*/ (function () {\n function SkipUntilOperator(notifier) {\n this.notifier = notifier;\n }\n SkipUntilOperator.prototype.call = function (destination, source) {\n return source.subscribe(new SkipUntilSubscriber(destination, this.notifier));\n };\n return SkipUntilOperator;\n}());\nvar SkipUntilSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipUntilSubscriber, _super);\n function SkipUntilSubscriber(destination, notifier) {\n var _this = _super.call(this, destination) || this;\n _this.hasValue = false;\n var innerSubscriber = new InnerSubscriber(_this, undefined, undefined);\n _this.add(innerSubscriber);\n _this.innerSubscription = innerSubscriber;\n subscribeToResult(_this, notifier, undefined, undefined, innerSubscriber);\n return _this;\n }\n SkipUntilSubscriber.prototype._next = function (value) {\n if (this.hasValue) {\n _super.prototype._next.call(this, value);\n }\n };\n SkipUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.hasValue = true;\n if (this.innerSubscription) {\n this.innerSubscription.unsubscribe();\n }\n };\n SkipUntilSubscriber.prototype.notifyComplete = function () {\n };\n return SkipUntilSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=skipUntil.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function skipWhile(predicate) {\n return function (source) { return source.lift(new SkipWhileOperator(predicate)); };\n}\nvar SkipWhileOperator = /*@__PURE__*/ (function () {\n function SkipWhileOperator(predicate) {\n this.predicate = predicate;\n }\n SkipWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SkipWhileSubscriber(subscriber, this.predicate));\n };\n return SkipWhileOperator;\n}());\nvar SkipWhileSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SkipWhileSubscriber, _super);\n function SkipWhileSubscriber(destination, predicate) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.skipping = true;\n _this.index = 0;\n return _this;\n }\n SkipWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n if (this.skipping) {\n this.tryCallPredicate(value);\n }\n if (!this.skipping) {\n destination.next(value);\n }\n };\n SkipWhileSubscriber.prototype.tryCallPredicate = function (value) {\n try {\n var result = this.predicate(value, this.index++);\n this.skipping = Boolean(result);\n }\n catch (err) {\n this.destination.error(err);\n }\n };\n return SkipWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=skipWhile.js.map\n","/** PURE_IMPORTS_START _observable_concat,_util_isScheduler PURE_IMPORTS_END */\nimport { concat } from '../observable/concat';\nimport { isScheduler } from '../util/isScheduler';\nexport function startWith() {\n var array = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n array[_i] = arguments[_i];\n }\n var scheduler = array[array.length - 1];\n if (isScheduler(scheduler)) {\n array.pop();\n return function (source) { return concat(array, source, scheduler); };\n }\n else {\n return function (source) { return concat(array, source); };\n }\n}\n//# sourceMappingURL=startWith.js.map\n","/** PURE_IMPORTS_START _observable_SubscribeOnObservable PURE_IMPORTS_END */\nimport { SubscribeOnObservable } from '../observable/SubscribeOnObservable';\nexport function subscribeOn(scheduler, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return function subscribeOnOperatorFunction(source) {\n return source.lift(new SubscribeOnOperator(scheduler, delay));\n };\n}\nvar SubscribeOnOperator = /*@__PURE__*/ (function () {\n function SubscribeOnOperator(scheduler, delay) {\n this.scheduler = scheduler;\n this.delay = delay;\n }\n SubscribeOnOperator.prototype.call = function (subscriber, source) {\n return new SubscribeOnObservable(source, this.delay, this.scheduler).subscribe(subscriber);\n };\n return SubscribeOnOperator;\n}());\n//# sourceMappingURL=subscribeOn.js.map\n","/** PURE_IMPORTS_START _switchMap,_util_identity PURE_IMPORTS_END */\nimport { switchMap } from './switchMap';\nimport { identity } from '../util/identity';\nexport function switchAll() {\n return switchMap(identity);\n}\n//# sourceMappingURL=switchAll.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_InnerSubscriber,_util_subscribeToResult,_map,_observable_from PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nimport { map } from './map';\nimport { from } from '../observable/from';\nexport function switchMap(project, resultSelector) {\n if (typeof resultSelector === 'function') {\n return function (source) { return source.pipe(switchMap(function (a, i) { return from(project(a, i)).pipe(map(function (b, ii) { return resultSelector(a, b, i, ii); })); })); };\n }\n return function (source) { return source.lift(new SwitchMapOperator(project)); };\n}\nvar SwitchMapOperator = /*@__PURE__*/ (function () {\n function SwitchMapOperator(project) {\n this.project = project;\n }\n SwitchMapOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new SwitchMapSubscriber(subscriber, this.project));\n };\n return SwitchMapOperator;\n}());\nvar SwitchMapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(SwitchMapSubscriber, _super);\n function SwitchMapSubscriber(destination, project) {\n var _this = _super.call(this, destination) || this;\n _this.project = project;\n _this.index = 0;\n return _this;\n }\n SwitchMapSubscriber.prototype._next = function (value) {\n var result;\n var index = this.index++;\n try {\n result = this.project(value, index);\n }\n catch (error) {\n this.destination.error(error);\n return;\n }\n this._innerSub(result, value, index);\n };\n SwitchMapSubscriber.prototype._innerSub = function (result, value, index) {\n var innerSubscription = this.innerSubscription;\n if (innerSubscription) {\n innerSubscription.unsubscribe();\n }\n var innerSubscriber = new InnerSubscriber(this, undefined, undefined);\n var destination = this.destination;\n destination.add(innerSubscriber);\n this.innerSubscription = subscribeToResult(this, result, value, index, innerSubscriber);\n };\n SwitchMapSubscriber.prototype._complete = function () {\n var innerSubscription = this.innerSubscription;\n if (!innerSubscription || innerSubscription.closed) {\n _super.prototype._complete.call(this);\n }\n this.unsubscribe();\n };\n SwitchMapSubscriber.prototype._unsubscribe = function () {\n this.innerSubscription = null;\n };\n SwitchMapSubscriber.prototype.notifyComplete = function (innerSub) {\n var destination = this.destination;\n destination.remove(innerSub);\n this.innerSubscription = null;\n if (this.isStopped) {\n _super.prototype._complete.call(this);\n }\n };\n SwitchMapSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.destination.next(innerValue);\n };\n return SwitchMapSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=switchMap.js.map\n","/** PURE_IMPORTS_START _switchMap PURE_IMPORTS_END */\nimport { switchMap } from './switchMap';\nexport function switchMapTo(innerObservable, resultSelector) {\n return resultSelector ? switchMap(function () { return innerObservable; }, resultSelector) : switchMap(function () { return innerObservable; });\n}\n//# sourceMappingURL=switchMapTo.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function take(count) {\n return function (source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeOperator(count));\n }\n };\n}\nvar TakeOperator = /*@__PURE__*/ (function () {\n function TakeOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeSubscriber(subscriber, this.total));\n };\n return TakeOperator;\n}());\nvar TakeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeSubscriber, _super);\n function TakeSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.count = 0;\n return _this;\n }\n TakeSubscriber.prototype._next = function (value) {\n var total = this.total;\n var count = ++this.count;\n if (count <= total) {\n this.destination.next(value);\n if (count === total) {\n this.destination.complete();\n this.unsubscribe();\n }\n }\n };\n return TakeSubscriber;\n}(Subscriber));\n//# sourceMappingURL=take.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_ArgumentOutOfRangeError,_observable_empty PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { ArgumentOutOfRangeError } from '../util/ArgumentOutOfRangeError';\nimport { empty } from '../observable/empty';\nexport function takeLast(count) {\n return function takeLastOperatorFunction(source) {\n if (count === 0) {\n return empty();\n }\n else {\n return source.lift(new TakeLastOperator(count));\n }\n };\n}\nvar TakeLastOperator = /*@__PURE__*/ (function () {\n function TakeLastOperator(total) {\n this.total = total;\n if (this.total < 0) {\n throw new ArgumentOutOfRangeError;\n }\n }\n TakeLastOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeLastSubscriber(subscriber, this.total));\n };\n return TakeLastOperator;\n}());\nvar TakeLastSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeLastSubscriber, _super);\n function TakeLastSubscriber(destination, total) {\n var _this = _super.call(this, destination) || this;\n _this.total = total;\n _this.ring = new Array();\n _this.count = 0;\n return _this;\n }\n TakeLastSubscriber.prototype._next = function (value) {\n var ring = this.ring;\n var total = this.total;\n var count = this.count++;\n if (ring.length < total) {\n ring.push(value);\n }\n else {\n var index = count % total;\n ring[index] = value;\n }\n };\n TakeLastSubscriber.prototype._complete = function () {\n var destination = this.destination;\n var count = this.count;\n if (count > 0) {\n var total = this.count >= this.total ? this.total : this.count;\n var ring = this.ring;\n for (var i = 0; i < total; i++) {\n var idx = (count++) % total;\n destination.next(ring[idx]);\n }\n }\n destination.complete();\n };\n return TakeLastSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeLast.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function takeUntil(notifier) {\n return function (source) { return source.lift(new TakeUntilOperator(notifier)); };\n}\nvar TakeUntilOperator = /*@__PURE__*/ (function () {\n function TakeUntilOperator(notifier) {\n this.notifier = notifier;\n }\n TakeUntilOperator.prototype.call = function (subscriber, source) {\n var takeUntilSubscriber = new TakeUntilSubscriber(subscriber);\n var notifierSubscription = subscribeToResult(takeUntilSubscriber, this.notifier);\n if (notifierSubscription && !takeUntilSubscriber.seenValue) {\n takeUntilSubscriber.add(notifierSubscription);\n return source.subscribe(takeUntilSubscriber);\n }\n return takeUntilSubscriber;\n };\n return TakeUntilOperator;\n}());\nvar TakeUntilSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeUntilSubscriber, _super);\n function TakeUntilSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.seenValue = false;\n return _this;\n }\n TakeUntilSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.seenValue = true;\n this.complete();\n };\n TakeUntilSubscriber.prototype.notifyComplete = function () {\n };\n return TakeUntilSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=takeUntil.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nexport function takeWhile(predicate, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n return function (source) {\n return source.lift(new TakeWhileOperator(predicate, inclusive));\n };\n}\nvar TakeWhileOperator = /*@__PURE__*/ (function () {\n function TakeWhileOperator(predicate, inclusive) {\n this.predicate = predicate;\n this.inclusive = inclusive;\n }\n TakeWhileOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TakeWhileSubscriber(subscriber, this.predicate, this.inclusive));\n };\n return TakeWhileOperator;\n}());\nvar TakeWhileSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TakeWhileSubscriber, _super);\n function TakeWhileSubscriber(destination, predicate, inclusive) {\n var _this = _super.call(this, destination) || this;\n _this.predicate = predicate;\n _this.inclusive = inclusive;\n _this.index = 0;\n return _this;\n }\n TakeWhileSubscriber.prototype._next = function (value) {\n var destination = this.destination;\n var result;\n try {\n result = this.predicate(value, this.index++);\n }\n catch (err) {\n destination.error(err);\n return;\n }\n this.nextOrComplete(value, result);\n };\n TakeWhileSubscriber.prototype.nextOrComplete = function (value, predicateResult) {\n var destination = this.destination;\n if (Boolean(predicateResult)) {\n destination.next(value);\n }\n else {\n if (this.inclusive) {\n destination.next(value);\n }\n destination.complete();\n }\n };\n return TakeWhileSubscriber;\n}(Subscriber));\n//# sourceMappingURL=takeWhile.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_util_noop,_util_isFunction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { noop } from '../util/noop';\nimport { isFunction } from '../util/isFunction';\nexport function tap(nextOrObserver, error, complete) {\n return function tapOperatorFunction(source) {\n return source.lift(new DoOperator(nextOrObserver, error, complete));\n };\n}\nvar DoOperator = /*@__PURE__*/ (function () {\n function DoOperator(nextOrObserver, error, complete) {\n this.nextOrObserver = nextOrObserver;\n this.error = error;\n this.complete = complete;\n }\n DoOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TapSubscriber(subscriber, this.nextOrObserver, this.error, this.complete));\n };\n return DoOperator;\n}());\nvar TapSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TapSubscriber, _super);\n function TapSubscriber(destination, observerOrNext, error, complete) {\n var _this = _super.call(this, destination) || this;\n _this._tapNext = noop;\n _this._tapError = noop;\n _this._tapComplete = noop;\n _this._tapError = error || noop;\n _this._tapComplete = complete || noop;\n if (isFunction(observerOrNext)) {\n _this._context = _this;\n _this._tapNext = observerOrNext;\n }\n else if (observerOrNext) {\n _this._context = observerOrNext;\n _this._tapNext = observerOrNext.next || noop;\n _this._tapError = observerOrNext.error || noop;\n _this._tapComplete = observerOrNext.complete || noop;\n }\n return _this;\n }\n TapSubscriber.prototype._next = function (value) {\n try {\n this._tapNext.call(this._context, value);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(value);\n };\n TapSubscriber.prototype._error = function (err) {\n try {\n this._tapError.call(this._context, err);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.error(err);\n };\n TapSubscriber.prototype._complete = function () {\n try {\n this._tapComplete.call(this._context);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n return this.destination.complete();\n };\n return TapSubscriber;\n}(Subscriber));\n//# sourceMappingURL=tap.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport var defaultThrottleConfig = {\n leading: true,\n trailing: false\n};\nexport function throttle(durationSelector, config) {\n if (config === void 0) {\n config = defaultThrottleConfig;\n }\n return function (source) { return source.lift(new ThrottleOperator(durationSelector, config.leading, config.trailing)); };\n}\nvar ThrottleOperator = /*@__PURE__*/ (function () {\n function ThrottleOperator(durationSelector, leading, trailing) {\n this.durationSelector = durationSelector;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleSubscriber(subscriber, this.durationSelector, this.leading, this.trailing));\n };\n return ThrottleOperator;\n}());\nvar ThrottleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrottleSubscriber, _super);\n function ThrottleSubscriber(destination, durationSelector, _leading, _trailing) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.durationSelector = durationSelector;\n _this._leading = _leading;\n _this._trailing = _trailing;\n _this._hasValue = false;\n return _this;\n }\n ThrottleSubscriber.prototype._next = function (value) {\n this._hasValue = true;\n this._sendValue = value;\n if (!this._throttled) {\n if (this._leading) {\n this.send();\n }\n else {\n this.throttle(value);\n }\n }\n };\n ThrottleSubscriber.prototype.send = function () {\n var _a = this, _hasValue = _a._hasValue, _sendValue = _a._sendValue;\n if (_hasValue) {\n this.destination.next(_sendValue);\n this.throttle(_sendValue);\n }\n this._hasValue = false;\n this._sendValue = null;\n };\n ThrottleSubscriber.prototype.throttle = function (value) {\n var duration = this.tryDurationSelector(value);\n if (!!duration) {\n this.add(this._throttled = subscribeToResult(this, duration));\n }\n };\n ThrottleSubscriber.prototype.tryDurationSelector = function (value) {\n try {\n return this.durationSelector(value);\n }\n catch (err) {\n this.destination.error(err);\n return null;\n }\n };\n ThrottleSubscriber.prototype.throttlingDone = function () {\n var _a = this, _throttled = _a._throttled, _trailing = _a._trailing;\n if (_throttled) {\n _throttled.unsubscribe();\n }\n this._throttled = null;\n if (_trailing) {\n this.send();\n }\n };\n ThrottleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.throttlingDone();\n };\n ThrottleSubscriber.prototype.notifyComplete = function () {\n this.throttlingDone();\n };\n return ThrottleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=throttle.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_scheduler_async,_throttle PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { async } from '../scheduler/async';\nimport { defaultThrottleConfig } from './throttle';\nexport function throttleTime(duration, scheduler, config) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n if (config === void 0) {\n config = defaultThrottleConfig;\n }\n return function (source) { return source.lift(new ThrottleTimeOperator(duration, scheduler, config.leading, config.trailing)); };\n}\nvar ThrottleTimeOperator = /*@__PURE__*/ (function () {\n function ThrottleTimeOperator(duration, scheduler, leading, trailing) {\n this.duration = duration;\n this.scheduler = scheduler;\n this.leading = leading;\n this.trailing = trailing;\n }\n ThrottleTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrottleTimeSubscriber(subscriber, this.duration, this.scheduler, this.leading, this.trailing));\n };\n return ThrottleTimeOperator;\n}());\nvar ThrottleTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrottleTimeSubscriber, _super);\n function ThrottleTimeSubscriber(destination, duration, scheduler, leading, trailing) {\n var _this = _super.call(this, destination) || this;\n _this.duration = duration;\n _this.scheduler = scheduler;\n _this.leading = leading;\n _this.trailing = trailing;\n _this._hasTrailingValue = false;\n _this._trailingValue = null;\n return _this;\n }\n ThrottleTimeSubscriber.prototype._next = function (value) {\n if (this.throttled) {\n if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n else {\n this.add(this.throttled = this.scheduler.schedule(dispatchNext, this.duration, { subscriber: this }));\n if (this.leading) {\n this.destination.next(value);\n }\n else if (this.trailing) {\n this._trailingValue = value;\n this._hasTrailingValue = true;\n }\n }\n };\n ThrottleTimeSubscriber.prototype._complete = function () {\n if (this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this.destination.complete();\n }\n else {\n this.destination.complete();\n }\n };\n ThrottleTimeSubscriber.prototype.clearThrottle = function () {\n var throttled = this.throttled;\n if (throttled) {\n if (this.trailing && this._hasTrailingValue) {\n this.destination.next(this._trailingValue);\n this._trailingValue = null;\n this._hasTrailingValue = false;\n }\n throttled.unsubscribe();\n this.remove(throttled);\n this.throttled = null;\n }\n };\n return ThrottleTimeSubscriber;\n}(Subscriber));\nfunction dispatchNext(arg) {\n var subscriber = arg.subscriber;\n subscriber.clearThrottle();\n}\n//# sourceMappingURL=throttleTime.js.map\n","/** PURE_IMPORTS_START tslib,_util_EmptyError,_Subscriber PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { EmptyError } from '../util/EmptyError';\nimport { Subscriber } from '../Subscriber';\nexport function throwIfEmpty(errorFactory) {\n if (errorFactory === void 0) {\n errorFactory = defaultErrorFactory;\n }\n return function (source) {\n return source.lift(new ThrowIfEmptyOperator(errorFactory));\n };\n}\nvar ThrowIfEmptyOperator = /*@__PURE__*/ (function () {\n function ThrowIfEmptyOperator(errorFactory) {\n this.errorFactory = errorFactory;\n }\n ThrowIfEmptyOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new ThrowIfEmptySubscriber(subscriber, this.errorFactory));\n };\n return ThrowIfEmptyOperator;\n}());\nvar ThrowIfEmptySubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(ThrowIfEmptySubscriber, _super);\n function ThrowIfEmptySubscriber(destination, errorFactory) {\n var _this = _super.call(this, destination) || this;\n _this.errorFactory = errorFactory;\n _this.hasValue = false;\n return _this;\n }\n ThrowIfEmptySubscriber.prototype._next = function (value) {\n this.hasValue = true;\n this.destination.next(value);\n };\n ThrowIfEmptySubscriber.prototype._complete = function () {\n if (!this.hasValue) {\n var err = void 0;\n try {\n err = this.errorFactory();\n }\n catch (e) {\n err = e;\n }\n this.destination.error(err);\n }\n else {\n return this.destination.complete();\n }\n };\n return ThrowIfEmptySubscriber;\n}(Subscriber));\nfunction defaultErrorFactory() {\n return new EmptyError();\n}\n//# sourceMappingURL=throwIfEmpty.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_scan,_observable_defer,_map PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { scan } from './scan';\nimport { defer } from '../observable/defer';\nimport { map } from './map';\nexport function timeInterval(scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) {\n return defer(function () {\n return source.pipe(scan(function (_a, value) {\n var current = _a.current;\n return ({ value: value, current: scheduler.now(), last: current });\n }, { current: scheduler.now(), value: undefined, last: undefined }), map(function (_a) {\n var current = _a.current, last = _a.last, value = _a.value;\n return new TimeInterval(value, current - last);\n }));\n });\n };\n}\nvar TimeInterval = /*@__PURE__*/ (function () {\n function TimeInterval(value, interval) {\n this.value = value;\n this.interval = interval;\n }\n return TimeInterval;\n}());\nexport { TimeInterval };\n//# sourceMappingURL=timeInterval.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_util_TimeoutError,_timeoutWith,_observable_throwError PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { TimeoutError } from '../util/TimeoutError';\nimport { timeoutWith } from './timeoutWith';\nimport { throwError } from '../observable/throwError';\nexport function timeout(due, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return timeoutWith(due, throwError(new TimeoutError()), scheduler);\n}\n//# sourceMappingURL=timeout.js.map\n","/** PURE_IMPORTS_START tslib,_scheduler_async,_util_isDate,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { async } from '../scheduler/async';\nimport { isDate } from '../util/isDate';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function timeoutWith(due, withObservable, scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return function (source) {\n var absoluteTimeout = isDate(due);\n var waitFor = absoluteTimeout ? (+due - scheduler.now()) : Math.abs(due);\n return source.lift(new TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler));\n };\n}\nvar TimeoutWithOperator = /*@__PURE__*/ (function () {\n function TimeoutWithOperator(waitFor, absoluteTimeout, withObservable, scheduler) {\n this.waitFor = waitFor;\n this.absoluteTimeout = absoluteTimeout;\n this.withObservable = withObservable;\n this.scheduler = scheduler;\n }\n TimeoutWithOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new TimeoutWithSubscriber(subscriber, this.absoluteTimeout, this.waitFor, this.withObservable, this.scheduler));\n };\n return TimeoutWithOperator;\n}());\nvar TimeoutWithSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(TimeoutWithSubscriber, _super);\n function TimeoutWithSubscriber(destination, absoluteTimeout, waitFor, withObservable, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.absoluteTimeout = absoluteTimeout;\n _this.waitFor = waitFor;\n _this.withObservable = withObservable;\n _this.scheduler = scheduler;\n _this.action = null;\n _this.scheduleTimeout();\n return _this;\n }\n TimeoutWithSubscriber.dispatchTimeout = function (subscriber) {\n var withObservable = subscriber.withObservable;\n subscriber._unsubscribeAndRecycle();\n subscriber.add(subscribeToResult(subscriber, withObservable));\n };\n TimeoutWithSubscriber.prototype.scheduleTimeout = function () {\n var action = this.action;\n if (action) {\n this.action = action.schedule(this, this.waitFor);\n }\n else {\n this.add(this.action = this.scheduler.schedule(TimeoutWithSubscriber.dispatchTimeout, this.waitFor, this));\n }\n };\n TimeoutWithSubscriber.prototype._next = function (value) {\n if (!this.absoluteTimeout) {\n this.scheduleTimeout();\n }\n _super.prototype._next.call(this, value);\n };\n TimeoutWithSubscriber.prototype._unsubscribe = function () {\n this.action = null;\n this.scheduler = null;\n this.withObservable = null;\n };\n return TimeoutWithSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=timeoutWith.js.map\n","/** PURE_IMPORTS_START _scheduler_async,_map PURE_IMPORTS_END */\nimport { async } from '../scheduler/async';\nimport { map } from './map';\nexport function timestamp(scheduler) {\n if (scheduler === void 0) {\n scheduler = async;\n }\n return map(function (value) { return new Timestamp(value, scheduler.now()); });\n}\nvar Timestamp = /*@__PURE__*/ (function () {\n function Timestamp(value, timestamp) {\n this.value = value;\n this.timestamp = timestamp;\n }\n return Timestamp;\n}());\nexport { Timestamp };\n//# sourceMappingURL=timestamp.js.map\n","/** PURE_IMPORTS_START _reduce PURE_IMPORTS_END */\nimport { reduce } from './reduce';\nfunction toArrayReducer(arr, item, index) {\n if (index === 0) {\n return [item];\n }\n arr.push(item);\n return arr;\n}\nexport function toArray() {\n return reduce(toArrayReducer, []);\n}\n//# sourceMappingURL=toArray.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function window(windowBoundaries) {\n return function windowOperatorFunction(source) {\n return source.lift(new WindowOperator(windowBoundaries));\n };\n}\nvar WindowOperator = /*@__PURE__*/ (function () {\n function WindowOperator(windowBoundaries) {\n this.windowBoundaries = windowBoundaries;\n }\n WindowOperator.prototype.call = function (subscriber, source) {\n var windowSubscriber = new WindowSubscriber(subscriber);\n var sourceSubscription = source.subscribe(windowSubscriber);\n if (!sourceSubscription.closed) {\n windowSubscriber.add(subscribeToResult(windowSubscriber, this.windowBoundaries));\n }\n return sourceSubscription;\n };\n return WindowOperator;\n}());\nvar WindowSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowSubscriber, _super);\n function WindowSubscriber(destination) {\n var _this = _super.call(this, destination) || this;\n _this.window = new Subject();\n destination.next(_this.window);\n return _this;\n }\n WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openWindow();\n };\n WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n this._complete();\n };\n WindowSubscriber.prototype._next = function (value) {\n this.window.next(value);\n };\n WindowSubscriber.prototype._error = function (err) {\n this.window.error(err);\n this.destination.error(err);\n };\n WindowSubscriber.prototype._complete = function () {\n this.window.complete();\n this.destination.complete();\n };\n WindowSubscriber.prototype._unsubscribe = function () {\n this.window = null;\n };\n WindowSubscriber.prototype.openWindow = function () {\n var prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n var destination = this.destination;\n var newWindow = this.window = new Subject();\n destination.next(newWindow);\n };\n return WindowSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=window.js.map\n","/** PURE_IMPORTS_START tslib,_Subscriber,_Subject PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscriber } from '../Subscriber';\nimport { Subject } from '../Subject';\nexport function windowCount(windowSize, startWindowEvery) {\n if (startWindowEvery === void 0) {\n startWindowEvery = 0;\n }\n return function windowCountOperatorFunction(source) {\n return source.lift(new WindowCountOperator(windowSize, startWindowEvery));\n };\n}\nvar WindowCountOperator = /*@__PURE__*/ (function () {\n function WindowCountOperator(windowSize, startWindowEvery) {\n this.windowSize = windowSize;\n this.startWindowEvery = startWindowEvery;\n }\n WindowCountOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowCountSubscriber(subscriber, this.windowSize, this.startWindowEvery));\n };\n return WindowCountOperator;\n}());\nvar WindowCountSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowCountSubscriber, _super);\n function WindowCountSubscriber(destination, windowSize, startWindowEvery) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.windowSize = windowSize;\n _this.startWindowEvery = startWindowEvery;\n _this.windows = [new Subject()];\n _this.count = 0;\n destination.next(_this.windows[0]);\n return _this;\n }\n WindowCountSubscriber.prototype._next = function (value) {\n var startWindowEvery = (this.startWindowEvery > 0) ? this.startWindowEvery : this.windowSize;\n var destination = this.destination;\n var windowSize = this.windowSize;\n var windows = this.windows;\n var len = windows.length;\n for (var i = 0; i < len && !this.closed; i++) {\n windows[i].next(value);\n }\n var c = this.count - windowSize + 1;\n if (c >= 0 && c % startWindowEvery === 0 && !this.closed) {\n windows.shift().complete();\n }\n if (++this.count % startWindowEvery === 0 && !this.closed) {\n var window_1 = new Subject();\n windows.push(window_1);\n destination.next(window_1);\n }\n };\n WindowCountSubscriber.prototype._error = function (err) {\n var windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().error(err);\n }\n }\n this.destination.error(err);\n };\n WindowCountSubscriber.prototype._complete = function () {\n var windows = this.windows;\n if (windows) {\n while (windows.length > 0 && !this.closed) {\n windows.shift().complete();\n }\n }\n this.destination.complete();\n };\n WindowCountSubscriber.prototype._unsubscribe = function () {\n this.count = 0;\n this.windows = null;\n };\n return WindowCountSubscriber;\n}(Subscriber));\n//# sourceMappingURL=windowCount.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_scheduler_async,_Subscriber,_util_isNumeric,_util_isScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { async } from '../scheduler/async';\nimport { Subscriber } from '../Subscriber';\nimport { isNumeric } from '../util/isNumeric';\nimport { isScheduler } from '../util/isScheduler';\nexport function windowTime(windowTimeSpan) {\n var scheduler = async;\n var windowCreationInterval = null;\n var maxWindowSize = Number.POSITIVE_INFINITY;\n if (isScheduler(arguments[3])) {\n scheduler = arguments[3];\n }\n if (isScheduler(arguments[2])) {\n scheduler = arguments[2];\n }\n else if (isNumeric(arguments[2])) {\n maxWindowSize = arguments[2];\n }\n if (isScheduler(arguments[1])) {\n scheduler = arguments[1];\n }\n else if (isNumeric(arguments[1])) {\n windowCreationInterval = arguments[1];\n }\n return function windowTimeOperatorFunction(source) {\n return source.lift(new WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler));\n };\n}\nvar WindowTimeOperator = /*@__PURE__*/ (function () {\n function WindowTimeOperator(windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n this.windowTimeSpan = windowTimeSpan;\n this.windowCreationInterval = windowCreationInterval;\n this.maxWindowSize = maxWindowSize;\n this.scheduler = scheduler;\n }\n WindowTimeOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowTimeSubscriber(subscriber, this.windowTimeSpan, this.windowCreationInterval, this.maxWindowSize, this.scheduler));\n };\n return WindowTimeOperator;\n}());\nvar CountedSubject = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(CountedSubject, _super);\n function CountedSubject() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._numberOfNextedValues = 0;\n return _this;\n }\n CountedSubject.prototype.next = function (value) {\n this._numberOfNextedValues++;\n _super.prototype.next.call(this, value);\n };\n Object.defineProperty(CountedSubject.prototype, \"numberOfNextedValues\", {\n get: function () {\n return this._numberOfNextedValues;\n },\n enumerable: true,\n configurable: true\n });\n return CountedSubject;\n}(Subject));\nvar WindowTimeSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowTimeSubscriber, _super);\n function WindowTimeSubscriber(destination, windowTimeSpan, windowCreationInterval, maxWindowSize, scheduler) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.windowTimeSpan = windowTimeSpan;\n _this.windowCreationInterval = windowCreationInterval;\n _this.maxWindowSize = maxWindowSize;\n _this.scheduler = scheduler;\n _this.windows = [];\n var window = _this.openWindow();\n if (windowCreationInterval !== null && windowCreationInterval >= 0) {\n var closeState = { subscriber: _this, window: window, context: null };\n var creationState = { windowTimeSpan: windowTimeSpan, windowCreationInterval: windowCreationInterval, subscriber: _this, scheduler: scheduler };\n _this.add(scheduler.schedule(dispatchWindowClose, windowTimeSpan, closeState));\n _this.add(scheduler.schedule(dispatchWindowCreation, windowCreationInterval, creationState));\n }\n else {\n var timeSpanOnlyState = { subscriber: _this, window: window, windowTimeSpan: windowTimeSpan };\n _this.add(scheduler.schedule(dispatchWindowTimeSpanOnly, windowTimeSpan, timeSpanOnlyState));\n }\n return _this;\n }\n WindowTimeSubscriber.prototype._next = function (value) {\n var windows = this.windows;\n var len = windows.length;\n for (var i = 0; i < len; i++) {\n var window_1 = windows[i];\n if (!window_1.closed) {\n window_1.next(value);\n if (window_1.numberOfNextedValues >= this.maxWindowSize) {\n this.closeWindow(window_1);\n }\n }\n }\n };\n WindowTimeSubscriber.prototype._error = function (err) {\n var windows = this.windows;\n while (windows.length > 0) {\n windows.shift().error(err);\n }\n this.destination.error(err);\n };\n WindowTimeSubscriber.prototype._complete = function () {\n var windows = this.windows;\n while (windows.length > 0) {\n var window_2 = windows.shift();\n if (!window_2.closed) {\n window_2.complete();\n }\n }\n this.destination.complete();\n };\n WindowTimeSubscriber.prototype.openWindow = function () {\n var window = new CountedSubject();\n this.windows.push(window);\n var destination = this.destination;\n destination.next(window);\n return window;\n };\n WindowTimeSubscriber.prototype.closeWindow = function (window) {\n window.complete();\n var windows = this.windows;\n windows.splice(windows.indexOf(window), 1);\n };\n return WindowTimeSubscriber;\n}(Subscriber));\nfunction dispatchWindowTimeSpanOnly(state) {\n var subscriber = state.subscriber, windowTimeSpan = state.windowTimeSpan, window = state.window;\n if (window) {\n subscriber.closeWindow(window);\n }\n state.window = subscriber.openWindow();\n this.schedule(state, windowTimeSpan);\n}\nfunction dispatchWindowCreation(state) {\n var windowTimeSpan = state.windowTimeSpan, subscriber = state.subscriber, scheduler = state.scheduler, windowCreationInterval = state.windowCreationInterval;\n var window = subscriber.openWindow();\n var action = this;\n var context = { action: action, subscription: null };\n var timeSpanState = { subscriber: subscriber, window: window, context: context };\n context.subscription = scheduler.schedule(dispatchWindowClose, windowTimeSpan, timeSpanState);\n action.add(context.subscription);\n action.schedule(state, windowCreationInterval);\n}\nfunction dispatchWindowClose(state) {\n var subscriber = state.subscriber, window = state.window, context = state.context;\n if (context && context.action && context.subscription) {\n context.action.remove(context.subscription);\n }\n subscriber.closeWindow(window);\n}\n//# sourceMappingURL=windowTime.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_Subscription,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { Subscription } from '../Subscription';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function windowToggle(openings, closingSelector) {\n return function (source) { return source.lift(new WindowToggleOperator(openings, closingSelector)); };\n}\nvar WindowToggleOperator = /*@__PURE__*/ (function () {\n function WindowToggleOperator(openings, closingSelector) {\n this.openings = openings;\n this.closingSelector = closingSelector;\n }\n WindowToggleOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowToggleSubscriber(subscriber, this.openings, this.closingSelector));\n };\n return WindowToggleOperator;\n}());\nvar WindowToggleSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowToggleSubscriber, _super);\n function WindowToggleSubscriber(destination, openings, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.openings = openings;\n _this.closingSelector = closingSelector;\n _this.contexts = [];\n _this.add(_this.openSubscription = subscribeToResult(_this, openings, openings));\n return _this;\n }\n WindowToggleSubscriber.prototype._next = function (value) {\n var contexts = this.contexts;\n if (contexts) {\n var len = contexts.length;\n for (var i = 0; i < len; i++) {\n contexts[i].window.next(value);\n }\n }\n };\n WindowToggleSubscriber.prototype._error = function (err) {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_1 = contexts[index];\n context_1.window.error(err);\n context_1.subscription.unsubscribe();\n }\n }\n _super.prototype._error.call(this, err);\n };\n WindowToggleSubscriber.prototype._complete = function () {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_2 = contexts[index];\n context_2.window.complete();\n context_2.subscription.unsubscribe();\n }\n }\n _super.prototype._complete.call(this);\n };\n WindowToggleSubscriber.prototype._unsubscribe = function () {\n var contexts = this.contexts;\n this.contexts = null;\n if (contexts) {\n var len = contexts.length;\n var index = -1;\n while (++index < len) {\n var context_3 = contexts[index];\n context_3.window.unsubscribe();\n context_3.subscription.unsubscribe();\n }\n }\n };\n WindowToggleSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n if (outerValue === this.openings) {\n var closingNotifier = void 0;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector(innerValue);\n }\n catch (e) {\n return this.error(e);\n }\n var window_1 = new Subject();\n var subscription = new Subscription();\n var context_4 = { window: window_1, subscription: subscription };\n this.contexts.push(context_4);\n var innerSubscription = subscribeToResult(this, closingNotifier, context_4);\n if (innerSubscription.closed) {\n this.closeWindow(this.contexts.length - 1);\n }\n else {\n innerSubscription.context = context_4;\n subscription.add(innerSubscription);\n }\n this.destination.next(window_1);\n }\n else {\n this.closeWindow(this.contexts.indexOf(outerValue));\n }\n };\n WindowToggleSubscriber.prototype.notifyError = function (err) {\n this.error(err);\n };\n WindowToggleSubscriber.prototype.notifyComplete = function (inner) {\n if (inner !== this.openSubscription) {\n this.closeWindow(this.contexts.indexOf(inner.context));\n }\n };\n WindowToggleSubscriber.prototype.closeWindow = function (index) {\n if (index === -1) {\n return;\n }\n var contexts = this.contexts;\n var context = contexts[index];\n var window = context.window, subscription = context.subscription;\n contexts.splice(index, 1);\n window.complete();\n subscription.unsubscribe();\n };\n return WindowToggleSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=windowToggle.js.map\n","/** PURE_IMPORTS_START tslib,_Subject,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subject } from '../Subject';\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function windowWhen(closingSelector) {\n return function windowWhenOperatorFunction(source) {\n return source.lift(new WindowOperator(closingSelector));\n };\n}\nvar WindowOperator = /*@__PURE__*/ (function () {\n function WindowOperator(closingSelector) {\n this.closingSelector = closingSelector;\n }\n WindowOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WindowSubscriber(subscriber, this.closingSelector));\n };\n return WindowOperator;\n}());\nvar WindowSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WindowSubscriber, _super);\n function WindowSubscriber(destination, closingSelector) {\n var _this = _super.call(this, destination) || this;\n _this.destination = destination;\n _this.closingSelector = closingSelector;\n _this.openWindow();\n return _this;\n }\n WindowSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.openWindow(innerSub);\n };\n WindowSubscriber.prototype.notifyError = function (error, innerSub) {\n this._error(error);\n };\n WindowSubscriber.prototype.notifyComplete = function (innerSub) {\n this.openWindow(innerSub);\n };\n WindowSubscriber.prototype._next = function (value) {\n this.window.next(value);\n };\n WindowSubscriber.prototype._error = function (err) {\n this.window.error(err);\n this.destination.error(err);\n this.unsubscribeClosingNotification();\n };\n WindowSubscriber.prototype._complete = function () {\n this.window.complete();\n this.destination.complete();\n this.unsubscribeClosingNotification();\n };\n WindowSubscriber.prototype.unsubscribeClosingNotification = function () {\n if (this.closingNotification) {\n this.closingNotification.unsubscribe();\n }\n };\n WindowSubscriber.prototype.openWindow = function (innerSub) {\n if (innerSub === void 0) {\n innerSub = null;\n }\n if (innerSub) {\n this.remove(innerSub);\n innerSub.unsubscribe();\n }\n var prevWindow = this.window;\n if (prevWindow) {\n prevWindow.complete();\n }\n var window = this.window = new Subject();\n this.destination.next(window);\n var closingNotifier;\n try {\n var closingSelector = this.closingSelector;\n closingNotifier = closingSelector();\n }\n catch (e) {\n this.destination.error(e);\n this.window.error(e);\n return;\n }\n this.add(this.closingNotification = subscribeToResult(this, closingNotifier));\n };\n return WindowSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=windowWhen.js.map\n","/** PURE_IMPORTS_START tslib,_OuterSubscriber,_util_subscribeToResult PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { OuterSubscriber } from '../OuterSubscriber';\nimport { subscribeToResult } from '../util/subscribeToResult';\nexport function withLatestFrom() {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (source) {\n var project;\n if (typeof args[args.length - 1] === 'function') {\n project = args.pop();\n }\n var observables = args;\n return source.lift(new WithLatestFromOperator(observables, project));\n };\n}\nvar WithLatestFromOperator = /*@__PURE__*/ (function () {\n function WithLatestFromOperator(observables, project) {\n this.observables = observables;\n this.project = project;\n }\n WithLatestFromOperator.prototype.call = function (subscriber, source) {\n return source.subscribe(new WithLatestFromSubscriber(subscriber, this.observables, this.project));\n };\n return WithLatestFromOperator;\n}());\nvar WithLatestFromSubscriber = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(WithLatestFromSubscriber, _super);\n function WithLatestFromSubscriber(destination, observables, project) {\n var _this = _super.call(this, destination) || this;\n _this.observables = observables;\n _this.project = project;\n _this.toRespond = [];\n var len = observables.length;\n _this.values = new Array(len);\n for (var i = 0; i < len; i++) {\n _this.toRespond.push(i);\n }\n for (var i = 0; i < len; i++) {\n var observable = observables[i];\n _this.add(subscribeToResult(_this, observable, observable, i));\n }\n return _this;\n }\n WithLatestFromSubscriber.prototype.notifyNext = function (outerValue, innerValue, outerIndex, innerIndex, innerSub) {\n this.values[outerIndex] = innerValue;\n var toRespond = this.toRespond;\n if (toRespond.length > 0) {\n var found = toRespond.indexOf(outerIndex);\n if (found !== -1) {\n toRespond.splice(found, 1);\n }\n }\n };\n WithLatestFromSubscriber.prototype.notifyComplete = function () {\n };\n WithLatestFromSubscriber.prototype._next = function (value) {\n if (this.toRespond.length === 0) {\n var args = [value].concat(this.values);\n if (this.project) {\n this._tryProject(args);\n }\n else {\n this.destination.next(args);\n }\n }\n };\n WithLatestFromSubscriber.prototype._tryProject = function (args) {\n var result;\n try {\n result = this.project.apply(this, args);\n }\n catch (err) {\n this.destination.error(err);\n return;\n }\n this.destination.next(result);\n };\n return WithLatestFromSubscriber;\n}(OuterSubscriber));\n//# sourceMappingURL=withLatestFrom.js.map\n","/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */\nimport { zip as zipStatic } from '../observable/zip';\nexport function zip() {\n var observables = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n observables[_i] = arguments[_i];\n }\n return function zipOperatorFunction(source) {\n return source.lift.call(zipStatic.apply(void 0, [source].concat(observables)));\n };\n}\n//# sourceMappingURL=zip.js.map\n","/** PURE_IMPORTS_START _observable_zip PURE_IMPORTS_END */\nimport { ZipOperator } from '../observable/zip';\nexport function zipAll(project) {\n return function (source) { return source.lift(new ZipOperator(project)); };\n}\n//# sourceMappingURL=zipAll.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function scheduleArray(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var i = 0;\n sub.add(scheduler.schedule(function () {\n if (i === input.length) {\n subscriber.complete();\n return;\n }\n subscriber.next(input[i++]);\n if (!subscriber.closed) {\n sub.add(this.schedule());\n }\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleArray.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_iterator PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function scheduleIterable(input, scheduler) {\n if (!input) {\n throw new Error('Iterable cannot be null');\n }\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n var iterator;\n sub.add(function () {\n if (iterator && typeof iterator.return === 'function') {\n iterator.return();\n }\n });\n sub.add(scheduler.schedule(function () {\n iterator = input[Symbol_iterator]();\n sub.add(scheduler.schedule(function () {\n if (subscriber.closed) {\n return;\n }\n var value;\n var done;\n try {\n var result = iterator.next();\n value = result.value;\n done = result.done;\n }\n catch (err) {\n subscriber.error(err);\n return;\n }\n if (done) {\n subscriber.complete();\n }\n else {\n subscriber.next(value);\n this.schedule();\n }\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleIterable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription,_symbol_observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function scheduleObservable(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n var observable = input[Symbol_observable]();\n sub.add(observable.subscribe({\n next: function (value) { sub.add(scheduler.schedule(function () { return subscriber.next(value); })); },\n error: function (err) { sub.add(scheduler.schedule(function () { return subscriber.error(err); })); },\n complete: function () { sub.add(scheduler.schedule(function () { return subscriber.complete(); })); },\n }));\n }));\n return sub;\n });\n}\n//# sourceMappingURL=scheduleObservable.js.map\n","/** PURE_IMPORTS_START _Observable,_Subscription PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nimport { Subscription } from '../Subscription';\nexport function schedulePromise(input, scheduler) {\n return new Observable(function (subscriber) {\n var sub = new Subscription();\n sub.add(scheduler.schedule(function () {\n return input.then(function (value) {\n sub.add(scheduler.schedule(function () {\n subscriber.next(value);\n sub.add(scheduler.schedule(function () { return subscriber.complete(); }));\n }));\n }, function (err) {\n sub.add(scheduler.schedule(function () { return subscriber.error(err); }));\n });\n }));\n return sub;\n });\n}\n//# sourceMappingURL=schedulePromise.js.map\n","/** PURE_IMPORTS_START _scheduleObservable,_schedulePromise,_scheduleArray,_scheduleIterable,_util_isInteropObservable,_util_isPromise,_util_isArrayLike,_util_isIterable PURE_IMPORTS_END */\nimport { scheduleObservable } from './scheduleObservable';\nimport { schedulePromise } from './schedulePromise';\nimport { scheduleArray } from './scheduleArray';\nimport { scheduleIterable } from './scheduleIterable';\nimport { isInteropObservable } from '../util/isInteropObservable';\nimport { isPromise } from '../util/isPromise';\nimport { isArrayLike } from '../util/isArrayLike';\nimport { isIterable } from '../util/isIterable';\nexport function scheduled(input, scheduler) {\n if (input != null) {\n if (isInteropObservable(input)) {\n return scheduleObservable(input, scheduler);\n }\n else if (isPromise(input)) {\n return schedulePromise(input, scheduler);\n }\n else if (isArrayLike(input)) {\n return scheduleArray(input, scheduler);\n }\n else if (isIterable(input) || typeof input === 'string') {\n return scheduleIterable(input, scheduler);\n }\n }\n throw new TypeError((input !== null && typeof input || input) + ' is not observable');\n}\n//# sourceMappingURL=scheduled.js.map\n","/** PURE_IMPORTS_START tslib,_Subscription PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Subscription } from '../Subscription';\nvar Action = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(Action, _super);\n function Action(scheduler, work) {\n return _super.call(this) || this;\n }\n Action.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return this;\n };\n return Action;\n}(Subscription));\nexport { Action };\n//# sourceMappingURL=Action.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar AnimationFrameAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameAction, _super);\n function AnimationFrameAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AnimationFrameAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = requestAnimationFrame(function () { return scheduler.flush(null); }));\n };\n AnimationFrameAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n cancelAnimationFrame(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AnimationFrameAction;\n}(AsyncAction));\nexport { AnimationFrameAction };\n//# sourceMappingURL=AnimationFrameAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AnimationFrameScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AnimationFrameScheduler, _super);\n function AnimationFrameScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AnimationFrameScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AnimationFrameScheduler;\n}(AsyncScheduler));\nexport { AnimationFrameScheduler };\n//# sourceMappingURL=AnimationFrameScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_util_Immediate,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Immediate } from '../util/Immediate';\nimport { AsyncAction } from './AsyncAction';\nvar AsapAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapAction, _super);\n function AsapAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && delay > 0) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n scheduler.actions.push(this);\n return scheduler.scheduled || (scheduler.scheduled = Immediate.setImmediate(scheduler.flush.bind(scheduler, null)));\n };\n AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);\n }\n if (scheduler.actions.length === 0) {\n Immediate.clearImmediate(id);\n scheduler.scheduled = undefined;\n }\n return undefined;\n };\n return AsapAction;\n}(AsyncAction));\nexport { AsapAction };\n//# sourceMappingURL=AsapAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar AsapScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsapScheduler, _super);\n function AsapScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AsapScheduler.prototype.flush = function (action) {\n this.active = true;\n this.scheduled = undefined;\n var actions = this.actions;\n var error;\n var index = -1;\n var count = actions.length;\n action = action || actions.shift();\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (++index < count && (action = actions.shift()));\n this.active = false;\n if (error) {\n while (++index < count && (action = actions.shift())) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsapScheduler;\n}(AsyncScheduler));\nexport { AsapScheduler };\n//# sourceMappingURL=AsapScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_Action PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Action } from './Action';\nvar AsyncAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncAction, _super);\n function AsyncAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.pending = false;\n return _this;\n }\n AsyncAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (this.closed) {\n return this;\n }\n this.state = state;\n var id = this.id;\n var scheduler = this.scheduler;\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, delay);\n }\n this.pending = true;\n this.delay = delay;\n this.id = this.id || this.requestAsyncId(scheduler, this.id, delay);\n return this;\n };\n AsyncAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return setInterval(scheduler.flush.bind(scheduler, this), delay);\n };\n AsyncAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay !== null && this.delay === delay && this.pending === false) {\n return id;\n }\n clearInterval(id);\n return undefined;\n };\n AsyncAction.prototype.execute = function (state, delay) {\n if (this.closed) {\n return new Error('executing a cancelled action');\n }\n this.pending = false;\n var error = this._execute(state, delay);\n if (error) {\n return error;\n }\n else if (this.pending === false && this.id != null) {\n this.id = this.recycleAsyncId(this.scheduler, this.id, null);\n }\n };\n AsyncAction.prototype._execute = function (state, delay) {\n var errored = false;\n var errorValue = undefined;\n try {\n this.work(state);\n }\n catch (e) {\n errored = true;\n errorValue = !!e && e || new Error(e);\n }\n if (errored) {\n this.unsubscribe();\n return errorValue;\n }\n };\n AsyncAction.prototype._unsubscribe = function () {\n var id = this.id;\n var scheduler = this.scheduler;\n var actions = scheduler.actions;\n var index = actions.indexOf(this);\n this.work = null;\n this.state = null;\n this.pending = false;\n this.scheduler = null;\n if (index !== -1) {\n actions.splice(index, 1);\n }\n if (id != null) {\n this.id = this.recycleAsyncId(scheduler, id, null);\n }\n this.delay = null;\n };\n return AsyncAction;\n}(Action));\nexport { AsyncAction };\n//# sourceMappingURL=AsyncAction.js.map\n","/** PURE_IMPORTS_START tslib,_Scheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { Scheduler } from '../Scheduler';\nvar AsyncScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(AsyncScheduler, _super);\n function AsyncScheduler(SchedulerAction, now) {\n if (now === void 0) {\n now = Scheduler.now;\n }\n var _this = _super.call(this, SchedulerAction, function () {\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== _this) {\n return AsyncScheduler.delegate.now();\n }\n else {\n return now();\n }\n }) || this;\n _this.actions = [];\n _this.active = false;\n _this.scheduled = undefined;\n return _this;\n }\n AsyncScheduler.prototype.schedule = function (work, delay, state) {\n if (delay === void 0) {\n delay = 0;\n }\n if (AsyncScheduler.delegate && AsyncScheduler.delegate !== this) {\n return AsyncScheduler.delegate.schedule(work, delay, state);\n }\n else {\n return _super.prototype.schedule.call(this, work, delay, state);\n }\n };\n AsyncScheduler.prototype.flush = function (action) {\n var actions = this.actions;\n if (this.active) {\n actions.push(action);\n return;\n }\n var error;\n this.active = true;\n do {\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n } while (action = actions.shift());\n this.active = false;\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n return AsyncScheduler;\n}(Scheduler));\nexport { AsyncScheduler };\n//# sourceMappingURL=AsyncScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nvar QueueAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueAction, _super);\n function QueueAction(scheduler, work) {\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n return _this;\n }\n QueueAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (delay > 0) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.delay = delay;\n this.state = state;\n this.scheduler.flush(this);\n return this;\n };\n QueueAction.prototype.execute = function (state, delay) {\n return (delay > 0 || this.closed) ?\n _super.prototype.execute.call(this, state, delay) :\n this._execute(state, delay);\n };\n QueueAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if ((delay !== null && delay > 0) || (delay === null && this.delay > 0)) {\n return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);\n }\n return scheduler.flush(this);\n };\n return QueueAction;\n}(AsyncAction));\nexport { QueueAction };\n//# sourceMappingURL=QueueAction.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncScheduler } from './AsyncScheduler';\nvar QueueScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(QueueScheduler, _super);\n function QueueScheduler() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return QueueScheduler;\n}(AsyncScheduler));\nexport { QueueScheduler };\n//# sourceMappingURL=QueueScheduler.js.map\n","/** PURE_IMPORTS_START tslib,_AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport * as tslib_1 from \"tslib\";\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nvar VirtualTimeScheduler = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualTimeScheduler, _super);\n function VirtualTimeScheduler(SchedulerAction, maxFrames) {\n if (SchedulerAction === void 0) {\n SchedulerAction = VirtualAction;\n }\n if (maxFrames === void 0) {\n maxFrames = Number.POSITIVE_INFINITY;\n }\n var _this = _super.call(this, SchedulerAction, function () { return _this.frame; }) || this;\n _this.maxFrames = maxFrames;\n _this.frame = 0;\n _this.index = -1;\n return _this;\n }\n VirtualTimeScheduler.prototype.flush = function () {\n var _a = this, actions = _a.actions, maxFrames = _a.maxFrames;\n var error, action;\n while ((action = actions[0]) && action.delay <= maxFrames) {\n actions.shift();\n this.frame = action.delay;\n if (error = action.execute(action.state, action.delay)) {\n break;\n }\n }\n if (error) {\n while (action = actions.shift()) {\n action.unsubscribe();\n }\n throw error;\n }\n };\n VirtualTimeScheduler.frameTimeFactor = 10;\n return VirtualTimeScheduler;\n}(AsyncScheduler));\nexport { VirtualTimeScheduler };\nvar VirtualAction = /*@__PURE__*/ (function (_super) {\n tslib_1.__extends(VirtualAction, _super);\n function VirtualAction(scheduler, work, index) {\n if (index === void 0) {\n index = scheduler.index += 1;\n }\n var _this = _super.call(this, scheduler, work) || this;\n _this.scheduler = scheduler;\n _this.work = work;\n _this.index = index;\n _this.active = true;\n _this.index = scheduler.index = index;\n return _this;\n }\n VirtualAction.prototype.schedule = function (state, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n if (!this.id) {\n return _super.prototype.schedule.call(this, state, delay);\n }\n this.active = false;\n var action = new VirtualAction(this.scheduler, this.work);\n this.add(action);\n return action.schedule(state, delay);\n };\n VirtualAction.prototype.requestAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n this.delay = scheduler.frame + delay;\n var actions = scheduler.actions;\n actions.push(this);\n actions.sort(VirtualAction.sortActions);\n return true;\n };\n VirtualAction.prototype.recycleAsyncId = function (scheduler, id, delay) {\n if (delay === void 0) {\n delay = 0;\n }\n return undefined;\n };\n VirtualAction.prototype._execute = function (state, delay) {\n if (this.active === true) {\n return _super.prototype._execute.call(this, state, delay);\n }\n };\n VirtualAction.sortActions = function (a, b) {\n if (a.delay === b.delay) {\n if (a.index === b.index) {\n return 0;\n }\n else if (a.index > b.index) {\n return 1;\n }\n else {\n return -1;\n }\n }\n else if (a.delay > b.delay) {\n return 1;\n }\n else {\n return -1;\n }\n };\n return VirtualAction;\n}(AsyncAction));\nexport { VirtualAction };\n//# sourceMappingURL=VirtualTimeScheduler.js.map\n","/** PURE_IMPORTS_START _AnimationFrameAction,_AnimationFrameScheduler PURE_IMPORTS_END */\nimport { AnimationFrameAction } from './AnimationFrameAction';\nimport { AnimationFrameScheduler } from './AnimationFrameScheduler';\nexport var animationFrame = /*@__PURE__*/ new AnimationFrameScheduler(AnimationFrameAction);\n//# sourceMappingURL=animationFrame.js.map\n","/** PURE_IMPORTS_START _AsapAction,_AsapScheduler PURE_IMPORTS_END */\nimport { AsapAction } from './AsapAction';\nimport { AsapScheduler } from './AsapScheduler';\nexport var asap = /*@__PURE__*/ new AsapScheduler(AsapAction);\n//# sourceMappingURL=asap.js.map\n","/** PURE_IMPORTS_START _AsyncAction,_AsyncScheduler PURE_IMPORTS_END */\nimport { AsyncAction } from './AsyncAction';\nimport { AsyncScheduler } from './AsyncScheduler';\nexport var async = /*@__PURE__*/ new AsyncScheduler(AsyncAction);\n//# sourceMappingURL=async.js.map\n","/** PURE_IMPORTS_START _QueueAction,_QueueScheduler PURE_IMPORTS_END */\nimport { QueueAction } from './QueueAction';\nimport { QueueScheduler } from './QueueScheduler';\nexport var queue = /*@__PURE__*/ new QueueScheduler(QueueAction);\n//# sourceMappingURL=queue.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function getSymbolIterator() {\n if (typeof Symbol !== 'function' || !Symbol.iterator) {\n return '@@iterator';\n }\n return Symbol.iterator;\n}\nexport var iterator = /*@__PURE__*/ getSymbolIterator();\nexport var $$iterator = iterator;\n//# sourceMappingURL=iterator.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var observable = /*@__PURE__*/ (function () { return typeof Symbol === 'function' && Symbol.observable || '@@observable'; })();\n//# sourceMappingURL=observable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var rxSubscriber = /*@__PURE__*/ (function () {\n return typeof Symbol === 'function'\n ? /*@__PURE__*/ Symbol('rxSubscriber')\n : '@@rxSubscriber_' + /*@__PURE__*/ Math.random();\n})();\nexport var $$rxSubscriber = rxSubscriber;\n//# sourceMappingURL=rxSubscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ArgumentOutOfRangeErrorImpl = /*@__PURE__*/ (function () {\n function ArgumentOutOfRangeErrorImpl() {\n Error.call(this);\n this.message = 'argument out of range';\n this.name = 'ArgumentOutOfRangeError';\n return this;\n }\n ArgumentOutOfRangeErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ArgumentOutOfRangeErrorImpl;\n})();\nexport var ArgumentOutOfRangeError = ArgumentOutOfRangeErrorImpl;\n//# sourceMappingURL=ArgumentOutOfRangeError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar EmptyErrorImpl = /*@__PURE__*/ (function () {\n function EmptyErrorImpl() {\n Error.call(this);\n this.message = 'no elements in sequence';\n this.name = 'EmptyError';\n return this;\n }\n EmptyErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return EmptyErrorImpl;\n})();\nexport var EmptyError = EmptyErrorImpl;\n//# sourceMappingURL=EmptyError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar nextHandle = 1;\nvar tasksByHandle = {};\nfunction runIfPresent(handle) {\n var cb = tasksByHandle[handle];\n if (cb) {\n cb();\n }\n}\nexport var Immediate = {\n setImmediate: function (cb) {\n var handle = nextHandle++;\n tasksByHandle[handle] = cb;\n Promise.resolve().then(function () { return runIfPresent(handle); });\n return handle;\n },\n clearImmediate: function (handle) {\n delete tasksByHandle[handle];\n },\n};\n//# sourceMappingURL=Immediate.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar ObjectUnsubscribedErrorImpl = /*@__PURE__*/ (function () {\n function ObjectUnsubscribedErrorImpl() {\n Error.call(this);\n this.message = 'object unsubscribed';\n this.name = 'ObjectUnsubscribedError';\n return this;\n }\n ObjectUnsubscribedErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return ObjectUnsubscribedErrorImpl;\n})();\nexport var ObjectUnsubscribedError = ObjectUnsubscribedErrorImpl;\n//# sourceMappingURL=ObjectUnsubscribedError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar TimeoutErrorImpl = /*@__PURE__*/ (function () {\n function TimeoutErrorImpl() {\n Error.call(this);\n this.message = 'Timeout has occurred';\n this.name = 'TimeoutError';\n return this;\n }\n TimeoutErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return TimeoutErrorImpl;\n})();\nexport var TimeoutError = TimeoutErrorImpl;\n//# sourceMappingURL=TimeoutError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar UnsubscriptionErrorImpl = /*@__PURE__*/ (function () {\n function UnsubscriptionErrorImpl(errors) {\n Error.call(this);\n this.message = errors ?\n errors.length + \" errors occurred during unsubscription:\\n\" + errors.map(function (err, i) { return i + 1 + \") \" + err.toString(); }).join('\\n ') : '';\n this.name = 'UnsubscriptionError';\n this.errors = errors;\n return this;\n }\n UnsubscriptionErrorImpl.prototype = /*@__PURE__*/ Object.create(Error.prototype);\n return UnsubscriptionErrorImpl;\n})();\nexport var UnsubscriptionError = UnsubscriptionErrorImpl;\n//# sourceMappingURL=UnsubscriptionError.js.map\n","/** PURE_IMPORTS_START _Subscriber PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nexport function canReportError(observer) {\n while (observer) {\n var _a = observer, closed_1 = _a.closed, destination = _a.destination, isStopped = _a.isStopped;\n if (closed_1 || isStopped) {\n return false;\n }\n else if (destination && destination instanceof Subscriber) {\n observer = destination;\n }\n else {\n observer = null;\n }\n }\n return true;\n}\n//# sourceMappingURL=canReportError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function hostReportError(err) {\n setTimeout(function () { throw err; }, 0);\n}\n//# sourceMappingURL=hostReportError.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function identity(x) {\n return x;\n}\n//# sourceMappingURL=identity.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArray = /*@__PURE__*/ (function () { return Array.isArray || (function (x) { return x && typeof x.length === 'number'; }); })();\n//# sourceMappingURL=isArray.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });\n//# sourceMappingURL=isArrayLike.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isDate(value) {\n return value instanceof Date && !isNaN(+value);\n}\n//# sourceMappingURL=isDate.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isFunction(x) {\n return typeof x === 'function';\n}\n//# sourceMappingURL=isFunction.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport function isInteropObservable(input) {\n return input && typeof input[Symbol_observable] === 'function';\n}\n//# sourceMappingURL=isInteropObservable.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport function isIterable(input) {\n return input && typeof input[Symbol_iterator] === 'function';\n}\n//# sourceMappingURL=isIterable.js.map\n","/** PURE_IMPORTS_START _isArray PURE_IMPORTS_END */\nimport { isArray } from './isArray';\nexport function isNumeric(val) {\n return !isArray(val) && (val - parseFloat(val) + 1) >= 0;\n}\n//# sourceMappingURL=isNumeric.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isObject(x) {\n return x !== null && typeof x === 'object';\n}\n//# sourceMappingURL=isObject.js.map\n","/** PURE_IMPORTS_START _Observable PURE_IMPORTS_END */\nimport { Observable } from '../Observable';\nexport function isObservable(obj) {\n return !!obj && (obj instanceof Observable || (typeof obj.lift === 'function' && typeof obj.subscribe === 'function'));\n}\n//# sourceMappingURL=isObservable.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isPromise(value) {\n return !!value && typeof value.subscribe !== 'function' && typeof value.then === 'function';\n}\n//# sourceMappingURL=isPromise.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function isScheduler(value) {\n return value && typeof value.schedule === 'function';\n}\n//# sourceMappingURL=isScheduler.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function noop() { }\n//# sourceMappingURL=noop.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport function not(pred, thisArg) {\n function notPred() {\n return !(notPred.pred.apply(notPred.thisArg, arguments));\n }\n notPred.pred = pred;\n notPred.thisArg = thisArg;\n return notPred;\n}\n//# sourceMappingURL=not.js.map\n","/** PURE_IMPORTS_START _noop PURE_IMPORTS_END */\nimport { noop } from './noop';\nexport function pipe() {\n var fns = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n fns[_i] = arguments[_i];\n }\n return pipeFromArray(fns);\n}\nexport function pipeFromArray(fns) {\n if (!fns) {\n return noop;\n }\n if (fns.length === 1) {\n return fns[0];\n }\n return function piped(input) {\n return fns.reduce(function (prev, fn) { return fn(prev); }, input);\n };\n}\n//# sourceMappingURL=pipe.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nvar __window = typeof window !== 'undefined' && window;\nvar __self = typeof self !== 'undefined' && typeof WorkerGlobalScope !== 'undefined' &&\n self instanceof WorkerGlobalScope && self;\nvar __global = typeof global !== 'undefined' && global;\nvar _root = __window || __global || __self;\n/*@__PURE__*/ (function () {\n if (!_root) {\n throw /*@__PURE__*/ new Error('RxJS could not find any global context (window, self, global)');\n }\n})();\nexport { _root as root };\n//# sourceMappingURL=root.js.map\n","/** PURE_IMPORTS_START _subscribeToArray,_subscribeToPromise,_subscribeToIterable,_subscribeToObservable,_isArrayLike,_isPromise,_isObject,_symbol_iterator,_symbol_observable PURE_IMPORTS_END */\nimport { subscribeToArray } from './subscribeToArray';\nimport { subscribeToPromise } from './subscribeToPromise';\nimport { subscribeToIterable } from './subscribeToIterable';\nimport { subscribeToObservable } from './subscribeToObservable';\nimport { isArrayLike } from './isArrayLike';\nimport { isPromise } from './isPromise';\nimport { isObject } from './isObject';\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeTo = function (result) {\n if (!!result && typeof result[Symbol_observable] === 'function') {\n return subscribeToObservable(result);\n }\n else if (isArrayLike(result)) {\n return subscribeToArray(result);\n }\n else if (isPromise(result)) {\n return subscribeToPromise(result);\n }\n else if (!!result && typeof result[Symbol_iterator] === 'function') {\n return subscribeToIterable(result);\n }\n else {\n var value = isObject(result) ? 'an invalid object' : \"'\" + result + \"'\";\n var msg = \"You provided \" + value + \" where a stream was expected.\"\n + ' You can provide an Observable, Promise, Array, or Iterable.';\n throw new TypeError(msg);\n }\n};\n//# sourceMappingURL=subscribeTo.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport var subscribeToArray = function (array) {\n return function (subscriber) {\n for (var i = 0, len = array.length; i < len && !subscriber.closed; i++) {\n subscriber.next(array[i]);\n }\n subscriber.complete();\n };\n};\n//# sourceMappingURL=subscribeToArray.js.map\n","/** PURE_IMPORTS_START _symbol_iterator PURE_IMPORTS_END */\nimport { iterator as Symbol_iterator } from '../symbol/iterator';\nexport var subscribeToIterable = function (iterable) {\n return function (subscriber) {\n var iterator = iterable[Symbol_iterator]();\n do {\n var item = iterator.next();\n if (item.done) {\n subscriber.complete();\n break;\n }\n subscriber.next(item.value);\n if (subscriber.closed) {\n break;\n }\n } while (true);\n if (typeof iterator.return === 'function') {\n subscriber.add(function () {\n if (iterator.return) {\n iterator.return();\n }\n });\n }\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToIterable.js.map\n","/** PURE_IMPORTS_START _symbol_observable PURE_IMPORTS_END */\nimport { observable as Symbol_observable } from '../symbol/observable';\nexport var subscribeToObservable = function (obj) {\n return function (subscriber) {\n var obs = obj[Symbol_observable]();\n if (typeof obs.subscribe !== 'function') {\n throw new TypeError('Provided object does not correctly implement Symbol.observable');\n }\n else {\n return obs.subscribe(subscriber);\n }\n };\n};\n//# sourceMappingURL=subscribeToObservable.js.map\n","/** PURE_IMPORTS_START _hostReportError PURE_IMPORTS_END */\nimport { hostReportError } from './hostReportError';\nexport var subscribeToPromise = function (promise) {\n return function (subscriber) {\n promise.then(function (value) {\n if (!subscriber.closed) {\n subscriber.next(value);\n subscriber.complete();\n }\n }, function (err) { return subscriber.error(err); })\n .then(null, hostReportError);\n return subscriber;\n };\n};\n//# sourceMappingURL=subscribeToPromise.js.map\n","/** PURE_IMPORTS_START _InnerSubscriber,_subscribeTo,_Observable PURE_IMPORTS_END */\nimport { InnerSubscriber } from '../InnerSubscriber';\nimport { subscribeTo } from './subscribeTo';\nimport { Observable } from '../Observable';\nexport function subscribeToResult(outerSubscriber, result, outerValue, outerIndex, destination) {\n if (destination === void 0) {\n destination = new InnerSubscriber(outerSubscriber, outerValue, outerIndex);\n }\n if (destination.closed) {\n return undefined;\n }\n if (result instanceof Observable) {\n return result.subscribe(destination);\n }\n return subscribeTo(result)(destination);\n}\n//# sourceMappingURL=subscribeToResult.js.map\n","/** PURE_IMPORTS_START _Subscriber,_symbol_rxSubscriber,_Observer PURE_IMPORTS_END */\nimport { Subscriber } from '../Subscriber';\nimport { rxSubscriber as rxSubscriberSymbol } from '../symbol/rxSubscriber';\nimport { empty as emptyObserver } from '../Observer';\nexport function toSubscriber(nextOrObserver, error, complete) {\n if (nextOrObserver) {\n if (nextOrObserver instanceof Subscriber) {\n return nextOrObserver;\n }\n if (nextOrObserver[rxSubscriberSymbol]) {\n return nextOrObserver[rxSubscriberSymbol]();\n }\n }\n if (!nextOrObserver && !error && !complete) {\n return new Subscriber(emptyObserver);\n }\n return new Subscriber(nextOrObserver, error, complete);\n}\n//# sourceMappingURL=toSubscriber.js.map\n","/** PURE_IMPORTS_START PURE_IMPORTS_END */\nexport { audit } from '../internal/operators/audit';\nexport { auditTime } from '../internal/operators/auditTime';\nexport { buffer } from '../internal/operators/buffer';\nexport { bufferCount } from '../internal/operators/bufferCount';\nexport { bufferTime } from '../internal/operators/bufferTime';\nexport { bufferToggle } from '../internal/operators/bufferToggle';\nexport { bufferWhen } from '../internal/operators/bufferWhen';\nexport { catchError } from '../internal/operators/catchError';\nexport { combineAll } from '../internal/operators/combineAll';\nexport { combineLatest } from '../internal/operators/combineLatest';\nexport { concat } from '../internal/operators/concat';\nexport { concatAll } from '../internal/operators/concatAll';\nexport { concatMap } from '../internal/operators/concatMap';\nexport { concatMapTo } from '../internal/operators/concatMapTo';\nexport { count } from '../internal/operators/count';\nexport { debounce } from '../internal/operators/debounce';\nexport { debounceTime } from '../internal/operators/debounceTime';\nexport { defaultIfEmpty } from '../internal/operators/defaultIfEmpty';\nexport { delay } from '../internal/operators/delay';\nexport { delayWhen } from '../internal/operators/delayWhen';\nexport { dematerialize } from '../internal/operators/dematerialize';\nexport { distinct } from '../internal/operators/distinct';\nexport { distinctUntilChanged } from '../internal/operators/distinctUntilChanged';\nexport { distinctUntilKeyChanged } from '../internal/operators/distinctUntilKeyChanged';\nexport { elementAt } from '../internal/operators/elementAt';\nexport { endWith } from '../internal/operators/endWith';\nexport { every } from '../internal/operators/every';\nexport { exhaust } from '../internal/operators/exhaust';\nexport { exhaustMap } from '../internal/operators/exhaustMap';\nexport { expand } from '../internal/operators/expand';\nexport { filter } from '../internal/operators/filter';\nexport { finalize } from '../internal/operators/finalize';\nexport { find } from '../internal/operators/find';\nexport { findIndex } from '../internal/operators/findIndex';\nexport { first } from '../internal/operators/first';\nexport { groupBy } from '../internal/operators/groupBy';\nexport { ignoreElements } from '../internal/operators/ignoreElements';\nexport { isEmpty } from '../internal/operators/isEmpty';\nexport { last } from '../internal/operators/last';\nexport { map } from '../internal/operators/map';\nexport { mapTo } from '../internal/operators/mapTo';\nexport { materialize } from '../internal/operators/materialize';\nexport { max } from '../internal/operators/max';\nexport { merge } from '../internal/operators/merge';\nexport { mergeAll } from '../internal/operators/mergeAll';\nexport { mergeMap } from '../internal/operators/mergeMap';\nexport { mergeMap as flatMap } from '../internal/operators/mergeMap';\nexport { mergeMapTo } from '../internal/operators/mergeMapTo';\nexport { mergeScan } from '../internal/operators/mergeScan';\nexport { min } from '../internal/operators/min';\nexport { multicast } from '../internal/operators/multicast';\nexport { observeOn } from '../internal/operators/observeOn';\nexport { onErrorResumeNext } from '../internal/operators/onErrorResumeNext';\nexport { pairwise } from '../internal/operators/pairwise';\nexport { partition } from '../internal/operators/partition';\nexport { pluck } from '../internal/operators/pluck';\nexport { publish } from '../internal/operators/publish';\nexport { publishBehavior } from '../internal/operators/publishBehavior';\nexport { publishLast } from '../internal/operators/publishLast';\nexport { publishReplay } from '../internal/operators/publishReplay';\nexport { race } from '../internal/operators/race';\nexport { reduce } from '../internal/operators/reduce';\nexport { repeat } from '../internal/operators/repeat';\nexport { repeatWhen } from '../internal/operators/repeatWhen';\nexport { retry } from '../internal/operators/retry';\nexport { retryWhen } from '../internal/operators/retryWhen';\nexport { refCount } from '../internal/operators/refCount';\nexport { sample } from '../internal/operators/sample';\nexport { sampleTime } from '../internal/operators/sampleTime';\nexport { scan } from '../internal/operators/scan';\nexport { sequenceEqual } from '../internal/operators/sequenceEqual';\nexport { share } from '../internal/operators/share';\nexport { shareReplay } from '../internal/operators/shareReplay';\nexport { single } from '../internal/operators/single';\nexport { skip } from '../internal/operators/skip';\nexport { skipLast } from '../internal/operators/skipLast';\nexport { skipUntil } from '../internal/operators/skipUntil';\nexport { skipWhile } from '../internal/operators/skipWhile';\nexport { startWith } from '../internal/operators/startWith';\nexport { subscribeOn } from '../internal/operators/subscribeOn';\nexport { switchAll } from '../internal/operators/switchAll';\nexport { switchMap } from '../internal/operators/switchMap';\nexport { switchMapTo } from '../internal/operators/switchMapTo';\nexport { take } from '../internal/operators/take';\nexport { takeLast } from '../internal/operators/takeLast';\nexport { takeUntil } from '../internal/operators/takeUntil';\nexport { takeWhile } from '../internal/operators/takeWhile';\nexport { tap } from '../internal/operators/tap';\nexport { throttle } from '../internal/operators/throttle';\nexport { throttleTime } from '../internal/operators/throttleTime';\nexport { throwIfEmpty } from '../internal/operators/throwIfEmpty';\nexport { timeInterval } from '../internal/operators/timeInterval';\nexport { timeout } from '../internal/operators/timeout';\nexport { timeoutWith } from '../internal/operators/timeoutWith';\nexport { timestamp } from '../internal/operators/timestamp';\nexport { toArray } from '../internal/operators/toArray';\nexport { window } from '../internal/operators/window';\nexport { windowCount } from '../internal/operators/windowCount';\nexport { windowTime } from '../internal/operators/windowTime';\nexport { windowToggle } from '../internal/operators/windowToggle';\nexport { windowWhen } from '../internal/operators/windowWhen';\nexport { withLatestFrom } from '../internal/operators/withLatestFrom';\nexport { zip } from '../internal/operators/zip';\nexport { zipAll } from '../internal/operators/zipAll';\n//# sourceMappingURL=index.js.map\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set anchor blur\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is blurred\n */\nexport function setAnchorBlur(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"blur\" : \"\")\n}\n\n/**\n * Reset anchor blur\n *\n * @param el - Anchor element\n */\nexport function resetAnchorBlur(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set anchor active\n *\n * @param el - Anchor element\n * @param value - Whether the anchor is active\n */\nexport function setAnchorActive(\n el: HTMLElement, value: boolean\n): void {\n el.classList.toggle(\"md-nav__link--active\", value)\n}\n\n/**\n * Reset anchor active\n *\n * @param el - Anchor element\n */\nexport function resetAnchorActive(\n el: HTMLElement\n): void {\n el.classList.remove(\"md-nav__link--active\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./shadow\"\nexport * from \"./title\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header shadow\n *\n * @param el - Header element\n * @param value - Whether the shadow is shown\n */\nexport function setHeaderShadow(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"shadow\" : \"\")\n}\n\n/**\n * Reset header shadow\n *\n * @param el - Header element\n */\nexport function resetHeaderShadow(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set header title\n *\n * @param el - Header title element\n * @param value - Whether the title is shown\n */\nexport function setHeaderTitle(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"active\" : \"\")\n}\n\n/**\n * Reset header title\n *\n * @param el - Header element\n */\nexport function resetHeaderTitle(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./anchor\"\nexport * from \"./header\"\nexport * from \"./main\"\nexport * from \"./search\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set hidden\n *\n * @param el - Hideable element\n * @param value - Whether the element is hidden\n */\nexport function setHidden(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"hidden\" : \"\")\n}\n\n/**\n * Reset hidden\n *\n * @param el - Hideable element\n */\nexport function resetHidden(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./hideable\"\nexport * from \"./sidebar\"\nexport * from \"./scrollable\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Global augmentations\n */\ndeclare global {\n interface CSSStyleDeclaration {\n webkitOverflowScrolling: \"touch\" | \"\"\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function setOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"touch\"\n}\n\n/**\n * Reset overflow scrolling\n *\n * @param el - Scrollable element\n */\nexport function resetOverflowScrolling(\n el: HTMLElement\n): void {\n el.style.webkitOverflowScrolling = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set scroll lock\n *\n * @param el - Scrollable element\n * @param value - Vertical offset\n */\nexport function setScrollLock(\n el: HTMLElement, value: number\n): void {\n el.setAttribute(\"data-md-state\", \"lock\")\n el.style.top = `-${value}px`\n}\n\n/**\n * Reset scroll lock\n *\n * @param el - Scrollable element\n */\nexport function resetScrollLock(\n el: HTMLElement\n): void {\n const value = -1 * parseInt(el.style.top, 10)\n el.removeAttribute(\"data-md-state\")\n el.style.top = \"\"\n if (value)\n window.scrollTo(0, value)\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar offset\n *\n * @param el - Sidebar element\n * @param value - Sidebar offset\n */\nexport function setSidebarOffset(\n el: HTMLElement, value: number\n): void {\n el.style.top = `${value}px`\n}\n\n/**\n * Reset sidebar offset\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarOffset(\n el: HTMLElement\n): void {\n el.style.top = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar height\n *\n * @param el - Sidebar element\n * @param value - Sidebar height\n */\nexport function setSidebarHeight(\n el: HTMLElement, value: number\n): void {\n el.style.height = `${value}px`\n}\n\n/**\n * Reset sidebar height\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarHeight(\n el: HTMLElement\n): void {\n el.style.height = \"\"\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set sidebar lock\n *\n * @param el - Sidebar element\n * @param value - Whether the sidebar is locked\n */\nexport function setSidebarLock(\n el: HTMLElement, value: boolean\n): void {\n el.setAttribute(\"data-md-state\", value ? \"lock\" : \"\")\n}\n\n/**\n * Reset sidebar lock\n *\n * @param el - Sidebar element\n */\nexport function resetSidebarLock(\n el: HTMLElement\n): void {\n el.removeAttribute(\"data-md-state\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./result\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set number of search results\n *\n * @param el - Search result metadata element\n * @param value - Number of results\n */\nexport function setSearchResultMeta(\n el: HTMLElement, value: number\n): void {\n switch (value) {\n\n /* No results */\n case 0:\n el.textContent = translate(\"search.result.none\")\n break\n\n /* One result */\n case 1:\n el.textContent = translate(\"search.result.one\")\n break\n\n /* Multiple result */\n default:\n el.textContent = translate(\"search.result.other\", value.toString())\n }\n}\n\n/**\n * Reset number of search results\n *\n * @param el - Search result metadata element\n */\nexport function resetSearchResultMeta(\n el: HTMLElement\n): void {\n el.textContent = translate(\"search.result.placeholder\")\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Add an element to the search result list\n *\n * @param el - Search result list element\n * @param child - Search result element\n */\nexport function addToSearchResultList(\n el: HTMLElement, child: HTMLElement\n): void {\n el.appendChild(child)\n}\n\n/**\n * Reset search result list\n *\n * @param el - Search result list element\n */\nexport function resetSearchResultList(\n el: HTMLElement\n): void {\n el.innerHTML = \"\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { EMPTY, Observable, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n scan,\n shareReplay,\n switchMap\n} from \"rxjs/operators\"\n\nimport { getElement } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Component\n */\nexport type Component =\n | \"container\" /* Container */\n | \"header\" /* Header */\n | \"header-title\" /* Header title */\n | \"hero\" /* Hero */\n | \"main\" /* Main area */\n | \"navigation\" /* Navigation */\n | \"search\" /* Search */\n | \"search-query\" /* Search input */\n | \"search-reset\" /* Search reset */\n | \"search-result\" /* Search results */\n | \"tabs\" /* Tabs */\n | \"toc\" /* Table of contents */\n\n/**\n * Component map\n */\nexport type ComponentMap = {\n [P in Component]?: HTMLElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Component map observable\n */\nlet components$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to components with given names\n *\n * This function will maintain bindings to the elements identified by the given\n * names in-between document switches and update the elements in-place.\n *\n * @param names - Component names\n * @param options - Options\n */\nexport function setupComponents(\n names: Component[], { document$ }: WatchOptions\n): void {\n components$ = document$\n .pipe(\n\n /* Build component map */\n map(document => names.reduce((components, name) => {\n const el = getElement(`[data-md-component=${name}]`, document)\n return {\n ...components,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Re-compute component map on document switch */\n scan((prev, next) => {\n for (const name of names) {\n switch (name) {\n\n /* Top-level components: update */\n case \"header-title\":\n case \"container\":\n if (name in prev && typeof prev[name] !== \"undefined\") {\n prev[name]!.replaceWith(next[name]!)\n prev[name] = next[name]\n }\n break\n\n /* All other components: rebind */\n default:\n if (typeof next[name] !== \"undefined\")\n prev[name] = getElement(`[data-md-component=${name}]`)\n else\n delete prev[name]\n }\n }\n return prev\n }),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a component\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @template T - Element type\n *\n * @param name - Component name\n *\n * @return Element observable\n */\nexport function useComponent(\n name: \"search-query\"\n): Observable\nexport function useComponent(\n name: Component\n): Observable\nexport function useComponent(\n name: Component\n): Observable {\n return components$\n .pipe(\n switchMap(components => (\n typeof components[name] !== \"undefined\"\n ? of(components[name] as T)\n : EMPTY\n )),\n distinctUntilChanged()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { switchMap } from \"rxjs/operators\"\n\nimport { Header, Viewport, watchHeader } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount header from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHeader(\n { viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => watchHeader(el, { viewport$ }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./title\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { filter, map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n getElement,\n paintHeaderTitle,\n watchViewportAt\n} from \"observables\"\n\nimport { useComponent } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount header title from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHeaderTitle(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => useComponent(\"main\")\n .pipe(\n map(main => getElement(\"h1, h2, h3, h4, h5, h6\", main)!),\n filter(hx => typeof hx !== \"undefined\"),\n switchMap(hx => watchViewportAt(hx, { header$, viewport$ })\n .pipe(\n map(({ offset: { y } }) => y >= hx.offsetHeight),\n paintHeaderTitle(el)\n )\n )\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n paintHideable,\n watchViewportAt\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Hero\n */\nexport interface Hero {\n hidden: boolean /* Whether the hero is hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount hero from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountHero(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => watchViewportAt(el, { header$, viewport$ })\n .pipe(\n paintHideable(el, 20),\n map(hidden => ({ hidden }))\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./header\"\nexport * from \"./hero\"\nexport * from \"./main\"\nexport * from \"./navigation\"\nexport * from \"./search\"\nexport * from \"./tabs\"\nexport * from \"./toc\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, Subject, pipe } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap, tap } from \"rxjs/operators\"\n\nimport {\n Header,\n Main,\n Viewport,\n paintHeaderShadow,\n watchMain\n} from \"observables\"\n\nimport { useComponent } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount main area from source observable\n *\n * The header must be connected to the main area observable outside of the\n * operator function, as the header will persist in-between document switches\n * while the main area is replaced. However, the header observable must be\n * passed to this function, so we connect both via a long-living subject.\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountMain(\n { header$, viewport$ }: MountOptions\n): OperatorFunction {\n const main$ = new Subject
()\n\n /* Connect to main area observable via long-living subject */\n useComponent(\"header\")\n .pipe(\n switchMap(header => main$\n .pipe(\n distinctUntilKeyChanged(\"active\"),\n paintHeaderShadow(header)\n )\n )\n )\n .subscribe()\n\n /* Return operator */\n return pipe(\n switchMap(el => watchMain(el, { header$, viewport$ })),\n tap(main => main$.next(main))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Main,\n NavigationLayer,\n Sidebar,\n Viewport,\n getElements,\n paintNavigationLayer,\n paintSidebar,\n watchNavigationLayer,\n watchSidebar\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation for [screen -]\n */\nexport interface NavigationBelowScreen {\n layer: NavigationLayer /* Active layer */\n}\n\n/**\n * Navigation for [screen +]\n */\nexport interface NavigationAboveScreen {\n sidebar: Sidebar /* Sidebar */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Navigation\n */\nexport type Navigation =\n | NavigationBelowScreen\n | NavigationAboveScreen\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
/* Header observable */\n main$: Observable
/* Main area observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Screen media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount navigation from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountNavigation(\n { header$, main$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* [screen +]: Mount navigation in sidebar */\n if (screen) {\n return watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ }),\n map(sidebar => ({ sidebar }))\n )\n\n /* [screen -]: Mount navigation in drawer */\n } else {\n const els = getElements(\"nav\", el)\n return watchNavigationLayer(els)\n .pipe(\n paintNavigationLayer(els),\n map(layer => ({ layer }))\n )\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, combineLatest, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport { SearchQuery } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search\n */\nexport interface Search {\n query: SearchQuery /* Search query */\n result: SearchResult[] /* Search result list */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n reset$: Observable /* Search reset observable */\n result$: Observable /* Search result observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearch(\n { query$, reset$, result$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(() => combineLatest([query$, result$, reset$])\n .pipe(\n map(([query, result]) => ({ query, result }))\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./query\"\nexport * from \"./reset\"\nexport * from \"./result\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n SearchQuery,\n WorkerHandler,\n setToggle,\n useToggle,\n watchSearchQuery\n} from \"observables\"\nimport {\n SearchMessage,\n SearchMessageType,\n SearchQueryMessage\n} from \"workers\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search query from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchQuery(\n { tx$ }: WorkerHandler, options: MountOptions = {}\n): OperatorFunction {\n const toggle$ = useToggle(\"search\")\n return pipe(\n switchMap(el => {\n const query$ = watchSearchQuery(el, options)\n\n /* Subscribe worker to search query */\n query$\n .pipe(\n distinctUntilKeyChanged(\"value\"),\n map(({ value }) => ({\n type: SearchMessageType.QUERY,\n data: value\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Toggle search on focus */\n query$\n .pipe(\n distinctUntilKeyChanged(\"focus\"),\n withLatestFrom(toggle$)\n )\n .subscribe(([{ focus }, toggle]) => {\n if (focus)\n setToggle(toggle, focus)\n })\n\n /* Return search query */\n return query$\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, pipe } from \"rxjs\"\nimport {\n mapTo,\n startWith,\n switchMap,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport { setElementFocus, watchSearchReset } from \"observables\"\n\nimport { useComponent } from \"../../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search reset from source observable\n *\n * @return Operator function\n */\nexport function mountSearchReset(): OperatorFunction {\n return pipe(\n switchMap(el => watchSearchReset(el)\n .pipe(\n switchMapTo(useComponent(\"search-query\")),\n tap(setElementFocus),\n mapTo(undefined)\n )\n ),\n startWith(undefined)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, OperatorFunction, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n filter,\n map,\n pluck,\n switchMap\n} from \"rxjs/operators\"\n\nimport { SearchResult } from \"integrations/search\"\nimport {\n SearchQuery,\n WorkerHandler,\n paintSearchResult,\n watchElementOffset\n} from \"observables\"\nimport {\n SearchMessage,\n isSearchResultMessage\n} from \"workers\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n query$: Observable /* Search query observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount search result from source observable\n *\n * @param handler - Worker handler\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountSearchResult(\n { rx$ }: WorkerHandler, { query$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => {\n const container = el.parentElement!\n\n /* Compute whether there are more search results to fetch */\n const fetch$ = watchElementOffset(container)\n .pipe(\n map(({ y }) => {\n return y >= container.scrollHeight - container.offsetHeight - 16\n }),\n distinctUntilChanged(),\n filter(identity)\n )\n\n /* Paint search results */\n return rx$\n .pipe(\n filter(isSearchResultMessage),\n pluck(\"data\"),\n paintSearchResult(el, { query$, fetch$ })\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, OperatorFunction, of, pipe } from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n Header,\n Viewport,\n paintHideable,\n watchViewportAt\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Tabs\n */\nexport interface Tabs {\n hidden: boolean /* Whether the tabs are hidden */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n screen$: Observable /* Media screen observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount tabs from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTabs(\n { header$, viewport$, screen$ }: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => screen$\n .pipe(\n switchMap(screen => {\n\n /* Mount tabs above screen breakpoint */\n if (screen) {\n return watchViewportAt(el, { header$, viewport$ })\n .pipe(\n paintHideable(el, 10),\n map(hidden => ({ hidden }))\n )\n\n /* Mount tabs below screen breakpoint */\n } else {\n return of({ hidden: true })\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n Observable,\n OperatorFunction,\n combineLatest,\n of,\n pipe\n} from \"rxjs\"\nimport { map, switchMap } from \"rxjs/operators\"\n\nimport {\n AnchorList,\n Header,\n Main,\n Sidebar,\n Viewport,\n getElements,\n paintAnchorList,\n paintSidebar,\n watchAnchorList,\n watchSidebar\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Table of contents for [tablet -]\n */\nexport interface TableOfContentsBelowTablet {} // tslint:disable-line\n\n/**\n * Table of contents for [tablet +]\n */\nexport interface TableOfContentsAboveTablet {\n sidebar: Sidebar /* Sidebar */\n anchors: AnchorList /* Anchor list */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Table of contents\n */\nexport type TableOfContents =\n | TableOfContentsBelowTablet\n | TableOfContentsAboveTablet\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n header$: Observable
/* Header observable */\n main$: Observable
/* Main area observable */\n viewport$: Observable /* Viewport observable */\n tablet$: Observable /* Tablet media observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount table of contents from source observable\n *\n * @param options - Options\n *\n * @return Operator function\n */\nexport function mountTableOfContents(\n { header$, main$, viewport$, tablet$}: MountOptions\n): OperatorFunction {\n return pipe(\n switchMap(el => tablet$\n .pipe(\n switchMap(tablet => {\n\n /* [tablet +]: Mount table of contents in sidebar */\n if (tablet) {\n const els = getElements(\".md-nav__link\", el)\n\n /* Watch and paint sidebar */\n const sidebar$ = watchSidebar(el, { main$, viewport$ })\n .pipe(\n paintSidebar(el, { header$ })\n )\n\n /* Watch and paint anchor list (scroll spy) */\n const anchors$ = watchAnchorList(els, { header$, viewport$ })\n .pipe(\n paintAnchorList(els)\n )\n\n /* Combine into a single hot observable */\n return combineLatest([sidebar$, anchors$])\n .pipe(\n map(([sidebar, anchors]) => ({ sidebar, anchors }))\n )\n\n /* [tablet -]: Unmount table of contents */\n } else {\n return of({})\n }\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// TODO: remove this after we finished refactoring\n// tslint:disable\n\nimport \"../stylesheets/main.scss\"\nimport \"../stylesheets/palette.scss\"\n\nimport { values } from \"ramda\"\nimport {\n merge,\n combineLatest,\n animationFrameScheduler,\n fromEvent,\n of,\n NEVER\n} from \"rxjs\"\nimport {\n delay,\n switchMap,\n tap,\n filter,\n withLatestFrom,\n observeOn,\n take,\n mapTo,\n shareReplay,\n sample,\n share,\n map,\n pluck,\n debounceTime,\n distinctUntilKeyChanged,\n distinctUntilChanged,\n bufferCount\n} from \"rxjs/operators\"\n\nimport {\n watchToggle,\n setToggle,\n getElements,\n watchMedia,\n watchDocument,\n watchLocation,\n watchLocationHash,\n watchViewport,\n setupToggles,\n useToggle,\n getElement,\n setViewportOffset,\n ViewportOffset,\n getLocation\n} from \"./observables\"\nimport { setupSearchWorker } from \"./workers\"\n\nimport { setScrollLock, resetScrollLock } from \"actions\"\nimport {\n mountHeader,\n mountHero,\n mountMain,\n mountNavigation,\n mountSearch,\n mountTableOfContents,\n mountTabs,\n useComponent,\n setupComponents,\n mountHeaderTitle,\n mountSearchQuery,\n mountSearchReset,\n mountSearchResult\n} from \"components\"\nimport { setupClipboard } from \"./integrations/clipboard\"\nimport { setupKeyboard } from \"./integrations/keyboard\"\nimport {\n patchTables,\n patchDetails,\n patchScrollfix,\n patchSource,\n patchScripts\n} from \"patches\"\nimport { isConfig } from \"utilities\"\nimport { setupDialog } from \"integrations/dialog\"\n\n/* ------------------------------------------------------------------------- */\n\ndocument.documentElement.classList.remove(\"no-js\")\ndocument.documentElement.classList.add(\"js\")\n\n/* Test for iOS */\nif (navigator.userAgent.match(/(iPad|iPhone|iPod)/g))\n document.documentElement.classList.add(\"ios\")\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Initialize Material for MkDocs\n *\n * @param config - Configuration\n */\nexport function initialize(config: unknown) {\n if (!isConfig(config))\n throw new SyntaxError(`Invalid configuration: ${JSON.stringify(config)}`)\n\n /* Setup user interface observables */\n const location$ = watchLocation()\n const hash$ = watchLocationHash()\n const viewport$ = watchViewport()\n const tablet$ = watchMedia(\"(min-width: 960px)\")\n const screen$ = watchMedia(\"(min-width: 1220px)\")\n\n /* Setup document observable */\n const document$ = config.feature.instant\n ? watchDocument({ location$ })\n : watchDocument()\n\n /* Setup toggle bindings */\n setupToggles([\n \"drawer\", /* Toggle for drawer */\n \"search\" /* Toggle for search */\n ], { document$ })\n\n /* Setup component bindings */\n setupComponents([\n \"container\", /* Container */\n \"header\", /* Header */\n \"header-title\", /* Header title */\n \"hero\", /* Hero */\n \"main\", /* Main area */\n \"navigation\", /* Navigation */\n \"search\", /* Search */\n \"search-query\", /* Search input */\n \"search-reset\", /* Search reset */\n \"search-result\", /* Search results */\n \"tabs\", /* Tabs */\n \"toc\" /* Table of contents */\n ], { document$ })\n\n /* ----------------------------------------------------------------------- */\n\n const worker = setupSearchWorker(config.worker.search, {\n base: config.base, location$\n })\n\n /* ----------------------------------------------------------------------- */\n\n /* Create header observable */\n const header$ = useComponent(\"header\")\n .pipe(\n mountHeader({ viewport$ }),\n shareReplay(1)\n )\n\n const main$ = useComponent(\"main\")\n .pipe(\n mountMain({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n /* Mount search query */\n const query$ = useComponent(\"search-query\")\n .pipe(\n mountSearchQuery(worker),\n shareReplay(1) // TODO: this must be put onto EVERY component!\n )\n\n /* Mount search reset */\n const reset$ = useComponent(\"search-reset\")\n .pipe(\n mountSearchReset(),\n shareReplay(1)\n )\n\n /* Mount search result */\n const result$ = useComponent(\"search-result\")\n .pipe(\n mountSearchResult(worker, { query$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const search$ = useComponent(\"search\")\n .pipe(\n mountSearch({ query$, reset$, result$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const navigation$ = useComponent(\"navigation\")\n .pipe(\n mountNavigation({ header$, main$, viewport$, screen$ }),\n shareReplay(1) // shareReplay because there might be late subscribers\n )\n\n const toc$ = useComponent(\"toc\")\n .pipe(\n mountTableOfContents({ header$, main$, viewport$, tablet$ }),\n shareReplay(1)\n )\n\n const tabs$ = useComponent(\"tabs\")\n .pipe(\n mountTabs({ header$, viewport$, screen$ }),\n shareReplay(1)\n )\n\n const hero$ = useComponent(\"hero\")\n .pipe(\n mountHero({ header$, viewport$ }),\n shareReplay(1)\n )\n\n const title$ = useComponent(\"header-title\")\n .pipe(\n mountHeaderTitle({ header$, viewport$ }),\n shareReplay(1)\n )\n\n /* ----------------------------------------------------------------------- */\n\n const keyboard$ = setupKeyboard()\n\n patchDetails({ document$, hash$ })\n patchScripts({ document$ })\n patchSource({ document$ })\n patchTables({ document$ })\n\n /* Force 1px scroll offset to trigger overflow scrolling */\n patchScrollfix({ document$ })\n\n /* Setup clipboard and dialog */\n const dialog$ = setupDialog()\n const clipboard$ = setupClipboard({ document$, dialog$ })\n\n /* ----------------------------------------------------------------------- */\n\n // Close drawer and search on hash change\n // put into navigation...\n // TODO: replace with popstate?\n hash$.subscribe(() => {\n useToggle(\"drawer\").subscribe(el => {\n setToggle(el, false)\n })\n })\n\n // put into search...\n hash$\n .pipe(\n switchMap(hash => useToggle(\"search\")\n .pipe(\n filter(x => x.checked), // only active\n tap(toggle => setToggle(toggle, false)),\n delay(125), // ensure that it runs after the body scroll reset...\n mapTo(hash)\n )\n )\n )\n .subscribe(hash => {\n getElement(`[id=\"${hash}\"]`)!.scrollIntoView()\n })\n\n // Scroll lock // document -> document$ => { body } !?\n // put into search...\n const toggle$ = useToggle(\"search\")\n combineLatest([\n toggle$.pipe(switchMap(watchToggle)),\n tablet$,\n ])\n .pipe(\n withLatestFrom(viewport$),\n switchMap(([[toggle, tablet], { offset: { y }}]) => {\n const active = toggle && !tablet\n return document$\n .pipe(\n delay(active ? 400 : 100), // TOOD: directly combine this with the hash!\n observeOn(animationFrameScheduler),\n tap(({ body }) => active\n ? setScrollLock(body, y)\n : resetScrollLock(body)\n )\n )\n })\n )\n .subscribe()\n\n /* ----------------------------------------------------------------------- */\n\n /**\n * Location change\n */\n interface State {\n url: URL\n data?: ViewportOffset\n }\n\n function isInternalLink(el: HTMLAnchorElement | URL) {\n return el.host === location.host && (\n // TODO: Improve regex\n !el.pathname || el.pathname === \"/\" || /\\/[\\w-]+(?:\\/?|\\.html)$/i.test(el.pathname) // TODO: provide some test cases\n )\n }\n\n // on same page!\n function isAnchorLink(el: HTMLAnchorElement | URL) {\n return el.pathname === location.pathname && el.hash.length > 0\n }\n\n function compareState(\n { url: a }: State, { url: b }: State\n ) {\n return a.href === b.href\n }\n\n // instant loading\n if (config.feature.instant) {\n\n /* Disable automatic scroll restoration, as it doesn't work nicely */\n if (\"scrollRestoration\" in history)\n history.scrollRestoration = \"manual\"\n\n /* Resolve relative links for stability */\n for (const selector of [\n `link[rel=\"shortcut icon\"]`,\n `link[rel=\"stylesheet\"]`\n ])\n for (const el of getElements(selector))\n el.href = el.href\n\n /* Intercept internal link clicks */\n const internal$ = fromEvent(document.body, \"click\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n switchMap(ev => {\n if (ev.target instanceof HTMLElement) {\n const el = ev.target.closest(\"a\")\n if (el && isInternalLink(el)) {\n if (!isAnchorLink(el))\n ev.preventDefault()\n return of(el.href)\n }\n }\n return NEVER\n }),\n distinctUntilChanged(),\n map(href => ({ url: new URL(href) })),\n share()\n )\n\n /* Intercept internal links to dispatch */\n const dispatch$ = internal$\n .pipe(\n filter(({ url }) => !isAnchorLink(url)),\n share()\n )\n\n /* Intercept popstate events (history back and forward) */\n const popstate$ = fromEvent(window, \"popstate\")\n .pipe(\n filter(ev => ev.state !== null),\n map(ev => ({\n url: new URL(location.href),\n data: ev.state\n })),\n share()\n )\n\n /* Emit location change */\n merge(dispatch$, popstate$)\n .pipe(\n pluck(\"url\")\n )\n .subscribe(location$)\n\n /* Add dispatched link to history */\n internal$\n .pipe(\n // TODO: must start with the current location and ignore the first emission\n distinctUntilChanged(compareState),\n filter(({ url }) => !isAnchorLink(url))\n )\n .subscribe(({ url }) => {\n // console.log(`History.Push ${url}`)\n history.pushState({}, \"\", url.toString())\n })\n\n // special case\n merge(internal$, popstate$)\n .pipe(\n bufferCount(2, 1),\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // })\n )\n .subscribe(([prev, next]) => {\n console.log(`<- ${prev.url}`)\n console.log(`-> ${next.url}`)\n\n if (\n prev.url.href.match(next.url.href) !== null &&\n isAnchorLink(prev.url)\n ) {\n // dialog$.next(`Potential Candidate: ${JSON.stringify(next.data)}`, ) // awesome debugging.\n setViewportOffset(next.data || { y: 0 })\n }\n // console.log(\"Potential Candidate\")\n })\n // .subscribe((x) => console.log(x[0].url.toString(), x[1].url.toString()))\n // filter(([prev, next]) => {\n // return prev.url.href.match(next.url.href) !== null\n // && isAnchorLink(prev.url)\n // }),\n // map(([, next]) => next)\n // // distinctUntilChanged(compareLocationChange),\n // // filter(({ url }) => !isAnchorLink(url))\n // )\n // .subscribe(({ url }) => {\n // console.log(`Restore ${url}`)\n // })\n\n /* Persist viewport offset in history before hash change */\n viewport$\n .pipe(\n debounceTime(250),\n distinctUntilKeyChanged(\"offset\"),\n )\n .subscribe(({ offset }) => {\n // console.log(\"Update\", offset)\n history.replaceState(offset, \"\")\n })\n\n /* */\n merge(dispatch$, popstate$)\n .pipe(\n sample(document$),\n withLatestFrom(document$),\n )\n .subscribe(([{ url, data }, { title, head }]) => {\n console.log(\"Done\", url.href, data)\n\n // trigger custom event\n document.dispatchEvent(new CustomEvent(\"DOMContentSwitch\"))\n\n // setDocumentTitle\n document.title = title\n\n // replace meta tags\n for (const selector of [\n `link[rel=\"canonical\"]`,\n `meta[name=\"author\"]`,\n `meta[name=\"description\"]`\n ]) {\n const next = getElement(selector, head)\n const prev = getElement(selector, document.head)\n if (\n typeof next !== \"undefined\" &&\n typeof prev !== \"undefined\"\n ) {\n prev.replaceWith(next)\n }\n }\n\n // search drawer close\n useToggle(\"search\").subscribe(el => {\n setToggle(el, false)\n })\n\n // // TODO: this doesnt work as expected\n if (url.hash) {\n console.log(\"hash data?\", data)\n const a = document.createElement(\"a\")\n a.href = url.hash\n a.click()\n } else {\n setViewportOffset(data || { y: 0 }) // push state!\n }\n })\n\n // internal$.subscribe(({ url }) => {\n // console.log(`Internal ${url}`)\n // })\n\n // dispatch$.subscribe(({ url }) => {\n // console.log(`Dispatch ${url}`)\n // })\n\n popstate$.subscribe(({ url }) => {\n console.log(`Popstate ${url.href}`, url)\n })\n }\n\n /* ----------------------------------------------------------------------- */\n\n // if we use a single tab outside of search, unhide all permalinks.\n // TODO: experimental. necessary!?\n keyboard$\n .pipe(\n filter(key => key.mode === \"global\" && [\"Tab\"].includes(key.type)),\n take(1)\n )\n .subscribe(() => {\n for (const link of getElements(\".headerlink\"))\n link.style.visibility = \"visible\"\n })\n\n /* ----------------------------------------------------------------------- */\n\n const state = {\n search$,\n clipboard$,\n location$,\n hash$,\n keyboard$,\n dialog$,\n main$,\n navigation$,\n toc$,\n tabs$,\n hero$,\n title$ // TODO: header title\n }\n\n const { ...rest } = state\n merge(...values(rest))\n .subscribe() // potential memleak <-- use takeUntil\n\n return {\n // agent,\n state\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as ClipboardJS from \"clipboard\"\nimport { NEVER, Observable, Subject, fromEventPattern } from \"rxjs\"\nimport { mapTo, share, tap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderClipboard } from \"templates\"\nimport { translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n document$: Observable /* Document observable */\n dialog$: Subject /* Dialog subject */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup clipboard\n *\n * This function implements the Clipboard.js integration and injects a button\n * into all code blocks when the document changes.\n *\n * @param options - Options\n *\n * @return Clipboard observable\n */\nexport function setupClipboard(\n { document$, dialog$ }: SetupOptions\n): Observable {\n if (!ClipboardJS.isSupported())\n return NEVER\n\n /* Inject 'copy-to-clipboard' buttons */\n document$.subscribe(() => {\n const blocks = getElements(\"pre > code\")\n for (const [index, block] of blocks.entries()) {\n const parent = block.parentElement!\n parent.id = `__code_${index}`\n parent.insertBefore(renderClipboard(parent.id), block)\n }\n })\n\n /* Initialize and setup clipboard */\n const clipboard$ = fromEventPattern(next => {\n new ClipboardJS(\".md-clipboard\").on(\"success\", next)\n })\n .pipe(\n share()\n )\n\n /* Display notification for clipboard event */\n clipboard$\n .pipe(\n tap(ev => ev.clearSelection()),\n mapTo(translate(\"clipboard.copied\"))\n )\n .subscribe(dialog$)\n\n /* Return clipboard */\n return clipboard$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Subject, animationFrameScheduler, of } from \"rxjs\"\nimport {\n delay,\n map,\n observeOn,\n switchMap,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n duration?: number /* Display duration (default: 2s) */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup dialog\n *\n * @param options - Options\n *\n * @return Dialog observable\n */\nexport function setupDialog(\n { duration }: SetupOptions = {}\n): Subject {\n const dialog$ = new Subject()\n\n /* Create dialog */\n const dialog = document.createElement(\"div\") // TODO: improve scoping\n dialog.classList.add(\"md-dialog\", \"md-typeset\")\n\n /* Display dialog */\n dialog$\n .pipe(\n switchMap(text => of(document.body) // useComponent(\"container\")\n .pipe(\n map(container => container.appendChild(dialog)),\n observeOn(animationFrameScheduler),\n delay(1), // Strangley it doesnt work when we push things to the new animation frame...\n tap(el => {\n el.innerHTML = text\n el.setAttribute(\"data-md-state\", \"open\")\n }),\n delay(duration || 2000),\n tap(el => el.removeAttribute(\"data-md-state\")),\n delay(400),\n tap(el => {\n el.innerHTML = \"\"\n el.remove()\n })\n )\n )\n )\n .subscribe()\n\n /* Return dialog subject */\n return dialog$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport {\n filter,\n map,\n share,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport {\n Key,\n getActiveElement,\n getElement,\n getElements,\n isSusceptibleToKeyboard,\n setElementFocus,\n setElementSelection,\n setToggle,\n useToggle,\n watchKeyboard,\n watchToggle\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Keyboard mode\n */\nexport type KeyboardMode =\n | \"global\" /* Global */\n | \"search\" /* Search is open */\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Keyboard\n */\nexport interface Keyboard extends Key {\n mode: KeyboardMode /* Keyboard mode */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup keyboard\n *\n * This function will setup the keyboard handlers and ensure that keys are\n * correctly propagated. Currently there are two modes:\n *\n * - `global`: This mode is active when the search is closed. It is intended\n * to assign hotkeys to specific functions of the site. Currently the search,\n * previous and next page can be triggered.\n *\n * - `search`: This mode is active when the search is open. It maps certain\n * navigational keys to offer search results that can be entirely navigated\n * through keyboard input.\n *\n * The keyboard observable is returned and can be used to monitor the keyboard\n * in order toassign further hotkeys to custom functions.\n *\n * @return Keyboard observable\n */\nexport function setupKeyboard(): Observable {\n const toggle$ = useToggle(\"search\")\n const search$ = toggle$\n .pipe(\n switchMap(watchToggle)\n )\n\n /* Setup keyboard and determine mode */\n const keyboard$ = watchKeyboard()\n .pipe(\n withLatestFrom(search$),\n map(([key, toggle]): Keyboard => ({\n mode: toggle ? \"search\" : \"global\",\n ...key\n })),\n share()\n )\n\n /* Setup search keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => mode === \"search\"),\n withLatestFrom(\n toggle$,\n useComponent(\"search-query\"),\n useComponent(\"search-result\")\n )\n )\n .subscribe(([key, toggle, query, result]) => {\n const active = getActiveElement()\n switch (key.type) {\n\n /* Enter: prevent form submission */\n case \"Enter\":\n if (active === query)\n key.claim()\n break\n\n /* Escape or Tab: close search */\n case \"Escape\":\n case \"Tab\":\n setToggle(toggle, false)\n setElementFocus(query, false)\n break\n\n /* Vertical arrows: select previous or next search result */\n case \"ArrowUp\":\n case \"ArrowDown\":\n if (typeof active === \"undefined\") {\n setElementFocus(query)\n } else {\n const els = [query, ...getElements(\"[href]\", result)]\n const i = Math.max(0, (\n Math.max(0, els.indexOf(active)) + els.length + (\n key.type === \"ArrowUp\" ? -1 : +1\n )\n ) % els.length)\n setElementFocus(els[i])\n }\n\n /* Prevent scrolling of page */\n key.claim()\n break\n\n /* All other keys: hand to search query */\n default:\n if (query !== getActiveElement())\n setElementFocus(query)\n }\n })\n\n /* Setup global keyboard handlers */\n keyboard$\n .pipe(\n filter(({ mode }) => {\n if (mode === \"global\") {\n const active = getActiveElement()\n if (typeof active !== \"undefined\")\n return !isSusceptibleToKeyboard(active)\n }\n return false\n }),\n withLatestFrom(useComponent(\"search-query\"))\n )\n .subscribe(([key, query]) => {\n switch (key.type) {\n\n /* Open search and select query */\n case \"f\":\n case \"s\":\n setElementFocus(query)\n setElementSelection(query)\n key.claim()\n break\n\n /* Go to previous page */\n case \"p\":\n case \",\":\n const prev = getElement(\"[href][rel=prev]\")\n if (typeof prev !== \"undefined\")\n prev.click()\n break\n\n /* Go to next page */\n case \"n\":\n case \".\":\n const next = getElement(\"[href][rel=next]\")\n if (typeof next !== \"undefined\")\n next.click()\n break\n }\n })\n\n /* Return keyboard */\n return keyboard$\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay } from \"rxjs/operators\"\n\nimport { watchDocumentSwitch } from \"../switch\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$?: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document\n *\n * If the location observable is passed, instant loading will be enabled which\n * means that new values will be emitted every time the location changes.\n *\n * @return Document observable\n */\nexport function watchDocument(\n { location$ }: WatchOptions = {}\n): Observable {\n return merge(\n fromEvent(document, \"DOMContentLoaded\")\n .pipe(\n mapTo(document)\n ),\n typeof location$ !== \"undefined\"\n ? watchDocumentSwitch({ location$ })\n : NEVER\n )\n .pipe(\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./switch\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n catchError,\n distinctUntilKeyChanged,\n pluck,\n share,\n skip,\n switchMap\n} from \"rxjs/operators\"\n\nimport { setLocation } from \"../../location\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch document switch\n *\n * This function returns an observables that fetches a document if the provided\n * location observable emits a new value (i.e. URL). If the emitted URL points\n * to the same page, the request is effectively ignored (i.e. when only the\n * fragment identifier changes).\n *\n * In case the request fails, the location change is dispatched regularly.\n *\n * @param options - Options\n *\n * @return Document switch observable\n */\nexport function watchDocumentSwitch(\n { location$ }: WatchOptions\n): Observable {\n return location$\n .pipe(\n distinctUntilKeyChanged(\"pathname\"),\n skip(1),\n\n /* Fetch document */\n switchMap(url => ajax({\n url: url.href,\n responseType: \"document\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\"),\n catchError(() => {\n setLocation(url)\n return NEVER\n })\n )\n ),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve an element matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element or nothing\n */\nexport function getElement(\n selector: string, node: ParentNode = document\n): T | undefined {\n return node.querySelector(selector) || undefined\n}\n\n/**\n * Retrieve an element matching a query selector or throw a reference error\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Element\n */\nexport function getElementOrThrow(\n selector: string, node: ParentNode = document\n): T {\n const el = getElement(selector, node)\n if (typeof el === \"undefined\")\n throw new ReferenceError(\n `Missing element: expected \"${selector}\" to be present`\n )\n return el\n}\n\n/**\n * Retrieve the currently active element\n *\n * @return Element\n */\nexport function getActiveElement(): HTMLElement | undefined {\n return document.activeElement instanceof HTMLElement\n ? document.activeElement\n : undefined\n}\n\n/**\n * Retrieve all elements matching the query selector\n *\n * @template T - Element type\n *\n * @param selector - Query selector\n * @param node - Node of reference\n *\n * @return Elements\n */\nexport function getElements(\n selector: string, node: ParentNode = document\n): T[] {\n return Array.from(node.querySelectorAll(selector))\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { mapTo, shareReplay, startWith } from \"rxjs/operators\"\n\nimport { getActiveElement } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element focus\n *\n * @param el - Element\n * @param value - Whether the element should be focused\n *\n * @return Element offset\n */\nexport function setElementFocus(\n el: HTMLElement, value: boolean = true\n): void {\n if (value)\n el.focus()\n else\n el.blur()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element focus\n *\n * @param el - Element\n *\n * @return Element focus observable\n */\nexport function watchElementFocus(\n el: HTMLElement\n): Observable {\n const focus$ = fromEvent(el, \"focus\")\n const blur$ = fromEvent(el, \"blur\")\n\n /* Map events to boolean state */\n return merge(\n focus$.pipe(mapTo(true)),\n blur$.pipe(mapTo(false))\n )\n .pipe(\n startWith(el === getActiveElement()),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./focus\"\nexport * from \"./offset\"\nexport * from \"./select\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Element offset\n */\nexport interface ElementOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve element offset\n *\n * @param el - Element\n *\n * @return Element offset\n */\nexport function getElementOffset(el: HTMLElement): ElementOffset {\n return {\n x: el.scrollLeft,\n y: el.scrollTop\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch element offset\n *\n * @param el - Element\n *\n * @return Element offset observable\n */\nexport function watchElementOffset(\n el: HTMLElement\n): Observable {\n return merge(\n fromEvent(el, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(() => getElementOffset(el)),\n startWith(getElementOffset(el)),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Set element text selection\n *\n * @param el - Element\n */\nexport function setElementSelection(\n el: HTMLElement\n): void {\n if (el instanceof HTMLInputElement)\n el.select()\n else\n throw new Error(\"Not implemented\")\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./document\"\nexport * from \"./element\"\nexport * from \"./keyboard\"\nexport * from \"./location\"\nexport * from \"./media\"\nexport * from \"./viewport\"\nexport * from \"./worker\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Key\n */\nexport interface Key {\n type: string /* Key type */\n claim(): void /* Key claim */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether an element may receive keyboard input\n *\n * @param el - Element\n *\n * @return Test result\n */\nexport function isSusceptibleToKeyboard(el: HTMLElement) {\n switch (el.tagName) {\n\n /* Form elements */\n case \"INPUT\":\n case \"SELECT\":\n case \"TEXTAREA\":\n return true\n\n /* Everything else */\n default:\n return el.isContentEditable\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch keyboard\n *\n * @return Keyboard observable\n */\nexport function watchKeyboard(): Observable {\n return fromEvent(window, \"keydown\")\n .pipe(\n filter(ev => !(ev.metaKey || ev.ctrlKey)),\n map(ev => ({\n type: ev.key,\n claim() {\n ev.preventDefault()\n ev.stopPropagation()\n }\n })),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { BehaviorSubject } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location\n *\n * This function will return a `URL` object (and not `Location`) in order to\n * normalize typings across the application. Furthermore, locations need to be\n * tracked without setting them and `Location` is a singleton which represents\n * the current location.\n *\n * @return URL\n */\nexport function getLocation(): URL {\n return new URL(location.href)\n}\n\n/**\n * Set location\n *\n * @param url - URL to change to\n */\nexport function setLocation(url: URL): void {\n location.href = url.href\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location\n *\n * @return Location subject\n */\nexport function watchLocation(): BehaviorSubject {\n return new BehaviorSubject(getLocation())\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { filter, map, share, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve location hash\n *\n * @return Location hash\n */\nexport function getLocationHash(): string {\n return location.hash.substring(1)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch location hash\n *\n * @return Location hash observable\n */\nexport function watchLocationHash(): Observable {\n return fromEvent(window, \"hashchange\")\n .pipe(\n map(getLocationHash),\n startWith(getLocationHash()),\n filter(hash => hash.length > 0),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./hash\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEventPattern } from \"rxjs\"\nimport { shareReplay, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch media query\n *\n * @param query - Media query\n *\n * @return Media observable\n */\nexport function watchMedia(query: string): Observable {\n const media = matchMedia(query)\n return fromEventPattern(next =>\n media.addListener(() => next(media.matches))\n )\n .pipe(\n startWith(media.matches),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport {\n distinctUntilKeyChanged,\n map,\n shareReplay\n} from \"rxjs/operators\"\n\nimport { Header } from \"../../../header\"\nimport {\n ViewportOffset,\n watchViewportOffset\n} from \"../offset\"\nimport {\n ViewportSize,\n watchViewportSize\n} from \"../size\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport\n */\nexport interface Viewport {\n offset: ViewportOffset /* Viewport offset */\n size: ViewportSize /* Viewport size */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch relative options\n */\ninterface WatchRelativeOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport\n *\n * @return Viewport observable\n */\nexport function watchViewport(): Observable {\n return combineLatest([\n watchViewportOffset(),\n watchViewportSize()\n ])\n .pipe(\n map(([offset, size]) => ({ offset, size })),\n shareReplay(1)\n )\n}\n\n/**\n * Watch viewport relative to element\n *\n * @param el - Element\n * @param options - Options\n *\n * @return Viewport observable\n */\nexport function watchViewportAt(\n el: HTMLElement, { header$, viewport$ }: WatchRelativeOptions\n): Observable {\n const offset$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map(() => ({\n x: el.offsetLeft,\n y: el.offsetTop\n }))\n )\n\n /* Compute relative viewport, return hot observable */\n return combineLatest([header$, viewport$, offset$])\n .pipe(\n map(([{ height }, { offset, size }, { x, y }]) => ({\n offset: {\n x: offset.x - x,\n y: offset.y - y + height\n },\n size\n })),\n shareReplay(1)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./offset\"\nexport * from \"./size\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport offset\n */\nexport interface ViewportOffset {\n x: number /* Horizontal offset */\n y: number /* Vertical offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport offset\n *\n * On iOS Safari, viewport offset can be negative due to overflow scrolling.\n * As this may induce strange behaviors downstream, we'll just limit it to 0.\n *\n * @return Viewport offset\n */\nexport function getViewportOffset(): ViewportOffset {\n return {\n x: Math.max(0, pageXOffset),\n y: Math.max(0, pageYOffset)\n }\n}\n\n/**\n * Set viewport offset\n *\n * @param offset - Viewport offset\n */\nexport function setViewportOffset(\n { x, y }: Partial\n): void {\n window.scrollTo(x || 0, y || 0)\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport offset\n *\n * @return Viewport offset observable\n */\nexport function watchViewportOffset(): Observable {\n return merge(\n fromEvent(window, \"scroll\"),\n fromEvent(window, \"resize\")\n )\n .pipe(\n map(getViewportOffset),\n startWith(getViewportOffset())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { map, startWith } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Viewport size\n */\nexport interface ViewportSize {\n width: number /* Viewport width */\n height: number /* Viewport height */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Retrieve viewport size\n *\n * @return Viewport size\n */\nexport function getViewportSize(): ViewportSize {\n return {\n width: innerWidth,\n height: innerHeight\n }\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch viewport size\n *\n * @return Viewport size observable\n */\nexport function watchViewportSize(): Observable {\n return fromEvent(window, \"resize\")\n .pipe(\n map(getViewportSize),\n startWith(getViewportSize())\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, fromEventPattern } from \"rxjs\"\nimport {\n pluck,\n share,\n switchMapTo,\n tap,\n throttle\n} from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Worker message\n */\nexport interface WorkerMessage {\n type: unknown /* Message type */\n data: unknown /* Message data */\n}\n\n/**\n * Worker handler\n *\n * @template T - Message type\n */\nexport interface WorkerHandler<\n T extends WorkerMessage\n> {\n tx$: Subject /* Message transmission subject */\n rx$: Observable /* Message receive observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n *\n * @template T - Worker message type\n */\ninterface WatchOptions {\n tx$: Observable /* Message transmission observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch a web worker\n *\n * This function returns an observable that will send all values emitted by the\n * message observable to the web worker. Web worker communication is expected\n * to be bidirectional (request-response) and synchronous. Messages that are\n * emitted during a pending request are throttled, the last one is emitted.\n *\n * @param worker - Web worker\n * @param options - Options\n *\n * @return Worker message observable\n */\nexport function watchWorker(\n worker: Worker, { tx$ }: WatchOptions\n): Observable {\n\n /* Intercept messages from worker-like objects */\n const rx$ = fromEventPattern(next =>\n worker.addEventListener(\"message\", next)\n )\n .pipe(\n pluck(\"data\")\n )\n\n /* Send and receive messages, return hot observable */\n return tx$\n .pipe(\n throttle(() => rx$, { leading: true, trailing: true }),\n tap(message => worker.postMessage(message)),\n switchMapTo(rx$),\n share()\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { reverse } from \"ramda\"\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n combineLatest,\n pipe\n} from \"rxjs\"\nimport {\n bufferCount,\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n observeOn,\n scan,\n startWith,\n switchMap,\n tap\n} from \"rxjs/operators\"\n\nimport {\n resetAnchorActive,\n resetAnchorBlur,\n setAnchorActive,\n setAnchorBlur\n} from \"actions\"\n\nimport { Viewport, getElement } from \"../agent\"\nimport { Header } from \"../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Anchor list\n */\nexport interface AnchorList {\n prev: HTMLAnchorElement[][] /* Anchors (previous) */\n next: HTMLAnchorElement[][] /* Anchors (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch anchor list\n *\n * This is effectively a scroll-spy implementation which will account for the\n * fixed header and automatically re-calculate anchor offsets when the viewport\n * is resized. The returned observable will only emit if the anchor list needs\n * to be repainted.\n *\n * This implementation tracks an anchor element's entire path starting from its\n * level up to the top-most anchor element, e.g. `[h3, h2, h1]`. Although the\n * Material theme currently doesn't make use of this information, it enables\n * the styling of the entire hierarchy through customization.\n *\n * Note that the current anchor is the last item of the `prev` anchor list.\n *\n * @param els - Anchor elements\n * @param options - Options\n *\n * @return Anchor list observable\n */\nexport function watchAnchorList(\n els: HTMLAnchorElement[], { header$, viewport$ }: WatchOptions\n): Observable {\n const table = new Map()\n for (const el of els) {\n const id = decodeURIComponent(el.hash.substring(1))\n const target = getElement(`[id=\"${id}\"]`)\n if (typeof target !== \"undefined\")\n table.set(el, target)\n }\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n map(header => 18 + header.height)\n )\n\n /* Compute partition of previous and next anchors */\n const partition$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n\n /* Build index to map anchor paths to vertical offsets */\n map(() => {\n let path: HTMLAnchorElement[] = []\n return [...table].reduce((index, [anchor, target]) => {\n while (path.length) {\n const last = table.get(path[path.length - 1])!\n if (last.tagName >= target.tagName) {\n path.pop()\n } else {\n break\n }\n }\n\n /* If the current anchor is hidden, continue with its parent */\n let offset = target.offsetTop\n while (!offset && target.parentElement) {\n target = target.parentElement\n offset = target.offsetTop\n }\n\n /* Map reversed anchor path to vertical offset */\n return index.set(\n reverse(path = [...path, anchor]),\n offset\n )\n }, new Map())\n }),\n\n /* Re-compute partition when viewport offset changes */\n switchMap(index => combineLatest([adjust$, viewport$])\n .pipe(\n scan(([prev, next], [adjust, { offset: { y } }]) => {\n\n /* Look forward */\n while (next.length) {\n const [, offset] = next[0]\n if (offset - adjust < y) {\n prev = [...prev, next.shift()!]\n } else {\n break\n }\n }\n\n /* Look backward */\n while (prev.length) {\n const [, offset] = prev[prev.length - 1]\n if (offset - adjust >= y) {\n next = [prev.pop()!, ...next]\n } else {\n break\n }\n }\n\n /* Return partition */\n return [prev, next]\n }, [[], [...index]]),\n distinctUntilChanged((a, b) => {\n return a[0] === b[0]\n && a[1] === b[1]\n })\n )\n )\n )\n\n /* Compute and return anchor list migrations */\n return partition$\n .pipe(\n map(([prev, next]) => ({\n prev: prev.map(([path]) => path),\n next: next.map(([path]) => path)\n })),\n\n /* Extract anchor list migrations */\n startWith({ prev: [], next: [] }),\n bufferCount(2, 1),\n map(([a, b]) => {\n\n /* Moving down */\n if (a.prev.length < b.prev.length) {\n return {\n prev: b.prev.slice(Math.max(0, a.prev.length - 1), b.prev.length),\n next: []\n }\n\n /* Moving up */\n } else {\n return {\n prev: b.prev.slice(-1),\n next: b.next.slice(0, b.next.length - a.next.length)\n }\n }\n })\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint anchor list\n *\n * @param els - Anchor elements\n *\n * @return Operator function\n */\nexport function paintAnchorList(\n els: HTMLAnchorElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev, next }) => {\n\n /* Look forward */\n for (const [el] of next) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n\n /* Look backward */\n for (const [index, [el]] of prev.entries()) {\n setAnchorActive(el, index === prev.length - 1)\n setAnchorBlur(el, true)\n }\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els) {\n resetAnchorActive(el)\n resetAnchorBlur(el)\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, of } from \"rxjs\"\nimport { distinctUntilKeyChanged, switchMap } from \"rxjs/operators\"\n\nimport { Viewport } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Header\n */\nexport interface Header {\n sticky: boolean /* Header stickyness */\n height: number /* Header visible height */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch header\n *\n * The header is wrapped in an observable to pave the way for auto-hiding or\n * other dynamic behaviors that may be implemented later on.\n *\n * @param el - Header element\n * @param options - Options\n *\n * @return Header observable\n */\nexport function watchHeader(\n el: HTMLElement, { viewport$ }: WatchOptions\n): Observable
{\n return viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n switchMap(() => {\n const styles = getComputedStyle(el)\n const sticky = [\n \"sticky\", /* Modern browsers */\n \"-webkit-sticky\" /* Old Safari */\n ].includes(styles.position)\n return of({\n sticky,\n height: sticky ? el.offsetHeight : 0\n })\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./shadow\"\nexport * from \"./title\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { resetHeaderShadow, setHeaderShadow } from \"actions\"\n\nimport { Main } from \"../../main\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header shadow\n *\n * @param el - Header element\n *\n * @return Operator function\n */\nexport function paintHeaderShadow(\n el: HTMLElement\n): MonoTypeOperatorFunction
{\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ active }) => {\n setHeaderShadow(el, active)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderShadow(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport { finalize, observeOn, tap } from \"rxjs/operators\"\n\nimport { resetHeaderTitle, setHeaderTitle } from \"actions\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint header title\n *\n * @param el - Header element\n *\n * @return Operator function\n */\nexport function paintHeaderTitle(\n el: HTMLElement\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(active => {\n setHeaderTitle(el, active)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHeaderTitle(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./agent\"\nexport * from \"./anchor\"\nexport * from \"./header\"\nexport * from \"./main\"\nexport * from \"./navigation\"\nexport * from \"./search\"\nexport * from \"./toggle\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest } from \"rxjs\"\nimport { distinctUntilChanged, map, pluck } from \"rxjs/operators\"\n\nimport { Viewport } from \"../../agent\"\nimport { Header } from \"../../header\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Main area\n */\nexport interface Main {\n offset: number /* Main area top offset */\n height: number /* Main area visible height */\n active: boolean /* Scrolled past top offset */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n header$: Observable
/* Header observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch main area\n *\n * This function returns an observable that computes the visual parameters of\n * the main area which depends on the viewport vertical offset and height, as\n * well as the height of the header element, if the header is fixed.\n *\n * @param el - Main area element\n * @param options - Options\n *\n * @return Main area observable\n */\nexport function watchMain(\n el: HTMLElement, { header$, viewport$ }: WatchOptions\n): Observable
{\n\n /* Compute necessary adjustment for header */\n const adjust$ = header$\n .pipe(\n pluck(\"height\")\n )\n\n /* Compute the main area's visible height */\n const height$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y }, size: { height } }]) => {\n const top = el.offsetTop\n const bottom = el.offsetHeight + top\n return height\n - Math.max(0, top - y, adjust)\n - Math.max(0, height + y - bottom)\n }),\n map(height => Math.max(0, height)),\n distinctUntilChanged()\n )\n\n /* Compute whether the viewport offset is past the main area's top */\n const active$ = combineLatest([adjust$, viewport$])\n .pipe(\n map(([adjust, { offset: { y } }]) => y >= el.offsetTop - adjust),\n distinctUntilChanged()\n )\n\n /* Combine into a single observable */\n return combineLatest([adjust$, height$, active$])\n .pipe(\n map(([adjust, height, active]) => ({\n offset: el.offsetTop - adjust,\n height,\n active\n }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { OperatorFunction, animationFrameScheduler, pipe } from \"rxjs\"\nimport {\n distinctUntilChanged,\n finalize,\n map,\n observeOn,\n tap\n} from \"rxjs/operators\"\n\nimport { resetHidden, setHidden } from \"actions\"\n\nimport { Viewport } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint hideable\n *\n * @param el - Hideable element\n * @param offset - Additional offset\n *\n * @return Operator function\n */\nexport function paintHideable(\n el: HTMLElement, offset: number = 0\n): OperatorFunction {\n return pipe(\n map(({ offset: { y } }) => y >= offset),\n distinctUntilChanged(),\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(value => {\n setHidden(el, value)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n resetHidden(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./hideable\"\nexport * from \"./sidebar\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n combineLatest,\n pipe\n} from \"rxjs\"\nimport {\n distinctUntilChanged,\n distinctUntilKeyChanged,\n finalize,\n map,\n observeOn,\n tap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n resetSidebarHeight,\n resetSidebarLock,\n resetSidebarOffset,\n setSidebarHeight,\n setSidebarLock,\n setSidebarOffset\n} from \"actions\"\n\nimport { Viewport } from \"../../agent\"\nimport { Header } from \"../../header\"\nimport { Main } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Sidebar\n */\nexport interface Sidebar {\n height: number /* Sidebar height */\n lock: boolean /* Sidebar lock */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n main$: Observable
/* Main area observable */\n viewport$: Observable /* Viewport observable */\n}\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n header$: Observable
/* Header observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch sidebar\n *\n * This function returns an observable that computes the visual parameters of\n * the sidebar which depends on the vertical viewport offset, as well as the\n * height of the main area. When the page is scrolled beyond the header, the\n * sidebar is locked and fills the remaining space.\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Sidebar observable\n */\nexport function watchSidebar(\n el: HTMLElement, { main$, viewport$ }: WatchOptions\n): Observable {\n\n /* Adjust for internal main area offset */\n const adjust$ = viewport$\n .pipe(\n distinctUntilKeyChanged(\"size\"),\n map(() => parseFloat(\n getComputedStyle(el.parentElement!)\n .getPropertyValue(\"padding-top\")\n )),\n distinctUntilChanged()\n )\n\n /* Compute the sidebar's available height */\n const height$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset, height }]) => (\n height\n + Math.min(adjust, Math.max(0, y - offset))\n - adjust\n )),\n distinctUntilChanged()\n )\n\n /* Compute whether the sidebar should be locked */\n const lock$ = viewport$\n .pipe(\n withLatestFrom(adjust$, main$),\n map(([{ offset: { y } }, adjust, { offset }]) => (\n y >= offset + adjust\n )),\n distinctUntilChanged()\n )\n\n /* Combine into single observable */\n return combineLatest([height$, lock$])\n .pipe(\n map(([height, lock]) => ({ height, lock }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint sidebar\n *\n * @param el - Sidebar element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSidebar(\n el: HTMLElement, { header$ }: PaintOptions\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n withLatestFrom(header$),\n tap(([{ height, lock }, { height: offset }]) => {\n setSidebarHeight(el, height)\n setSidebarLock(el, lock)\n\n /* Set offset in locked state depending on header height */\n if (lock)\n setSidebarOffset(el, offset)\n else\n resetSidebarOffset(el)\n }),\n\n /* Re-map to sidebar */\n map(([sidebar]) => sidebar),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSidebarOffset(el)\n resetSidebarHeight(el)\n resetSidebarLock(el)\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./layer\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { findLast } from \"ramda\"\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n fromEvent,\n merge,\n pipe\n} from \"rxjs\"\nimport {\n delay,\n finalize,\n map,\n observeOn,\n scan,\n tap\n} from \"rxjs/operators\"\n\nimport {\n resetOverflowScrolling,\n setOverflowScrolling\n} from \"actions\"\n\nimport {\n getElement,\n getElementOrThrow\n} from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Navigation layer\n */\nexport interface NavigationLayer {\n prev?: HTMLElement /* Layer (previous) */\n next: HTMLElement /* Layer (next) */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch navigation layer\n *\n * On iOS we want to add `-webkit-overflow-scrolling: touch` for the menus\n * contained in the drawer, but as the navigational layers are nested, we can\n * only add it to the topmost layer or extremely weird cropping will occur.\n * This implementation keeps track of the previous and current layer.\n *\n * @param els - Navigation elements\n *\n * @return Navigation layer observable\n */\nexport function watchNavigationLayer(\n els: HTMLElement[]\n): Observable {\n const table = new Map()\n for (const el of els) {\n const label = getElement(\"label\", el)\n if (typeof label !== \"undefined\") {\n const input = getElementOrThrow(`#${label.htmlFor}`)\n table.set(input, el)\n }\n }\n\n /* Determine topmost layer */\n const layer$ = merge(...[...table.keys()].map(input => (\n fromEvent(input, \"change\")\n )))\n .pipe(\n map(() => getElementOrThrow(\".md-nav__list\", table.get(\n findLast(({ checked }) => checked, [...table.keys()])!\n )))\n )\n\n /* Return previous and next layer */\n return layer$\n .pipe(\n map(next => ({ next })),\n scan(({ next: prev }, { next }) => ({ prev, next }))\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Paint navigation layer\n *\n * @param els - Navigation elements\n *\n * @return Operator function\n */\nexport function paintNavigationLayer(\n els: HTMLElement[]\n): MonoTypeOperatorFunction {\n return pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ prev }) => {\n if (prev)\n resetOverflowScrolling(prev)\n }),\n\n /* Wait until transition has finished */\n delay(250),\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n tap(({ next }) => {\n setOverflowScrolling(next)\n }),\n\n /* Reset on complete or error */\n finalize(() => {\n for (const el of els)\n resetOverflowScrolling(\n getElementOrThrow(\".md-nav__list\", el)\n )\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./query\"\nexport * from \"./reset\"\nexport * from \"./result\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, combineLatest, fromEvent, merge } from \"rxjs\"\nimport {\n delay,\n distinctUntilChanged,\n map,\n startWith\n} from \"rxjs/operators\"\n\nimport { watchElementFocus } from \"../../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search query\n */\nexport interface SearchQuery {\n value: string /* Query value */\n focus: boolean /* Query focus */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n transform?(value: string): string /* Transformation function */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Default transformation function\n *\n * Rogue control characters are filtered before handing the query to the\n * search index, as `lunr` will throw otherwise.\n *\n * @param value - Query value\n *\n * @return Transformed query value\n */\nfunction defaultTransform(value: string): string {\n return value\n .replace(/(?:^|\\s+)[*+-:^~]+(?=\\s+|$)/g, \"\")\n .trim()\n .replace(/\\s+|\\b$/g, \"* \")\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search query\n *\n * Note that the focus event which triggers re-reading the current query value\n * is delayed by `1ms` so the input's empty state is allowed to propagate.\n *\n * @param el - Search query element\n * @param options - Options\n *\n * @return Search query observable\n */\nexport function watchSearchQuery(\n el: HTMLInputElement, { transform }: WatchOptions = {}\n): Observable {\n const fn = transform || defaultTransform\n\n /* Intercept keyboard events */\n const value$ = merge(\n fromEvent(el, \"keyup\"),\n fromEvent(el, \"focus\").pipe(delay(1))\n )\n .pipe(\n map(() => fn(el.value)),\n startWith(fn(el.value)),\n distinctUntilChanged()\n )\n\n /* Intercept focus events */\n const focus$ = watchElementFocus(el)\n\n /* Combine into a single observable */\n return combineLatest([value$, focus$])\n .pipe(\n map(([value, focus]) => ({ value, focus }))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, fromEvent } from \"rxjs\"\nimport { mapTo } from \"rxjs/operators\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch search reset\n *\n * @param el - Search reset element\n *\n * @return Search reset observable\n */\nexport function watchSearchReset(\n el: HTMLElement\n): Observable {\n return fromEvent(el, \"click\")\n .pipe(\n mapTo(undefined)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n MonoTypeOperatorFunction,\n Observable,\n animationFrameScheduler,\n pipe\n} from \"rxjs\"\nimport {\n finalize,\n map,\n mapTo,\n observeOn,\n scan,\n switchMap,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport {\n addToSearchResultList,\n resetSearchResultList,\n resetSearchResultMeta,\n setSearchResultMeta\n} from \"actions\"\nimport { SearchResult } from \"integrations/search\"\nimport { renderSearchResult } from \"templates\"\n\nimport { getElementOrThrow } from \"../../agent\"\nimport { SearchQuery } from \"../query\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint options\n */\ninterface PaintOptions {\n query$: Observable /* Search query observable */\n fetch$: Observable /* Result fetch observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Paint search results\n *\n * This function will perform a lazy rendering of the search results, depending\n * on the vertical offset of the search result container. When the scroll offset\n * reaches the bottom of the element, more results are fetched and rendered.\n *\n * @param el - Search result element\n * @param options - Options\n *\n * @return Operator function\n */\nexport function paintSearchResult(\n el: HTMLElement, { query$, fetch$ }: PaintOptions\n): MonoTypeOperatorFunction {\n const list = getElementOrThrow(\".md-search-result__list\", el)\n const meta = getElementOrThrow(\".md-search-result__meta\", el)\n return pipe(\n\n /* Paint search result metadata */\n withLatestFrom(query$),\n map(([result, query]) => {\n if (query.value) {\n setSearchResultMeta(meta, result.length)\n } else {\n resetSearchResultMeta(meta)\n }\n return result\n }),\n\n /* Paint search result list */\n switchMap(result => fetch$\n .pipe(\n\n /* Defer repaint to next animation frame */\n observeOn(animationFrameScheduler),\n scan(index => {\n const container = el.parentElement!\n while (index < result.length) {\n addToSearchResultList(list, renderSearchResult(result[index++]))\n if (container.scrollHeight - container.offsetHeight > 16)\n break\n }\n return index\n }, 0),\n\n /* Re-map to search result */\n mapTo(result),\n\n /* Reset on complete or error */\n finalize(() => {\n resetSearchResultList(list)\n })\n )\n )\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, of } from \"rxjs\"\nimport {\n distinctUntilChanged,\n map,\n shareReplay,\n startWith,\n switchMap,\n take\n} from \"rxjs/operators\"\n\nimport { getElement } from \"../agent\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle\n */\nexport type Toggle =\n | \"drawer\" /* Toggle for drawer */\n | \"search\" /* Toggle for search */\n\n/**\n * Toggle map\n */\nexport type ToggleMap = {\n [P in Toggle]?: HTMLInputElement\n}\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Watch options\n */\ninterface WatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Toggle map observable\n */\nlet toggles$: Observable\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup bindings to toggles with given names\n *\n * @param names - Toggle names\n * @param options - Options\n */\nexport function setupToggles(\n names: Toggle[], { document$ }: WatchOptions\n): void {\n toggles$ = document$\n .pipe(\n\n /* Ignore document switches */\n take(1),\n\n /* Build toggle map */\n map(document => names.reduce((toggles, name) => {\n const el = getElement(`[data-md-toggle=${name}]`, document)\n return {\n ...toggles,\n ...typeof el !== \"undefined\" ? { [name]: el } : {}\n }\n }, {})),\n\n /* Convert to hot observable */\n shareReplay(1)\n )\n}\n\n/**\n * Retrieve a toggle\n *\n * The returned observable will only re-emit if the element changed, i.e. if\n * it was replaced from a document which was switched to.\n *\n * @param name - Toggle name\n *\n * @return Element observable\n */\nexport function useToggle(\n name: Toggle\n): Observable {\n return toggles$\n .pipe(\n switchMap(toggles => (\n typeof toggles[name] !== \"undefined\"\n ? of(toggles[name]!)\n : NEVER\n )),\n distinctUntilChanged()\n )\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Set toggle\n *\n * Simulating a click event seems to be the most cross-browser compatible way\n * of changing the value while also emitting a `change` event. Before, Material\n * used `CustomEvent` to programmatically change the value of a toggle, but this\n * is a much simpler and cleaner solution which doesn't require a polyfill.\n *\n * @param el - Toggle element\n * @param value - Toggle value\n */\nexport function setToggle(\n el: HTMLInputElement, value: boolean\n): void {\n if (el.checked !== value)\n el.click()\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Watch toggle\n *\n * @param el - Toggle element\n *\n * @return Toggle observable\n */\nexport function watchToggle(\n el: HTMLInputElement\n): Observable {\n return fromEvent(el, \"change\")\n .pipe(\n map(() => el.checked),\n startWith(el.checked)\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { identity } from \"ramda\"\nimport { Observable, fromEvent, merge } from \"rxjs\"\nimport {\n filter,\n map,\n switchMapTo,\n tap\n} from \"rxjs/operators\"\n\nimport {\n getElement,\n getElements,\n watchMedia\n} from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n hash$: Observable /* Location hash observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `details` elements\n *\n * This function will ensure that all `details` tags are opened prior to\n * printing, so the whole content of the page is included, and on anchor jumps.\n *\n * @param options - Options\n */\nexport function patchDetails(\n { document$, hash$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"details\"))\n )\n\n /* Open all details before printing */\n merge(\n watchMedia(\"print\").pipe(filter(identity)), /* Webkit */\n fromEvent(window, \"beforeprint\") /* IE, FF */\n )\n .pipe(\n switchMapTo(els$)\n )\n .subscribe(els => {\n for (const el of els)\n el.setAttribute(\"open\", \"\")\n })\n\n /* Open parent details and fix anchor jump */\n hash$\n .pipe(\n map(id => getElement(`[id=\"${id}\"]`)!),\n filter(el => typeof el !== \"undefined\"),\n tap(el => {\n const details = el.closest(\"details\")\n if (details && !details.open)\n details.setAttribute(\"open\", \"\")\n })\n )\n .subscribe(el => el.scrollIntoView())\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./details\"\nexport * from \"./script\"\nexport * from \"./scrollfix\"\nexport * from \"./source\"\nexport * from \"./table\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport { map, skip, withLatestFrom } from \"rxjs/operators\"\n\nimport { useComponent } from \"components\"\nimport { getElements } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `script` elements\n *\n * This function must be run after a document switch, which means the first\n * emission must be ignored.\n *\n * @param options - Options\n */\nexport function patchScripts(\n { document$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n skip(1),\n withLatestFrom(useComponent(\"container\")),\n map(([, el]) => getElements(\"script\", el))\n )\n\n /* Evaluate all scripts via replacement */\n els$.subscribe(els => {\n for (const el of els) {\n if (el.src || /(^|\\/javascript)$/i.test(el.type)) {\n const script = document.createElement(\"script\")\n const key = el.src ? \"src\" : \"innerText\"\n script[key] = el[key]\n el.replaceWith(script)\n }\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable, fromEvent, iif, merge } from \"rxjs\"\nimport { map, mapTo, shareReplay, switchMap } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Check whether the given device is an Apple device\n *\n * @return Test result\n */\nfunction isAppleDevice(): boolean {\n return /(iPad|iPhone|iPod)/.test(navigator.userAgent)\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all elements with `data-md-scrollfix` attributes\n *\n * This is a year-old patch which ensures that overflow scrolling works at the\n * top and bottom of containers on iOS by ensuring a `1px` scroll offset upon\n * the start of a touch event.\n *\n * @see https://bit.ly/2SCtAOO - Original source\n *\n * @param options - Options\n */\nexport function patchScrollfix(\n { document$ }: PatchOptions\n): void {\n const els$ = document$\n .pipe(\n map(() => getElements(\"[data-md-scrollfix]\")),\n shareReplay(1)\n )\n\n /* Remove marker attribute, so we'll only add the fix once */\n els$.subscribe(els => {\n for (const el of els)\n el.removeAttribute(\"data-md-scrollfix\")\n })\n\n /* Patch overflow scrolling on touch start */\n iif(isAppleDevice, els$, NEVER)\n .pipe(\n switchMap(els => merge(...els.map(el => (\n fromEvent(el, \"touchstart\")\n .pipe(\n mapTo(el)\n )\n ))))\n )\n .subscribe(el => {\n const top = el.scrollTop\n\n /* We're at the top of the container */\n if (top === 0) {\n el.scrollTop = 1\n\n /* We're at the bottom of the container */\n } else if (top + el.offsetHeight === el.scrollHeight) {\n el.scrollTop = top - 1\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Repo, User } from \"github-types\"\nimport { Observable, of } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, pluck, switchMap } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitHub source facts\n *\n * @param user - GitHub user\n * @param repo - GitHub repository\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitHub(\n user: string, repo?: string\n): Observable {\n return ajax({\n url: typeof repo !== \"undefined\"\n ? `https://api.github.com/repos/${user}/${repo}`\n : `https://api.github.com/users/${user}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n switchMap(data => {\n\n /* GitHub repository */\n if (typeof repo !== \"undefined\") {\n const { stargazers_count, forks_count }: Repo = data\n return of([\n `${round(stargazers_count || 0)} Stars`,\n `${round(forks_count || 0)} Forks`\n ])\n\n /* GitHub user/organization */\n } else {\n const { public_repos }: User = data\n return of([\n `${round(public_repos || 0)} Repositories`\n ])\n }\n })\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { ProjectSchema } from \"gitlab\"\nimport { Observable } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport { filter, map, pluck } from \"rxjs/operators\"\n\nimport { round } from \"utilities\"\n\nimport { SourceFacts } from \"..\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch GitLab source facts\n *\n * @param base - GitLab base\n * @param project - GitLab project\n *\n * @return Source facts observable\n */\nexport function fetchSourceFactsFromGitLab(\n base: string, project: string\n): Observable {\n return ajax({\n url: `https://${base}/api/v4/projects/${encodeURIComponent(project)}`,\n responseType: \"json\"\n })\n .pipe(\n filter(({ status }) => status === 200),\n pluck(\"response\"),\n map(({ star_count, forks_count }: ProjectSchema) => ([\n `${round(star_count)} Stars`,\n `${round(forks_count)} Forks`\n ]))\n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { NEVER, Observable } from \"rxjs\"\nimport { catchError, map, switchMap } from \"rxjs/operators\"\n\nimport { getElementOrThrow, getElements } from \"observables\"\nimport { renderSource } from \"templates\"\nimport { cache, hash } from \"utilities\"\n\nimport { fetchSourceFactsFromGitHub } from \"./github\"\nimport { fetchSourceFactsFromGitLab } from \"./gitlab\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Source facts\n */\nexport type SourceFacts = string[]\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch options\n */\ninterface PatchOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Fetch source facts\n *\n * @param url - Source repository URL\n *\n * @return Source facts observable\n */\nfunction fetchSourceFacts(\n url: string\n): Observable {\n const [type] = url.match(/(git(?:hub|lab))/i) || []\n switch (type.toLowerCase()) {\n\n /* GitHub repository */\n case \"github\":\n const [, user, repo] = url.match(/^.+github\\.com\\/([^\\/]+)\\/?([^\\/]+)/i)\n return fetchSourceFactsFromGitHub(user, repo)\n\n /* GitLab repository */\n case \"gitlab\":\n const [, base, project] = url.match(/^.+?([^\\/]*gitlab[^\\/]+)\\/(.+)/i)\n return fetchSourceFactsFromGitLab(base, project)\n\n /* Everything else */\n default:\n return NEVER\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch elements containing repository information\n *\n * This function will retrieve the URL from the repository link and try to\n * query data from integrated source code platforms like GitHub or GitLab.\n *\n * @param options - Options\n */\nexport function patchSource(\n { document$ }: PatchOptions\n): void {\n document$\n .pipe(\n map(() => getElementOrThrow(\".md-source[href]\")),\n switchMap(({ href }) => (\n cache(`${hash(href)}`, () => fetchSourceFacts(href))\n )),\n catchError(() => NEVER)\n )\n .subscribe(facts => {\n for (const el of getElements(\".md-source__repository\")) {\n if (!el.hasAttribute(\"data-md-state\")) {\n el.setAttribute(\"data-md-state\", \"done\")\n el.appendChild(renderSource(facts))\n }\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable } from \"rxjs\"\nimport { map } from \"rxjs/operators\"\n\nimport { getElements } from \"observables\"\nimport { renderTable } from \"templates\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Mount options\n */\ninterface MountOptions {\n document$: Observable /* Document observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Patch all `table` elements\n *\n * This function will re-render all tables by wrapping them to improve overflow\n * scrolling on smaller screen sizes.\n *\n * @param options - Options\n */\nexport function patchTables(\n { document$ }: MountOptions\n): void {\n const sentinel = document.createElement(\"table\")\n document$\n .pipe(\n map(() => getElements(\"table:not([class])\"))\n )\n .subscribe(els => {\n for (const el of els) {\n el.replaceWith(sentinel)\n sentinel.replaceWith(renderTable(el))\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h, translate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n container: \"md-clipboard md-icon\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a 'copy-to-clipboard' button\n *\n * @param id - Unique identifier\n *\n * @return Element\n */\nexport function renderClipboard(\n id: string\n) {\n const path = require(\"material-design-icons-svg/paths/content-copy.json\")\n return (\n \n \n \n \n \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./clipboard\"\nexport * from \"./search\"\nexport * from \"./source\"\nexport * from \"./table\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchResult } from \"integrations/search\"\nimport { h, truncate } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n item: \"md-search-result__item\",\n link: \"md-search-result__link\",\n article: \"md-search-result__article md-search-result__article--document\",\n section: \"md-search-result__article\",\n title: \"md-search-result__title\",\n teaser: \"md-search-result__teaser\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a search result\n *\n * @param result - Search result\n *\n * @return Element\n */\nexport function renderSearchResult(\n { article, sections }: SearchResult\n) {\n\n // create page with icon\n const path = require(\"material-design-icons-svg/paths/file-search-outline.json\")\n\n const children = [article, ...sections].map(document => {\n const { location, title, text } = document\n return (\n \n
\n {!(\"parent\" in document)\n ?
\n \n \n \n
\n : null\n }\n

{title}

\n {text.length\n ?

{truncate(text, 320)}

\n : undefined\n }\n
\n
\n )\n })\n return (\n
  • \n {children}\n
  • \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SourceFacts } from \"patches/source\"\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n facts: \"md-source__facts\",\n fact: \"md-source__fact\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render source facts\n *\n * @param facts - Source facts\n *\n * @return Element\n */\nexport function renderSource(\n facts: SourceFacts\n) {\n const children = facts.map(fact => (\n
  • {fact}
  • \n ))\n return (\n
      \n {children}\n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { h } from \"utilities\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * CSS classes\n */\nconst css = {\n wrapper: \"md-typeset__scrollwrap\",\n table: \"md-typeset__table\"\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Render a table inside a wrapper to improve scrolling on mobile\n *\n * @param table - Table element\n *\n * @return Element\n */\nexport function renderTable(\n table: HTMLTableElement\n) {\n return (\n
    \n
    \n {table}\n
    \n
    \n )\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Configuration\n */\nexport interface Config {\n base: string /* Base URL */\n worker: {\n search: string /* Search worker URL */\n }\n feature: {\n instant: true /* Instant loading */\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Ensure that the given value is a valid configuration\n *\n * We could use `jsonschema` or any other schema validation framework, but that\n * would just add more bloat to the bundle, so we'll keep it plain and simple.\n *\n * @param config - Configuration\n *\n * @return Test result\n */\nexport function isConfig(config: any): config is Config {\n return typeof config === \"object\"\n && typeof config.base === \"string\"\n && typeof config.worker === \"object\"\n && typeof config.worker.search === \"string\"\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./config\"\nexport * from \"./jsx\"\nexport * from \"./rxjs\"\nexport * from \"./string\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\n// tslint:disable no-null-keyword\n\nimport { JSX as JSXInternal } from \"preact\"\nimport { keys } from \"ramda\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * HTML and SVG attributes\n */\ntype Attributes =\n & JSXInternal.HTMLAttributes\n & JSXInternal.SVGAttributes\n & Record\n\n/**\n * Child element\n */\ntype Child =\n | HTMLElement\n | SVGElement\n | Text\n | string\n | number\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create an element\n *\n * @param tag - HTML or SVG tag\n *\n * @return Element\n */\nfunction createElement(tag: string): HTMLElement | SVGElement {\n switch (tag) {\n\n /* SVG elements */\n case \"svg\":\n case \"path\":\n return document.createElementNS(\"http://www.w3.org/2000/svg\", tag)\n\n /* HTML elements */\n default:\n return document.createElement(tag)\n }\n}\n\n/**\n * Set an attribute\n *\n * @param el - Element\n * @param name - Attribute name\n * @param value - Attribute value\n */\nfunction setAttribute(\n el: HTMLElement | SVGElement, name: string, value: string) {\n switch (name) {\n\n /* Attributes to be ignored */\n case \"xmlns\":\n break\n\n /* Attributes of SVG elements */\n case \"viewBox\":\n case \"d\":\n if (typeof value !== \"boolean\")\n el.setAttributeNS(null, name, value)\n else if (value)\n el.setAttributeNS(null, name, \"\")\n break\n\n /* Attributes of HTML elements */\n default:\n if (typeof value !== \"boolean\")\n el.setAttribute(name, value)\n else if (value)\n el.setAttribute(name, \"\")\n }\n}\n\n/**\n * Append a child node to an element\n *\n * @param el - Element\n * @param child - Child node(s)\n */\nfunction appendChild(\n el: HTMLElement | SVGElement, child: Child | Child[]\n): void {\n\n /* Handle primitive types (including raw HTML) */\n if (typeof child === \"string\" || typeof child === \"number\") {\n el.innerHTML += child.toString()\n\n /* Handle nodes */\n } else if (child instanceof Node) {\n el.appendChild(child)\n\n /* Handle nested children */\n } else if (Array.isArray(child)) {\n for (const node of child)\n appendChild(el, node)\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * JSX factory\n *\n * @param tag - HTML or SVG tag\n * @param attributes - HTML attributes\n * @param children - Child elements\n *\n * @return Element\n */\nexport function h(\n tag: string, attributes: Attributes | null, ...children: Child[]\n): HTMLElement | SVGElement {\n const el = createElement(tag)\n\n /* Set attributes, if any */\n if (attributes)\n for (const attr of keys(attributes))\n setAttribute(el, attr, attributes[attr])\n\n /* Append child nodes */\n for (const child of children)\n appendChild(el, child)\n\n /* Return element */\n return el\n}\n\n/* ----------------------------------------------------------------------------\n * Namespace\n * ------------------------------------------------------------------------- */\n\nexport declare namespace h {\n namespace JSX {\n type Element = HTMLElement | SVGElement\n type IntrinsicElements = JSXInternal.IntrinsicElements\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, defer, of } from \"rxjs\"\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Cache the last value emitted by an observable in session storage\n *\n * If the key is not found in session storage, the factory is executed and the\n * latest value emitted will automatically be persisted to sessions storage.\n * Note that the values emitted by the returned observable must be serializable\n * as `JSON`, or data will be lost.\n *\n * @template T - Value type\n *\n * @param key - Cache key\n * @param factory - Observable factory\n *\n * @return Value observable\n */\nexport function cache(\n key: string, factory: () => Observable\n): Observable {\n return defer(() => {\n const data = sessionStorage.getItem(key)\n if (data) {\n return of(JSON.parse(data) as T)\n\n /* Retrieve value from observable factory and write to storage */\n } else {\n const value$ = factory()\n value$.subscribe(value => {\n try {\n sessionStorage.setItem(key, JSON.stringify(value))\n } catch (err) {\n /* Uncritical, just swallow */\n }\n })\n\n /* Return value */\n return value$\n }\n })\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { getElementOrThrow } from \"observables\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Translations\n */\nlet lang: Record\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Translate the given key\n *\n * @param key - Key to be translated\n * @param value - Value to be replaced\n *\n * @return Translation\n */\nexport function translate(key: string, value?: string): string {\n if (typeof lang === \"undefined\") {\n const el = getElementOrThrow(\"#__lang\")\n lang = JSON.parse(el.innerText)\n }\n if (typeof lang[key] === \"undefined\") {\n throw new ReferenceError(`Invalid translation: ${key}`)\n }\n return typeof value !== \"undefined\"\n ? lang[key].replace(\"#\", value)\n : lang[key]\n}\n\n/**\n * Truncate a string after the given number of characters\n *\n * This is not a very reasonable approach, since the summaries kind of suck.\n * It would be better to create something more intelligent, highlighting the\n * search occurrences and making a better summary out of it, but this note was\n * written three years ago, so who knows if we'll ever fix it.\n *\n * @param value - Value to be truncated\n * @param n - Number of characters\n *\n * @return Truncated value\n */\nexport function truncate(value: string, n: number): string {\n let i = n\n if (value.length > i) {\n while (value[i] !== \" \" && --i > 0); // tslint:disable-line\n return `${value.substring(0, i)}...`\n }\n return value\n}\n\n/**\n * Round a number for display with source facts\n *\n * This is a reverse engineered version of GitHub's weird rounding algorithm\n * for stars, forks and all other numbers. While all numbers below `1,000` are\n * returned as-is, bigger numbers are converted to fixed numbers:\n *\n * - `1,049` => `1k`\n * - `1,050` => `1.1k`\n * - `1,949` => `1.9k`\n * - `1,950` => `2k`\n *\n * @param value - Original value\n *\n * @return Rounded value\n */\nexport function round(value: number): string {\n if (value > 999) {\n const digits = +((value - 950) % 1000 > 99)\n return `${((value + 1) / 1000).toFixed(digits)}k`\n } else {\n return value.toString()\n }\n}\n\n/**\n * Simple hash function\n *\n * @see https://bit.ly/2wsVjJ4 - Original source\n *\n * @param value - Value to be hashed\n *\n * @return Hash as 32bit integer\n */\nexport function hash(value: string): number {\n let h = 0\n for (let i = 0, len = value.length; i < len; i++) {\n h = ((h << 5) - h) + value.charCodeAt(i)\n h |= 0 // Convert to 32bit integer\n }\n return h\n }\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./search\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { Observable, Subject, from } from \"rxjs\"\nimport { ajax } from \"rxjs/ajax\"\nimport {\n map,\n pluck,\n shareReplay,\n switchMap,\n take,\n withLatestFrom\n} from \"rxjs/operators\"\n\nimport { SearchIndexOptions } from \"integrations/search\"\nimport {\n WorkerHandler,\n watchWorker\n} from \"observables\"\n\nimport {\n SearchMessage,\n SearchMessageType,\n SearchSetupMessage,\n isSearchResultMessage\n} from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Helper types\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup options\n */\ninterface SetupOptions {\n base: string /* Base url */\n index?: Promise /* Promise resolving with index */\n location$: Observable /* Location observable */\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup search web worker\n *\n * This function will create a web worker to setup and query the search index\n * which is done using `lunr`. The index can be passed explicitly in order to\n * enable hacks like _localsearch_ via search index embedding as JSON. If no\n * index is given, this function will load it from the default location.\n *\n * @param url - Worker url\n * @param options - Options\n *\n * @return Worker handler\n */\nexport function setupSearchWorker(\n url: string, { base, index, location$ }: SetupOptions\n): WorkerHandler {\n const worker = new Worker(url)\n\n /* Ensure stable base URL */\n const origin$ = location$\n .pipe(\n take(1),\n map(({ href }) => new URL(base, href)\n .toString()\n .replace(/\\/$/, \"\")\n )\n )\n\n /* Create communication channels and resolve relative links */\n const tx$ = new Subject()\n const rx$ = watchWorker(worker, { tx$ })\n .pipe(\n withLatestFrom(origin$),\n map(([message, origin]) => {\n if (isSearchResultMessage(message)) {\n for (const { article, sections } of message.data) {\n article.location = `${origin}/${article.location}`\n for (const section of sections)\n section.location = `${origin}/${section.location}`\n }\n }\n return message\n }),\n shareReplay(1)\n )\n\n /* Fetch index if it wasn't passed explicitly */\n const index$ = typeof index !== \"undefined\"\n ? from(index)\n : origin$\n .pipe(\n switchMap(origin => ajax({\n url: `${origin}/search/search_index.json`,\n responseType: \"json\",\n withCredentials: true\n })\n .pipe(\n pluck(\"response\")\n ))\n )\n\n /* Send index to worker */\n index$\n .pipe(\n map(data => ({\n type: SearchMessageType.SETUP,\n data\n }))\n )\n .subscribe(tx$.next.bind(tx$))\n\n /* Return worker handler */\n return { tx$, rx$ }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport * from \"./message\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndexOptions, SearchResult } from \"integrations/search\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n DUMP, /* Search index dump */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndexOptions /* Message data */\n}\n\n/**\n * A message containing the a dump of the search index\n */\nexport interface SearchDumpMessage {\n type: SearchMessageType.DUMP /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult[] /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchDumpMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search dump messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchDumpMessage(\n message: SearchMessage\n): message is SearchDumpMessage {\n return message.type === SearchMessageType.DUMP\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n","export default \"/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/main.css\";","export default \"/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/material/palette.css\";"],"sourceRoot":""} \ No newline at end of file diff --git a/material/assets/javascripts/worker/search.js b/material/assets/javascripts/worker/search.js new file mode 100644 index 000000000..6e278485f --- /dev/null +++ b/material/assets/javascripts/worker/search.js @@ -0,0 +1,4569 @@ +/******/ (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, { enumerable: true, get: getter }); +/******/ } +/******/ }; +/******/ +/******/ // define __esModule on exports +/******/ __webpack_require__.r = function(exports) { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ +/******/ // create a fake namespace object +/******/ // mode & 1: value is a module id, require it +/******/ // mode & 2: merge all properties of value into the ns +/******/ // mode & 4: return value when already ns object +/******/ // mode & 8|1: behave like require +/******/ __webpack_require__.t = function(value, mode) { +/******/ if(mode & 1) value = __webpack_require__(value); +/******/ if(mode & 8) return value; +/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; +/******/ var ns = Object.create(null); +/******/ __webpack_require__.r(ns); +/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); +/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); +/******/ return ns; +/******/ }; +/******/ +/******/ // 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 = "./src/assets/javascripts/workers/search/main/index.ts"); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ "./node_modules/escape-html/index.js": +/*!*******************************************!*\ + !*** ./node_modules/escape-html/index.js ***! + \*******************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */ + + + +/** + * Module variables. + * @private + */ + +var matchHtmlRegExp = /["'&<>]/; + +/** + * Module exports. + * @public + */ + +module.exports = escapeHtml; + +/** + * Escape special characters in the given string of html. + * + * @param {string} string The string to escape for inserting into HTML + * @return {string} + * @public + */ + +function escapeHtml(string) { + var str = '' + string; + var match = matchHtmlRegExp.exec(str); + + if (!match) { + return str; + } + + var escape; + var html = ''; + var index = 0; + var lastIndex = 0; + + for (index = match.index; index < str.length; index++) { + switch (str.charCodeAt(index)) { + case 34: // " + escape = '"'; + break; + case 38: // & + escape = '&'; + break; + case 39: // ' + escape = '''; + break; + case 60: // < + escape = '<'; + break; + case 62: // > + escape = '>'; + break; + default: + continue; + } + + if (lastIndex !== index) { + html += str.substring(lastIndex, index); + } + + lastIndex = index + 1; + html += escape; + } + + return lastIndex !== index + ? html + str.substring(lastIndex, index) + : html; +} + + +/***/ }), + +/***/ "./node_modules/escape-string-regexp/index.js": +/*!****************************************************!*\ + !*** ./node_modules/escape-string-regexp/index.js ***! + \****************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +const matchOperatorsRegex = /[|\\{}()[\]^$+*?.-]/g; + +module.exports = string => { + if (typeof string !== 'string') { + throw new TypeError('Expected a string'); + } + + return string.replace(matchOperatorsRegex, '\\$&'); +}; + + +/***/ }), + +/***/ "./node_modules/expose-loader/index.js?lunr!./node_modules/lunr/lunr.js-exposed": +/*!*****************************************************************************!*\ + !*** ./node_modules/expose-loader?lunr!./node_modules/lunr/lunr.js-exposed ***! + \*****************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +/* WEBPACK VAR INJECTION */(function(global) {module.exports = global["lunr"] = __webpack_require__(/*! -!./lunr.js */ "./node_modules/lunr/lunr.js"); +/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../webpack/buildin/global.js */ "./node_modules/webpack/buildin/global.js"))) + +/***/ }), + +/***/ "./node_modules/lunr/lunr.js": +/*!***********************************!*\ + !*** ./node_modules/lunr/lunr.js ***! + \***********************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/** + * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.8 + * Copyright (C) 2019 Oliver Nightingale + * @license MIT + */ + +;(function(){ + +/** + * A convenience function for configuring and constructing + * a new lunr Index. + * + * A lunr.Builder instance is created and the pipeline setup + * with a trimmer, stop word filter and stemmer. + * + * This builder object is yielded to the configuration function + * that is passed as a parameter, allowing the list of fields + * and other builder parameters to be customised. + * + * All documents _must_ be added within the passed config function. + * + * @example + * var idx = lunr(function () { + * this.field('title') + * this.field('body') + * this.ref('id') + * + * documents.forEach(function (doc) { + * this.add(doc) + * }, this) + * }) + * + * @see {@link lunr.Builder} + * @see {@link lunr.Pipeline} + * @see {@link lunr.trimmer} + * @see {@link lunr.stopWordFilter} + * @see {@link lunr.stemmer} + * @namespace {function} lunr + */ +var lunr = function (config) { + var builder = new lunr.Builder + + builder.pipeline.add( + lunr.trimmer, + lunr.stopWordFilter, + lunr.stemmer + ) + + builder.searchPipeline.add( + lunr.stemmer + ) + + config.call(builder, builder) + return builder.build() +} + +lunr.version = "2.3.8" +/*! + * lunr.utils + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * A namespace containing utils for the rest of the lunr library + * @namespace lunr.utils + */ +lunr.utils = {} + +/** + * Print a warning message to the console. + * + * @param {String} message The message to be printed. + * @memberOf lunr.utils + * @function + */ +lunr.utils.warn = (function (global) { + /* eslint-disable no-console */ + return function (message) { + if (global.console && console.warn) { + console.warn(message) + } + } + /* eslint-enable no-console */ +})(this) + +/** + * Convert an object to a string. + * + * In the case of `null` and `undefined` the function returns + * the empty string, in all other cases the result of calling + * `toString` on the passed object is returned. + * + * @param {Any} obj The object to convert to a string. + * @return {String} string representation of the passed object. + * @memberOf lunr.utils + */ +lunr.utils.asString = function (obj) { + if (obj === void 0 || obj === null) { + return "" + } else { + return obj.toString() + } +} + +/** + * Clones an object. + * + * Will create a copy of an existing object such that any mutations + * on the copy cannot affect the original. + * + * Only shallow objects are supported, passing a nested object to this + * function will cause a TypeError. + * + * Objects with primitives, and arrays of primitives are supported. + * + * @param {Object} obj The object to clone. + * @return {Object} a clone of the passed object. + * @throws {TypeError} when a nested object is passed. + * @memberOf Utils + */ +lunr.utils.clone = function (obj) { + if (obj === null || obj === undefined) { + return obj + } + + var clone = Object.create(null), + keys = Object.keys(obj) + + for (var i = 0; i < keys.length; i++) { + var key = keys[i], + val = obj[key] + + if (Array.isArray(val)) { + clone[key] = val.slice() + continue + } + + if (typeof val === 'string' || + typeof val === 'number' || + typeof val === 'boolean') { + clone[key] = val + continue + } + + throw new TypeError("clone is not deep and does not support nested objects") + } + + return clone +} +lunr.FieldRef = function (docRef, fieldName, stringValue) { + this.docRef = docRef + this.fieldName = fieldName + this._stringValue = stringValue +} + +lunr.FieldRef.joiner = "/" + +lunr.FieldRef.fromString = function (s) { + var n = s.indexOf(lunr.FieldRef.joiner) + + if (n === -1) { + throw "malformed field ref string" + } + + var fieldRef = s.slice(0, n), + docRef = s.slice(n + 1) + + return new lunr.FieldRef (docRef, fieldRef, s) +} + +lunr.FieldRef.prototype.toString = function () { + if (this._stringValue == undefined) { + this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef + } + + return this._stringValue +} +/*! + * lunr.Set + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * A lunr set. + * + * @constructor + */ +lunr.Set = function (elements) { + this.elements = Object.create(null) + + if (elements) { + this.length = elements.length + + for (var i = 0; i < this.length; i++) { + this.elements[elements[i]] = true + } + } else { + this.length = 0 + } +} + +/** + * A complete set that contains all elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.complete = { + intersect: function (other) { + return other + }, + + union: function (other) { + return other + }, + + contains: function () { + return true + } +} + +/** + * An empty set that contains no elements. + * + * @static + * @readonly + * @type {lunr.Set} + */ +lunr.Set.empty = { + intersect: function () { + return this + }, + + union: function (other) { + return other + }, + + contains: function () { + return false + } +} + +/** + * Returns true if this set contains the specified object. + * + * @param {object} object - Object whose presence in this set is to be tested. + * @returns {boolean} - True if this set contains the specified object. + */ +lunr.Set.prototype.contains = function (object) { + return !!this.elements[object] +} + +/** + * Returns a new set containing only the elements that are present in both + * this set and the specified set. + * + * @param {lunr.Set} other - set to intersect with this set. + * @returns {lunr.Set} a new set that is the intersection of this and the specified set. + */ + +lunr.Set.prototype.intersect = function (other) { + var a, b, elements, intersection = [] + + if (other === lunr.Set.complete) { + return this + } + + if (other === lunr.Set.empty) { + return other + } + + if (this.length < other.length) { + a = this + b = other + } else { + a = other + b = this + } + + elements = Object.keys(a.elements) + + for (var i = 0; i < elements.length; i++) { + var element = elements[i] + if (element in b.elements) { + intersection.push(element) + } + } + + return new lunr.Set (intersection) +} + +/** + * Returns a new set combining the elements of this and the specified set. + * + * @param {lunr.Set} other - set to union with this set. + * @return {lunr.Set} a new set that is the union of this and the specified set. + */ + +lunr.Set.prototype.union = function (other) { + if (other === lunr.Set.complete) { + return lunr.Set.complete + } + + if (other === lunr.Set.empty) { + return this + } + + return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements))) +} +/** + * A function to calculate the inverse document frequency for + * a posting. This is shared between the builder and the index + * + * @private + * @param {object} posting - The posting for a given term + * @param {number} documentCount - The total number of documents. + */ +lunr.idf = function (posting, documentCount) { + var documentsWithTerm = 0 + + for (var fieldName in posting) { + if (fieldName == '_index') continue // Ignore the term index, its not a field + documentsWithTerm += Object.keys(posting[fieldName]).length + } + + var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5) + + return Math.log(1 + Math.abs(x)) +} + +/** + * A token wraps a string representation of a token + * as it is passed through the text processing pipeline. + * + * @constructor + * @param {string} [str=''] - The string token being wrapped. + * @param {object} [metadata={}] - Metadata associated with this token. + */ +lunr.Token = function (str, metadata) { + this.str = str || "" + this.metadata = metadata || {} +} + +/** + * Returns the token string that is being wrapped by this object. + * + * @returns {string} + */ +lunr.Token.prototype.toString = function () { + return this.str +} + +/** + * A token update function is used when updating or optionally + * when cloning a token. + * + * @callback lunr.Token~updateFunction + * @param {string} str - The string representation of the token. + * @param {Object} metadata - All metadata associated with this token. + */ + +/** + * Applies the given function to the wrapped string token. + * + * @example + * token.update(function (str, metadata) { + * return str.toUpperCase() + * }) + * + * @param {lunr.Token~updateFunction} fn - A function to apply to the token string. + * @returns {lunr.Token} + */ +lunr.Token.prototype.update = function (fn) { + this.str = fn(this.str, this.metadata) + return this +} + +/** + * Creates a clone of this token. Optionally a function can be + * applied to the cloned token. + * + * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token. + * @returns {lunr.Token} + */ +lunr.Token.prototype.clone = function (fn) { + fn = fn || function (s) { return s } + return new lunr.Token (fn(this.str, this.metadata), this.metadata) +} +/*! + * lunr.tokenizer + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * A function for splitting a string into tokens ready to be inserted into + * the search index. Uses `lunr.tokenizer.separator` to split strings, change + * the value of this property to change how strings are split into tokens. + * + * This tokenizer will convert its parameter to a string by calling `toString` and + * then will split this string on the character in `lunr.tokenizer.separator`. + * Arrays will have their elements converted to strings and wrapped in a lunr.Token. + * + * Optional metadata can be passed to the tokenizer, this metadata will be cloned and + * added as metadata to every token that is created from the object to be tokenized. + * + * @static + * @param {?(string|object|object[])} obj - The object to convert into tokens + * @param {?object} metadata - Optional metadata to associate with every token + * @returns {lunr.Token[]} + * @see {@link lunr.Pipeline} + */ +lunr.tokenizer = function (obj, metadata) { + if (obj == null || obj == undefined) { + return [] + } + + if (Array.isArray(obj)) { + return obj.map(function (t) { + return new lunr.Token( + lunr.utils.asString(t).toLowerCase(), + lunr.utils.clone(metadata) + ) + }) + } + + var str = obj.toString().toLowerCase(), + len = str.length, + tokens = [] + + for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) { + var char = str.charAt(sliceEnd), + sliceLength = sliceEnd - sliceStart + + if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) { + + if (sliceLength > 0) { + var tokenMetadata = lunr.utils.clone(metadata) || {} + tokenMetadata["position"] = [sliceStart, sliceLength] + tokenMetadata["index"] = tokens.length + + tokens.push( + new lunr.Token ( + str.slice(sliceStart, sliceEnd), + tokenMetadata + ) + ) + } + + sliceStart = sliceEnd + 1 + } + + } + + return tokens +} + +/** + * The separator used to split a string into tokens. Override this property to change the behaviour of + * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens. + * + * @static + * @see lunr.tokenizer + */ +lunr.tokenizer.separator = /[\s\-]+/ +/*! + * lunr.Pipeline + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * lunr.Pipelines maintain an ordered list of functions to be applied to all + * tokens in documents entering the search index and queries being ran against + * the index. + * + * An instance of lunr.Index created with the lunr shortcut will contain a + * pipeline with a stop word filter and an English language stemmer. Extra + * functions can be added before or after either of these functions or these + * default functions can be removed. + * + * When run the pipeline will call each function in turn, passing a token, the + * index of that token in the original list of all tokens and finally a list of + * all the original tokens. + * + * The output of functions in the pipeline will be passed to the next function + * in the pipeline. To exclude a token from entering the index the function + * should return undefined, the rest of the pipeline will not be called with + * this token. + * + * For serialisation of pipelines to work, all functions used in an instance of + * a pipeline should be registered with lunr.Pipeline. Registered functions can + * then be loaded. If trying to load a serialised pipeline that uses functions + * that are not registered an error will be thrown. + * + * If not planning on serialising the pipeline then registering pipeline functions + * is not necessary. + * + * @constructor + */ +lunr.Pipeline = function () { + this._stack = [] +} + +lunr.Pipeline.registeredFunctions = Object.create(null) + +/** + * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token + * string as well as all known metadata. A pipeline function can mutate the token string + * or mutate (or add) metadata for a given token. + * + * A pipeline function can indicate that the passed token should be discarded by returning + * null, undefined or an empty string. This token will not be passed to any downstream pipeline + * functions and will not be added to the index. + * + * Multiple tokens can be returned by returning an array of tokens. Each token will be passed + * to any downstream pipeline functions and all will returned tokens will be added to the index. + * + * Any number of pipeline functions may be chained together using a lunr.Pipeline. + * + * @interface lunr.PipelineFunction + * @param {lunr.Token} token - A token from the document being processed. + * @param {number} i - The index of this token in the complete list of tokens for this document/field. + * @param {lunr.Token[]} tokens - All tokens for this document/field. + * @returns {(?lunr.Token|lunr.Token[])} + */ + +/** + * Register a function with the pipeline. + * + * Functions that are used in the pipeline should be registered if the pipeline + * needs to be serialised, or a serialised pipeline needs to be loaded. + * + * Registering a function does not add it to a pipeline, functions must still be + * added to instances of the pipeline for them to be used when running a pipeline. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @param {String} label - The label to register this function with + */ +lunr.Pipeline.registerFunction = function (fn, label) { + if (label in this.registeredFunctions) { + lunr.utils.warn('Overwriting existing registered function: ' + label) + } + + fn.label = label + lunr.Pipeline.registeredFunctions[fn.label] = fn +} + +/** + * Warns if the function is not registered as a Pipeline function. + * + * @param {lunr.PipelineFunction} fn - The function to check for. + * @private + */ +lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) { + var isRegistered = fn.label && (fn.label in this.registeredFunctions) + + if (!isRegistered) { + lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\n', fn) + } +} + +/** + * Loads a previously serialised pipeline. + * + * All functions to be loaded must already be registered with lunr.Pipeline. + * If any function from the serialised data has not been registered then an + * error will be thrown. + * + * @param {Object} serialised - The serialised pipeline to load. + * @returns {lunr.Pipeline} + */ +lunr.Pipeline.load = function (serialised) { + var pipeline = new lunr.Pipeline + + serialised.forEach(function (fnName) { + var fn = lunr.Pipeline.registeredFunctions[fnName] + + if (fn) { + pipeline.add(fn) + } else { + throw new Error('Cannot load unregistered function: ' + fnName) + } + }) + + return pipeline +} + +/** + * Adds new functions to the end of the pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline. + */ +lunr.Pipeline.prototype.add = function () { + var fns = Array.prototype.slice.call(arguments) + + fns.forEach(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + this._stack.push(fn) + }, this) +} + +/** + * Adds a single function after a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.after = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + pos = pos + 1 + this._stack.splice(pos, 0, newFn) +} + +/** + * Adds a single function before a function that already exists in the + * pipeline. + * + * Logs a warning if the function has not been registered. + * + * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline. + * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline. + */ +lunr.Pipeline.prototype.before = function (existingFn, newFn) { + lunr.Pipeline.warnIfFunctionNotRegistered(newFn) + + var pos = this._stack.indexOf(existingFn) + if (pos == -1) { + throw new Error('Cannot find existingFn') + } + + this._stack.splice(pos, 0, newFn) +} + +/** + * Removes a function from the pipeline. + * + * @param {lunr.PipelineFunction} fn The function to remove from the pipeline. + */ +lunr.Pipeline.prototype.remove = function (fn) { + var pos = this._stack.indexOf(fn) + if (pos == -1) { + return + } + + this._stack.splice(pos, 1) +} + +/** + * Runs the current list of functions that make up the pipeline against the + * passed tokens. + * + * @param {Array} tokens The tokens to run through the pipeline. + * @returns {Array} + */ +lunr.Pipeline.prototype.run = function (tokens) { + var stackLength = this._stack.length + + for (var i = 0; i < stackLength; i++) { + var fn = this._stack[i] + var memo = [] + + for (var j = 0; j < tokens.length; j++) { + var result = fn(tokens[j], j, tokens) + + if (result === null || result === void 0 || result === '') continue + + if (Array.isArray(result)) { + for (var k = 0; k < result.length; k++) { + memo.push(result[k]) + } + } else { + memo.push(result) + } + } + + tokens = memo + } + + return tokens +} + +/** + * Convenience method for passing a string through a pipeline and getting + * strings out. This method takes care of wrapping the passed string in a + * token and mapping the resulting tokens back to strings. + * + * @param {string} str - The string to pass through the pipeline. + * @param {?object} metadata - Optional metadata to associate with the token + * passed to the pipeline. + * @returns {string[]} + */ +lunr.Pipeline.prototype.runString = function (str, metadata) { + var token = new lunr.Token (str, metadata) + + return this.run([token]).map(function (t) { + return t.toString() + }) +} + +/** + * Resets the pipeline by removing any existing processors. + * + */ +lunr.Pipeline.prototype.reset = function () { + this._stack = [] +} + +/** + * Returns a representation of the pipeline ready for serialisation. + * + * Logs a warning if the function has not been registered. + * + * @returns {Array} + */ +lunr.Pipeline.prototype.toJSON = function () { + return this._stack.map(function (fn) { + lunr.Pipeline.warnIfFunctionNotRegistered(fn) + + return fn.label + }) +} +/*! + * lunr.Vector + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * A vector is used to construct the vector space of documents and queries. These + * vectors support operations to determine the similarity between two documents or + * a document and a query. + * + * Normally no parameters are required for initializing a vector, but in the case of + * loading a previously dumped vector the raw elements can be provided to the constructor. + * + * For performance reasons vectors are implemented with a flat array, where an elements + * index is immediately followed by its value. E.g. [index, value, index, value]. This + * allows the underlying array to be as sparse as possible and still offer decent + * performance when being used for vector calculations. + * + * @constructor + * @param {Number[]} [elements] - The flat list of element index and element value pairs. + */ +lunr.Vector = function (elements) { + this._magnitude = 0 + this.elements = elements || [] +} + + +/** + * Calculates the position within the vector to insert a given index. + * + * This is used internally by insert and upsert. If there are duplicate indexes then + * the position is returned as if the value for that index were to be updated, but it + * is the callers responsibility to check whether there is a duplicate at that index + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @returns {Number} + */ +lunr.Vector.prototype.positionForIndex = function (index) { + // For an empty vector the tuple can be inserted at the beginning + if (this.elements.length == 0) { + return 0 + } + + var start = 0, + end = this.elements.length / 2, + sliceLength = end - start, + pivotPoint = Math.floor(sliceLength / 2), + pivotIndex = this.elements[pivotPoint * 2] + + while (sliceLength > 1) { + if (pivotIndex < index) { + start = pivotPoint + } + + if (pivotIndex > index) { + end = pivotPoint + } + + if (pivotIndex == index) { + break + } + + sliceLength = end - start + pivotPoint = start + Math.floor(sliceLength / 2) + pivotIndex = this.elements[pivotPoint * 2] + } + + if (pivotIndex == index) { + return pivotPoint * 2 + } + + if (pivotIndex > index) { + return pivotPoint * 2 + } + + if (pivotIndex < index) { + return (pivotPoint + 1) * 2 + } +} + +/** + * Inserts an element at an index within the vector. + * + * Does not allow duplicates, will throw an error if there is already an entry + * for this index. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + */ +lunr.Vector.prototype.insert = function (insertIdx, val) { + this.upsert(insertIdx, val, function () { + throw "duplicate index" + }) +} + +/** + * Inserts or updates an existing index within the vector. + * + * @param {Number} insertIdx - The index at which the element should be inserted. + * @param {Number} val - The value to be inserted into the vector. + * @param {function} fn - A function that is called for updates, the existing value and the + * requested value are passed as arguments + */ +lunr.Vector.prototype.upsert = function (insertIdx, val, fn) { + this._magnitude = 0 + var position = this.positionForIndex(insertIdx) + + if (this.elements[position] == insertIdx) { + this.elements[position + 1] = fn(this.elements[position + 1], val) + } else { + this.elements.splice(position, 0, insertIdx, val) + } +} + +/** + * Calculates the magnitude of this vector. + * + * @returns {Number} + */ +lunr.Vector.prototype.magnitude = function () { + if (this._magnitude) return this._magnitude + + var sumOfSquares = 0, + elementsLength = this.elements.length + + for (var i = 1; i < elementsLength; i += 2) { + var val = this.elements[i] + sumOfSquares += val * val + } + + return this._magnitude = Math.sqrt(sumOfSquares) +} + +/** + * Calculates the dot product of this vector and another vector. + * + * @param {lunr.Vector} otherVector - The vector to compute the dot product with. + * @returns {Number} + */ +lunr.Vector.prototype.dot = function (otherVector) { + var dotProduct = 0, + a = this.elements, b = otherVector.elements, + aLen = a.length, bLen = b.length, + aVal = 0, bVal = 0, + i = 0, j = 0 + + while (i < aLen && j < bLen) { + aVal = a[i], bVal = b[j] + if (aVal < bVal) { + i += 2 + } else if (aVal > bVal) { + j += 2 + } else if (aVal == bVal) { + dotProduct += a[i + 1] * b[j + 1] + i += 2 + j += 2 + } + } + + return dotProduct +} + +/** + * Calculates the similarity between this vector and another vector. + * + * @param {lunr.Vector} otherVector - The other vector to calculate the + * similarity with. + * @returns {Number} + */ +lunr.Vector.prototype.similarity = function (otherVector) { + return this.dot(otherVector) / this.magnitude() || 0 +} + +/** + * Converts the vector to an array of the elements within the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toArray = function () { + var output = new Array (this.elements.length / 2) + + for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) { + output[j] = this.elements[i] + } + + return output +} + +/** + * A JSON serializable representation of the vector. + * + * @returns {Number[]} + */ +lunr.Vector.prototype.toJSON = function () { + return this.elements +} +/* eslint-disable */ +/*! + * lunr.stemmer + * Copyright (C) 2019 Oliver Nightingale + * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt + */ + +/** + * lunr.stemmer is an english language stemmer, this is a JavaScript + * implementation of the PorterStemmer taken from http://tartarus.org/~martin + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token - The string to stem + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + * @function + */ +lunr.stemmer = (function(){ + var step2list = { + "ational" : "ate", + "tional" : "tion", + "enci" : "ence", + "anci" : "ance", + "izer" : "ize", + "bli" : "ble", + "alli" : "al", + "entli" : "ent", + "eli" : "e", + "ousli" : "ous", + "ization" : "ize", + "ation" : "ate", + "ator" : "ate", + "alism" : "al", + "iveness" : "ive", + "fulness" : "ful", + "ousness" : "ous", + "aliti" : "al", + "iviti" : "ive", + "biliti" : "ble", + "logi" : "log" + }, + + step3list = { + "icate" : "ic", + "ative" : "", + "alize" : "al", + "iciti" : "ic", + "ical" : "ic", + "ful" : "", + "ness" : "" + }, + + c = "[^aeiou]", // consonant + v = "[aeiouy]", // vowel + C = c + "[^aeiouy]*", // consonant sequence + V = v + "[aeiou]*", // vowel sequence + + mgr0 = "^(" + C + ")?" + V + C, // [C]VC... is m>0 + meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$", // [C]VC[V] is m=1 + mgr1 = "^(" + C + ")?" + V + C + V + C, // [C]VCVC... is m>1 + s_v = "^(" + C + ")?" + v; // vowel in stem + + var re_mgr0 = new RegExp(mgr0); + var re_mgr1 = new RegExp(mgr1); + var re_meq1 = new RegExp(meq1); + var re_s_v = new RegExp(s_v); + + var re_1a = /^(.+?)(ss|i)es$/; + var re2_1a = /^(.+?)([^s])s$/; + var re_1b = /^(.+?)eed$/; + var re2_1b = /^(.+?)(ed|ing)$/; + var re_1b_2 = /.$/; + var re2_1b_2 = /(at|bl|iz)$/; + var re3_1b_2 = new RegExp("([^aeiouylsz])\\1$"); + var re4_1b_2 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var re_1c = /^(.+?[^aeiou])y$/; + var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + + var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + + var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + var re2_4 = /^(.+?)(s|t)(ion)$/; + + var re_5 = /^(.+?)e$/; + var re_5_1 = /ll$/; + var re3_5 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + + var porterStemmer = function porterStemmer(w) { + var stem, + suffix, + firstch, + re, + re2, + re3, + re4; + + if (w.length < 3) { return w; } + + firstch = w.substr(0,1); + if (firstch == "y") { + w = firstch.toUpperCase() + w.substr(1); + } + + // Step 1a + re = re_1a + re2 = re2_1a; + + if (re.test(w)) { w = w.replace(re,"$1$2"); } + else if (re2.test(w)) { w = w.replace(re2,"$1$2"); } + + // Step 1b + re = re_1b; + re2 = re2_1b; + if (re.test(w)) { + var fp = re.exec(w); + re = re_mgr0; + if (re.test(fp[1])) { + re = re_1b_2; + w = w.replace(re,""); + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = re_s_v; + if (re2.test(stem)) { + w = stem; + re2 = re2_1b_2; + re3 = re3_1b_2; + re4 = re4_1b_2; + if (re2.test(w)) { w = w + "e"; } + else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,""); } + else if (re4.test(w)) { w = w + "e"; } + } + } + + // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say) + re = re_1c; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + w = stem + "i"; + } + + // Step 2 + re = re_2; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step2list[suffix]; + } + } + + // Step 3 + re = re_3; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = re_mgr0; + if (re.test(stem)) { + w = stem + step3list[suffix]; + } + } + + // Step 4 + re = re_4; + re2 = re2_4; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + if (re.test(stem)) { + w = stem; + } + } else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = re_mgr1; + if (re2.test(stem)) { + w = stem; + } + } + + // Step 5 + re = re_5; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = re_mgr1; + re2 = re_meq1; + re3 = re3_5; + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) { + w = stem; + } + } + + re = re_5_1; + re2 = re_mgr1; + if (re.test(w) && re2.test(w)) { + re = re_1b_2; + w = w.replace(re,""); + } + + // and turn initial Y back to y + + if (firstch == "y") { + w = firstch.toLowerCase() + w.substr(1); + } + + return w; + }; + + return function (token) { + return token.update(porterStemmer); + } +})(); + +lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer') +/*! + * lunr.stopWordFilter + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * lunr.generateStopWordFilter builds a stopWordFilter function from the provided + * list of stop words. + * + * The built in lunr.stopWordFilter is built using this generator and can be used + * to generate custom stopWordFilters for applications or non English languages. + * + * @function + * @param {Array} token The token to pass through the filter + * @returns {lunr.PipelineFunction} + * @see lunr.Pipeline + * @see lunr.stopWordFilter + */ +lunr.generateStopWordFilter = function (stopWords) { + var words = stopWords.reduce(function (memo, stopWord) { + memo[stopWord] = stopWord + return memo + }, {}) + + return function (token) { + if (token && words[token.toString()] !== token.toString()) return token + } +} + +/** + * lunr.stopWordFilter is an English language stop word list filter, any words + * contained in the list will not be passed through the filter. + * + * This is intended to be used in the Pipeline. If the token does not pass the + * filter then undefined will be returned. + * + * @function + * @implements {lunr.PipelineFunction} + * @params {lunr.Token} token - A token to check for being a stop word. + * @returns {lunr.Token} + * @see {@link lunr.Pipeline} + */ +lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'all', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'any', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'do', + 'does', + 'either', + 'else', + 'ever', + 'every', + 'for', + 'from', + 'get', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'in', + 'into', + 'is', + 'it', + 'its', + 'just', + 'least', + 'let', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'only', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'where', + 'which', + 'while', + 'who', + 'whom', + 'why', + 'will', + 'with', + 'would', + 'yet', + 'you', + 'your' +]) + +lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter') +/*! + * lunr.trimmer + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * lunr.trimmer is a pipeline function for trimming non word + * characters from the beginning and end of tokens before they + * enter the index. + * + * This implementation may not work correctly for non latin + * characters and should either be removed or adapted for use + * with languages with non-latin characters. + * + * @static + * @implements {lunr.PipelineFunction} + * @param {lunr.Token} token The token to pass through the filter + * @returns {lunr.Token} + * @see lunr.Pipeline + */ +lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^\W+/, '').replace(/\W+$/, '') + }) +} + +lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer') +/*! + * lunr.TokenSet + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * A token set is used to store the unique list of all tokens + * within an index. Token sets are also used to represent an + * incoming query to the index, this query token set and index + * token set are then intersected to find which tokens to look + * up in the inverted index. + * + * A token set can hold multiple tokens, as in the case of the + * index token set, or it can hold a single token as in the + * case of a simple query token set. + * + * Additionally token sets are used to perform wildcard matching. + * Leading, contained and trailing wildcards are supported, and + * from this edit distance matching can also be provided. + * + * Token sets are implemented as a minimal finite state automata, + * where both common prefixes and suffixes are shared between tokens. + * This helps to reduce the space used for storing the token set. + * + * @constructor + */ +lunr.TokenSet = function () { + this.final = false + this.edges = {} + this.id = lunr.TokenSet._nextId + lunr.TokenSet._nextId += 1 +} + +/** + * Keeps track of the next, auto increment, identifier to assign + * to a new tokenSet. + * + * TokenSets require a unique identifier to be correctly minimised. + * + * @private + */ +lunr.TokenSet._nextId = 1 + +/** + * Creates a TokenSet instance from the given sorted array of words. + * + * @param {String[]} arr - A sorted array of strings to create the set from. + * @returns {lunr.TokenSet} + * @throws Will throw an error if the input array is not sorted. + */ +lunr.TokenSet.fromArray = function (arr) { + var builder = new lunr.TokenSet.Builder + + for (var i = 0, len = arr.length; i < len; i++) { + builder.insert(arr[i]) + } + + builder.finish() + return builder.root +} + +/** + * Creates a token set from a query clause. + * + * @private + * @param {Object} clause - A single clause from lunr.Query. + * @param {string} clause.term - The query clause term. + * @param {number} [clause.editDistance] - The optional edit distance for the term. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromClause = function (clause) { + if ('editDistance' in clause) { + return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance) + } else { + return lunr.TokenSet.fromString(clause.term) + } +} + +/** + * Creates a token set representing a single string with a specified + * edit distance. + * + * Insertions, deletions, substitutions and transpositions are each + * treated as an edit distance of 1. + * + * Increasing the allowed edit distance will have a dramatic impact + * on the performance of both creating and intersecting these TokenSets. + * It is advised to keep the edit distance less than 3. + * + * @param {string} str - The string to create the token set from. + * @param {number} editDistance - The allowed edit distance to match. + * @returns {lunr.Vector} + */ +lunr.TokenSet.fromFuzzyString = function (str, editDistance) { + var root = new lunr.TokenSet + + var stack = [{ + node: root, + editsRemaining: editDistance, + str: str + }] + + while (stack.length) { + var frame = stack.pop() + + // no edit + if (frame.str.length > 0) { + var char = frame.str.charAt(0), + noEditNode + + if (char in frame.node.edges) { + noEditNode = frame.node.edges[char] + } else { + noEditNode = new lunr.TokenSet + frame.node.edges[char] = noEditNode + } + + if (frame.str.length == 1) { + noEditNode.final = true + } + + stack.push({ + node: noEditNode, + editsRemaining: frame.editsRemaining, + str: frame.str.slice(1) + }) + } + + if (frame.editsRemaining == 0) { + continue + } + + // insertion + if ("*" in frame.node.edges) { + var insertionNode = frame.node.edges["*"] + } else { + var insertionNode = new lunr.TokenSet + frame.node.edges["*"] = insertionNode + } + + if (frame.str.length == 0) { + insertionNode.final = true + } + + stack.push({ + node: insertionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str + }) + + // deletion + // can only do a deletion if we have enough edits remaining + // and if there are characters left to delete in the string + if (frame.str.length > 1) { + stack.push({ + node: frame.node, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // deletion + // just removing the last character from the str + if (frame.str.length == 1) { + frame.node.final = true + } + + // substitution + // can only do a substitution if we have enough edits remaining + // and if there are characters left to substitute + if (frame.str.length >= 1) { + if ("*" in frame.node.edges) { + var substitutionNode = frame.node.edges["*"] + } else { + var substitutionNode = new lunr.TokenSet + frame.node.edges["*"] = substitutionNode + } + + if (frame.str.length == 1) { + substitutionNode.final = true + } + + stack.push({ + node: substitutionNode, + editsRemaining: frame.editsRemaining - 1, + str: frame.str.slice(1) + }) + } + + // transposition + // can only do a transposition if there are edits remaining + // and there are enough characters to transpose + if (frame.str.length > 1) { + var charA = frame.str.charAt(0), + charB = frame.str.charAt(1), + transposeNode + + if (charB in frame.node.edges) { + transposeNode = frame.node.edges[charB] + } else { + transposeNode = new lunr.TokenSet + frame.node.edges[charB] = transposeNode + } + + if (frame.str.length == 1) { + transposeNode.final = true + } + + stack.push({ + node: transposeNode, + editsRemaining: frame.editsRemaining - 1, + str: charA + frame.str.slice(2) + }) + } + } + + return root +} + +/** + * Creates a TokenSet from a string. + * + * The string may contain one or more wildcard characters (*) + * that will allow wildcard matching when intersecting with + * another TokenSet. + * + * @param {string} str - The string to create a TokenSet from. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.fromString = function (str) { + var node = new lunr.TokenSet, + root = node + + /* + * Iterates through all characters within the passed string + * appending a node for each character. + * + * When a wildcard character is found then a self + * referencing edge is introduced to continually match + * any number of any characters. + */ + for (var i = 0, len = str.length; i < len; i++) { + var char = str[i], + final = (i == len - 1) + + if (char == "*") { + node.edges[char] = node + node.final = final + + } else { + var next = new lunr.TokenSet + next.final = final + + node.edges[char] = next + node = next + } + } + + return root +} + +/** + * Converts this TokenSet into an array of strings + * contained within the TokenSet. + * + * This is not intended to be used on a TokenSet that + * contains wildcards, in these cases the results are + * undefined and are likely to cause an infinite loop. + * + * @returns {string[]} + */ +lunr.TokenSet.prototype.toArray = function () { + var words = [] + + var stack = [{ + prefix: "", + node: this + }] + + while (stack.length) { + var frame = stack.pop(), + edges = Object.keys(frame.node.edges), + len = edges.length + + if (frame.node.final) { + /* In Safari, at this point the prefix is sometimes corrupted, see: + * https://github.com/olivernn/lunr.js/issues/279 Calling any + * String.prototype method forces Safari to "cast" this string to what + * it's supposed to be, fixing the bug. */ + frame.prefix.charAt(0) + words.push(frame.prefix) + } + + for (var i = 0; i < len; i++) { + var edge = edges[i] + + stack.push({ + prefix: frame.prefix.concat(edge), + node: frame.node.edges[edge] + }) + } + } + + return words +} + +/** + * Generates a string representation of a TokenSet. + * + * This is intended to allow TokenSets to be used as keys + * in objects, largely to aid the construction and minimisation + * of a TokenSet. As such it is not designed to be a human + * friendly representation of the TokenSet. + * + * @returns {string} + */ +lunr.TokenSet.prototype.toString = function () { + // NOTE: Using Object.keys here as this.edges is very likely + // to enter 'hash-mode' with many keys being added + // + // avoiding a for-in loop here as it leads to the function + // being de-optimised (at least in V8). From some simple + // benchmarks the performance is comparable, but allowing + // V8 to optimize may mean easy performance wins in the future. + + if (this._str) { + return this._str + } + + var str = this.final ? '1' : '0', + labels = Object.keys(this.edges).sort(), + len = labels.length + + for (var i = 0; i < len; i++) { + var label = labels[i], + node = this.edges[label] + + str = str + label + node.id + } + + return str +} + +/** + * Returns a new TokenSet that is the intersection of + * this TokenSet and the passed TokenSet. + * + * This intersection will take into account any wildcards + * contained within the TokenSet. + * + * @param {lunr.TokenSet} b - An other TokenSet to intersect with. + * @returns {lunr.TokenSet} + */ +lunr.TokenSet.prototype.intersect = function (b) { + var output = new lunr.TokenSet, + frame = undefined + + var stack = [{ + qNode: b, + output: output, + node: this + }] + + while (stack.length) { + frame = stack.pop() + + // NOTE: As with the #toString method, we are using + // Object.keys and a for loop instead of a for-in loop + // as both of these objects enter 'hash' mode, causing + // the function to be de-optimised in V8 + var qEdges = Object.keys(frame.qNode.edges), + qLen = qEdges.length, + nEdges = Object.keys(frame.node.edges), + nLen = nEdges.length + + for (var q = 0; q < qLen; q++) { + var qEdge = qEdges[q] + + for (var n = 0; n < nLen; n++) { + var nEdge = nEdges[n] + + if (nEdge == qEdge || qEdge == '*') { + var node = frame.node.edges[nEdge], + qNode = frame.qNode.edges[qEdge], + final = node.final && qNode.final, + next = undefined + + if (nEdge in frame.output.edges) { + // an edge already exists for this character + // no need to create a new node, just set the finality + // bit unless this node is already final + next = frame.output.edges[nEdge] + next.final = next.final || final + + } else { + // no edge exists yet, must create one + // set the finality bit and insert it + // into the output + next = new lunr.TokenSet + next.final = final + frame.output.edges[nEdge] = next + } + + stack.push({ + qNode: qNode, + output: next, + node: node + }) + } + } + } + } + + return output +} +lunr.TokenSet.Builder = function () { + this.previousWord = "" + this.root = new lunr.TokenSet + this.uncheckedNodes = [] + this.minimizedNodes = {} +} + +lunr.TokenSet.Builder.prototype.insert = function (word) { + var node, + commonPrefix = 0 + + if (word < this.previousWord) { + throw new Error ("Out of order word insertion") + } + + for (var i = 0; i < word.length && i < this.previousWord.length; i++) { + if (word[i] != this.previousWord[i]) break + commonPrefix++ + } + + this.minimize(commonPrefix) + + if (this.uncheckedNodes.length == 0) { + node = this.root + } else { + node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child + } + + for (var i = commonPrefix; i < word.length; i++) { + var nextNode = new lunr.TokenSet, + char = word[i] + + node.edges[char] = nextNode + + this.uncheckedNodes.push({ + parent: node, + char: char, + child: nextNode + }) + + node = nextNode + } + + node.final = true + this.previousWord = word +} + +lunr.TokenSet.Builder.prototype.finish = function () { + this.minimize(0) +} + +lunr.TokenSet.Builder.prototype.minimize = function (downTo) { + for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) { + var node = this.uncheckedNodes[i], + childKey = node.child.toString() + + if (childKey in this.minimizedNodes) { + node.parent.edges[node.char] = this.minimizedNodes[childKey] + } else { + // Cache the key for this node since + // we know it can't change anymore + node.child._str = childKey + + this.minimizedNodes[childKey] = node.child + } + + this.uncheckedNodes.pop() + } +} +/*! + * lunr.Index + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * An index contains the built index of all documents and provides a query interface + * to the index. + * + * Usually instances of lunr.Index will not be created using this constructor, instead + * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be + * used to load previously built and serialized indexes. + * + * @constructor + * @param {Object} attrs - The attributes of the built search index. + * @param {Object} attrs.invertedIndex - An index of term/field to document reference. + * @param {Object} attrs.fieldVectors - Field vectors + * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens. + * @param {string[]} attrs.fields - The names of indexed document fields. + * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms. + */ +lunr.Index = function (attrs) { + this.invertedIndex = attrs.invertedIndex + this.fieldVectors = attrs.fieldVectors + this.tokenSet = attrs.tokenSet + this.fields = attrs.fields + this.pipeline = attrs.pipeline +} + +/** + * A result contains details of a document matching a search query. + * @typedef {Object} lunr.Index~Result + * @property {string} ref - The reference of the document this result represents. + * @property {number} score - A number between 0 and 1 representing how similar this document is to the query. + * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match. + */ + +/** + * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple + * query language which itself is parsed into an instance of lunr.Query. + * + * For programmatically building queries it is advised to directly use lunr.Query, the query language + * is best used for human entered text rather than program generated text. + * + * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported + * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello' + * or 'world', though those that contain both will rank higher in the results. + * + * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can + * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding + * wildcards will increase the number of documents that will be found but can also have a negative + * impact on query performance, especially with wildcards at the beginning of a term. + * + * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term + * hello in the title field will match this query. Using a field not present in the index will lead + * to an error being thrown. + * + * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term + * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported + * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2. + * Avoid large values for edit distance to improve query performance. + * + * Each term also supports a presence modifier. By default a term's presence in document is optional, however + * this can be changed to either required or prohibited. For a term's presence to be required in a document the + * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and + * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not + * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'. + * + * To escape special characters the backslash character '\' can be used, this allows searches to include + * characters that would normally be considered modifiers, e.g. `foo\~2` will search for a term "foo~2" instead + * of attempting to apply a boost of 2 to the search term "foo". + * + * @typedef {string} lunr.Index~QueryString + * @example Simple single term query + * hello + * @example Multiple term query + * hello world + * @example term scoped to a field + * title:hello + * @example term with a boost of 10 + * hello^10 + * @example term with an edit distance of 2 + * hello~2 + * @example terms with presence modifiers + * -foo +bar baz + */ + +/** + * Performs a search against the index using lunr query syntax. + * + * Results will be returned sorted by their score, the most relevant results + * will be returned first. For details on how the score is calculated, please see + * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}. + * + * For more programmatic querying use lunr.Index#query. + * + * @param {lunr.Index~QueryString} queryString - A string containing a lunr query. + * @throws {lunr.QueryParseError} If the passed query string cannot be parsed. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.search = function (queryString) { + return this.query(function (query) { + var parser = new lunr.QueryParser(queryString, query) + parser.parse() + }) +} + +/** + * A query builder callback provides a query object to be used to express + * the query to perform on the index. + * + * @callback lunr.Index~queryBuilder + * @param {lunr.Query} query - The query object to build up. + * @this lunr.Query + */ + +/** + * Performs a query against the index using the yielded lunr.Query object. + * + * If performing programmatic queries against the index, this method is preferred + * over lunr.Index#search so as to avoid the additional query parsing overhead. + * + * A query object is yielded to the supplied function which should be used to + * express the query to be run against the index. + * + * Note that although this function takes a callback parameter it is _not_ an + * asynchronous operation, the callback is just yielded a query object to be + * customized. + * + * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query. + * @returns {lunr.Index~Result[]} + */ +lunr.Index.prototype.query = function (fn) { + // for each query clause + // * process terms + // * expand terms from token set + // * find matching documents and metadata + // * get document vectors + // * score documents + + var query = new lunr.Query(this.fields), + matchingFields = Object.create(null), + queryVectors = Object.create(null), + termFieldCache = Object.create(null), + requiredMatches = Object.create(null), + prohibitedMatches = Object.create(null) + + /* + * To support field level boosts a query vector is created per + * field. An empty vector is eagerly created to support negated + * queries. + */ + for (var i = 0; i < this.fields.length; i++) { + queryVectors[this.fields[i]] = new lunr.Vector + } + + fn.call(query, query) + + for (var i = 0; i < query.clauses.length; i++) { + /* + * Unless the pipeline has been disabled for this term, which is + * the case for terms with wildcards, we need to pass the clause + * term through the search pipeline. A pipeline returns an array + * of processed terms. Pipeline functions may expand the passed + * term, which means we may end up performing multiple index lookups + * for a single query term. + */ + var clause = query.clauses[i], + terms = null, + clauseMatches = lunr.Set.complete + + if (clause.usePipeline) { + terms = this.pipeline.runString(clause.term, { + fields: clause.fields + }) + } else { + terms = [clause.term] + } + + for (var m = 0; m < terms.length; m++) { + var term = terms[m] + + /* + * Each term returned from the pipeline needs to use the same query + * clause object, e.g. the same boost and or edit distance. The + * simplest way to do this is to re-use the clause object but mutate + * its term property. + */ + clause.term = term + + /* + * From the term in the clause we create a token set which will then + * be used to intersect the indexes token set to get a list of terms + * to lookup in the inverted index + */ + var termTokenSet = lunr.TokenSet.fromClause(clause), + expandedTerms = this.tokenSet.intersect(termTokenSet).toArray() + + /* + * If a term marked as required does not exist in the tokenSet it is + * impossible for the search to return any matches. We set all the field + * scoped required matches set to empty and stop examining any further + * clauses. + */ + if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = lunr.Set.empty + } + + break + } + + for (var j = 0; j < expandedTerms.length; j++) { + /* + * For each term get the posting and termIndex, this is required for + * building the query vector. + */ + var expandedTerm = expandedTerms[j], + posting = this.invertedIndex[expandedTerm], + termIndex = posting._index + + for (var k = 0; k < clause.fields.length; k++) { + /* + * For each field that this query term is scoped by (by default + * all fields are in scope) we need to get all the document refs + * that have this term in that field. + * + * The posting is the entry in the invertedIndex for the matching + * term from above. + */ + var field = clause.fields[k], + fieldPosting = posting[field], + matchingDocumentRefs = Object.keys(fieldPosting), + termField = expandedTerm + "/" + field, + matchingDocumentsSet = new lunr.Set(matchingDocumentRefs) + + /* + * if the presence of this term is required ensure that the matching + * documents are added to the set of required matches for this clause. + * + */ + if (clause.presence == lunr.Query.presence.REQUIRED) { + clauseMatches = clauseMatches.union(matchingDocumentsSet) + + if (requiredMatches[field] === undefined) { + requiredMatches[field] = lunr.Set.complete + } + } + + /* + * if the presence of this term is prohibited ensure that the matching + * documents are added to the set of prohibited matches for this field, + * creating that set if it does not yet exist. + */ + if (clause.presence == lunr.Query.presence.PROHIBITED) { + if (prohibitedMatches[field] === undefined) { + prohibitedMatches[field] = lunr.Set.empty + } + + prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet) + + /* + * Prohibited matches should not be part of the query vector used for + * similarity scoring and no metadata should be extracted so we continue + * to the next field + */ + continue + } + + /* + * The query field vector is populated using the termIndex found for + * the term and a unit value with the appropriate boost applied. + * Using upsert because there could already be an entry in the vector + * for the term we are working with. In that case we just add the scores + * together. + */ + queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b }) + + /** + * If we've already seen this term, field combo then we've already collected + * the matching documents and metadata, no need to go through all that again + */ + if (termFieldCache[termField]) { + continue + } + + for (var l = 0; l < matchingDocumentRefs.length; l++) { + /* + * All metadata for this term/field/document triple + * are then extracted and collected into an instance + * of lunr.MatchData ready to be returned in the query + * results + */ + var matchingDocumentRef = matchingDocumentRefs[l], + matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field), + metadata = fieldPosting[matchingDocumentRef], + fieldMatch + + if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) { + matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata) + } else { + fieldMatch.add(expandedTerm, field, metadata) + } + + } + + termFieldCache[termField] = true + } + } + } + + /** + * If the presence was required we need to update the requiredMatches field sets. + * We do this after all fields for the term have collected their matches because + * the clause terms presence is required in _any_ of the fields not _all_ of the + * fields. + */ + if (clause.presence === lunr.Query.presence.REQUIRED) { + for (var k = 0; k < clause.fields.length; k++) { + var field = clause.fields[k] + requiredMatches[field] = requiredMatches[field].intersect(clauseMatches) + } + } + } + + /** + * Need to combine the field scoped required and prohibited + * matching documents into a global set of required and prohibited + * matches + */ + var allRequiredMatches = lunr.Set.complete, + allProhibitedMatches = lunr.Set.empty + + for (var i = 0; i < this.fields.length; i++) { + var field = this.fields[i] + + if (requiredMatches[field]) { + allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]) + } + + if (prohibitedMatches[field]) { + allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]) + } + } + + var matchingFieldRefs = Object.keys(matchingFields), + results = [], + matches = Object.create(null) + + /* + * If the query is negated (contains only prohibited terms) + * we need to get _all_ fieldRefs currently existing in the + * index. This is only done when we know that the query is + * entirely prohibited terms to avoid any cost of getting all + * fieldRefs unnecessarily. + * + * Additionally, blank MatchData must be created to correctly + * populate the results. + */ + if (query.isNegated()) { + matchingFieldRefs = Object.keys(this.fieldVectors) + + for (var i = 0; i < matchingFieldRefs.length; i++) { + var matchingFieldRef = matchingFieldRefs[i] + var fieldRef = lunr.FieldRef.fromString(matchingFieldRef) + matchingFields[matchingFieldRef] = new lunr.MatchData + } + } + + for (var i = 0; i < matchingFieldRefs.length; i++) { + /* + * Currently we have document fields that match the query, but we + * need to return documents. The matchData and scores are combined + * from multiple fields belonging to the same document. + * + * Scores are calculated by field, using the query vectors created + * above, and combined into a final document score using addition. + */ + var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]), + docRef = fieldRef.docRef + + if (!allRequiredMatches.contains(docRef)) { + continue + } + + if (allProhibitedMatches.contains(docRef)) { + continue + } + + var fieldVector = this.fieldVectors[fieldRef], + score = queryVectors[fieldRef.fieldName].similarity(fieldVector), + docMatch + + if ((docMatch = matches[docRef]) !== undefined) { + docMatch.score += score + docMatch.matchData.combine(matchingFields[fieldRef]) + } else { + var match = { + ref: docRef, + score: score, + matchData: matchingFields[fieldRef] + } + matches[docRef] = match + results.push(match) + } + } + + /* + * Sort the results objects by score, highest first. + */ + return results.sort(function (a, b) { + return b.score - a.score + }) +} + +/** + * Prepares the index for JSON serialization. + * + * The schema for this JSON blob will be described in a + * separate JSON schema file. + * + * @returns {Object} + */ +lunr.Index.prototype.toJSON = function () { + var invertedIndex = Object.keys(this.invertedIndex) + .sort() + .map(function (term) { + return [term, this.invertedIndex[term]] + }, this) + + var fieldVectors = Object.keys(this.fieldVectors) + .map(function (ref) { + return [ref, this.fieldVectors[ref].toJSON()] + }, this) + + return { + version: lunr.version, + fields: this.fields, + fieldVectors: fieldVectors, + invertedIndex: invertedIndex, + pipeline: this.pipeline.toJSON() + } +} + +/** + * Loads a previously serialized lunr.Index + * + * @param {Object} serializedIndex - A previously serialized lunr.Index + * @returns {lunr.Index} + */ +lunr.Index.load = function (serializedIndex) { + var attrs = {}, + fieldVectors = {}, + serializedVectors = serializedIndex.fieldVectors, + invertedIndex = Object.create(null), + serializedInvertedIndex = serializedIndex.invertedIndex, + tokenSetBuilder = new lunr.TokenSet.Builder, + pipeline = lunr.Pipeline.load(serializedIndex.pipeline) + + if (serializedIndex.version != lunr.version) { + lunr.utils.warn("Version mismatch when loading serialised index. Current version of lunr '" + lunr.version + "' does not match serialized index '" + serializedIndex.version + "'") + } + + for (var i = 0; i < serializedVectors.length; i++) { + var tuple = serializedVectors[i], + ref = tuple[0], + elements = tuple[1] + + fieldVectors[ref] = new lunr.Vector(elements) + } + + for (var i = 0; i < serializedInvertedIndex.length; i++) { + var tuple = serializedInvertedIndex[i], + term = tuple[0], + posting = tuple[1] + + tokenSetBuilder.insert(term) + invertedIndex[term] = posting + } + + tokenSetBuilder.finish() + + attrs.fields = serializedIndex.fields + + attrs.fieldVectors = fieldVectors + attrs.invertedIndex = invertedIndex + attrs.tokenSet = tokenSetBuilder.root + attrs.pipeline = pipeline + + return new lunr.Index(attrs) +} +/*! + * lunr.Builder + * Copyright (C) 2019 Oliver Nightingale + */ + +/** + * lunr.Builder performs indexing on a set of documents and + * returns instances of lunr.Index ready for querying. + * + * All configuration of the index is done via the builder, the + * fields to index, the document reference, the text processing + * pipeline and document scoring parameters are all set on the + * builder before indexing. + * + * @constructor + * @property {string} _ref - Internal reference to the document reference field. + * @property {string[]} _fields - Internal reference to the document fields to index. + * @property {object} invertedIndex - The inverted index maps terms to document fields. + * @property {object} documentTermFrequencies - Keeps track of document term frequencies. + * @property {object} documentLengths - Keeps track of the length of documents added to the index. + * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing. + * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing. + * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index. + * @property {number} documentCount - Keeps track of the total number of documents indexed. + * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75. + * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2. + * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space. + * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index. + */ +lunr.Builder = function () { + this._ref = "id" + this._fields = Object.create(null) + this._documents = Object.create(null) + this.invertedIndex = Object.create(null) + this.fieldTermFrequencies = {} + this.fieldLengths = {} + this.tokenizer = lunr.tokenizer + this.pipeline = new lunr.Pipeline + this.searchPipeline = new lunr.Pipeline + this.documentCount = 0 + this._b = 0.75 + this._k1 = 1.2 + this.termIndex = 0 + this.metadataWhitelist = [] +} + +/** + * Sets the document field used as the document reference. Every document must have this field. + * The type of this field in the document should be a string, if it is not a string it will be + * coerced into a string by calling toString. + * + * The default ref is 'id'. + * + * The ref should _not_ be changed during indexing, it should be set before any documents are + * added to the index. Changing it during indexing can lead to inconsistent results. + * + * @param {string} ref - The name of the reference field in the document. + */ +lunr.Builder.prototype.ref = function (ref) { + this._ref = ref +} + +/** + * A function that is used to extract a field from a document. + * + * Lunr expects a field to be at the top level of a document, if however the field + * is deeply nested within a document an extractor function can be used to extract + * the right field for indexing. + * + * @callback fieldExtractor + * @param {object} doc - The document being added to the index. + * @returns {?(string|object|object[])} obj - The object that will be indexed for this field. + * @example Extracting a nested field + * function (doc) { return doc.nested.field } + */ + +/** + * Adds a field to the list of document fields that will be indexed. Every document being + * indexed should have this field. Null values for this field in indexed documents will + * not cause errors but will limit the chance of that document being retrieved by searches. + * + * All fields should be added before adding documents to the index. Adding fields after + * a document has been indexed will have no effect on already indexed documents. + * + * Fields can be boosted at build time. This allows terms within that field to have more + * importance when ranking search results. Use a field boost to specify that matches within + * one field are more important than other fields. + * + * @param {string} fieldName - The name of a field to index in all documents. + * @param {object} attributes - Optional attributes associated with this field. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this field. + * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document. + * @throws {RangeError} fieldName cannot contain unsupported characters '/' + */ +lunr.Builder.prototype.field = function (fieldName, attributes) { + if (/\//.test(fieldName)) { + throw new RangeError ("Field '" + fieldName + "' contains illegal character '/'") + } + + this._fields[fieldName] = attributes || {} +} + +/** + * A parameter to tune the amount of field length normalisation that is applied when + * calculating relevance scores. A value of 0 will completely disable any normalisation + * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b + * will be clamped to the range 0 - 1. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.b = function (number) { + if (number < 0) { + this._b = 0 + } else if (number > 1) { + this._b = 1 + } else { + this._b = number + } +} + +/** + * A parameter that controls the speed at which a rise in term frequency results in term + * frequency saturation. The default value is 1.2. Setting this to a higher value will give + * slower saturation levels, a lower value will result in quicker saturation. + * + * @param {number} number - The value to set for this tuning parameter. + */ +lunr.Builder.prototype.k1 = function (number) { + this._k1 = number +} + +/** + * Adds a document to the index. + * + * Before adding fields to the index the index should have been fully setup, with the document + * ref and all fields to index already having been specified. + * + * The document must have a field name as specified by the ref (by default this is 'id') and + * it should have all fields defined for indexing, though null or undefined values will not + * cause errors. + * + * Entire documents can be boosted at build time. Applying a boost to a document indicates that + * this document should rank higher in search results than other documents. + * + * @param {object} doc - The document to add to the index. + * @param {object} attributes - Optional attributes associated with this document. + * @param {number} [attributes.boost=1] - Boost applied to all terms within this document. + */ +lunr.Builder.prototype.add = function (doc, attributes) { + var docRef = doc[this._ref], + fields = Object.keys(this._fields) + + this._documents[docRef] = attributes || {} + this.documentCount += 1 + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i], + extractor = this._fields[fieldName].extractor, + field = extractor ? extractor(doc) : doc[fieldName], + tokens = this.tokenizer(field, { + fields: [fieldName] + }), + terms = this.pipeline.run(tokens), + fieldRef = new lunr.FieldRef (docRef, fieldName), + fieldTerms = Object.create(null) + + this.fieldTermFrequencies[fieldRef] = fieldTerms + this.fieldLengths[fieldRef] = 0 + + // store the length of this field for this document + this.fieldLengths[fieldRef] += terms.length + + // calculate term frequencies for this field + for (var j = 0; j < terms.length; j++) { + var term = terms[j] + + if (fieldTerms[term] == undefined) { + fieldTerms[term] = 0 + } + + fieldTerms[term] += 1 + + // add to inverted index + // create an initial posting if one doesn't exist + if (this.invertedIndex[term] == undefined) { + var posting = Object.create(null) + posting["_index"] = this.termIndex + this.termIndex += 1 + + for (var k = 0; k < fields.length; k++) { + posting[fields[k]] = Object.create(null) + } + + this.invertedIndex[term] = posting + } + + // add an entry for this term/fieldName/docRef to the invertedIndex + if (this.invertedIndex[term][fieldName][docRef] == undefined) { + this.invertedIndex[term][fieldName][docRef] = Object.create(null) + } + + // store all whitelisted metadata about this token in the + // inverted index + for (var l = 0; l < this.metadataWhitelist.length; l++) { + var metadataKey = this.metadataWhitelist[l], + metadata = term.metadata[metadataKey] + + if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) { + this.invertedIndex[term][fieldName][docRef][metadataKey] = [] + } + + this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata) + } + } + + } +} + +/** + * Calculates the average document length for this index + * + * @private + */ +lunr.Builder.prototype.calculateAverageFieldLengths = function () { + + var fieldRefs = Object.keys(this.fieldLengths), + numberOfFields = fieldRefs.length, + accumulator = {}, + documentsWithField = {} + + for (var i = 0; i < numberOfFields; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + field = fieldRef.fieldName + + documentsWithField[field] || (documentsWithField[field] = 0) + documentsWithField[field] += 1 + + accumulator[field] || (accumulator[field] = 0) + accumulator[field] += this.fieldLengths[fieldRef] + } + + var fields = Object.keys(this._fields) + + for (var i = 0; i < fields.length; i++) { + var fieldName = fields[i] + accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName] + } + + this.averageFieldLength = accumulator +} + +/** + * Builds a vector space model of every document using lunr.Vector + * + * @private + */ +lunr.Builder.prototype.createFieldVectors = function () { + var fieldVectors = {}, + fieldRefs = Object.keys(this.fieldTermFrequencies), + fieldRefsLength = fieldRefs.length, + termIdfCache = Object.create(null) + + for (var i = 0; i < fieldRefsLength; i++) { + var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]), + fieldName = fieldRef.fieldName, + fieldLength = this.fieldLengths[fieldRef], + fieldVector = new lunr.Vector, + termFrequencies = this.fieldTermFrequencies[fieldRef], + terms = Object.keys(termFrequencies), + termsLength = terms.length + + + var fieldBoost = this._fields[fieldName].boost || 1, + docBoost = this._documents[fieldRef.docRef].boost || 1 + + for (var j = 0; j < termsLength; j++) { + var term = terms[j], + tf = termFrequencies[term], + termIndex = this.invertedIndex[term]._index, + idf, score, scoreWithPrecision + + if (termIdfCache[term] === undefined) { + idf = lunr.idf(this.invertedIndex[term], this.documentCount) + termIdfCache[term] = idf + } else { + idf = termIdfCache[term] + } + + score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf) + score *= fieldBoost + score *= docBoost + scoreWithPrecision = Math.round(score * 1000) / 1000 + // Converts 1.23456789 to 1.234. + // Reducing the precision so that the vectors take up less + // space when serialised. Doing it now so that they behave + // the same before and after serialisation. Also, this is + // the fastest approach to reducing a number's precision in + // JavaScript. + + fieldVector.insert(termIndex, scoreWithPrecision) + } + + fieldVectors[fieldRef] = fieldVector + } + + this.fieldVectors = fieldVectors +} + +/** + * Creates a token set of all tokens in the index using lunr.TokenSet + * + * @private + */ +lunr.Builder.prototype.createTokenSet = function () { + this.tokenSet = lunr.TokenSet.fromArray( + Object.keys(this.invertedIndex).sort() + ) +} + +/** + * Builds the index, creating an instance of lunr.Index. + * + * This completes the indexing process and should only be called + * once all documents have been added to the index. + * + * @returns {lunr.Index} + */ +lunr.Builder.prototype.build = function () { + this.calculateAverageFieldLengths() + this.createFieldVectors() + this.createTokenSet() + + return new lunr.Index({ + invertedIndex: this.invertedIndex, + fieldVectors: this.fieldVectors, + tokenSet: this.tokenSet, + fields: Object.keys(this._fields), + pipeline: this.searchPipeline + }) +} + +/** + * Applies a plugin to the index builder. + * + * A plugin is a function that is called with the index builder as its context. + * Plugins can be used to customise or extend the behaviour of the index + * in some way. A plugin is just a function, that encapsulated the custom + * behaviour that should be applied when building the index. + * + * The plugin function will be called with the index builder as its argument, additional + * arguments can also be passed when calling use. The function will be called + * with the index builder as its context. + * + * @param {Function} plugin The plugin to apply. + */ +lunr.Builder.prototype.use = function (fn) { + var args = Array.prototype.slice.call(arguments, 1) + args.unshift(this) + fn.apply(this, args) +} +/** + * Contains and collects metadata about a matching document. + * A single instance of lunr.MatchData is returned as part of every + * lunr.Index~Result. + * + * @constructor + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + * @property {object} metadata - A cloned collection of metadata associated with this document. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData = function (term, field, metadata) { + var clonedMetadata = Object.create(null), + metadataKeys = Object.keys(metadata || {}) + + // Cloning the metadata to prevent the original + // being mutated during match data combination. + // Metadata is kept in an array within the inverted + // index so cloning the data can be done with + // Array#slice + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + clonedMetadata[key] = metadata[key].slice() + } + + this.metadata = Object.create(null) + + if (term !== undefined) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = clonedMetadata + } +} + +/** + * An instance of lunr.MatchData will be created for every term that matches a + * document. However only one instance is required in a lunr.Index~Result. This + * method combines metadata from another instance of lunr.MatchData with this + * objects metadata. + * + * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one. + * @see {@link lunr.Index~Result} + */ +lunr.MatchData.prototype.combine = function (otherMatchData) { + var terms = Object.keys(otherMatchData.metadata) + + for (var i = 0; i < terms.length; i++) { + var term = terms[i], + fields = Object.keys(otherMatchData.metadata[term]) + + if (this.metadata[term] == undefined) { + this.metadata[term] = Object.create(null) + } + + for (var j = 0; j < fields.length; j++) { + var field = fields[j], + keys = Object.keys(otherMatchData.metadata[term][field]) + + if (this.metadata[term][field] == undefined) { + this.metadata[term][field] = Object.create(null) + } + + for (var k = 0; k < keys.length; k++) { + var key = keys[k] + + if (this.metadata[term][field][key] == undefined) { + this.metadata[term][field][key] = otherMatchData.metadata[term][field][key] + } else { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]) + } + + } + } + } +} + +/** + * Add metadata for a term/field pair to this instance of match data. + * + * @param {string} term - The term this match data is associated with + * @param {string} field - The field in which the term was found + * @param {object} metadata - The metadata recorded about this term in this field + */ +lunr.MatchData.prototype.add = function (term, field, metadata) { + if (!(term in this.metadata)) { + this.metadata[term] = Object.create(null) + this.metadata[term][field] = metadata + return + } + + if (!(field in this.metadata[term])) { + this.metadata[term][field] = metadata + return + } + + var metadataKeys = Object.keys(metadata) + + for (var i = 0; i < metadataKeys.length; i++) { + var key = metadataKeys[i] + + if (key in this.metadata[term][field]) { + this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]) + } else { + this.metadata[term][field][key] = metadata[key] + } + } +} +/** + * A lunr.Query provides a programmatic way of defining queries to be performed + * against a {@link lunr.Index}. + * + * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method + * so the query object is pre-initialized with the right index fields. + * + * @constructor + * @property {lunr.Query~Clause[]} clauses - An array of query clauses. + * @property {string[]} allFields - An array of all available fields in a lunr.Index. + */ +lunr.Query = function (allFields) { + this.clauses = [] + this.allFields = allFields +} + +/** + * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause. + * + * This allows wildcards to be added to the beginning and end of a term without having to manually do any string + * concatenation. + * + * The wildcard constants can be bitwise combined to select both leading and trailing wildcards. + * + * @constant + * @default + * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour + * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists + * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with trailing wildcard + * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING }) + * @example query term with leading and trailing wildcard + * query.term('foo', { + * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING + * }) + */ + +lunr.Query.wildcard = new String ("*") +lunr.Query.wildcard.NONE = 0 +lunr.Query.wildcard.LEADING = 1 +lunr.Query.wildcard.TRAILING = 2 + +/** + * Constants for indicating what kind of presence a term must have in matching documents. + * + * @constant + * @enum {number} + * @see lunr.Query~Clause + * @see lunr.Query#clause + * @see lunr.Query#term + * @example query term with required presence + * query.term('foo', { presence: lunr.Query.presence.REQUIRED }) + */ +lunr.Query.presence = { + /** + * Term's presence in a document is optional, this is the default value. + */ + OPTIONAL: 1, + + /** + * Term's presence in a document is required, documents that do not contain + * this term will not be returned. + */ + REQUIRED: 2, + + /** + * Term's presence in a document is prohibited, documents that do contain + * this term will not be returned. + */ + PROHIBITED: 3 +} + +/** + * A single clause in a {@link lunr.Query} contains a term and details on how to + * match that term against a {@link lunr.Index}. + * + * @typedef {Object} lunr.Query~Clause + * @property {string[]} fields - The fields in an index this clause should be matched against. + * @property {number} [boost=1] - Any boost that should be applied when matching this clause. + * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be. + * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline. + * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended. + * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents. + */ + +/** + * Adds a {@link lunr.Query~Clause} to this query. + * + * Unless the clause contains the fields to be matched all fields will be matched. In addition + * a default boost of 1 is applied to the clause. + * + * @param {lunr.Query~Clause} clause - The clause to add to this query. + * @see lunr.Query~Clause + * @returns {lunr.Query} + */ +lunr.Query.prototype.clause = function (clause) { + if (!('fields' in clause)) { + clause.fields = this.allFields + } + + if (!('boost' in clause)) { + clause.boost = 1 + } + + if (!('usePipeline' in clause)) { + clause.usePipeline = true + } + + if (!('wildcard' in clause)) { + clause.wildcard = lunr.Query.wildcard.NONE + } + + if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) { + clause.term = "*" + clause.term + } + + if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) { + clause.term = "" + clause.term + "*" + } + + if (!('presence' in clause)) { + clause.presence = lunr.Query.presence.OPTIONAL + } + + this.clauses.push(clause) + + return this +} + +/** + * A negated query is one in which every clause has a presence of + * prohibited. These queries require some special processing to return + * the expected results. + * + * @returns boolean + */ +lunr.Query.prototype.isNegated = function () { + for (var i = 0; i < this.clauses.length; i++) { + if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) { + return false + } + } + + return true +} + +/** + * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause} + * to the list of clauses that make up this query. + * + * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion + * to a token or token-like string should be done before calling this method. + * + * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an + * array, each term in the array will share the same options. + * + * @param {object|object[]} term - The term(s) to add to the query. + * @param {object} [options] - Any additional properties to add to the query clause. + * @returns {lunr.Query} + * @see lunr.Query#clause + * @see lunr.Query~Clause + * @example adding a single term to a query + * query.term("foo") + * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard + * query.term("foo", { + * fields: ["title"], + * boost: 10, + * wildcard: lunr.Query.wildcard.TRAILING + * }) + * @example using lunr.tokenizer to convert a string to tokens before using them as terms + * query.term(lunr.tokenizer("foo bar")) + */ +lunr.Query.prototype.term = function (term, options) { + if (Array.isArray(term)) { + term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this) + return this + } + + var clause = options || {} + clause.term = term.toString() + + this.clause(clause) + + return this +} +lunr.QueryParseError = function (message, start, end) { + this.name = "QueryParseError" + this.message = message + this.start = start + this.end = end +} + +lunr.QueryParseError.prototype = new Error +lunr.QueryLexer = function (str) { + this.lexemes = [] + this.str = str + this.length = str.length + this.pos = 0 + this.start = 0 + this.escapeCharPositions = [] +} + +lunr.QueryLexer.prototype.run = function () { + var state = lunr.QueryLexer.lexText + + while (state) { + state = state(this) + } +} + +lunr.QueryLexer.prototype.sliceString = function () { + var subSlices = [], + sliceStart = this.start, + sliceEnd = this.pos + + for (var i = 0; i < this.escapeCharPositions.length; i++) { + sliceEnd = this.escapeCharPositions[i] + subSlices.push(this.str.slice(sliceStart, sliceEnd)) + sliceStart = sliceEnd + 1 + } + + subSlices.push(this.str.slice(sliceStart, this.pos)) + this.escapeCharPositions.length = 0 + + return subSlices.join('') +} + +lunr.QueryLexer.prototype.emit = function (type) { + this.lexemes.push({ + type: type, + str: this.sliceString(), + start: this.start, + end: this.pos + }) + + this.start = this.pos +} + +lunr.QueryLexer.prototype.escapeCharacter = function () { + this.escapeCharPositions.push(this.pos - 1) + this.pos += 1 +} + +lunr.QueryLexer.prototype.next = function () { + if (this.pos >= this.length) { + return lunr.QueryLexer.EOS + } + + var char = this.str.charAt(this.pos) + this.pos += 1 + return char +} + +lunr.QueryLexer.prototype.width = function () { + return this.pos - this.start +} + +lunr.QueryLexer.prototype.ignore = function () { + if (this.start == this.pos) { + this.pos += 1 + } + + this.start = this.pos +} + +lunr.QueryLexer.prototype.backup = function () { + this.pos -= 1 +} + +lunr.QueryLexer.prototype.acceptDigitRun = function () { + var char, charCode + + do { + char = this.next() + charCode = char.charCodeAt(0) + } while (charCode > 47 && charCode < 58) + + if (char != lunr.QueryLexer.EOS) { + this.backup() + } +} + +lunr.QueryLexer.prototype.more = function () { + return this.pos < this.length +} + +lunr.QueryLexer.EOS = 'EOS' +lunr.QueryLexer.FIELD = 'FIELD' +lunr.QueryLexer.TERM = 'TERM' +lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE' +lunr.QueryLexer.BOOST = 'BOOST' +lunr.QueryLexer.PRESENCE = 'PRESENCE' + +lunr.QueryLexer.lexField = function (lexer) { + lexer.backup() + lexer.emit(lunr.QueryLexer.FIELD) + lexer.ignore() + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexTerm = function (lexer) { + if (lexer.width() > 1) { + lexer.backup() + lexer.emit(lunr.QueryLexer.TERM) + } + + lexer.ignore() + + if (lexer.more()) { + return lunr.QueryLexer.lexText + } +} + +lunr.QueryLexer.lexEditDistance = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.EDIT_DISTANCE) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexBoost = function (lexer) { + lexer.ignore() + lexer.acceptDigitRun() + lexer.emit(lunr.QueryLexer.BOOST) + return lunr.QueryLexer.lexText +} + +lunr.QueryLexer.lexEOS = function (lexer) { + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } +} + +// This matches the separator used when tokenising fields +// within a document. These should match otherwise it is +// not possible to search for some tokens within a document. +// +// It is possible for the user to change the separator on the +// tokenizer so it _might_ clash with any other of the special +// characters already used within the search string, e.g. :. +// +// This means that it is possible to change the separator in +// such a way that makes some words unsearchable using a search +// string. +lunr.QueryLexer.termSeparator = lunr.tokenizer.separator + +lunr.QueryLexer.lexText = function (lexer) { + while (true) { + var char = lexer.next() + + if (char == lunr.QueryLexer.EOS) { + return lunr.QueryLexer.lexEOS + } + + // Escape character is '\' + if (char.charCodeAt(0) == 92) { + lexer.escapeCharacter() + continue + } + + if (char == ":") { + return lunr.QueryLexer.lexField + } + + if (char == "~") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexEditDistance + } + + if (char == "^") { + lexer.backup() + if (lexer.width() > 0) { + lexer.emit(lunr.QueryLexer.TERM) + } + return lunr.QueryLexer.lexBoost + } + + // "+" indicates term presence is required + // checking for length to ensure that only + // leading "+" are considered + if (char == "+" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + // "-" indicates term presence is prohibited + // checking for length to ensure that only + // leading "-" are considered + if (char == "-" && lexer.width() === 1) { + lexer.emit(lunr.QueryLexer.PRESENCE) + return lunr.QueryLexer.lexText + } + + if (char.match(lunr.QueryLexer.termSeparator)) { + return lunr.QueryLexer.lexTerm + } + } +} + +lunr.QueryParser = function (str, query) { + this.lexer = new lunr.QueryLexer (str) + this.query = query + this.currentClause = {} + this.lexemeIdx = 0 +} + +lunr.QueryParser.prototype.parse = function () { + this.lexer.run() + this.lexemes = this.lexer.lexemes + + var state = lunr.QueryParser.parseClause + + while (state) { + state = state(this) + } + + return this.query +} + +lunr.QueryParser.prototype.peekLexeme = function () { + return this.lexemes[this.lexemeIdx] +} + +lunr.QueryParser.prototype.consumeLexeme = function () { + var lexeme = this.peekLexeme() + this.lexemeIdx += 1 + return lexeme +} + +lunr.QueryParser.prototype.nextClause = function () { + var completedClause = this.currentClause + this.query.clause(completedClause) + this.currentClause = {} +} + +lunr.QueryParser.parseClause = function (parser) { + var lexeme = parser.peekLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.type) { + case lunr.QueryLexer.PRESENCE: + return lunr.QueryParser.parsePresence + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expected either a field or a term, found " + lexeme.type + + if (lexeme.str.length >= 1) { + errorMessage += " with value '" + lexeme.str + "'" + } + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } +} + +lunr.QueryParser.parsePresence = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + switch (lexeme.str) { + case "-": + parser.currentClause.presence = lunr.Query.presence.PROHIBITED + break + case "+": + parser.currentClause.presence = lunr.Query.presence.REQUIRED + break + default: + var errorMessage = "unrecognised presence operator'" + lexeme.str + "'" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term or field, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.FIELD: + return lunr.QueryParser.parseField + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term or field, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseField = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + if (parser.query.allFields.indexOf(lexeme.str) == -1) { + var possibleFields = parser.query.allFields.map(function (f) { return "'" + f + "'" }).join(', '), + errorMessage = "unrecognised field '" + lexeme.str + "', possible fields: " + possibleFields + + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.fields = [lexeme.str] + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + var errorMessage = "expecting term, found nothing" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + return lunr.QueryParser.parseTerm + default: + var errorMessage = "expecting term, found '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseTerm = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + parser.currentClause.term = lexeme.str.toLowerCase() + + if (lexeme.str.indexOf("*") != -1) { + parser.currentClause.usePipeline = false + } + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseEditDistance = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var editDistance = parseInt(lexeme.str, 10) + + if (isNaN(editDistance)) { + var errorMessage = "edit distance must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.editDistance = editDistance + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + +lunr.QueryParser.parseBoost = function (parser) { + var lexeme = parser.consumeLexeme() + + if (lexeme == undefined) { + return + } + + var boost = parseInt(lexeme.str, 10) + + if (isNaN(boost)) { + var errorMessage = "boost must be numeric" + throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end) + } + + parser.currentClause.boost = boost + + var nextLexeme = parser.peekLexeme() + + if (nextLexeme == undefined) { + parser.nextClause() + return + } + + switch (nextLexeme.type) { + case lunr.QueryLexer.TERM: + parser.nextClause() + return lunr.QueryParser.parseTerm + case lunr.QueryLexer.FIELD: + parser.nextClause() + return lunr.QueryParser.parseField + case lunr.QueryLexer.EDIT_DISTANCE: + return lunr.QueryParser.parseEditDistance + case lunr.QueryLexer.BOOST: + return lunr.QueryParser.parseBoost + case lunr.QueryLexer.PRESENCE: + parser.nextClause() + return lunr.QueryParser.parsePresence + default: + var errorMessage = "Unexpected lexeme type '" + nextLexeme.type + "'" + throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end) + } +} + + /** + * export the module via AMD, CommonJS or as a browser global + * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js + */ + ;(function (root, factory) { + if (true) { + // AMD. Register as an anonymous module. + !(__WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) : + __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)) + } else {} + }(this, function () { + /** + * Just return a value to define the module export. + * This example returns an object, but the module + * can return a function as the exported value. + */ + return lunr + })) +})(); + + +/***/ }), + +/***/ "./node_modules/tslib/tslib.es6.js": +/*!*****************************************!*\ + !*** ./node_modules/tslib/tslib.es6.js ***! + \*****************************************/ +/*! exports provided: __extends, __assign, __rest, __decorate, __param, __metadata, __awaiter, __generator, __exportStar, __values, __read, __spread, __spreadArrays, __await, __asyncGenerator, __asyncDelegator, __asyncValues, __makeTemplateObject, __importStar, __importDefault */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__extends", function() { return __extends; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__assign", function() { return __assign; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__rest", function() { return __rest; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__decorate", function() { return __decorate; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__param", function() { return __param; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__metadata", function() { return __metadata; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__awaiter", function() { return __awaiter; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__generator", function() { return __generator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__exportStar", function() { return __exportStar; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__values", function() { return __values; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__read", function() { return __read; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spread", function() { return __spread; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__spreadArrays", function() { return __spreadArrays; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__await", function() { return __await; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncGenerator", function() { return __asyncGenerator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncDelegator", function() { return __asyncDelegator; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__asyncValues", function() { return __asyncValues; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__makeTemplateObject", function() { return __makeTemplateObject; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importStar", function() { return __importStar; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "__importDefault", function() { return __importDefault; }); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. All rights reserved. +Licensed under the Apache License, Version 2.0 (the "License"); you may not use +this file except in compliance with the License. You may obtain a copy of the +License at http://www.apache.org/licenses/LICENSE-2.0 + +THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED +WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, +MERCHANTABLITY OR NON-INFRINGEMENT. + +See the Apache Version 2.0 License for specific language governing permissions +and limitations under the License. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + 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) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __exportStar(m, exports) { + for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; +} + +function __values(o) { + var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; + if (m) return m.call(o); + return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result.default = mod; + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + + +/***/ }), + +/***/ "./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 || new Function("return 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/assets/javascripts/integrations/search/_/index.ts": +/*!***************************************************************!*\ + !*** ./src/assets/javascripts/integrations/search/_/index.ts ***! + \***************************************************************/ +/*! exports provided: SearchIndex */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchIndex", function() { return SearchIndex; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var _document__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../document */ "./src/assets/javascripts/integrations/search/document/index.ts"); +/* harmony import */ var _highlight__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../highlight */ "./src/assets/javascripts/integrations/search/highlight/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + +/* ---------------------------------------------------------------------------- + * Class + * ------------------------------------------------------------------------- */ +/** + * Search index + * + * Note that `lunr` is injected via Webpack, as it will otherwise also be + * bundled in the application bundle. + */ +var SearchIndex = /** @class */ (function () { + /** + * Create a search index + * + * @param options - Options + */ + function SearchIndex(_a) { + var config = _a.config, docs = _a.docs, pipeline = _a.pipeline, index = _a.index; + this.documents = Object(_document__WEBPACK_IMPORTED_MODULE_1__["setupSearchDocumentMap"])(docs); + this.highlight = Object(_highlight__WEBPACK_IMPORTED_MODULE_2__["setupSearchHighlighter"])(config); + /* If no index was given, create it */ + if (typeof index === "undefined") { + this.index = lunr(function () { + var _a, e_1, _b; + pipeline = pipeline || { + trimmer: true, + stopwords: true + }; + /* Remove stemmer, as it cripples search experience */ + this.pipeline.reset(); + if (pipeline.trimmer) + this.pipeline.add(lunr.trimmer); + if (pipeline.stopwords) + this.pipeline.add(lunr.stopWordFilter); + /* Set up alternate search languages */ + if (config.lang.length === 1 && config.lang[0] !== "en") { + this.use(lunr[config.lang[0]]); + } + else if (config.lang.length > 1) { + this.use((_a = lunr).multiLanguage.apply(_a, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(config.lang))); + } + /* Setup fields and reference */ + this.field("title", { boost: 10 }); + this.field("text"); + this.ref("location"); + try { + /* Index documents */ + for (var docs_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(docs), docs_1_1 = docs_1.next(); !docs_1_1.done; docs_1_1 = docs_1.next()) { + var doc = docs_1_1.value; + this.add(doc); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (docs_1_1 && !docs_1_1.done && (_b = docs_1.return)) _b.call(docs_1); + } + finally { if (e_1) throw e_1.error; } + } + }); + /* Prebuilt or serialized index */ + } + else { + this.index = lunr.Index.load(typeof index === "string" + ? JSON.parse(index) + : index); + } + } + /** + * Search for matching documents + * + * The search index which MkDocs provides is divided up into articles, which + * contain the whole content of the individual pages, and sections, which only + * contain the contents of the subsections obtained by breaking the individual + * pages up at `h1` ... `h6`. As there may be many sections on different pages + * with indentical titles (for example within this very project, e.g. "Usage" + * or "Installation"), they need to be put into the context of the containing + * page. For this reason, section results are grouped within their respective + * articles which are the top-level results that are returned. + * + * @param query - Query string + * + * @return Search results + */ + SearchIndex.prototype.search = function (query) { + var _this = this; + if (query) { + try { + /* Group sections by containing article */ + var groups = this.index.search(query) + .reduce(function (results, result) { + var document = _this.documents.get(result.ref); + if (typeof document !== "undefined") { + if ("parent" in document) { + var ref = document.parent.location; + results.set(ref, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(results.get(ref) || [], [result])); + } + else { + var ref = document.location; + results.set(ref, results.get(ref) || []); + } + } + return results; + }, new Map()); + /* Create highlighter for query */ + var fn_1 = this.highlight(query); + /* Map groups to search documents */ + return Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])(groups).map(function (_a) { + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(_a, 2), ref = _b[0], sections = _b[1]; + return ({ + article: fn_1(_this.documents.get(ref)), + sections: sections.map(function (section) { + return fn_1(_this.documents.get(section.ref)); + }) + }); + }); + /* Log errors to console (for now) */ + } + catch (err) { + // tslint:disable-next-line no-console + console.warn("Invalid query: " + query + " \u2013 see https://bit.ly/2s3ChXG"); + } + } + /* Return nothing in case of error or empty query */ + return []; + }; + /** + * Serialize search index + * + * @return String representation + */ + SearchIndex.prototype.toString = function () { + return JSON.stringify(this.index); + }; + return SearchIndex; +}()); + + + +/***/ }), + +/***/ "./src/assets/javascripts/integrations/search/document/index.ts": +/*!**********************************************************************!*\ + !*** ./src/assets/javascripts/integrations/search/document/index.ts ***! + \**********************************************************************/ +/*! exports provided: setupSearchDocumentMap */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupSearchDocumentMap", function() { return setupSearchDocumentMap; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! escape-html */ "./node_modules/escape-html/index.js"); +/* harmony import */ var escape_html__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(escape_html__WEBPACK_IMPORTED_MODULE_1__); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Create a search document mapping + * + * @param docs - Search index documents + * + * @return Search document map + */ +function setupSearchDocumentMap(docs) { + var e_1, _a; + var documents = new Map(); + try { + for (var docs_1 = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(docs), docs_1_1 = docs_1.next(); !docs_1_1.done; docs_1_1 = docs_1.next()) { + var doc = docs_1_1.value; + var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__read"])(doc.location.split("#"), 2), path = _b[0], hash = _b[1]; + /* Extract location and title */ + var location = doc.location; + var title = doc.title; + /* Escape and cleanup text */ + var text = escape_html__WEBPACK_IMPORTED_MODULE_1__(doc.text) + .replace(/\s+(?=[,.:;!?])/g, "") + .replace(/\s+/g, " "); + /* Handle section */ + if (hash) { + var parent = documents.get(path); + /* Ignore first section, override article */ + if (!parent.linked) { + parent.title = doc.title; + parent.text = text; + parent.linked = true; + /* Add subsequent section */ + } + else { + documents.set(location, { + location: location, + title: title, + text: text, + parent: parent + }); + } + /* Add article */ + } + else { + documents.set(location, { + location: location, + title: title, + text: text, + linked: false + }); + } + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (docs_1_1 && !docs_1_1.done && (_a = docs_1.return)) _a.call(docs_1); + } + finally { if (e_1) throw e_1.error; } + } + return documents; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/integrations/search/highlight/index.ts": +/*!***********************************************************************!*\ + !*** ./src/assets/javascripts/integrations/search/highlight/index.ts ***! + \***********************************************************************/ +/*! exports provided: setupSearchHighlighter */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "setupSearchHighlighter", function() { return setupSearchHighlighter; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var escape_string_regexp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! escape-string-regexp */ "./node_modules/escape-string-regexp/index.js"); +/* harmony import */ var escape_string_regexp__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(escape_string_regexp__WEBPACK_IMPORTED_MODULE_1__); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Create a search highlighter + * + * @param config - Search index configuration + * + * @return Search highlight factory function + */ +function setupSearchHighlighter(config) { + var separator = new RegExp(config.separator, "img"); + var highlight = function (_, data, term) { + return data + "" + term + ""; + }; + /* Return factory function */ + return function (query) { + query = query + .replace(/[\s*+-:~^]+/g, " ") + .trim(); + /* Create search term match expression */ + var match = new RegExp("(^|" + config.separator + ")(" + escape_string_regexp__WEBPACK_IMPORTED_MODULE_1__(query).replace(separator, "|") + ")", "img"); + /* Highlight document */ + return function (document) { return (Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])(Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__assign"])({}, document), { title: document.title.replace(match, highlight), text: document.text.replace(match, highlight) })); }; + }; +} + + +/***/ }), + +/***/ "./src/assets/javascripts/integrations/search/index.ts": +/*!*************************************************************!*\ + !*** ./src/assets/javascripts/integrations/search/index.ts ***! + \*************************************************************/ +/*! exports provided: ArticleDocument, SearchDocument, SectionDocument, SearchIndex */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var ___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_ */ "./src/assets/javascripts/integrations/search/_/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchIndex", function() { return ___WEBPACK_IMPORTED_MODULE_0__["SearchIndex"]; }); + +/* harmony import */ var _document__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./document */ "./src/assets/javascripts/integrations/search/document/index.ts"); +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ArticleDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_1__["ArticleDocument"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SearchDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_1__["SearchDocument"]; }); + +/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SectionDocument", function() { return _document__WEBPACK_IMPORTED_MODULE_1__["SectionDocument"]; }); + +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/***/ }), + +/***/ "./src/assets/javascripts/workers/search/main/index.ts": +/*!*************************************************************!*\ + !*** ./src/assets/javascripts/workers/search/main/index.ts ***! + \*************************************************************/ +/*! exports provided: handler */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "handler", function() { return handler; }); +/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js"); +/* harmony import */ var expose_loader_lunr_lunr__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! expose-loader?lunr!lunr */ "./node_modules/expose-loader/index.js?lunr!./node_modules/lunr/lunr.js-exposed"); +/* harmony import */ var expose_loader_lunr_lunr__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(expose_loader_lunr_lunr__WEBPACK_IMPORTED_MODULE_1__); +/* harmony import */ var integrations_search__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! integrations/search */ "./src/assets/javascripts/integrations/search/index.ts"); +/* harmony import */ var _message__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../message */ "./src/assets/javascripts/workers/search/message/index.ts"); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ + + + + +/* ---------------------------------------------------------------------------- + * Data + * ------------------------------------------------------------------------- */ +/** + * Search index + */ +var index; +/* ---------------------------------------------------------------------------- + * Helper functions + * ------------------------------------------------------------------------- */ +/** + * Setup multi-language support through `lunr-languages` + * + * This function will automatically import the stemmers necessary to process + * the languages which were given through the search index configuration. + * + * @param config - Search index configuration + */ +function setupLunrLanguages(config) { + var e_1, _a; + var base = "../lunr"; + /* Add scripts for languages */ + var scripts = []; + try { + for (var _b = Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__values"])(config.lang), _c = _b.next(); !_c.done; _c = _b.next()) { + var lang = _c.value; + if (lang === "ja") + scripts.push(base + "/tinyseg.min.js"); + if (lang !== "en") + scripts.push(base + "/min/lunr." + lang + ".min.js"); + } + } + catch (e_1_1) { e_1 = { error: e_1_1 }; } + finally { + try { + if (_c && !_c.done && (_a = _b.return)) _a.call(_b); + } + finally { if (e_1) throw e_1.error; } + } + /* Add multi-language support */ + if (config.lang.length > 1) + scripts.push(base + "/min/lunr.multi.min.js"); + /* Load scripts synchronously */ + if (scripts.length) + self.importScripts.apply(self, Object(tslib__WEBPACK_IMPORTED_MODULE_0__["__spread"])([base + "/min/lunr.stemmer.support.min.js"], scripts)); +} +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Message handler + * + * @param message - Source message + * + * @return Target message + */ +function handler(message) { + switch (message.type) { + /* Setup search index */ + case _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].SETUP: + setupLunrLanguages(message.data.config); + index = new integrations_search__WEBPACK_IMPORTED_MODULE_2__["SearchIndex"](message.data); + return { + type: _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].DUMP, + data: index.toString() + }; + /* Query search index */ + case _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].QUERY: + return { + type: _message__WEBPACK_IMPORTED_MODULE_3__["SearchMessageType"].RESULT, + data: index ? index.search(message.data) : [] + }; + /* All other messages */ + default: + throw new TypeError("Invalid message type"); + } +} +/* ---------------------------------------------------------------------------- + * Worker + * ------------------------------------------------------------------------- */ +self.addEventListener("message", function (ev) { + self.postMessage(handler(ev.data)); +}); + + +/***/ }), + +/***/ "./src/assets/javascripts/workers/search/message/index.ts": +/*!****************************************************************!*\ + !*** ./src/assets/javascripts/workers/search/message/index.ts ***! + \****************************************************************/ +/*! exports provided: SearchMessageType, isSearchSetupMessage, isSearchDumpMessage, isSearchQueryMessage, isSearchResultMessage */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SearchMessageType", function() { return SearchMessageType; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchSetupMessage", function() { return isSearchSetupMessage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchDumpMessage", function() { return isSearchDumpMessage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchQueryMessage", function() { return isSearchQueryMessage; }); +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "isSearchResultMessage", function() { return isSearchResultMessage; }); +/* + * Copyright (c) 2016-2020 Martin Donath + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to + * deal in the Software without restriction, including without limitation the + * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + * sell copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +/* ---------------------------------------------------------------------------- + * Types + * ------------------------------------------------------------------------- */ +/** + * Search message type + */ +var SearchMessageType; +(function (SearchMessageType) { + SearchMessageType[SearchMessageType["SETUP"] = 0] = "SETUP"; + SearchMessageType[SearchMessageType["DUMP"] = 1] = "DUMP"; + SearchMessageType[SearchMessageType["QUERY"] = 2] = "QUERY"; + SearchMessageType[SearchMessageType["RESULT"] = 3] = "RESULT"; /* Search results */ +})(SearchMessageType || (SearchMessageType = {})); +/* ---------------------------------------------------------------------------- + * Functions + * ------------------------------------------------------------------------- */ +/** + * Type guard for search setup messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchSetupMessage(message) { + return message.type === SearchMessageType.SETUP; +} +/** + * Type guard for search dump messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchDumpMessage(message) { + return message.type === SearchMessageType.DUMP; +} +/** + * Type guard for search query messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchQueryMessage(message) { + return message.type === SearchMessageType.QUERY; +} +/** + * Type guard for search result messages + * + * @param message - Search worker message + * + * @return Test result + */ +function isSearchResultMessage(message) { + return message.type === SearchMessageType.RESULT; +} + + +/***/ }) + +/******/ }); +//# sourceMappingURL=search.js.map \ No newline at end of file diff --git a/material/assets/javascripts/worker/search.js.map b/material/assets/javascripts/worker/search.js.map new file mode 100644 index 000000000..8087ee5bd --- /dev/null +++ b/material/assets/javascripts/worker/search.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./node_modules/escape-html/index.js","webpack:///./node_modules/escape-string-regexp/index.js","webpack:///./node_modules/lunr/lunr.js-exposed","webpack:///./node_modules/lunr/lunr.js","webpack:///./node_modules/tslib/tslib.es6.js","webpack:///(webpack)/buildin/global.js","webpack:///./src/assets/javascripts/integrations/search/_/index.ts","webpack:///./src/assets/javascripts/integrations/search/document/index.ts","webpack:///./src/assets/javascripts/integrations/search/highlight/index.ts","webpack:///./src/assets/javascripts/integrations/search/index.ts","webpack:///./src/assets/javascripts/workers/search/main/index.ts","webpack:///./src/assets/javascripts/workers/search/message/index.ts"],"names":[],"mappings":";QAAA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;;QAGA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA,0CAA0C,gCAAgC;QAC1E;QACA;;QAEA;QACA;QACA;QACA,wDAAwD,kBAAkB;QAC1E;QACA,iDAAiD,cAAc;QAC/D;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,yCAAyC,iCAAiC;QAC1E,gHAAgH,mBAAmB,EAAE;QACrI;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;QAErH;QACA;;;QAGA;QACA;;;;;;;;;;;;;AClFA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEa;;AAEb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,YAAY,OAAO;AACnB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,2BAA2B,oBAAoB;AAC/C;AACA;AACA,wBAAwB;AACxB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,uBAAuB;AACvB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;;;;;;;AC7Ea;;AAEb,mCAAmC;;AAEnC;AACA;AACA;AACA;;AAEA;AACA;;;;;;;;;;;;ACVA,gFAAkC,mBAAO,CAAC,gDAAa,E;;;;;;;;;;;;ACAvD;AACA;AACA;AACA;AACA;;AAEA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,IAAI;AACJ;AACA,SAAS;AACT,SAAS;AACT,SAAS;AACT,SAAS;AACT,SAAS;AACT,eAAe,SAAS;AACxB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,IAAI;AACf,YAAY,OAAO;AACnB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,SAAS;AACtB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,YAAY,SAAS;AACrB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO,aAAa;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA,WAAW,0BAA0B;AACrC,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,0BAA0B;AACrC,aAAa;AACb;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,0BAA0B;AACrC,WAAW,QAAQ;AACnB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA,wCAAwC,iBAAiB;AACzD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,OAAO;AAClB,WAAW,aAAa;AACxB,aAAa;AACb;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC,WAAW,sBAAsB;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,sBAAsB;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;;AAEA,iBAAiB,iBAAiB;AAClC;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;;AAEA;;AAEA;AACA,uBAAuB,mBAAmB;AAC1C;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA,wBAAwB,0BAA0B;AAClD;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,WAAW,WAAW;AACtB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,UAAU;;AAEjC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,0BAA0B;AAC/C,2BAA2B,2BAA2B;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,aAAa;AACvC,+BAA+B,cAAc,sBAAsB;AACnE,+BAA+B,aAAa;AAC5C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,IAAI;;AAEP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,YAAY,WAAW;AACvB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,WAAW,WAAW;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;;AAEA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,SAAS;AAC5C;AACA;;AAEA;AACA;AACA;;AAEA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,SAAS;AAC5B;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,UAAU;AAC7B;;AAEA,qBAAqB,UAAU;AAC/B;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,iDAAiD;AAClE;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;;AAEA,4BAA4B,iBAAiB;AAC7C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,aAAa;AAC3D;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,4BAA4B;AACvC,WAAW,cAAc;AACzB,WAAW,SAAS;AACpB,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAA6D;AACrE;AACA;AACA;AACA,WAAW,uBAAuB;AAClC,YAAY,qBAAqB;AACjC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,wBAAwB;AACnC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;;AAEA,iBAAiB,0BAA0B;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;;AAEA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,0BAA0B;AACjD;AACA;AACA;;AAEA;AACA;;AAEA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,0BAA0B;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,eAAe;;AAE9F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,yBAAyB,iCAAiC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,8BAA8B;AACjD;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA,gBAAgB;AAChB,uBAAuB;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,8BAA8B;AAC/C;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,oCAAoC;AACrD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,eAAe;AAC7B,cAAc,cAAc;AAC5B,cAAc,cAAc;AAC5B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,0BAA0B;AACvC;AACA,mBAAmB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,mBAAmB,kBAAkB;AACrC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,mBAAmB;AAC1C;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,mCAAmC;AACxD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,sBAAsB;AACtB;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,cAAc,OAAO;AACrB,SAAS;AACT;AACA;AACA;AACA,+CAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,eAAe;AAC1B,SAAS;AACT;AACA;AACA;;AAEA,iBAAiB,kBAAkB;AACnC;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,mBAAmB;AACtC;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,iBAAiB;AACtC;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,iBAAiB,yBAAyB;AAC1C;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,iBAAiB;AAC/B;AACA,+CAA+C,uBAAuB;AACtE;AACA;AACA;AACA,cAAc,oBAAoB;AAClC,cAAc,SAAS;AACvB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,sBAAsB,yCAAyC;AAC/D;AACA;AACA;AACA,IAAI;AACJ;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA,sBAAsB,yCAAyC;AAC/D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB,iBAAiB;AAC1C,8BAA8B,iBAAiB;AAC/C;AACA,aAAa,OAAO;AACpB,cAAc,SAAS;AACvB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA,WAAW,wBAAwB;AACnC;AACA;AACA;AACA;AACA,WAAW,kBAAkB;AAC7B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,yBAAyB;AAC1C;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0EAA0E;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB;AAC3B,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAA0C;AACzE;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,qCAAqC;AACtD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,kEAAkE,uBAAuB;AACzF;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH,QAAQ,IAA0C;AAClD;AACA,MAAM,oCAAO,OAAO;AAAA;AAAA;AAAA;AAAA,oGAAC;AACrB,KAAK,MAAM,EAUN;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;;;;;;;;;;;ACl5GD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA,+DAA+D;AAC/D;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,gBAAgB,sCAAsC,iBAAiB,EAAE;AACnF,yBAAyB,uDAAuD;AAChF;AACA;;AAEO;AACP;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEO;AACP;AACA,gDAAgD,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;;AAEO;AACP,mCAAmC,oCAAoC;AACvE;;AAEO;AACP;AACA;;AAEO;AACP;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,iEAAiE,uBAAuB,EAAE,4BAA4B;AACrJ;AACA,KAAK;AACL;;AAEO;AACP,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;AACA,SAAS,YAAY,aAAa,OAAO,EAAE,UAAU,WAAW;AAChE,mCAAmC,SAAS;AAC5C;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,gBAAgB;AACzC;AACA;AACA;AACA;AACA,iBAAiB,sBAAsB;AACvC;AACA;AACA;;AAEO;AACP,4BAA4B,sBAAsB;AAClD;AACA;AACA;;AAEO;AACP,iDAAiD,QAAQ;AACzD,wCAAwC,QAAQ;AAChD,wDAAwD,QAAQ;AAChE;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,iBAAiB,sFAAsF,aAAa,EAAE;AACtH,sBAAsB,gCAAgC,qCAAqC,0CAA0C,EAAE,EAAE,GAAG;AAC5I,2BAA2B,MAAM,eAAe,EAAE,YAAY,oBAAoB,EAAE;AACpF,sBAAsB,oGAAoG;AAC1H,6BAA6B,uBAAuB;AACpD,4BAA4B,wBAAwB;AACpD,2BAA2B,yDAAyD;AACpF;;AAEO;AACP;AACA,iBAAiB,4CAA4C,SAAS,EAAE,qDAAqD,aAAa,EAAE;AAC5I,yBAAyB,6BAA6B,oBAAoB,gDAAgD,gBAAgB,EAAE,KAAK;AACjJ;;AAEO;AACP;AACA;AACA,2GAA2G,sFAAsF,aAAa,EAAE;AAChN,sBAAsB,8BAA8B,gDAAgD,uDAAuD,EAAE,EAAE,GAAG;AAClK,4CAA4C,sCAAsC,UAAU,oBAAoB,EAAE,EAAE,UAAU;AAC9H;;AAEO;AACP,gCAAgC,uCAAuC,aAAa,EAAE,EAAE,OAAO,kBAAkB;AACjH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,4CAA4C;AAC5C;;;;;;;;;;;;ACnMA;;AAEA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,4CAA4C;;AAE5C;;;;;;;;;;;;;ACnBA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAOiB;AAIC;AAwDrB;;+EAE+E;AAE/E;;;;;GAKG;AACH;IAsBE;;;;OAIG;IACH,qBAAmB,EAAqD;YAAnD,kBAAM,EAAE,cAAI,EAAE,sBAAQ,EAAE,gBAAK;QAChD,IAAI,CAAC,SAAS,GAAG,wEAAsB,CAAC,IAAI,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,yEAAsB,CAAC,MAAM,CAAC;QAE/C,sCAAsC;QACtC,IAAI,OAAO,KAAK,KAAK,WAAW,EAAE;YAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;;gBAChB,QAAQ,GAAG,QAAQ,IAAI;oBACrB,OAAO,EAAE,IAAI;oBACb,SAAS,EAAE,IAAI;iBAChB;gBAED,sDAAsD;gBACtD,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;gBACrB,IAAI,QAAQ,CAAC,OAAO;oBAClB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;gBACjC,IAAI,QAAQ,CAAC,SAAS;oBACpB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;gBAExC,uCAAuC;gBACvC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE;oBACvD,IAAI,CAAC,GAAG,CAAE,IAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxC;qBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACjC,IAAI,CAAC,GAAG,CAAC,MAAC,IAAY,EAAC,aAAa,kEAAI,MAAM,CAAC,IAAI,GAAE;iBACtD;gBAED,gCAAgC;gBAChC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;;oBAEpB,qBAAqB;oBACrB,KAAkB,wEAAI;wBAAjB,IAAM,GAAG;wBACZ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;qBAAA;;;;;;;;;YACjB,CAAC,CAAC;YAEJ,kCAAkC;SACjC;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAC1B,OAAO,KAAK,KAAK,QAAQ;gBACvB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;gBACnB,CAAC,CAAC,KAAK,CACV;SACF;IACH,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,4BAAM,GAAb,UAAc,KAAa;QAA3B,iBAwCC;QAvCC,IAAI,KAAK,EAAE;YACT,IAAI;gBAEF,0CAA0C;gBAC1C,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;qBACpC,MAAM,CAAC,UAAC,OAAO,EAAE,MAAM;oBACtB,IAAM,QAAQ,GAAG,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC;oBAC/C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE;wBACnC,IAAI,QAAQ,IAAI,QAAQ,EAAE;4BACxB,IAAM,GAAG,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ;4BACpC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,uDAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,GAAE,MAAM,GAAE;yBACtD;6BAAM;4BACL,IAAM,GAAG,GAAG,QAAQ,CAAC,QAAQ;4BAC7B,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;yBACzC;qBACF;oBACD,OAAO,OAAO;gBAChB,CAAC,EAAE,IAAI,GAAG,EAA+B,CAAC;gBAE5C,kCAAkC;gBAClC,IAAM,IAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;gBAEhC,oCAAoC;gBACpC,OAAO,uDAAI,MAAM,EAAE,GAAG,CAAC,UAAC,EAAe;wBAAf,gEAAe,EAAd,WAAG,EAAE,gBAAQ;oBAAM,QAAC;wBAC3C,OAAO,EAAE,IAAE,CAAC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAoB,CAAC;wBACvD,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,iBAAO;4BAC5B,OAAO,IAAE,CAAC,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAoB,CAAC;wBAC/D,CAAC,CAAC;qBACH,CAAC;gBAL0C,CAK1C,CAAC;gBAEL,qCAAqC;aACpC;YAAC,OAAO,GAAG,EAAE;gBACZ,sCAAsC;gBACtC,OAAO,CAAC,IAAI,CAAC,oBAAkB,KAAK,uCAA+B,CAAC;aACrE;SACF;QAED,oDAAoD;QACpD,OAAO,EAAE;IACX,CAAC;IAED;;;;OAIG;IACI,8BAAQ,GAAf;QACE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;IACnC,CAAC;IACH,kBAAC;AAAD,CAAC;;;;;;;;;;;;;;AC5OD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEsC;AAoCzC;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,sBAAsB,CACpC,IAA2B;;IAE3B,IAAM,SAAS,GAAG,IAAI,GAAG,EAA0B;;QACnD,KAAkB,wEAAI,uEAAE;YAAnB,IAAM,GAAG;YACN,yFAAsC,EAArC,YAAI,EAAE,YAA+B;YAE5C,gCAAgC;YAChC,IAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ;YAC7B,IAAM,KAAK,GAAM,GAAG,CAAC,KAAK;YAE1B,6BAA6B;YAC7B,IAAM,IAAI,GAAG,wCAAU,CAAC,GAAG,CAAC,IAAI,CAAC;iBAC9B,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;iBAC/B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YAEvB,oBAAoB;YACpB,IAAI,IAAI,EAAE;gBACR,IAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAoB;gBAErD,4CAA4C;gBAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;oBAClB,MAAM,CAAC,KAAK,GAAI,GAAG,CAAC,KAAK;oBACzB,MAAM,CAAC,IAAI,GAAK,IAAI;oBACpB,MAAM,CAAC,MAAM,GAAG,IAAI;oBAEtB,4BAA4B;iBAC3B;qBAAM;oBACL,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;wBACtB,QAAQ;wBACR,KAAK;wBACL,IAAI;wBACJ,MAAM;qBACP,CAAC;iBACH;gBAEH,iBAAiB;aAChB;iBAAM;gBACL,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE;oBACtB,QAAQ;oBACR,KAAK;oBACL,IAAI;oBACJ,MAAM,EAAE,KAAK;iBACd,CAAC;aACH;SACF;;;;;;;;;IACD,OAAO,SAAS;AAClB,CAAC;;;;;;;;;;;;;ACpHD;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAEiD;AA+BpD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,sBAAsB,CACpC,MAAyB;IAEzB,IAAM,SAAS,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC;IACrD,IAAM,SAAS,GAAG,UAAC,CAAU,EAAE,IAAY,EAAE,IAAY;QACvD,OAAU,IAAI,YAAO,IAAI,UAAO;IAClC,CAAC;IAED,6BAA6B;IAC7B,OAAO,UAAC,KAAa;QACnB,KAAK,GAAG,KAAK;aACV,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC;aAC5B,IAAI,EAAE;QAET,yCAAyC;QACzC,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,QAAM,MAAM,CAAC,SAAS,UAC7C,iDAAY,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC,MAC1C,EAAE,KAAK,CAAC;QAEX,wBAAwB;QACxB,OAAO,kBAAQ,IAAI,QAAC,kHACf,QAAQ,KACX,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,EAC/C,IAAI,EAAG,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,SAAS,CAAC,IAC9C,EAJiB,CAIjB;IACJ,CAAC;AACH,CAAC;;;;;;;;;;;;;AC1FD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEgB;AAKA;;;;;;;;;;;;;AC3BnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;;AAE6B;AAEoC;AAEP;AAE7D;;+EAE+E;AAE/E;;GAEG;AACH,IAAI,KAAkB;AAEtB;;+EAE+E;AAE/E;;;;;;;GAOG;AACH,SAAS,kBAAkB,CAAC,MAAyB;;IACnD,IAAM,IAAI,GAAG,SAAS;IAEtB,+BAA+B;IAC/B,IAAM,OAAO,GAAG,EAAE;;QAClB,KAAmB,sEAAM,CAAC,IAAI,6CAAE;YAA3B,IAAM,IAAI;YACb,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAI,IAAI,oBAAiB,CAAC;YACzD,IAAI,IAAI,KAAK,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAI,IAAI,kBAAa,IAAI,YAAS,CAAC;SACnE;;;;;;;;;IAED,gCAAgC;IAChC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;QACxB,OAAO,CAAC,IAAI,CAAI,IAAI,2BAAwB,CAAC;IAE/C,gCAAgC;IAChC,IAAI,OAAO,CAAC,MAAM;QAChB,IAAI,CAAC,aAAa,OAAlB,IAAI,0DACC,IAAI,qCAAkC,GACtC,OAAO,GACX;AACL,CAAC;AAED;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,OAAO,CAAC,OAAsB;IAC5C,QAAQ,OAAO,CAAC,IAAI,EAAE;QAEpB,wBAAwB;QACxB,KAAK,0DAAiB,CAAC,KAAK;YAC1B,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC;YACvC,KAAK,GAAG,IAAI,+DAAW,CAAC,OAAO,CAAC,IAAI,CAAC;YACrC,OAAO;gBACL,IAAI,EAAE,0DAAiB,CAAC,IAAI;gBAC5B,IAAI,EAAE,KAAK,CAAC,QAAQ,EAAE;aACvB;QAEH,wBAAwB;QACxB,KAAK,0DAAiB,CAAC,KAAK;YAC1B,OAAO;gBACL,IAAI,EAAE,0DAAiB,CAAC,MAAM;gBAC9B,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;aAC9C;QAEH,wBAAwB;QACxB;YACE,MAAM,IAAI,SAAS,CAAC,sBAAsB,CAAC;KAC9C;AACH,CAAC;AAED;;+EAE+E;AAE/E,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAE;IACjC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC;;;;;;;;;;;;;ACjHF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH;;+EAE+E;AAE/E;;GAEG;AACH,IAAkB,iBAKjB;AALD,WAAkB,iBAAiB;IACjC,2DAAK;IACL,yDAAI;IACJ,2DAAK;IACL,6DAAM,EAA+B,oBAAoB;AAC3D,CAAC,EALiB,iBAAiB,KAAjB,iBAAiB,QAKlC;AA+CD;;+EAE+E;AAE/E;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK;AACjD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,mBAAmB,CACjC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,IAAI;AAChD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,oBAAoB,CAClC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,KAAK;AACjD,CAAC;AAED;;;;;;GAMG;AACI,SAAS,qBAAqB,CACnC,OAAsB;IAEtB,OAAO,OAAO,CAAC,IAAI,KAAK,iBAAiB,CAAC,MAAM;AAClD,CAAC","file":"assets/javascripts/worker/search.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"./src/assets/javascripts/workers/search/main/index.ts\");\n","/*!\n * escape-html\n * Copyright(c) 2012-2013 TJ Holowaychuk\n * Copyright(c) 2015 Andreas Lubbe\n * Copyright(c) 2015 Tiancheng \"Timothy\" Gu\n * MIT Licensed\n */\n\n'use strict';\n\n/**\n * Module variables.\n * @private\n */\n\nvar matchHtmlRegExp = /[\"'&<>]/;\n\n/**\n * Module exports.\n * @public\n */\n\nmodule.exports = escapeHtml;\n\n/**\n * Escape special characters in the given string of html.\n *\n * @param {string} string The string to escape for inserting into HTML\n * @return {string}\n * @public\n */\n\nfunction escapeHtml(string) {\n var str = '' + string;\n var match = matchHtmlRegExp.exec(str);\n\n if (!match) {\n return str;\n }\n\n var escape;\n var html = '';\n var index = 0;\n var lastIndex = 0;\n\n for (index = match.index; index < str.length; index++) {\n switch (str.charCodeAt(index)) {\n case 34: // \"\n escape = '"';\n break;\n case 38: // &\n escape = '&';\n break;\n case 39: // '\n escape = ''';\n break;\n case 60: // <\n escape = '<';\n break;\n case 62: // >\n escape = '>';\n break;\n default:\n continue;\n }\n\n if (lastIndex !== index) {\n html += str.substring(lastIndex, index);\n }\n\n lastIndex = index + 1;\n html += escape;\n }\n\n return lastIndex !== index\n ? html + str.substring(lastIndex, index)\n : html;\n}\n","'use strict';\n\nconst matchOperatorsRegex = /[|\\\\{}()[\\]^$+*?.-]/g;\n\nmodule.exports = string => {\n\tif (typeof string !== 'string') {\n\t\tthrow new TypeError('Expected a string');\n\t}\n\n\treturn string.replace(matchOperatorsRegex, '\\\\$&');\n};\n","module.exports = global[\"lunr\"] = require(\"-!./lunr.js\");","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.8\n * Copyright (C) 2019 Oliver Nightingale\n * @license MIT\n */\n\n;(function(){\n\n/**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\nvar lunr = function (config) {\n var builder = new lunr.Builder\n\n builder.pipeline.add(\n lunr.trimmer,\n lunr.stopWordFilter,\n lunr.stemmer\n )\n\n builder.searchPipeline.add(\n lunr.stemmer\n )\n\n config.call(builder, builder)\n return builder.build()\n}\n\nlunr.version = \"2.3.8\"\n/*!\n * lunr.utils\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\nlunr.utils = {}\n\n/**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\nlunr.utils.warn = (function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message)\n }\n }\n /* eslint-enable no-console */\n})(this)\n\n/**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\nlunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\"\n } else {\n return obj.toString()\n }\n}\n\n/**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\nlunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj\n }\n\n var clone = Object.create(null),\n keys = Object.keys(obj)\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key]\n\n if (Array.isArray(val)) {\n clone[key] = val.slice()\n continue\n }\n\n if (typeof val === 'string' ||\n typeof val === 'number' ||\n typeof val === 'boolean') {\n clone[key] = val\n continue\n }\n\n throw new TypeError(\"clone is not deep and does not support nested objects\")\n }\n\n return clone\n}\nlunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef\n this.fieldName = fieldName\n this._stringValue = stringValue\n}\n\nlunr.FieldRef.joiner = \"/\"\n\nlunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner)\n\n if (n === -1) {\n throw \"malformed field ref string\"\n }\n\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1)\n\n return new lunr.FieldRef (docRef, fieldRef, s)\n}\n\nlunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef\n }\n\n return this._stringValue\n}\n/*!\n * lunr.Set\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A lunr set.\n *\n * @constructor\n */\nlunr.Set = function (elements) {\n this.elements = Object.create(null)\n\n if (elements) {\n this.length = elements.length\n\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true\n }\n } else {\n this.length = 0\n }\n}\n\n/**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.complete = {\n intersect: function (other) {\n return other\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return true\n }\n}\n\n/**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\nlunr.Set.empty = {\n intersect: function () {\n return this\n },\n\n union: function (other) {\n return other\n },\n\n contains: function () {\n return false\n }\n}\n\n/**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\nlunr.Set.prototype.contains = function (object) {\n return !!this.elements[object]\n}\n\n/**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\nlunr.Set.prototype.intersect = function (other) {\n var a, b, elements, intersection = []\n\n if (other === lunr.Set.complete) {\n return this\n }\n\n if (other === lunr.Set.empty) {\n return other\n }\n\n if (this.length < other.length) {\n a = this\n b = other\n } else {\n a = other\n b = this\n }\n\n elements = Object.keys(a.elements)\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i]\n if (element in b.elements) {\n intersection.push(element)\n }\n }\n\n return new lunr.Set (intersection)\n}\n\n/**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\nlunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete\n }\n\n if (other === lunr.Set.empty) {\n return this\n }\n\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)))\n}\n/**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\nlunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0\n\n for (var fieldName in posting) {\n if (fieldName == '_index') continue // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length\n }\n\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5)\n\n return Math.log(1 + Math.abs(x))\n}\n\n/**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\nlunr.Token = function (str, metadata) {\n this.str = str || \"\"\n this.metadata = metadata || {}\n}\n\n/**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\nlunr.Token.prototype.toString = function () {\n return this.str\n}\n\n/**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n/**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata)\n return this\n}\n\n/**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\nlunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) { return s }\n return new lunr.Token (fn(this.str, this.metadata), this.metadata)\n}\n/*!\n * lunr.tokenizer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\nlunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return []\n }\n\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(\n lunr.utils.asString(t).toLowerCase(),\n lunr.utils.clone(metadata)\n )\n })\n }\n\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = []\n\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart\n\n if ((char.match(lunr.tokenizer.separator) || sliceEnd == len)) {\n\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {}\n tokenMetadata[\"position\"] = [sliceStart, sliceLength]\n tokenMetadata[\"index\"] = tokens.length\n\n tokens.push(\n new lunr.Token (\n str.slice(sliceStart, sliceEnd),\n tokenMetadata\n )\n )\n }\n\n sliceStart = sliceEnd + 1\n }\n\n }\n\n return tokens\n}\n\n/**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\nlunr.tokenizer.separator = /[\\s\\-]+/\n/*!\n * lunr.Pipeline\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\nlunr.Pipeline = function () {\n this._stack = []\n}\n\nlunr.Pipeline.registeredFunctions = Object.create(null)\n\n/**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n/**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\nlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label)\n }\n\n fn.label = label\n lunr.Pipeline.registeredFunctions[fn.label] = fn\n}\n\n/**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\nlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && (fn.label in this.registeredFunctions)\n\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn)\n }\n}\n\n/**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\nlunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline\n\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName]\n\n if (fn) {\n pipeline.add(fn)\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName)\n }\n })\n\n return pipeline\n}\n\n/**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\nlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments)\n\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n this._stack.push(fn)\n }, this)\n}\n\n/**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n pos = pos + 1\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\nlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn)\n\n var pos = this._stack.indexOf(existingFn)\n if (pos == -1) {\n throw new Error('Cannot find existingFn')\n }\n\n this._stack.splice(pos, 0, newFn)\n}\n\n/**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\nlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn)\n if (pos == -1) {\n return\n }\n\n this._stack.splice(pos, 1)\n}\n\n/**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\nlunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length\n\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i]\n var memo = []\n\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens)\n\n if (result === null || result === void 0 || result === '') continue\n\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k])\n }\n } else {\n memo.push(result)\n }\n }\n\n tokens = memo\n }\n\n return tokens\n}\n\n/**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\nlunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token (str, metadata)\n\n return this.run([token]).map(function (t) {\n return t.toString()\n })\n}\n\n/**\n * Resets the pipeline by removing any existing processors.\n *\n */\nlunr.Pipeline.prototype.reset = function () {\n this._stack = []\n}\n\n/**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\nlunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn)\n\n return fn.label\n })\n}\n/*!\n * lunr.Vector\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\nlunr.Vector = function (elements) {\n this._magnitude = 0\n this.elements = elements || []\n}\n\n\n/**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\nlunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0\n }\n\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2]\n\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint\n }\n\n if (pivotIndex > index) {\n end = pivotPoint\n }\n\n if (pivotIndex == index) {\n break\n }\n\n sliceLength = end - start\n pivotPoint = start + Math.floor(sliceLength / 2)\n pivotIndex = this.elements[pivotPoint * 2]\n }\n\n if (pivotIndex == index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex > index) {\n return pivotPoint * 2\n }\n\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2\n }\n}\n\n/**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\nlunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\"\n })\n}\n\n/**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\nlunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0\n var position = this.positionForIndex(insertIdx)\n\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val)\n } else {\n this.elements.splice(position, 0, insertIdx, val)\n }\n}\n\n/**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\nlunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude\n\n var sumOfSquares = 0,\n elementsLength = this.elements.length\n\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i]\n sumOfSquares += val * val\n }\n\n return this._magnitude = Math.sqrt(sumOfSquares)\n}\n\n/**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\nlunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements, b = otherVector.elements,\n aLen = a.length, bLen = b.length,\n aVal = 0, bVal = 0,\n i = 0, j = 0\n\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j]\n if (aVal < bVal) {\n i += 2\n } else if (aVal > bVal) {\n j += 2\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1]\n i += 2\n j += 2\n }\n }\n\n return dotProduct\n}\n\n/**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\nlunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0\n}\n\n/**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toArray = function () {\n var output = new Array (this.elements.length / 2)\n\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i]\n }\n\n return output\n}\n\n/**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\nlunr.Vector.prototype.toJSON = function () {\n return this.elements\n}\n/* eslint-disable */\n/*!\n * lunr.stemmer\n * Copyright (C) 2019 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n/**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\nlunr.stemmer = (function(){\n var step2list = {\n \"ational\" : \"ate\",\n \"tional\" : \"tion\",\n \"enci\" : \"ence\",\n \"anci\" : \"ance\",\n \"izer\" : \"ize\",\n \"bli\" : \"ble\",\n \"alli\" : \"al\",\n \"entli\" : \"ent\",\n \"eli\" : \"e\",\n \"ousli\" : \"ous\",\n \"ization\" : \"ize\",\n \"ation\" : \"ate\",\n \"ator\" : \"ate\",\n \"alism\" : \"al\",\n \"iveness\" : \"ive\",\n \"fulness\" : \"ful\",\n \"ousness\" : \"ous\",\n \"aliti\" : \"al\",\n \"iviti\" : \"ive\",\n \"biliti\" : \"ble\",\n \"logi\" : \"log\"\n },\n\n step3list = {\n \"icate\" : \"ic\",\n \"ative\" : \"\",\n \"alize\" : \"al\",\n \"iciti\" : \"ic\",\n \"ical\" : \"ic\",\n \"ful\" : \"\",\n \"ness\" : \"\"\n },\n\n c = \"[^aeiou]\", // consonant\n v = \"[aeiouy]\", // vowel\n C = c + \"[^aeiouy]*\", // consonant sequence\n V = v + \"[aeiou]*\", // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C, // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\", // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C, // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n\n var porterStemmer = function porterStemmer(w) {\n var stem,\n suffix,\n firstch,\n re,\n re2,\n re3,\n re4;\n\n if (w.length < 3) { return w; }\n\n firstch = w.substr(0,1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a\n re2 = re2_1a;\n\n if (re.test(w)) { w = w.replace(re,\"$1$2\"); }\n else if (re2.test(w)) { w = w.replace(re2,\"$1$2\"); }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) { w = w + \"e\"; }\n else if (re3.test(w)) { re = re_1b_2; w = w.replace(re,\"\"); }\n else if (re4.test(w)) { w = w + \"e\"; }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) {\n w = stem;\n }\n }\n\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re,\"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n\n return w;\n };\n\n return function (token) {\n return token.update(porterStemmer);\n }\n})();\n\nlunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer')\n/*!\n * lunr.stopWordFilter\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\nlunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord\n return memo\n }, {})\n\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token\n }\n}\n\n/**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\nlunr.stopWordFilter = lunr.generateStopWordFilter([\n 'a',\n 'able',\n 'about',\n 'across',\n 'after',\n 'all',\n 'almost',\n 'also',\n 'am',\n 'among',\n 'an',\n 'and',\n 'any',\n 'are',\n 'as',\n 'at',\n 'be',\n 'because',\n 'been',\n 'but',\n 'by',\n 'can',\n 'cannot',\n 'could',\n 'dear',\n 'did',\n 'do',\n 'does',\n 'either',\n 'else',\n 'ever',\n 'every',\n 'for',\n 'from',\n 'get',\n 'got',\n 'had',\n 'has',\n 'have',\n 'he',\n 'her',\n 'hers',\n 'him',\n 'his',\n 'how',\n 'however',\n 'i',\n 'if',\n 'in',\n 'into',\n 'is',\n 'it',\n 'its',\n 'just',\n 'least',\n 'let',\n 'like',\n 'likely',\n 'may',\n 'me',\n 'might',\n 'most',\n 'must',\n 'my',\n 'neither',\n 'no',\n 'nor',\n 'not',\n 'of',\n 'off',\n 'often',\n 'on',\n 'only',\n 'or',\n 'other',\n 'our',\n 'own',\n 'rather',\n 'said',\n 'say',\n 'says',\n 'she',\n 'should',\n 'since',\n 'so',\n 'some',\n 'than',\n 'that',\n 'the',\n 'their',\n 'them',\n 'then',\n 'there',\n 'these',\n 'they',\n 'this',\n 'tis',\n 'to',\n 'too',\n 'twas',\n 'us',\n 'wants',\n 'was',\n 'we',\n 'were',\n 'what',\n 'when',\n 'where',\n 'which',\n 'while',\n 'who',\n 'whom',\n 'why',\n 'will',\n 'with',\n 'would',\n 'yet',\n 'you',\n 'your'\n])\n\nlunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter')\n/*!\n * lunr.trimmer\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\nlunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '')\n })\n}\n\nlunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer')\n/*!\n * lunr.TokenSet\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\nlunr.TokenSet = function () {\n this.final = false\n this.edges = {}\n this.id = lunr.TokenSet._nextId\n lunr.TokenSet._nextId += 1\n}\n\n/**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\nlunr.TokenSet._nextId = 1\n\n/**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\nlunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder\n\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i])\n }\n\n builder.finish()\n return builder.root\n}\n\n/**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance)\n } else {\n return lunr.TokenSet.fromString(clause.term)\n }\n}\n\n/**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\nlunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet\n\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }]\n\n while (stack.length) {\n var frame = stack.pop()\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode\n\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char]\n } else {\n noEditNode = new lunr.TokenSet\n frame.node.edges[char] = noEditNode\n }\n\n if (frame.str.length == 1) {\n noEditNode.final = true\n }\n\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n })\n }\n\n if (frame.editsRemaining == 0) {\n continue\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"]\n } else {\n var insertionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = insertionNode\n }\n\n if (frame.str.length == 0) {\n insertionNode.final = true\n }\n\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n })\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"]\n } else {\n var substitutionNode = new lunr.TokenSet\n frame.node.edges[\"*\"] = substitutionNode\n }\n\n if (frame.str.length == 1) {\n substitutionNode.final = true\n }\n\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n })\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode\n\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB]\n } else {\n transposeNode = new lunr.TokenSet\n frame.node.edges[charB] = transposeNode\n }\n\n if (frame.str.length == 1) {\n transposeNode.final = true\n }\n\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n })\n }\n }\n\n return root\n}\n\n/**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet,\n root = node\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = (i == len - 1)\n\n if (char == \"*\") {\n node.edges[char] = node\n node.final = final\n\n } else {\n var next = new lunr.TokenSet\n next.final = final\n\n node.edges[char] = next\n node = next\n }\n }\n\n return root\n}\n\n/**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\nlunr.TokenSet.prototype.toArray = function () {\n var words = []\n\n var stack = [{\n prefix: \"\",\n node: this\n }]\n\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length\n\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0)\n words.push(frame.prefix)\n }\n\n for (var i = 0; i < len; i++) {\n var edge = edges[i]\n\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n })\n }\n }\n\n return words\n}\n\n/**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\nlunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str\n }\n\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length\n\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label]\n\n str = str + label + node.id\n }\n\n return str\n}\n\n/**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\nlunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet,\n frame = undefined\n\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }]\n\n while (stack.length) {\n frame = stack.pop()\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length\n\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q]\n\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n]\n\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined\n\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge]\n next.final = next.final || final\n\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet\n next.final = final\n frame.output.edges[nEdge] = next\n }\n\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n })\n }\n }\n }\n }\n\n return output\n}\nlunr.TokenSet.Builder = function () {\n this.previousWord = \"\"\n this.root = new lunr.TokenSet\n this.uncheckedNodes = []\n this.minimizedNodes = {}\n}\n\nlunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0\n\n if (word < this.previousWord) {\n throw new Error (\"Out of order word insertion\")\n }\n\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break\n commonPrefix++\n }\n\n this.minimize(commonPrefix)\n\n if (this.uncheckedNodes.length == 0) {\n node = this.root\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child\n }\n\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet,\n char = word[i]\n\n node.edges[char] = nextNode\n\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n })\n\n node = nextNode\n }\n\n node.final = true\n this.previousWord = word\n}\n\nlunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0)\n}\n\nlunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString()\n\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey]\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey\n\n this.minimizedNodes[childKey] = node.child\n }\n\n this.uncheckedNodes.pop()\n }\n}\n/*!\n * lunr.Index\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\nlunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex\n this.fieldVectors = attrs.fieldVectors\n this.tokenSet = attrs.tokenSet\n this.fields = attrs.fields\n this.pipeline = attrs.pipeline\n}\n\n/**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n/**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n/**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query)\n parser.parse()\n })\n}\n\n/**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n/**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\nlunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null)\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector\n }\n\n fn.call(query, query)\n\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.complete\n\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n })\n } else {\n terms = [clause.term]\n }\n\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m]\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray()\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = lunr.Set.empty\n }\n\n break\n }\n\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index\n\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs)\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet)\n\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty\n }\n\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet)\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) { return a + b })\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue\n }\n\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef (matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch\n\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData (expandedTerm, field, metadata)\n } else {\n fieldMatch.add(expandedTerm, field, metadata)\n }\n\n }\n\n termFieldCache[termField] = true\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k]\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches)\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty\n\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i]\n\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field])\n }\n\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field])\n }\n }\n\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null)\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors)\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i]\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef)\n matchingFields[matchingFieldRef] = new lunr.MatchData\n }\n }\n\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef\n\n if (!allRequiredMatches.contains(docRef)) {\n continue\n }\n\n if (allProhibitedMatches.contains(docRef)) {\n continue\n }\n\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch\n\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score\n docMatch.matchData.combine(matchingFields[fieldRef])\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n }\n matches[docRef] = match\n results.push(match)\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score\n })\n}\n\n/**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\nlunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex)\n .sort()\n .map(function (term) {\n return [term, this.invertedIndex[term]]\n }, this)\n\n var fieldVectors = Object.keys(this.fieldVectors)\n .map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()]\n }, this)\n\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n }\n}\n\n/**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\nlunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder,\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline)\n\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\")\n }\n\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1]\n\n fieldVectors[ref] = new lunr.Vector(elements)\n }\n\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1]\n\n tokenSetBuilder.insert(term)\n invertedIndex[term] = posting\n }\n\n tokenSetBuilder.finish()\n\n attrs.fields = serializedIndex.fields\n\n attrs.fieldVectors = fieldVectors\n attrs.invertedIndex = invertedIndex\n attrs.tokenSet = tokenSetBuilder.root\n attrs.pipeline = pipeline\n\n return new lunr.Index(attrs)\n}\n/*!\n * lunr.Builder\n * Copyright (C) 2019 Oliver Nightingale\n */\n\n/**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\nlunr.Builder = function () {\n this._ref = \"id\"\n this._fields = Object.create(null)\n this._documents = Object.create(null)\n this.invertedIndex = Object.create(null)\n this.fieldTermFrequencies = {}\n this.fieldLengths = {}\n this.tokenizer = lunr.tokenizer\n this.pipeline = new lunr.Pipeline\n this.searchPipeline = new lunr.Pipeline\n this.documentCount = 0\n this._b = 0.75\n this._k1 = 1.2\n this.termIndex = 0\n this.metadataWhitelist = []\n}\n\n/**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\nlunr.Builder.prototype.ref = function (ref) {\n this._ref = ref\n}\n\n/**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n/**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\nlunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError (\"Field '\" + fieldName + \"' contains illegal character '/'\")\n }\n\n this._fields[fieldName] = attributes || {}\n}\n\n/**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0\n } else if (number > 1) {\n this._b = 1\n } else {\n this._b = number\n }\n}\n\n/**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\nlunr.Builder.prototype.k1 = function (number) {\n this._k1 = number\n}\n\n/**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\nlunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields)\n\n this._documents[docRef] = attributes || {}\n this.documentCount += 1\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef (docRef, fieldName),\n fieldTerms = Object.create(null)\n\n this.fieldTermFrequencies[fieldRef] = fieldTerms\n this.fieldLengths[fieldRef] = 0\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j]\n\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0\n }\n\n fieldTerms[term] += 1\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null)\n posting[\"_index\"] = this.termIndex\n this.termIndex += 1\n\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null)\n }\n\n this.invertedIndex[term] = posting\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null)\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey]\n\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = []\n }\n\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata)\n }\n }\n\n }\n}\n\n/**\n * Calculates the average document length for this index\n *\n * @private\n */\nlunr.Builder.prototype.calculateAverageFieldLengths = function () {\n\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {}\n\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName\n\n documentsWithField[field] || (documentsWithField[field] = 0)\n documentsWithField[field] += 1\n\n accumulator[field] || (accumulator[field] = 0)\n accumulator[field] += this.fieldLengths[fieldRef]\n }\n\n var fields = Object.keys(this._fields)\n\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i]\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName]\n }\n\n this.averageFieldLength = accumulator\n}\n\n/**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\nlunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null)\n\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector,\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length\n\n\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1\n\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf, score, scoreWithPrecision\n\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount)\n termIdfCache[term] = idf\n } else {\n idf = termIdfCache[term]\n }\n\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf)\n score *= fieldBoost\n score *= docBoost\n scoreWithPrecision = Math.round(score * 1000) / 1000\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision)\n }\n\n fieldVectors[fieldRef] = fieldVector\n }\n\n this.fieldVectors = fieldVectors\n}\n\n/**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\nlunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(\n Object.keys(this.invertedIndex).sort()\n )\n}\n\n/**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\nlunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths()\n this.createFieldVectors()\n this.createTokenSet()\n\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n })\n}\n\n/**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\nlunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1)\n args.unshift(this)\n fn.apply(this, args)\n}\n/**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {})\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n clonedMetadata[key] = metadata[key].slice()\n }\n\n this.metadata = Object.create(null)\n\n if (term !== undefined) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = clonedMetadata\n }\n}\n\n/**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\nlunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata)\n\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term])\n\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null)\n }\n\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field])\n\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null)\n }\n\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k]\n\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key]\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key])\n }\n\n }\n }\n }\n}\n\n/**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\nlunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null)\n this.metadata[term][field] = metadata\n return\n }\n\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata\n return\n }\n\n var metadataKeys = Object.keys(metadata)\n\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i]\n\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key])\n } else {\n this.metadata[term][field][key] = metadata[key]\n }\n }\n}\n/**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\nlunr.Query = function (allFields) {\n this.clauses = []\n this.allFields = allFields\n}\n\n/**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\nlunr.Query.wildcard = new String (\"*\")\nlunr.Query.wildcard.NONE = 0\nlunr.Query.wildcard.LEADING = 1\nlunr.Query.wildcard.TRAILING = 2\n\n/**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\nlunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n}\n\n/**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n/**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\nlunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields\n }\n\n if (!('boost' in clause)) {\n clause.boost = 1\n }\n\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true\n }\n\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.LEADING) && (clause.term.charAt(0) != lunr.Query.wildcard)) {\n clause.term = \"*\" + clause.term\n }\n\n if ((clause.wildcard & lunr.Query.wildcard.TRAILING) && (clause.term.slice(-1) != lunr.Query.wildcard)) {\n clause.term = \"\" + clause.term + \"*\"\n }\n\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL\n }\n\n this.clauses.push(clause)\n\n return this\n}\n\n/**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\nlunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false\n }\n }\n\n return true\n}\n\n/**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\nlunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) { this.term(t, lunr.utils.clone(options)) }, this)\n return this\n }\n\n var clause = options || {}\n clause.term = term.toString()\n\n this.clause(clause)\n\n return this\n}\nlunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\"\n this.message = message\n this.start = start\n this.end = end\n}\n\nlunr.QueryParseError.prototype = new Error\nlunr.QueryLexer = function (str) {\n this.lexemes = []\n this.str = str\n this.length = str.length\n this.pos = 0\n this.start = 0\n this.escapeCharPositions = []\n}\n\nlunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText\n\n while (state) {\n state = state(this)\n }\n}\n\nlunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos\n\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i]\n subSlices.push(this.str.slice(sliceStart, sliceEnd))\n sliceStart = sliceEnd + 1\n }\n\n subSlices.push(this.str.slice(sliceStart, this.pos))\n this.escapeCharPositions.length = 0\n\n return subSlices.join('')\n}\n\nlunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n })\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1)\n this.pos += 1\n}\n\nlunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS\n }\n\n var char = this.str.charAt(this.pos)\n this.pos += 1\n return char\n}\n\nlunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start\n}\n\nlunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1\n }\n\n this.start = this.pos\n}\n\nlunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1\n}\n\nlunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode\n\n do {\n char = this.next()\n charCode = char.charCodeAt(0)\n } while (charCode > 47 && charCode < 58)\n\n if (char != lunr.QueryLexer.EOS) {\n this.backup()\n }\n}\n\nlunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length\n}\n\nlunr.QueryLexer.EOS = 'EOS'\nlunr.QueryLexer.FIELD = 'FIELD'\nlunr.QueryLexer.TERM = 'TERM'\nlunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE'\nlunr.QueryLexer.BOOST = 'BOOST'\nlunr.QueryLexer.PRESENCE = 'PRESENCE'\n\nlunr.QueryLexer.lexField = function (lexer) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.FIELD)\n lexer.ignore()\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup()\n lexer.emit(lunr.QueryLexer.TERM)\n }\n\n lexer.ignore()\n\n if (lexer.more()) {\n return lunr.QueryLexer.lexText\n }\n}\n\nlunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore()\n lexer.acceptDigitRun()\n lexer.emit(lunr.QueryLexer.BOOST)\n return lunr.QueryLexer.lexText\n}\n\nlunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n}\n\n// This matches the separator used when tokenising fields\n// within a document. These should match otherwise it is\n// not possible to search for some tokens within a document.\n//\n// It is possible for the user to change the separator on the\n// tokenizer so it _might_ clash with any other of the special\n// characters already used within the search string, e.g. :.\n//\n// This means that it is possible to change the separator in\n// such a way that makes some words unsearchable using a search\n// string.\nlunr.QueryLexer.termSeparator = lunr.tokenizer.separator\n\nlunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next()\n\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter()\n continue\n }\n\n if (char == \":\") {\n return lunr.QueryLexer.lexField\n }\n\n if (char == \"~\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexEditDistance\n }\n\n if (char == \"^\") {\n lexer.backup()\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM)\n }\n return lunr.QueryLexer.lexBoost\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE)\n return lunr.QueryLexer.lexText\n }\n\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm\n }\n }\n}\n\nlunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer (str)\n this.query = query\n this.currentClause = {}\n this.lexemeIdx = 0\n}\n\nlunr.QueryParser.prototype.parse = function () {\n this.lexer.run()\n this.lexemes = this.lexer.lexemes\n\n var state = lunr.QueryParser.parseClause\n\n while (state) {\n state = state(this)\n }\n\n return this.query\n}\n\nlunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx]\n}\n\nlunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme()\n this.lexemeIdx += 1\n return lexeme\n}\n\nlunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause\n this.query.clause(completedClause)\n this.currentClause = {}\n}\n\nlunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type\n\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\"\n }\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n}\n\nlunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED\n break\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED\n break\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) { return \"'\" + f + \"'\" }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields\n\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.fields = [lexeme.str]\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n parser.currentClause.term = lexeme.str.toLowerCase()\n\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false\n }\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var editDistance = parseInt(lexeme.str, 10)\n\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.editDistance = editDistance\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\nlunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme()\n\n if (lexeme == undefined) {\n return\n }\n\n var boost = parseInt(lexeme.str, 10)\n\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\"\n throw new lunr.QueryParseError (errorMessage, lexeme.start, lexeme.end)\n }\n\n parser.currentClause.boost = boost\n\n var nextLexeme = parser.peekLexeme()\n\n if (nextLexeme == undefined) {\n parser.nextClause()\n return\n }\n\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause()\n return lunr.QueryParser.parseTerm\n case lunr.QueryLexer.FIELD:\n parser.nextClause()\n return lunr.QueryParser.parseField\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause()\n return lunr.QueryParser.parsePresence\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\"\n throw new lunr.QueryParseError (errorMessage, nextLexeme.start, nextLexeme.end)\n }\n}\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */\n ;(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory)\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory()\n } else {\n // Browser globals (root is window)\n root.lunr = factory()\n }\n }(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr\n }))\n})();\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation. All rights reserved.\r\nLicensed under the Apache License, Version 2.0 (the \"License\"); you may not use\r\nthis file except in compliance with the License. You may obtain a copy of the\r\nLicense at http://www.apache.org/licenses/LICENSE-2.0\r\n\r\nTHIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r\nKIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r\nWARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r\nMERCHANTABLITY OR NON-INFRINGEMENT.\r\n\r\nSee the Apache Version 2.0 License for specific language governing permissions\r\nand limitations under the License.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport function __exportStar(m, exports) {\r\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nexport function __values(o) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator], i = 0;\r\n if (m) return m.call(o);\r\n return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n","var g;\n\n// This works in non-strict mode\ng = (function() {\n\treturn this;\n})();\n\ntry {\n\t// This works if eval is allowed (see CSP)\n\tg = g || new Function(\"return this\")();\n} catch (e) {\n\t// This works if the window reference is available\n\tif (typeof window === \"object\") g = window;\n}\n\n// g can still be undefined, but nothing to do about it...\n// We return undefined, instead of nothing here, so it's\n// easier to handle this case. if(!global) { ...}\n\nmodule.exports = g;\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport {\n ArticleDocument,\n SearchDocumentMap,\n SectionDocument,\n setupSearchDocumentMap\n} from \"../document\"\nimport {\n SearchHighlightFactoryFn,\n setupSearchHighlighter\n} from \"../highlight\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index configuration\n */\nexport interface SearchIndexConfig {\n lang: string[] /* Search languages */\n separator: string /* Search separator */\n}\n\n/**\n * Search index document\n */\nexport interface SearchIndexDocument {\n location: string /* Document location */\n title: string /* Document title */\n text: string /* Document text */\n}\n\n/**\n * Search index pipeline\n */\nexport interface SearchIndexPipeline {\n trimmer: boolean /* Add trimmer to pipeline */\n stopwords: boolean /* Add stopword filter to pipeline */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search index options\n *\n * This interfaces describes the format of the `search_index.json` file which\n * is automatically built by the MkDocs search plugin.\n */\nexport interface SearchIndexOptions {\n config: SearchIndexConfig /* Search index configuration */\n docs: SearchIndexDocument[] /* Search index documents */\n pipeline?: SearchIndexPipeline /* Search index pipeline */\n index?: object | string /* Prebuilt or serialized index */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search result\n */\nexport interface SearchResult {\n article: ArticleDocument /* Article document */\n sections: SectionDocument[] /* Section documents */\n}\n\n/* ----------------------------------------------------------------------------\n * Class\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n *\n * Note that `lunr` is injected via Webpack, as it will otherwise also be\n * bundled in the application bundle.\n */\nexport class SearchIndex {\n\n /**\n * Search document mapping\n *\n * A mapping of URLs (including hash fragments) to the actual articles and\n * sections of the documentation. The search document mapping must be created\n * regardless of whether the index was prebuilt or not, as `lunr` itself will\n * only store the actual index.\n */\n protected documents: SearchDocumentMap\n\n /**\n * Search highlight factory function\n */\n protected highlight: SearchHighlightFactoryFn\n\n /**\n * The `lunr` search index\n */\n protected index: lunr.Index\n\n /**\n * Create a search index\n *\n * @param options - Options\n */\n public constructor({ config, docs, pipeline, index }: SearchIndexOptions) {\n this.documents = setupSearchDocumentMap(docs)\n this.highlight = setupSearchHighlighter(config)\n\n /* If no index was given, create it */\n if (typeof index === \"undefined\") {\n this.index = lunr(function() {\n pipeline = pipeline || {\n trimmer: true,\n stopwords: true\n }\n\n /* Remove stemmer, as it cripples search experience */\n this.pipeline.reset()\n if (pipeline.trimmer)\n this.pipeline.add(lunr.trimmer)\n if (pipeline.stopwords)\n this.pipeline.add(lunr.stopWordFilter)\n\n /* Set up alternate search languages */\n if (config.lang.length === 1 && config.lang[0] !== \"en\") {\n this.use((lunr as any)[config.lang[0]])\n } else if (config.lang.length > 1) {\n this.use((lunr as any).multiLanguage(...config.lang))\n }\n\n /* Setup fields and reference */\n this.field(\"title\", { boost: 10 })\n this.field(\"text\")\n this.ref(\"location\")\n\n /* Index documents */\n for (const doc of docs)\n this.add(doc)\n })\n\n /* Prebuilt or serialized index */\n } else {\n this.index = lunr.Index.load(\n typeof index === \"string\"\n ? JSON.parse(index)\n : index\n )\n }\n }\n\n /**\n * Search for matching documents\n *\n * The search index which MkDocs provides is divided up into articles, which\n * contain the whole content of the individual pages, and sections, which only\n * contain the contents of the subsections obtained by breaking the individual\n * pages up at `h1` ... `h6`. As there may be many sections on different pages\n * with indentical titles (for example within this very project, e.g. \"Usage\"\n * or \"Installation\"), they need to be put into the context of the containing\n * page. For this reason, section results are grouped within their respective\n * articles which are the top-level results that are returned.\n *\n * @param query - Query string\n *\n * @return Search results\n */\n public search(query: string): SearchResult[] {\n if (query) {\n try {\n\n /* Group sections by containing article */\n const groups = this.index.search(query)\n .reduce((results, result) => {\n const document = this.documents.get(result.ref)\n if (typeof document !== \"undefined\") {\n if (\"parent\" in document) {\n const ref = document.parent.location\n results.set(ref, [...results.get(ref) || [], result])\n } else {\n const ref = document.location\n results.set(ref, results.get(ref) || [])\n }\n }\n return results\n }, new Map())\n\n /* Create highlighter for query */\n const fn = this.highlight(query)\n\n /* Map groups to search documents */\n return [...groups].map(([ref, sections]) => ({\n article: fn(this.documents.get(ref) as ArticleDocument),\n sections: sections.map(section => {\n return fn(this.documents.get(section.ref) as SectionDocument)\n })\n }))\n\n /* Log errors to console (for now) */\n } catch (err) {\n // tslint:disable-next-line no-console\n console.warn(`Invalid query: ${query} – see https://bit.ly/2s3ChXG`)\n }\n }\n\n /* Return nothing in case of error or empty query */\n return []\n }\n\n /**\n * Serialize search index\n *\n * @return String representation\n */\n public toString(): string {\n return JSON.stringify(this.index)\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as escapeHTML from \"escape-html\"\n\nimport { SearchIndexDocument } from \"../_\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * A top-level article\n */\nexport interface ArticleDocument extends SearchIndexDocument {\n linked: boolean /* Whether the section was linked */\n}\n\n/**\n * A section of an article\n */\nexport interface SectionDocument extends SearchIndexDocument {\n parent: ArticleDocument /* Parent article */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * Search document\n */\nexport type SearchDocument =\n | ArticleDocument\n | SectionDocument\n\n/**\n * Search document mapping\n */\nexport type SearchDocumentMap = Map\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search document mapping\n *\n * @param docs - Search index documents\n *\n * @return Search document map\n */\nexport function setupSearchDocumentMap(\n docs: SearchIndexDocument[]\n): SearchDocumentMap {\n const documents = new Map()\n for (const doc of docs) {\n const [path, hash] = doc.location.split(\"#\")\n\n /* Extract location and title */\n const location = doc.location\n const title = doc.title\n\n /* Escape and cleanup text */\n const text = escapeHTML(doc.text)\n .replace(/\\s+(?=[,.:;!?])/g, \"\")\n .replace(/\\s+/g, \" \")\n\n /* Handle section */\n if (hash) {\n const parent = documents.get(path) as ArticleDocument\n\n /* Ignore first section, override article */\n if (!parent.linked) {\n parent.title = doc.title\n parent.text = text\n parent.linked = true\n\n /* Add subsequent section */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n parent\n })\n }\n\n /* Add article */\n } else {\n documents.set(location, {\n location,\n title,\n text,\n linked: false\n })\n }\n }\n return documents\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport * as escapeRegExp from \"escape-string-regexp\"\n\nimport { SearchIndexConfig } from \"../_\"\nimport { SearchDocument } from \"../document\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search highlight function\n *\n * @template T - Search document type\n *\n * @param document - Search document\n *\n * @return Highlighted document\n */\nexport type SearchHighlightFn =\n (document: Readonly) => T\n\n/**\n * Search highlight factory function\n *\n * @param query - Query string\n *\n * @return Search highlight function\n */\nexport type SearchHighlightFactoryFn =\n (query: string) => SearchHighlightFn\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Create a search highlighter\n *\n * @param config - Search index configuration\n *\n * @return Search highlight factory function\n */\nexport function setupSearchHighlighter(\n config: SearchIndexConfig\n): SearchHighlightFactoryFn {\n const separator = new RegExp(config.separator, \"img\")\n const highlight = (_: unknown, data: string, term: string) => {\n return `${data}${term}`\n }\n\n /* Return factory function */\n return (query: string) => {\n query = query\n .replace(/[\\s*+-:~^]+/g, \" \")\n .trim()\n\n /* Create search term match expression */\n const match = new RegExp(`(^|${config.separator})(${\n escapeRegExp(query).replace(separator, \"|\")\n })`, \"img\")\n\n /* Highlight document */\n return document => ({\n ...document,\n title: document.title.replace(match, highlight),\n text: document.text.replace(match, highlight)\n })\n }\n}\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nexport * from \"./_\"\nexport {\n ArticleDocument,\n SearchDocument,\n SectionDocument\n} from \"./document\"\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport \"expose-loader?lunr!lunr\"\n\nimport { SearchIndex, SearchIndexConfig } from \"integrations/search\"\n\nimport { SearchMessage, SearchMessageType } from \"../message\"\n\n/* ----------------------------------------------------------------------------\n * Data\n * ------------------------------------------------------------------------- */\n\n/**\n * Search index\n */\nlet index: SearchIndex\n\n/* ----------------------------------------------------------------------------\n * Helper functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Setup multi-language support through `lunr-languages`\n *\n * This function will automatically import the stemmers necessary to process\n * the languages which were given through the search index configuration.\n *\n * @param config - Search index configuration\n */\nfunction setupLunrLanguages(config: SearchIndexConfig): void {\n const base = \"../lunr\"\n\n /* Add scripts for languages */\n const scripts = []\n for (const lang of config.lang) {\n if (lang === \"ja\") scripts.push(`${base}/tinyseg.min.js`)\n if (lang !== \"en\") scripts.push(`${base}/min/lunr.${lang}.min.js`)\n }\n\n /* Add multi-language support */\n if (config.lang.length > 1)\n scripts.push(`${base}/min/lunr.multi.min.js`)\n\n /* Load scripts synchronously */\n if (scripts.length)\n self.importScripts(\n `${base}/min/lunr.stemmer.support.min.js`,\n ...scripts\n )\n}\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Message handler\n *\n * @param message - Source message\n *\n * @return Target message\n */\nexport function handler(message: SearchMessage): SearchMessage {\n switch (message.type) {\n\n /* Setup search index */\n case SearchMessageType.SETUP:\n setupLunrLanguages(message.data.config)\n index = new SearchIndex(message.data)\n return {\n type: SearchMessageType.DUMP,\n data: index.toString()\n }\n\n /* Query search index */\n case SearchMessageType.QUERY:\n return {\n type: SearchMessageType.RESULT,\n data: index ? index.search(message.data) : []\n }\n\n /* All other messages */\n default:\n throw new TypeError(\"Invalid message type\")\n }\n}\n\n/* ----------------------------------------------------------------------------\n * Worker\n * ------------------------------------------------------------------------- */\n\nself.addEventListener(\"message\", ev => {\n self.postMessage(handler(ev.data))\n})\n","/*\n * Copyright (c) 2016-2020 Martin Donath \n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to\n * deal in the Software without restriction, including without limitation the\n * rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n * sell copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A RTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n * IN THE SOFTWARE.\n */\n\nimport { SearchIndexOptions, SearchResult } from \"integrations/search\"\n\n/* ----------------------------------------------------------------------------\n * Types\n * ------------------------------------------------------------------------- */\n\n/**\n * Search message type\n */\nexport const enum SearchMessageType {\n SETUP, /* Search index setup */\n DUMP, /* Search index dump */\n QUERY, /* Search query */\n RESULT /* Search results */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message containing the data necessary to setup the search index\n */\nexport interface SearchSetupMessage {\n type: SearchMessageType.SETUP /* Message type */\n data: SearchIndexOptions /* Message data */\n}\n\n/**\n * A message containing the a dump of the search index\n */\nexport interface SearchDumpMessage {\n type: SearchMessageType.DUMP /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing a search query\n */\nexport interface SearchQueryMessage {\n type: SearchMessageType.QUERY /* Message type */\n data: string /* Message data */\n}\n\n/**\n * A message containing results for a search query\n */\nexport interface SearchResultMessage {\n type: SearchMessageType.RESULT /* Message type */\n data: SearchResult[] /* Message data */\n}\n\n/* ------------------------------------------------------------------------- */\n\n/**\n * A message exchanged with the search worker\n */\nexport type SearchMessage =\n | SearchSetupMessage\n | SearchDumpMessage\n | SearchQueryMessage\n | SearchResultMessage\n\n/* ----------------------------------------------------------------------------\n * Functions\n * ------------------------------------------------------------------------- */\n\n/**\n * Type guard for search setup messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchSetupMessage(\n message: SearchMessage\n): message is SearchSetupMessage {\n return message.type === SearchMessageType.SETUP\n}\n\n/**\n * Type guard for search dump messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchDumpMessage(\n message: SearchMessage\n): message is SearchDumpMessage {\n return message.type === SearchMessageType.DUMP\n}\n\n/**\n * Type guard for search query messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchQueryMessage(\n message: SearchMessage\n): message is SearchQueryMessage {\n return message.type === SearchMessageType.QUERY\n}\n\n/**\n * Type guard for search result messages\n *\n * @param message - Search worker message\n *\n * @return Test result\n */\nexport function isSearchResultMessage(\n message: SearchMessage\n): message is SearchResultMessage {\n return message.type === SearchMessageType.RESULT\n}\n"],"sourceRoot":""} \ No newline at end of file diff --git a/material/assets/manifest.json b/material/assets/manifest.json index 17be847fd..1b183bdf1 100644 --- a/material/assets/manifest.json +++ b/material/assets/manifest.json @@ -1,8 +1,8 @@ { - "assets/javascripts/bundle.js": "assets/javascripts/bundle.b70c6ac3.min.js", - "assets/javascripts/bundle.js.map": "assets/javascripts/bundle.b70c6ac3.min.js.map", - "assets/javascripts/worker/search.js": "assets/javascripts/worker/search.926ffd9e.min.js", - "assets/javascripts/worker/search.js.map": "assets/javascripts/worker/search.926ffd9e.min.js.map", - "assets/stylesheets/main.css": "assets/stylesheets/main.1e07d700.min.css", - "assets/stylesheets/palette.css": "assets/stylesheets/palette.f5f04e6f.min.css" + "assets/javascripts/bundle.js": "assets/javascripts/bundle.js", + "assets/javascripts/bundle.js.map": "assets/javascripts/bundle.js.map", + "assets/javascripts/worker/search.js": "assets/javascripts/worker/search.js", + "assets/javascripts/worker/search.js.map": "assets/javascripts/worker/search.js.map", + "assets/stylesheets/main.css": "assets/stylesheets/main.css", + "assets/stylesheets/palette.css": "assets/stylesheets/palette.css" } \ No newline at end of file diff --git a/material/assets/stylesheets/main.css b/material/assets/stylesheets/main.css new file mode 100644 index 000000000..8608df40a --- /dev/null +++ b/material/assets/stylesheets/main.css @@ -0,0 +1,2942 @@ +@charset "UTF-8"; +html { + box-sizing: border-box; +} + +*, +*::before, +*::after { + box-sizing: inherit; +} + +html { + -webkit-text-size-adjust: none; + -moz-text-size-adjust: none; + -ms-text-size-adjust: none; + text-size-adjust: none; +} + +body { + margin: 0; +} + +hr { + overflow: visible; + box-sizing: content-box; +} + +a { + -webkit-text-decoration-skip: objects; +} + +a, +button, +label, +input { + -webkit-tap-highlight-color: transparent; +} + +a { + color: inherit; + text-decoration: none; +} + +small { + font-size: 80%; +} + +sub, +sup { + position: relative; + font-size: 80%; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +img { + border-style: none; +} + +table { + border-collapse: separate; + border-spacing: 0; +} + +td, +th { + font-weight: normal; + vertical-align: top; +} + +button { + margin: 0; + padding: 0; + border: 0; + background: transparent; + font-size: inherit; +} + +input { + border: 0; + outline: 0; +} + +:root { + --md-default-fg-color: hsla(0, 0%, 0%, 0.87); + --md-default-fg-color--light: hsla(0, 0%, 0%, 0.54); + --md-default-fg-color--lighter: hsla(0, 0%, 0%, 0.26); + --md-default-fg-color--lightest: hsla(0, 0%, 0%, 0.07); + --md-default-bg-color: hsla(0, 0%, 100%, 1); + --md-default-bg-color--light: hsla(0, 0%, 100%, 0.7); + --md-default-bg-color--lighter: hsla(0, 0%, 100%, 0.3); + --md-default-bg-color--lightest: hsla(0, 0%, 100%, 0.12); + --md-primary-fg-color: hsla(231deg, 48%, 48%, 1); + --md-primary-fg-color--light: hsla(230deg, 44%, 64%, 1); + --md-primary-fg-color--dark: hsla(232deg, 54%, 41%, 1); + --md-primary-bg-color: var(--md-default-bg-color); + --md-primary-bg-color--light: var(--md-default-bg-color--light); + --md-accent-fg-color: hsla(231deg, 99%, 66%, 1); + --md-accent-fg-color--transparent: hsla(231deg, 99%, 66%, 0.1); + --md-accent-bg-color: var(--md-default-bg-color); + --md-accent-bg-color--light: var(--md-default-bg-color--light); + --md-code-bg-color: hsla(0, 0%, 92.5%, 0.5); + --md-code-fg-color: hsla(200, 18%, 26%, 1); +} + +.md-icon svg { + display: block; + width: 1.2rem; + height: 1.2rem; + margin: 0 auto; + fill: currentColor; +} + +body { + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +body, +input { + color: var(--md-default-fg-color); + -webkit-font-feature-settings: "kern", "liga"; + font-feature-settings: "kern", "liga"; + font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; +} + +code, +pre, +kbd { + color: var(--md-default-fg-color); + -webkit-font-feature-settings: "kern"; + font-feature-settings: "kern"; + font-family: "Courier New", Courier, monospace; +} + +.md-typeset { + font-size: 0.8rem; + line-height: 1.6; + -webkit-print-color-adjust: exact; +} +.md-typeset p, +.md-typeset ul, +.md-typeset ol, +.md-typeset blockquote { + margin: 1em 0; +} +.md-typeset h1 { + margin: 0 0 2rem; + color: var(--md-default-fg-color--light); + font-size: 1.5625rem; + font-weight: 300; + letter-spacing: -0.01em; + line-height: 1.3; +} +.md-typeset h2 { + margin: 2rem 0 0.8rem; + font-size: 1.25rem; + font-weight: 300; + letter-spacing: -0.01em; + line-height: 1.4; +} +.md-typeset h3 { + margin: 1.6rem 0 0.8rem; + font-size: 1rem; + font-weight: 400; + letter-spacing: -0.01em; + line-height: 1.5; +} +.md-typeset h2 + h3 { + margin-top: 0.8rem; +} +.md-typeset h4 { + margin: 0.8rem 0; + font-size: 0.8rem; + font-weight: 700; + letter-spacing: -0.01em; +} +.md-typeset h5, +.md-typeset h6 { + margin: 0.8rem 0; + color: var(--md-default-fg-color--light); + font-size: 0.64rem; + font-weight: 700; + letter-spacing: -0.01em; +} +.md-typeset h5 { + text-transform: uppercase; +} +.md-typeset hr { + margin: 1.5em 0; + border-bottom: 0.05rem dotted var(--md-default-fg-color--lighter); +} +.md-typeset a { + color: var(--md-primary-fg-color); + word-break: break-word; +} +.md-typeset a, .md-typeset a::before { + transition: color 125ms; +} +.md-typeset a:focus, .md-typeset a:hover { + color: var(--md-accent-fg-color); +} +.md-typeset code, +.md-typeset pre, +.md-typeset kbd { + background-color: var(--md-code-bg-color); + color: var(--md-code-fg-color); + font-size: 85%; + direction: ltr; +} +.md-typeset code { + margin: 0 0.2941176471em; + padding: 0.0735294118em 0; + border-radius: 0.1rem; + box-shadow: 0.2941176471em 0 0 var(--md-code-bg-color), -0.2941176471em 0 0 var(--md-code-bg-color); + word-break: break-word; + -webkit-box-decoration-break: clone; + box-decoration-break: clone; +} +.md-typeset h1 code, +.md-typeset h2 code, +.md-typeset h3 code, +.md-typeset h4 code, +.md-typeset h5 code, +.md-typeset h6 code { + margin: 0; + background-color: transparent; + box-shadow: none; +} +.md-typeset a > code { + margin: inherit; + padding: inherit; + border-radius: initial; + background-color: inherit; + color: inherit; + box-shadow: none; +} +.md-typeset pre { + position: relative; + margin: 1em 0; + border-radius: 0.1rem; + line-height: 1.4; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-overflow-scrolling: touch; +} +.md-typeset pre > code { + display: block; + margin: 0; + padding: 0.525rem 0.6rem; + background-color: transparent; + font-size: inherit; + box-shadow: none; + -webkit-box-decoration-break: slice; + box-decoration-break: slice; + overflow: auto; + word-break: normal; +} +.md-typeset pre > code::-webkit-scrollbar { + width: 0.2rem; + height: 0.2rem; +} +.md-typeset pre > code::-webkit-scrollbar-thumb { + background-color: var(--md-default-fg-color--lighter); +} +.md-typeset pre > code::-webkit-scrollbar-thumb:hover { + background-color: var(--md-accent-fg-color); +} +.md-typeset kbd { + display: inline-block; + padding: 0 0.5882352941em; + border-radius: 0.1rem; + font-size: 0.75em; + line-height: 1.5; + box-shadow: 0 0.1rem 0 0.05rem var(--md-default-fg-color--lighter), 0 0.1rem 0 var(--md-default-fg-color--lighter), inset 0 -0.1rem 0.2rem var(--md-default-bg-color); + word-break: break-word; + vertical-align: text-top; +} +.md-typeset mark { + margin: 0 0.25em; + padding: 0.0625em 0; + border-radius: 0.1rem; + background-color: rgba(255, 235, 59, 0.5); + box-shadow: 0.25em 0 0 rgba(255, 235, 59, 0.5), -0.25em 0 0 rgba(255, 235, 59, 0.5); + word-break: break-word; + -webkit-box-decoration-break: clone; + box-decoration-break: clone; +} +.md-typeset abbr { + border-bottom: 0.05rem dotted var(--md-default-fg-color--light); + text-decoration: none; + cursor: help; +} +.md-typeset small { + opacity: 0.75; +} +.md-typeset sup, +.md-typeset sub { + margin-left: 0.078125em; +} +[dir=rtl] .md-typeset sup, +[dir=rtl] .md-typeset sub { + margin-right: 0.078125em; + margin-left: initial; +} +.md-typeset blockquote { + padding-left: 0.6rem; + border-left: 0.2rem solid var(--md-default-fg-color--lighter); + color: var(--md-default-fg-color--light); +} +[dir=rtl] .md-typeset blockquote { + padding-right: 0.6rem; + padding-left: initial; + border-right: 0.2rem solid var(--md-default-fg-color--lighter); + border-left: initial; +} +.md-typeset ul { + list-style-type: disc; +} +.md-typeset ul, +.md-typeset ol { + margin-left: 0.625em; + padding: 0; +} +[dir=rtl] .md-typeset ul, +[dir=rtl] .md-typeset ol { + margin-right: 0.625em; + margin-left: initial; +} +.md-typeset ul ol, +.md-typeset ol ol { + list-style-type: lower-alpha; +} +.md-typeset ul ol ol, +.md-typeset ol ol ol { + list-style-type: lower-roman; +} +.md-typeset ul li, +.md-typeset ol li { + margin-bottom: 0.5em; + margin-left: 1.25em; +} +[dir=rtl] .md-typeset ul li, +[dir=rtl] .md-typeset ol li { + margin-right: 1.25em; + margin-left: initial; +} +.md-typeset ul li p, +.md-typeset ul li blockquote, +.md-typeset ol li p, +.md-typeset ol li blockquote { + margin: 0.5em 0; +} +.md-typeset ul li:last-child, +.md-typeset ol li:last-child { + margin-bottom: 0; +} +.md-typeset ul li ul, +.md-typeset ul li ol, +.md-typeset ol li ul, +.md-typeset ol li ol { + margin: 0.5em 0 0.5em 0.625em; +} +[dir=rtl] .md-typeset ul li ul, +[dir=rtl] .md-typeset ul li ol, +[dir=rtl] .md-typeset ol li ul, +[dir=rtl] .md-typeset ol li ol { + margin-right: 0.625em; + margin-left: initial; +} +.md-typeset dd { + margin: 1em 0 1em 1.875em; +} +[dir=rtl] .md-typeset dd { + margin-right: 1.875em; + margin-left: initial; +} +.md-typeset iframe, +.md-typeset img, +.md-typeset svg { + max-width: 100%; +} +.md-typeset table:not([class]) { + display: inline-block; + max-width: 100%; + border-radius: 0.1rem; + background: var(--md-default-bg-color); + font-size: 0.64rem; + box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.05rem rgba(0, 0, 0, 0.1); + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.md-typeset table:not([class]) + * { + margin-top: 1.5em; +} +.md-typeset table:not([class]) th:not([align]), +.md-typeset table:not([class]) td:not([align]) { + text-align: left; +} +[dir=rtl] .md-typeset table:not([class]) th:not([align]), +[dir=rtl] .md-typeset table:not([class]) td:not([align]) { + text-align: right; +} +.md-typeset table:not([class]) th { + min-width: 5rem; + padding: 0.6rem 0.8rem; + background-color: var(--md-default-fg-color--light); + color: var(--md-default-bg-color); + vertical-align: top; +} +.md-typeset table:not([class]) td { + padding: 0.6rem 0.8rem; + border-top: 0.05rem solid var(--md-default-fg-color--lightest); + vertical-align: top; +} +.md-typeset table:not([class]) tr { + transition: background-color 125ms; +} +.md-typeset table:not([class]) tr:hover { + background-color: rgba(0, 0, 0, 0.035); + box-shadow: 0 0.05rem 0 var(--md-default-bg-color) inset; +} +.md-typeset table:not([class]) tr:first-child td { + border-top: 0; +} +.md-typeset table:not([class]) a { + word-break: normal; +} +.md-typeset__scrollwrap { + margin: 1em -0.8rem; + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} +.md-typeset .md-typeset__table { + display: inline-block; + margin-bottom: 0.5em; + padding: 0 0.8rem; +} +.md-typeset .md-typeset__table table { + display: table; + width: 100%; + margin: 0; + overflow: hidden; +} + +html { + height: 100%; + background-color: var(--md-default-bg-color); + font-size: 125%; + overflow-x: hidden; +} + +body { + display: flex; + position: relative; + flex-direction: column; + width: 100%; + min-height: 100%; + font-size: 0.5rem; +} + +hr { + display: block; + height: 0.05rem; + padding: 0; + border: 0; +} + +.md-grid { + max-width: 61rem; + margin-right: auto; + margin-left: auto; +} + +.md-container { + display: flex; + flex-direction: column; + flex-grow: 1; +} + +.md-main { + flex-grow: 1; +} +.md-main__inner { + height: 100%; + padding-top: 1.5rem; + padding-bottom: 0.05rem; +} + +.md-ellipsis { + display: block; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.md-toggle { + display: none; +} + +.md-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + transition: width 0ms 250ms, height 0ms 250ms, opacity 250ms; + background-color: var(--md-default-fg-color--light); + opacity: 0; + z-index: 3; +} + +.md-skip { + position: fixed; + margin: 0.5rem; + padding: 0.3rem 0.5rem; + transform: translateY(0.4rem); + border-radius: 0.1rem; + background-color: var(--md-default-fg-color); + color: var(--md-default-bg-color); + font-size: 0.64rem; + opacity: 0; +} +.md-skip:focus { + transform: translateY(0); + transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 175ms 75ms; + opacity: 1; + z-index: 10; +} + +@page { + margin: 25mm; +} +.md-announce { + background-color: var(--md-default-fg-color); +} +.md-announce__inner { + min-height: 2.4rem; + padding: 0 0.8rem; + color: var(--md-default-bg-color); + font-size: 0.7rem; + line-height: 2.4rem; +} + +.md-clipboard { + position: absolute; + top: 0.4rem; + right: 0.4rem; + width: 1.2rem; + height: 1.2rem; + transition: color 250ms; + border-radius: 0.1rem; + color: var(--md-default-fg-color--lightest); + cursor: pointer; + z-index: 1; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.md-clipboard svg { + width: 0.9rem; + height: 0.9rem; +} +pre:hover .md-clipboard { + color: var(--md-default-fg-color--light); +} +pre .md-clipboard:focus, pre .md-clipboard:hover { + color: var(--md-accent-fg-color); +} +.md-content__inner { + margin: 0 0.8rem 1.2rem; + padding-top: 0.6rem; +} +.md-content__inner::before { + display: block; + height: 0.4rem; + content: ""; +} +.md-content__inner > :last-child { + margin-bottom: 0; +} +.md-content__button { + margin: 0.4rem 0; + margin-left: 0.4rem; + padding: 0; + float: right; +} +[dir=rtl] .md-content__button { + margin-right: 0.4rem; + margin-left: initial; + float: left; +} +[dir=rtl] .md-content__button svg { + transform: scaleX(-1); +} +.md-typeset .md-content__button { + color: var(--md-default-fg-color--lighter); +} +.md-content__button svg { + display: inline; + vertical-align: top; +} + +.md-dialog { + box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.14), 0 1px 5px 0 rgba(0, 0, 0, 0.12), 0 3px 1px -2px rgba(0, 0, 0, 0.2); + display: block; + position: fixed; + right: 0.8rem; + bottom: 0.8rem; + left: initial; + min-width: 11.1rem; + padding: 0.4rem 0.6rem; + transform: translateY(100%); + transition: transform 0ms 400ms, opacity 400ms; + border: none; + border-radius: 0.1rem; + background: var(--md-default-fg-color); + color: var(--md-default-bg-color); + font-size: 0.7rem; + opacity: 0; + z-index: 2; +} +[dir=rtl] .md-dialog { + right: initial; + left: 0.8rem; +} +.md-dialog[data-md-state=open] { + transform: translateY(0); + transition: transform 400ms cubic-bezier(0.075, 0.85, 0.175, 1), opacity 400ms; + opacity: 1; +} + +.md-header { + position: -webkit-sticky; + position: sticky; + top: 0; + right: 0; + left: 0; + height: 2.4rem; + transition: background-color 250ms, color 250ms; + background-color: var(--md-primary-fg-color); + color: var(--md-primary-bg-color); + box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0), 0 0.2rem 0.4rem rgba(0, 0, 0, 0); + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + z-index: 2; +} +.no-js .md-header { + transition: none; + box-shadow: none; +} +.md-header[data-md-state=shadow] { + transition: background-color 250ms, color 250ms, box-shadow 250ms; + box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2); +} + +.md-header-nav { + display: flex; + padding: 0 0.2rem; +} +.md-header-nav__button { + position: relative; + margin: 0.2rem; + padding: 0.4rem; + transition: opacity 250ms; + cursor: pointer; + z-index: 1; +} +[dir=rtl] .md-header-nav__button svg { + transform: scaleX(-1); +} +.md-header-nav__button:focus, .md-header-nav__button:hover { + opacity: 0.7; +} +.md-header-nav__button.md-logo { + margin: 0.2rem; + padding: 0.4rem; +} +.md-header-nav__button.md-logo img, +.md-header-nav__button.md-logo svg { + display: block; + width: 1.2rem; + height: 1.2rem; + fill: currentColor; +} +.no-js .md-header-nav__button[for=__search] { + display: none; +} +.md-header-nav__topic { + display: block; + position: absolute; + width: 100%; + padding: 0 1rem; + transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms; + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} +.md-header-nav__topic + .md-header-nav__topic { + transform: translateX(1.25rem); + transition: transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1), opacity 150ms; + opacity: 0; + z-index: -1; + pointer-events: none; +} +[dir=rtl] .md-header-nav__topic + .md-header-nav__topic { + transform: translateX(-1.25rem); +} +.no-js .md-header-nav__topic { + position: initial; +} +.no-js .md-header-nav__topic + .md-header-nav__topic { + display: none; +} +.md-header-nav__title { + flex-grow: 1; + font-size: 0.9rem; + line-height: 2.4rem; +} +.md-header-nav__title[data-md-state=active] .md-header-nav__topic { + transform: translateX(-1.25rem); + transition: transform 400ms cubic-bezier(1, 0.7, 0.1, 0.1), opacity 150ms; + opacity: 0; + z-index: -1; + pointer-events: none; +} +[dir=rtl] .md-header-nav__title[data-md-state=active] .md-header-nav__topic { + transform: translateX(1.25rem); +} +.md-header-nav__title[data-md-state=active] .md-header-nav__topic + .md-header-nav__topic { + transform: translateX(0); + transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms; + opacity: 1; + z-index: 0; + pointer-events: initial; +} +.md-header-nav__title > .md-header-nav__ellipsis { + position: relative; + width: 100%; + height: 100%; +} +.md-header-nav__source { + display: none; +} + +.md-hero { + transition: background 250ms; + background-color: var(--md-primary-fg-color); + color: var(--md-primary-bg-color); + font-size: 1rem; + overflow: hidden; +} +.md-hero__inner { + margin-top: 1rem; + padding: 0.8rem 0.8rem 0.4rem; + transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 250ms; + transition-delay: 100ms; +} +[data-md-state=hidden] .md-hero__inner { + pointer-events: none; + transform: translateY(0.625rem); + transition: transform 0ms 400ms, opacity 100ms 0ms; + opacity: 0; +} +.md-hero--expand .md-hero__inner { + margin-bottom: 1.2rem; +} + +.md-footer { + background-color: var(--md-default-fg-color); + color: var(--md-default-bg-color); +} + +.md-footer-nav__inner { + padding: 0.2rem; + overflow: auto; +} +.md-footer-nav__link { + display: flex; + padding-top: 1.4rem; + padding-bottom: 0.4rem; + transition: opacity 250ms; +} +.md-footer-nav__link:focus, .md-footer-nav__link:hover { + opacity: 0.7; +} +.md-footer-nav__link--prev { + width: 25%; + float: left; +} +[dir=rtl] .md-footer-nav__link--prev { + float: right; +} +[dir=rtl] .md-footer-nav__link--prev svg { + transform: scaleX(-1); +} +.md-footer-nav__link--next { + width: 75%; + float: right; + text-align: right; +} +[dir=rtl] .md-footer-nav__link--next { + float: left; + text-align: left; +} +[dir=rtl] .md-footer-nav__link--next svg { + transform: scaleX(-1); +} +.md-footer-nav__title { + position: relative; + flex-grow: 1; + max-width: calc(100% - 2.4rem); + padding: 0 1rem; + font-size: 0.9rem; + line-height: 2.4rem; +} +.md-footer-nav__button { + margin: 0.2rem; + padding: 0.4rem; +} +.md-footer-nav__direction { + position: absolute; + right: 0; + left: 0; + margin-top: -1rem; + padding: 0 1rem; + color: var(--md-default-bg-color--light); + font-size: 0.75rem; +} + +.md-footer-meta { + background-color: var(--md-default-fg-color--lighter); +} +.md-footer-meta__inner { + padding: 0.2rem; + overflow: auto; +} +html .md-footer-meta.md-typeset a { + color: var(--md-default-bg-color--light); +} +html .md-footer-meta.md-typeset a:focus, html .md-footer-meta.md-typeset a:hover { + color: var(--md-default-bg-color); +} + +.md-footer-copyright { + margin: 0 0.6rem; + padding: 0.4rem 0; + color: var(--md-default-bg-color--lighter); + font-size: 0.64rem; +} +.md-footer-copyright__highlight { + color: var(--md-default-bg-color--light); +} + +.md-footer-social { + margin: 0 0.4rem; + padding: 0.2rem 0 0.6rem; +} +.md-footer-social__link { + display: inline-block; + width: 1.6rem; + height: 1.6rem; + transition: color 250ms; + text-align: center; +} +.md-footer-social__link::before { + line-height: 1.9; +} +.md-footer-social__link svg { + width: 0.8rem; + vertical-align: -25%; + fill: currentColor; +} + +.md-nav { + font-size: 0.7rem; + line-height: 1.3; +} +.md-nav__title { + display: block; + padding: 0 0.6rem; + font-weight: 700; + text-overflow: ellipsis; + overflow: hidden; +} +.md-nav__title .md-nav__button { + display: none; +} +.md-nav__title .md-nav__button img { + width: 100%; + height: auto; +} +.md-nav__title .md-nav__button.md-logo svg img, +.md-nav__title .md-nav__button.md-logo svg svg { + display: block; + width: 1.2rem; + height: 1.2rem; + fill: currentColor; +} +.md-nav__list { + margin: 0; + padding: 0; + list-style: none; +} +.md-nav__item { + padding: 0 0.6rem; +} +.md-nav__item:last-child { + padding-bottom: 0.6rem; +} +.md-nav__item .md-nav__item { + padding-right: 0; +} +[dir=rtl] .md-nav__item .md-nav__item { + padding-right: 0.6rem; + padding-left: 0; +} +.md-nav__item .md-nav__item:last-child { + padding-bottom: 0; +} +.md-nav__link { + display: block; + margin-top: 0.625em; + transition: color 125ms; + text-overflow: ellipsis; + cursor: pointer; + overflow: hidden; + scroll-snap-align: start; +} +html .md-nav__link[for=__toc] { + display: none; +} +html .md-nav__link[for=__toc] ~ .md-nav { + display: none; +} +.md-nav__link[data-md-state=blur] { + color: var(--md-default-fg-color--light); +} +.md-nav__item .md-nav__link--active { + color: var(--md-primary-fg-color); +} +.md-nav__item--nested > .md-nav__link { + color: inherit; +} +.md-nav__link:focus, .md-nav__link:hover { + color: var(--md-accent-fg-color); +} +.md-nav__source { + display: none; +} + +.md-search { + position: relative; +} +.no-js .md-search { + display: none; +} +.md-search__overlay { + opacity: 0; + z-index: 1; +} +.md-search__inner { + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.md-search__form { + position: relative; +} +.md-search__input { + position: relative; + padding: 0 2.2rem 0 3.6rem; + text-overflow: ellipsis; + z-index: 2; +} +[dir=rtl] .md-search__input { + padding: 0 3.6rem 0 2.2rem; +} +.md-search__input::-webkit-input-placeholder { + -webkit-transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); + transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); +} +.md-search__input::-moz-placeholder { + -moz-transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); + transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); +} +.md-search__input::-ms-input-placeholder { + -ms-transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); + transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); +} +.md-search__input::placeholder { + transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); +} +.md-search__input::-webkit-input-placeholder { + color: var(--md-default-fg-color--light); +} +.md-search__input::-moz-placeholder { + color: var(--md-default-fg-color--light); +} +.md-search__input::-ms-input-placeholder { + color: var(--md-default-fg-color--light); +} +.md-search__input ~ .md-search__icon, .md-search__input::placeholder { + color: var(--md-default-fg-color--light); +} +.md-search__input::-ms-clear { + display: none; +} +.md-search__icon { + position: absolute; + width: 1.2rem; + height: 1.2rem; + transition: color 250ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 250ms; + cursor: pointer; + z-index: 2; +} +.md-search__icon:hover { + opacity: 0.7; +} +.md-search__icon[for=__search] { + top: 0.3rem; + left: 0.5rem; +} +[dir=rtl] .md-search__icon[for=__search] { + right: 0.5rem; + left: initial; +} +[dir=rtl] .md-search__icon[for=__search] svg { + transform: scaleX(-1); +} +.md-search__icon[type=reset] { + top: 0.3rem; + right: 0.5rem; + transform: scale(0.75); + transition: transform 150ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms; + opacity: 0; + pointer-events: none; +} +[dir=rtl] .md-search__icon[type=reset] { + right: initial; + left: 0.5rem; +} +[data-md-toggle=search]:checked ~ .md-header .md-search__input:valid ~ .md-search__icon[type=reset] { + transform: scale(1); + opacity: 1; + pointer-events: initial; +} +[data-md-toggle=search]:checked ~ .md-header .md-search__input:valid ~ .md-search__icon[type=reset]:hover { + opacity: 0.7; +} +.md-search__output { + position: absolute; + width: 100%; + border-radius: 0 0 0.1rem 0.1rem; + overflow: hidden; + z-index: 1; +} +.md-search__scrollwrap { + height: 100%; + background-color: var(--md-default-bg-color); + box-shadow: inset 0 0.05rem 0 var(--md-default-fg-color--lightest); + overflow-y: auto; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; + -webkit-scroll-snap-type: y mandatory; + -ms-scroll-snap-type: y mandatory; + scroll-snap-type: y mandatory; + -webkit-overflow-scrolling: touch; +} + +.md-search-result { + color: var(--md-default-fg-color); + word-break: break-word; +} +.md-search-result__meta { + padding: 0 0.8rem; + background-color: var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color--light); + font-size: 0.64rem; + line-height: 1.8rem; + scroll-snap-align: start; +} +.md-search-result__list { + margin: 0; + padding: 0; + border-top: 0.05rem solid var(--md-default-fg-color--lightest); + list-style: none; +} +.md-search-result__item { + box-shadow: 0 -0.05rem 0 var(--md-default-fg-color--lightest); +} +.md-search-result__link { + display: block; + transition: background 250ms; + outline: 0; + overflow: hidden; + scroll-snap-align: start; +} +.md-search-result__link:focus, .md-search-result__link:hover { + background-color: var(--md-accent-fg-color--transparent); +} +.md-search-result__link:focus .md-search-result__article::before, .md-search-result__link:hover .md-search-result__article::before { + opacity: 0.7; +} +.md-search-result__link:last-child .md-search-result__teaser { + margin-bottom: 0.6rem; +} +.md-search-result__article { + position: relative; + padding: 0 0.8rem; + overflow: auto; +} +.md-search-result__article--document .md-search-result__title { + margin: 0.55rem 0; + font-size: 0.8rem; + font-weight: 400; + line-height: 1.4; +} +.md-search-result__icon { + position: absolute; + left: 0; + margin: 0.1rem; + padding: 0.4rem; + color: var(--md-default-fg-color--light); +} +[dir=rtl] .md-search-result__icon { + right: 0; + left: initial; +} +[dir=rtl] .md-search-result__icon svg { + transform: scaleX(-1); +} +.md-search-result__title { + margin: 0.5em 0; + font-size: 0.64rem; + font-weight: 700; + line-height: 1.4; +} +.md-search-result__teaser { + display: -webkit-box; + max-height: 1.65rem; + margin: 0.5em 0; + color: var(--md-default-fg-color--light); + font-size: 0.64rem; + line-height: 1.4; + text-overflow: ellipsis; + overflow: hidden; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} +.md-search-result em { + font-style: normal; + font-weight: 700; + text-decoration: underline; +} + +.md-sidebar { + position: absolute; + width: 12.1rem; + padding: 1.2rem 0; + overflow: hidden; +} +.md-sidebar[data-md-state=lock] { + position: fixed; + top: 2.4rem; +} +.md-sidebar--secondary { + display: none; +} +.md-sidebar__scrollwrap { + max-height: 100%; + margin: 0 0.2rem; + overflow-y: auto; + -webkit-scroll-snap-type: y mandatory; + -ms-scroll-snap-type: y mandatory; + scroll-snap-type: y mandatory; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +.md-sidebar__scrollwrap::-webkit-scrollbar { + width: 0.2rem; + height: 0.2rem; +} +.md-sidebar__scrollwrap::-webkit-scrollbar-thumb { + background-color: var(--md-default-fg-color--lighter); +} +.md-sidebar__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: var(--md-accent-fg-color); +} + +@-webkit-keyframes md-source__facts--done { + 0% { + height: 0; + } + 100% { + height: 0.65rem; + } +} + +@keyframes md-source__facts--done { + 0% { + height: 0; + } + 100% { + height: 0.65rem; + } +} +@-webkit-keyframes md-source__fact--done { + 0% { + transform: translateY(100%); + opacity: 0; + } + 50% { + opacity: 0; + } + 100% { + transform: translateY(0%); + opacity: 1; + } +} +@keyframes md-source__fact--done { + 0% { + transform: translateY(100%); + opacity: 0; + } + 50% { + opacity: 0; + } + 100% { + transform: translateY(0%); + opacity: 1; + } +} +.md-source { + display: block; + padding-right: 0.6rem; + transition: opacity 250ms; + font-size: 0.65rem; + line-height: 1.2; + white-space: nowrap; + -webkit-backface-visibility: hidden; + backface-visibility: hidden; +} +[dir=rtl] .md-source { + padding-right: initial; + padding-left: 0.6rem; +} +.md-source:hover { + opacity: 0.7; +} +.md-source__icon { + display: inline-block; + width: 2.4rem; + height: 2.4rem; + vertical-align: middle; +} +.md-source__icon svg { + margin-top: 0.6rem; + margin-left: 0.6rem; +} +[dir=rtl] .md-source__icon svg { + margin-right: 0.6rem; + margin-left: initial; +} +.md-source__icon + .md-source__repository { + margin-left: -2rem; + padding-left: 2rem; +} +[dir=rtl] .md-source__icon + .md-source__repository { + margin-right: -2rem; + margin-left: initial; + padding-right: 2rem; + padding-left: initial; +} +.md-source__repository { + display: inline-block; + max-width: 100%; + margin-left: 0.6rem; + font-weight: 700; + text-overflow: ellipsis; + overflow: hidden; + vertical-align: middle; +} +.md-source__facts { + margin: 0; + padding: 0; + font-size: 0.55rem; + font-weight: 700; + list-style-type: none; + opacity: 0.75; + overflow: hidden; +} +[data-md-state=done] .md-source__facts { + -webkit-animation: md-source__facts--done 250ms ease-in; + animation: md-source__facts--done 250ms ease-in; +} +.md-source__fact { + float: left; +} +[dir=rtl] .md-source__fact { + float: right; +} +[data-md-state=done] .md-source__fact { + -webkit-animation: md-source__fact--done 400ms ease-out; + animation: md-source__fact--done 400ms ease-out; +} +.md-source__fact::before { + margin: 0 0.1rem; + content: "·"; +} +.md-source__fact:first-child::before { + display: none; +} + +.md-tabs { + width: 100%; + transition: background 250ms; + background-color: var(--md-primary-fg-color); + color: var(--md-primary-bg-color); + overflow: auto; +} +.no-js .md-tabs { + transition: none; +} +.md-tabs__list { + margin: 0; + margin-left: 0.2rem; + padding: 0; + list-style: none; + white-space: nowrap; +} +[dir=rtl] .md-tabs__list { + margin-right: 0.2rem; + margin-left: initial; +} +.md-tabs__item { + display: inline-block; + height: 2.4rem; + padding-right: 0.6rem; + padding-left: 0.6rem; +} +.md-tabs__link { + display: block; + margin-top: 0.8rem; + transition: transform 400ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 250ms; + font-size: 0.7rem; + opacity: 0.7; +} +.no-js .md-tabs__link { + transition: none; +} +.md-tabs__link--active, .md-tabs__link:hover { + color: inherit; + opacity: 1; +} +.md-tabs__item:nth-child(2) .md-tabs__link { + transition-delay: 20ms; +} +.md-tabs__item:nth-child(3) .md-tabs__link { + transition-delay: 40ms; +} +.md-tabs__item:nth-child(4) .md-tabs__link { + transition-delay: 60ms; +} +.md-tabs__item:nth-child(5) .md-tabs__link { + transition-delay: 80ms; +} +.md-tabs__item:nth-child(6) .md-tabs__link { + transition-delay: 100ms; +} +.md-tabs__item:nth-child(7) .md-tabs__link { + transition-delay: 120ms; +} +.md-tabs__item:nth-child(8) .md-tabs__link { + transition-delay: 140ms; +} +.md-tabs__item:nth-child(9) .md-tabs__link { + transition-delay: 160ms; +} +.md-tabs__item:nth-child(10) .md-tabs__link { + transition-delay: 180ms; +} +.md-tabs__item:nth-child(11) .md-tabs__link { + transition-delay: 200ms; +} +.md-tabs__item:nth-child(12) .md-tabs__link { + transition-delay: 220ms; +} +.md-tabs__item:nth-child(13) .md-tabs__link { + transition-delay: 240ms; +} +.md-tabs__item:nth-child(14) .md-tabs__link { + transition-delay: 260ms; +} +.md-tabs__item:nth-child(15) .md-tabs__link { + transition-delay: 280ms; +} +.md-tabs__item:nth-child(16) .md-tabs__link { + transition-delay: 300ms; +} +.md-tabs[data-md-state=hidden] { + pointer-events: none; +} +.md-tabs[data-md-state=hidden] .md-tabs__link { + transform: translateY(50%); + transition: color 250ms, transform 0ms 400ms, opacity 100ms; + opacity: 0; +} + +.md-typeset .admonition, .md-typeset details { + margin: 1.5625em 0; + padding: 0 0.6rem; + border-left: 0.2rem solid #448aff; + border-radius: 0.1rem; + font-size: 0.64rem; + box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.05rem rgba(0, 0, 0, 0.1); + overflow: auto; +} +[dir=rtl] .md-typeset .admonition, [dir=rtl] .md-typeset details { + border-right: 0.2rem solid #448aff; + border-left: none; +} +html .md-typeset .admonition > :last-child, html .md-typeset details > :last-child { + margin-bottom: 0.6rem; +} +.md-typeset .admonition .admonition, .md-typeset details .admonition, .md-typeset .admonition details, .md-typeset details details { + margin: 1em 0; +} +.md-typeset .admonition.tldr, .md-typeset details.tldr, .md-typeset .admonition.summary, .md-typeset details.summary, .md-typeset .admonition.abstract, .md-typeset details.abstract { + border-left-color: #00b0ff; +} +.md-typeset .admonition.tldr > :first-child, .md-typeset details.tldr > :first-child, .md-typeset .admonition.summary > :first-child, .md-typeset details.summary > :first-child, .md-typeset .admonition.abstract > :first-child, .md-typeset details.abstract > :first-child { + background-color: rgba(0, 176, 255, 0.1); +} +.md-typeset .admonition.tldr > :first-child::before, .md-typeset details.tldr > :first-child::before, .md-typeset .admonition.summary > :first-child::before, .md-typeset details.summary > :first-child::before, .md-typeset .admonition.abstract > :first-child::before, .md-typeset details.abstract > :first-child::before { + background-color: #00b0ff; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.todo, .md-typeset details.todo, .md-typeset .admonition.info, .md-typeset details.info { + border-left-color: #00b8d4; +} +.md-typeset .admonition.todo > :first-child, .md-typeset details.todo > :first-child, .md-typeset .admonition.info > :first-child, .md-typeset details.info > :first-child { + background-color: rgba(0, 184, 212, 0.1); +} +.md-typeset .admonition.todo > :first-child::before, .md-typeset details.todo > :first-child::before, .md-typeset .admonition.info > :first-child::before, .md-typeset details.info > :first-child::before { + background-color: #00b8d4; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.important, .md-typeset details.important, .md-typeset .admonition.hint, .md-typeset details.hint, .md-typeset .admonition.tip, .md-typeset details.tip { + border-left-color: #00bfa5; +} +.md-typeset .admonition.important > :first-child, .md-typeset details.important > :first-child, .md-typeset .admonition.hint > :first-child, .md-typeset details.hint > :first-child, .md-typeset .admonition.tip > :first-child, .md-typeset details.tip > :first-child { + background-color: rgba(0, 191, 165, 0.1); +} +.md-typeset .admonition.important > :first-child::before, .md-typeset details.important > :first-child::before, .md-typeset .admonition.hint > :first-child::before, .md-typeset details.hint > :first-child::before, .md-typeset .admonition.tip > :first-child::before, .md-typeset details.tip > :first-child::before { + background-color: #00bfa5; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.done, .md-typeset details.done, .md-typeset .admonition.check, .md-typeset details.check, .md-typeset .admonition.success, .md-typeset details.success { + border-left-color: #00c853; +} +.md-typeset .admonition.done > :first-child, .md-typeset details.done > :first-child, .md-typeset .admonition.check > :first-child, .md-typeset details.check > :first-child, .md-typeset .admonition.success > :first-child, .md-typeset details.success > :first-child { + background-color: rgba(0, 200, 83, 0.1); +} +.md-typeset .admonition.done > :first-child::before, .md-typeset details.done > :first-child::before, .md-typeset .admonition.check > :first-child::before, .md-typeset details.check > :first-child::before, .md-typeset .admonition.success > :first-child::before, .md-typeset details.success > :first-child::before { + background-color: #00c853; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.faq, .md-typeset details.faq, .md-typeset .admonition.help, .md-typeset details.help, .md-typeset .admonition.question, .md-typeset details.question { + border-left-color: #64dd17; +} +.md-typeset .admonition.faq > :first-child, .md-typeset details.faq > :first-child, .md-typeset .admonition.help > :first-child, .md-typeset details.help > :first-child, .md-typeset .admonition.question > :first-child, .md-typeset details.question > :first-child { + background-color: rgba(100, 221, 23, 0.1); +} +.md-typeset .admonition.faq > :first-child::before, .md-typeset details.faq > :first-child::before, .md-typeset .admonition.help > :first-child::before, .md-typeset details.help > :first-child::before, .md-typeset .admonition.question > :first-child::before, .md-typeset details.question > :first-child::before { + background-color: #64dd17; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.attention, .md-typeset details.attention, .md-typeset .admonition.caution, .md-typeset details.caution, .md-typeset .admonition.warning, .md-typeset details.warning { + border-left-color: #ff9100; +} +.md-typeset .admonition.attention > :first-child, .md-typeset details.attention > :first-child, .md-typeset .admonition.caution > :first-child, .md-typeset details.caution > :first-child, .md-typeset .admonition.warning > :first-child, .md-typeset details.warning > :first-child { + background-color: rgba(255, 145, 0, 0.1); +} +.md-typeset .admonition.attention > :first-child::before, .md-typeset details.attention > :first-child::before, .md-typeset .admonition.caution > :first-child::before, .md-typeset details.caution > :first-child::before, .md-typeset .admonition.warning > :first-child::before, .md-typeset details.warning > :first-child::before { + background-color: #ff9100; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.missing, .md-typeset details.missing, .md-typeset .admonition.fail, .md-typeset details.fail, .md-typeset .admonition.failure, .md-typeset details.failure { + border-left-color: #ff5252; +} +.md-typeset .admonition.missing > :first-child, .md-typeset details.missing > :first-child, .md-typeset .admonition.fail > :first-child, .md-typeset details.fail > :first-child, .md-typeset .admonition.failure > :first-child, .md-typeset details.failure > :first-child { + background-color: rgba(255, 82, 82, 0.1); +} +.md-typeset .admonition.missing > :first-child::before, .md-typeset details.missing > :first-child::before, .md-typeset .admonition.fail > :first-child::before, .md-typeset details.fail > :first-child::before, .md-typeset .admonition.failure > :first-child::before, .md-typeset details.failure > :first-child::before { + background-color: #ff5252; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.error, .md-typeset details.error, .md-typeset .admonition.danger, .md-typeset details.danger { + border-left-color: #ff1744; +} +.md-typeset .admonition.error > :first-child, .md-typeset details.error > :first-child, .md-typeset .admonition.danger > :first-child, .md-typeset details.danger > :first-child { + background-color: rgba(255, 23, 68, 0.1); +} +.md-typeset .admonition.error > :first-child::before, .md-typeset details.error > :first-child::before, .md-typeset .admonition.danger > :first-child::before, .md-typeset details.danger > :first-child::before { + background-color: #ff1744; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.bug, .md-typeset details.bug { + border-left-color: #f50057; +} +.md-typeset .admonition.bug > :first-child, .md-typeset details.bug > :first-child { + background-color: rgba(245, 0, 87, 0.1); +} +.md-typeset .admonition.bug > :first-child::before, .md-typeset details.bug > :first-child::before { + background-color: #f50057; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.example, .md-typeset details.example { + border-left-color: #651fff; +} +.md-typeset .admonition.example > :first-child, .md-typeset details.example > :first-child { + background-color: rgba(101, 31, 255, 0.1); +} +.md-typeset .admonition.example > :first-child::before, .md-typeset details.example > :first-child::before { + background-color: #651fff; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition.cite, .md-typeset details.cite, .md-typeset .admonition.quote, .md-typeset details.quote { + border-left-color: #9e9e9e; +} +.md-typeset .admonition.cite > :first-child, .md-typeset details.cite > :first-child, .md-typeset .admonition.quote > :first-child, .md-typeset details.quote > :first-child { + background-color: rgba(158, 158, 158, 0.1); +} +.md-typeset .admonition.cite > :first-child::before, .md-typeset details.cite > :first-child::before, .md-typeset .admonition.quote > :first-child::before, .md-typeset details.quote > :first-child::before { + background-color: #9e9e9e; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .admonition-title, .md-typeset summary { + margin: 0 -0.6rem; + padding: 0.4rem 0.6rem 0.4rem 2rem; + background-color: rgba(68, 138, 255, 0.1); + font-weight: 700; +} +[dir=rtl] .md-typeset .admonition-title, [dir=rtl] .md-typeset summary { + padding: 0.4rem 2rem 0.4rem 0.6rem; +} +.md-typeset .admonition-title:last-child, .md-typeset summary:last-child { + margin-bottom: 0; +} +.md-typeset .admonition-title::before, .md-typeset summary::before { + position: absolute; + width: 1rem; + height: 1rem; + margin-left: -1.4rem; + background-color: #448aff; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); + content: ""; +} +[dir=rtl] .md-typeset .admonition-title::before, [dir=rtl] .md-typeset summary::before { + margin-right: -1.4rem; + margin-left: initial; +} + +.codehilite .o, .highlight .o { + color: inherit; +} +.codehilite .ow, .highlight .ow { + color: inherit; +} +.codehilite .ge, .highlight .ge { + color: #000000; +} +.codehilite .gr, .highlight .gr { + color: #AA0000; +} +.codehilite .gh, .highlight .gh { + color: #999999; +} +.codehilite .go, .highlight .go { + color: #888888; +} +.codehilite .gp, .highlight .gp { + color: #555555; +} +.codehilite .gs, .highlight .gs { + color: inherit; +} +.codehilite .gu, .highlight .gu { + color: #AAAAAA; +} +.codehilite .gt, .highlight .gt { + color: #AA0000; +} +.codehilite .gd, .highlight .gd { + background-color: #FFDDDD; +} +.codehilite .gi, .highlight .gi { + background-color: #DDFFDD; +} +.codehilite .k, .highlight .k { + color: #3B78E7; +} +.codehilite .kc, .highlight .kc { + color: #A71D5D; +} +.codehilite .kd, .highlight .kd { + color: #3B78E7; +} +.codehilite .kn, .highlight .kn { + color: #3B78E7; +} +.codehilite .kp, .highlight .kp { + color: #A71D5D; +} +.codehilite .kr, .highlight .kr { + color: #3E61A2; +} +.codehilite .kt, .highlight .kt { + color: #3E61A2; +} +.codehilite .c, .highlight .c { + color: #999999; +} +.codehilite .cm, .highlight .cm { + color: #999999; +} +.codehilite .cp, .highlight .cp { + color: #666666; +} +.codehilite .c1, .highlight .c1 { + color: #999999; +} +.codehilite .ch, .highlight .ch { + color: #999999; +} +.codehilite .cs, .highlight .cs { + color: #999999; +} +.codehilite .na, .highlight .na { + color: #C2185B; +} +.codehilite .nb, .highlight .nb { + color: #C2185B; +} +.codehilite .bp, .highlight .bp { + color: #3E61A2; +} +.codehilite .nc, .highlight .nc { + color: #C2185B; +} +.codehilite .no, .highlight .no { + color: #3E61A2; +} +.codehilite .nd, .highlight .nd { + color: #666666; +} +.codehilite .ni, .highlight .ni { + color: #666666; +} +.codehilite .ne, .highlight .ne { + color: #C2185B; +} +.codehilite .nf, .highlight .nf { + color: #C2185B; +} +.codehilite .nl, .highlight .nl { + color: #3B5179; +} +.codehilite .nn, .highlight .nn { + color: #EC407A; +} +.codehilite .nt, .highlight .nt { + color: #3B78E7; +} +.codehilite .nv, .highlight .nv { + color: #3E61A2; +} +.codehilite .vc, .highlight .vc { + color: #3E61A2; +} +.codehilite .vg, .highlight .vg { + color: #3E61A2; +} +.codehilite .vi, .highlight .vi { + color: #3E61A2; +} +.codehilite .nx, .highlight .nx { + color: #EC407A; +} +.codehilite .m, .highlight .m { + color: #E74C3C; +} +.codehilite .mf, .highlight .mf { + color: #E74C3C; +} +.codehilite .mh, .highlight .mh { + color: #E74C3C; +} +.codehilite .mi, .highlight .mi { + color: #E74C3C; +} +.codehilite .il, .highlight .il { + color: #E74C3C; +} +.codehilite .mo, .highlight .mo { + color: #E74C3C; +} +.codehilite .s, .highlight .s { + color: #0D904F; +} +.codehilite .sb, .highlight .sb { + color: #0D904F; +} +.codehilite .sc, .highlight .sc { + color: #0D904F; +} +.codehilite .sd, .highlight .sd { + color: #999999; +} +.codehilite .s2, .highlight .s2 { + color: #0D904F; +} +.codehilite .se, .highlight .se { + color: #183691; +} +.codehilite .sh, .highlight .sh { + color: #183691; +} +.codehilite .si, .highlight .si { + color: #183691; +} +.codehilite .sx, .highlight .sx { + color: #183691; +} +.codehilite .sr, .highlight .sr { + color: #009926; +} +.codehilite .s1, .highlight .s1 { + color: #0D904F; +} +.codehilite .ss, .highlight .ss { + color: #0D904F; +} +.codehilite .err, .highlight .err { + color: #A61717; +} +.codehilite .w, .highlight .w { + color: transparent; +} +.codehilite .hll, .highlight .hll { + display: block; + margin: 0 -0.6rem; + padding: 0 0.6rem; + background-color: rgba(255, 235, 59, 0.5); +} + +.codehilitetable, .highlighttable { + display: block; + overflow: hidden; +} +.codehilitetable tbody, .highlighttable tbody, +.codehilitetable td, +.highlighttable td { + display: block; + padding: 0; +} +.codehilitetable tr, .highlighttable tr { + display: flex; +} +.codehilitetable pre, .highlighttable pre, +.codehilitetable .linenodiv, +.highlighttable .linenodiv { + margin: 0; + border-radius: 0; +} +.codehilitetable .linenodiv, .highlighttable .linenodiv { + padding: 0.525rem 0.6rem; +} +.codehilitetable .linenos, .highlighttable .linenos { + color: var(--md-default-fg-color--lighter); + box-shadow: inset 0 0 0 0.05rem var(--md-code-bg-color); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} +.codehilitetable .linenos pre, .highlighttable .linenos pre { + background-color: transparent; + color: inherit; + text-align: right; +} +.codehilitetable .code, .highlighttable .code { + flex: 1; + overflow: hidden; +} + +.md-typeset > .codehilitetable, .md-typeset > .highlighttable { + margin: 1em 0; + border-radius: 0.2em; +} + +.md-typeset [id^="fnref:"] { + display: inline-block; +} +.md-typeset [id^="fnref:"]:target { + margin-top: -3.8rem; + padding-top: 3.8rem; + pointer-events: none; +} +.md-typeset [id^="fn:"]::before { + display: none; + height: 0; + content: ""; +} +.md-typeset [id^="fn:"]:target::before { + display: block; + margin-top: -3.5rem; + padding-top: 3.5rem; + pointer-events: none; +} +.md-typeset .footnote { + color: var(--md-default-fg-color--light); + font-size: 0.64rem; +} +.md-typeset .footnote ol { + margin-left: 0; +} +.md-typeset .footnote li { + transition: color 250ms; +} +.md-typeset .footnote li:target { + color: var(--md-default-fg-color); +} +.md-typeset .footnote li :first-child { + margin-top: 0; +} +.md-typeset .footnote li:hover .footnote-backref, .md-typeset .footnote li:target .footnote-backref { + transform: translateX(0); + opacity: 1; +} +.md-typeset .footnote li:hover .footnote-backref:hover, .md-typeset .footnote li:target .footnote-backref { + color: var(--md-accent-fg-color); +} +.md-typeset .footnote-ref { + display: inline-block; + pointer-events: initial; +} +.md-typeset .footnote-ref::before { + display: inline; + margin: 0 0.2em; + border-left: 0.05rem solid var(--md-default-fg-color--lighter); + font-size: 1.25em; + content: ""; + vertical-align: -0.25rem; +} +.md-typeset .footnote-backref { + display: inline-block; + transform: translateX(0.25rem); + transition: transform 250ms 250ms, color 250ms, opacity 125ms 250ms; + color: var(--md-default-fg-color--lighter); + font-size: 0; + opacity: 0; + vertical-align: text-bottom; +} +[dir=rtl] .md-typeset .footnote-backref { + transform: translateX(-0.25rem); +} +.md-typeset .footnote-backref::before { + display: inline-block; + width: 0.8rem; + height: 0.8rem; + background-color: currentColor; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); + content: ""; +} +[dir=rtl] .md-typeset .footnote-backref::before svg { + transform: scaleX(-1); +} + +.md-typeset .headerlink { + display: inline-block; + margin-left: 0.5rem; + transform: translate(0, 0.25rem); + transition: transform 250ms 250ms, color 250ms, opacity 125ms 250ms, visibility 0ms 500ms; + opacity: 0; + visibility: hidden; +} +[dir=rtl] .md-typeset .headerlink { + margin-right: 0.5rem; + margin-left: initial; +} +html body .md-typeset .headerlink { + color: var(--md-default-fg-color--lighter); +} +.md-typeset :hover .headerlink, +.md-typeset :target .headerlink, +.md-typeset .headerlink:focus { + transform: translate(0, 0); + transition: transform 250ms 250ms, color 250ms, opacity 125ms 250ms, visibility 0ms; + opacity: 1; + visibility: visible; +} +.md-typeset .headerlink:focus, +.md-typeset .headerlink:hover, +.md-typeset :target .headerlink { + color: var(--md-accent-fg-color); +} +.md-typeset h3[id]::before, .md-typeset h2[id]::before, .md-typeset h1[id]::before { + display: block; + margin-top: -0.4rem; + padding-top: 0.4rem; + content: ""; +} +.md-typeset h3[id]:target::before, .md-typeset h2[id]:target::before, .md-typeset h1[id]:target::before { + margin-top: -3.4rem; + padding-top: 3.4rem; +} +.md-typeset h4[id]::before { + display: block; + margin-top: -0.45rem; + padding-top: 0.45rem; + content: ""; +} +.md-typeset h4[id]:target::before { + margin-top: -3.45rem; + padding-top: 3.45rem; +} +.md-typeset h6[id]::before, .md-typeset h5[id]::before { + display: block; + margin-top: -0.6rem; + padding-top: 0.6rem; + content: ""; +} +.md-typeset h6[id]:target::before, .md-typeset h5[id]:target::before { + margin-top: -3.6rem; + padding-top: 3.6rem; +} +.md-typeset .MJXc-display { + margin: 0.75em 0; + padding: 0.75em 0; + overflow: auto; + -webkit-overflow-scrolling: touch; +} +.md-typeset .MathJax_CHTML { + outline: 0; +} + +.md-typeset del.critic, +.md-typeset ins.critic, +.md-typeset .critic.comment { + margin: 0 0.25em; + padding: 0.0625em 0; + border-radius: 0.1rem; + -webkit-box-decoration-break: clone; + box-decoration-break: clone; +} +.md-typeset del.critic { + background-color: #FFDDDD; + box-shadow: 0.25em 0 0 #FFDDDD, -0.25em 0 0 #FFDDDD; +} +.md-typeset ins.critic { + background-color: #DDFFDD; + box-shadow: 0.25em 0 0 #DDFFDD, -0.25em 0 0 #DDFFDD; +} +.md-typeset .critic.comment { + color: #999999; +} +.md-typeset .critic.comment::before { + content: "/* "; +} +.md-typeset .critic.comment::after { + content: " */"; +} +.md-typeset .critic.block { + display: block; + margin: 1em 0; + padding-right: 0.8rem; + padding-left: 0.8rem; + box-shadow: none; +} +.md-typeset .critic.block :first-child { + margin-top: 0.5em; +} +.md-typeset .critic.block :last-child { + margin-bottom: 0.5em; +} + +.md-typeset details { + display: block; + padding-top: 0; +} +.md-typeset details[open] > summary::after { + transform: rotate(180deg); +} +.md-typeset details:not([open]) { + padding-bottom: 0; +} +.md-typeset details:not([open]) > summary { + border-bottom: none; +} +.md-typeset details summary { + position: relative; + padding-right: 2rem; +} +[dir=rtl] .md-typeset details summary { + padding-left: 2rem; +} +.md-typeset summary { + display: block; + outline: none; + cursor: pointer; +} +.md-typeset summary::-webkit-details-marker { + display: none; +} +.md-typeset summary::after { + position: absolute; + right: 0.6rem; + width: 1rem; + height: 1rem; + background-color: var(--md-default-fg-color--lighter); + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); + content: ""; +} +[dir=rtl] .md-typeset summary::after { + right: initial; + left: 0.6rem; +} + +.md-typeset .emojione, +.md-typeset .twemoji, +.md-typeset .gemoji { + width: 1rem; + vertical-align: text-top; +} + +.highlight [data-linenos]::before { + display: inline-block; + position: -webkit-sticky; + position: sticky; + left: -0.6rem; + margin-right: 0.6rem; + margin-left: -0.6rem; + padding-left: 0.6rem; + border-right: 0.05rem solid var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color--lighter); + content: attr(data-linenos); + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.md-typeset code.codehilite, .md-typeset code.highlight { + margin: 0 0.2941176471em; + padding: 0.0735294118em 0; +} + +.md-typeset .tabbed-content { + display: none; + order: 99; + width: 100%; + background-color: var(--md-code-bg-color); +} +.md-typeset .tabbed-content pre { + margin: 0; + border-radius: 0; +} +.md-typeset .tabbed-set { + display: flex; + position: relative; + flex-wrap: wrap; + margin: 1em 0; + border: 0.05rem solid var(--md-default-fg-color--lightest); + border-radius: 0.1rem; +} +.md-typeset .tabbed-set > input { + display: none; +} +.md-typeset .tabbed-set > input:checked + label { + border-color: var(--md-accent-fg-color); + color: var(--md-accent-fg-color); +} +.md-typeset .tabbed-set > input:checked + label + .tabbed-content { + display: block; + padding: 0 0.6rem; +} +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > :last-child { + margin-bottom: 0.6rem; +} +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > pre:only-child, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlight:only-child, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlighttable:only-child, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilite:only-child, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilitetable:only-child { + margin: 0 -0.6rem; +} +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > pre:only-child pre, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlight:only-child pre, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .highlighttable:only-child pre, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilite:only-child pre, +.md-typeset .tabbed-set > input:checked + label + .tabbed-content > .codehilitetable:only-child pre { + background: transparent; +} +.md-typeset .tabbed-set > label { + width: auto; + padding: 0.6rem; + padding-bottom: 0.5rem; + transition: color 125ms, border 250ms; + border-bottom: 0.1rem solid transparent; + color: var(--md-default-fg-color--light); + font-size: 0.64rem; + font-weight: 700; + cursor: pointer; +} +html .md-typeset .tabbed-set > label:hover { + color: var(--md-accent-fg-color); +} + +.md-typeset .task-list-item { + position: relative; + list-style-type: none; +} +.md-typeset .task-list-item [type=checkbox] { + position: absolute; + top: 0.45em; + left: -2em; +} +[dir=rtl] .md-typeset .task-list-item [type=checkbox] { + right: -2em; + left: initial; +} +.md-typeset .task-list-control .task-list-indicator::before { + position: absolute; + top: 0.15em; + left: -1.5em; + width: 1.25em; + height: 1.25em; + background-color: var(--md-default-fg-color--lightest); + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); + content: ""; +} +[dir=rtl] .md-typeset .task-list-control .task-list-indicator::before { + right: -1.5em; + left: initial; +} +.md-typeset .task-list-control [type=checkbox]:checked + .task-list-indicator::before { + background-color: #00e676; + -webkit-mask-image: url("data:image/svg+xml;utf8,"); + mask-image: url("data:image/svg+xml;utf8,"); +} +.md-typeset .task-list-control [type=checkbox] { + opacity: 0; + z-index: -1; +} +@media print { + .md-typeset a::after { + color: var(--md-default-fg-color--light); + content: " [" attr(href) "]"; + } + .md-typeset code, +.md-typeset pre, +.md-typeset kbd { + white-space: pre-wrap; + } + .md-clipboard { + display: none; + } + .md-content__button { + display: none; + } + .md-dialog { + display: none; + } + .md-header { + display: none; + } + .md-footer { + display: none; + } + .md-sidebar { + display: none; + } + .md-tabs { + display: none; + } + .md-typeset .headerlink { + display: none; + } +} +@media screen and (max-width: 44.9375em) { + .md-typeset > pre { + margin: 1em -0.8rem; + border-radius: 0; + } + .md-typeset > pre > code { + padding: 0.525rem 0.8rem; + } + .md-footer-nav__link--prev .md-footer-nav__title { + display: none; + } + .md-search-result__teaser { + max-height: 2.5rem; + -webkit-line-clamp: 3; + } + .codehilite .hll, .highlight .hll { + margin: 0 -0.8rem; + padding: 0 0.8rem; + } + .md-typeset > .codehilite, .md-typeset > .highlight { + margin: 1em -0.8rem; + } + .md-typeset > .codehilite code, .md-typeset > .highlight code { + padding: 0.525rem 0.8rem; + } + .md-typeset > .codehilitetable, .md-typeset > .highlighttable { + margin: 1em -0.8rem; + border-radius: 0; + } + .md-typeset > .codehilitetable .linenodiv, .md-typeset > .highlighttable .linenodiv { + padding: 0.5rem 0.8rem; + } + .md-typeset > p > .MJXc-display { + margin: 0.75em -0.8rem; + padding: 0.25em 0.8rem; + } + .highlight [data-linenos]::before { + left: -1.6rem; + margin-left: -1.6rem; + padding-left: 1.6rem; + } + .md-typeset > .tabbed-set { + margin: 1em -0.8rem; + border: 0; + border-top: 0.05rem solid var(--md-default-fg-color--lightest); + border-radius: 0; + } + .md-typeset > .tabbed-set code { + padding: 0.525rem 0.8rem; + } + .md-typeset > .tabbed-set input:first-child + label { + margin-left: 0.2rem; + } +} +@media screen and (min-width: 100em) { + html { + font-size: 137.5%; + } +} +@media screen and (min-width: 125em) { + html { + font-size: 150%; + } +} +@media screen and (max-width: 59.9375em) { + body[data-md-state=lock] { + position: fixed; + } + html .md-nav__link[for=__toc] { + display: block; + padding-right: 2.4rem; + } + html .md-nav__link[for=__toc] + .md-nav__link { + display: none; + } + html .md-nav__link[for=__toc] ~ .md-nav { + display: flex; + } + html [dir=rtl] .md-nav__link { + padding-right: 0.8rem; + padding-left: 2.4rem; + } + .md-nav__source { + display: block; + padding: 0 0.2rem; + background-color: var(--md-primary-fg-color--dark); + color: var(--md-primary-bg-color); + } + .md-search__overlay { + position: absolute; + top: 0.2rem; + left: -2.2rem; + width: 2rem; + height: 2rem; + transform-origin: center; + transition: transform 300ms 100ms, opacity 200ms 200ms; + border-radius: 1rem; + background-color: var(--md-default-bg-color); + overflow: hidden; + pointer-events: none; + } + [dir=rtl] .md-search__overlay { + right: -2.2rem; + left: initial; + } + [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { + transition: transform 400ms, opacity 100ms; + opacity: 1; + } + .md-search__inner { + position: fixed; + top: 0; + left: 100%; + width: 100%; + height: 100%; + transform: translateX(5%); + transition: right 0ms 300ms, left 0ms 300ms, transform 150ms 150ms cubic-bezier(0.4, 0, 0.2, 1), opacity 150ms 150ms; + opacity: 0; + z-index: 2; + } + [data-md-toggle=search]:checked ~ .md-header .md-search__inner { + left: 0; + transform: translateX(0); + transition: right 0ms 0ms, left 0ms 0ms, transform 150ms 150ms cubic-bezier(0.1, 0.7, 0.1, 1), opacity 150ms 150ms; + opacity: 1; + } + [dir=rtl] [data-md-toggle=search]:checked ~ .md-header .md-search__inner { + right: 0; + left: initial; + } + html [dir=rtl] .md-search__inner { + right: 100%; + left: initial; + transform: translateX(-5%); + } + .md-search__input { + width: 100%; + height: 2.4rem; + font-size: 0.9rem; + } + .md-search__icon[for=__search] { + top: 0.6rem; + left: 0.8rem; + } + [dir=rtl] .md-search__icon[for=__search] { + right: 0.8rem; + left: initial; + } + .md-search__icon[for=__search] svg:first-child { + display: none; + } + .md-search__icon[type=reset] { + top: 0.6rem; + right: 0.8rem; + } + [dir=rtl] .md-search__icon[type=reset] { + right: initial; + left: 0.8rem; + } + .md-search__output { + top: 2.4rem; + bottom: 0; + } + .md-search-result__icon { + display: none; + } +} +@media screen and (max-width: 76.1875em) { + [data-md-toggle=drawer]:checked ~ .md-overlay { + width: 100%; + height: 100%; + transition: width 0ms, height 0ms, opacity 250ms; + opacity: 1; + } + .md-header-nav__button.md-logo { + display: none; + } + .md-hero__inner { + margin-top: 2.4rem; + margin-bottom: 1.2rem; + } + .md-nav { + background-color: var(--md-default-bg-color); + } + .md-nav--primary, .md-nav--primary .md-nav { + display: flex; + position: absolute; + top: 0; + right: 0; + left: 0; + flex-direction: column; + height: 100%; + z-index: 1; + } + .md-nav--primary .md-nav__title, +.md-nav--primary .md-nav__item { + font-size: 0.8rem; + line-height: 1.5; + } + .md-nav--primary .md-nav__title { + position: relative; + height: 5.6rem; + padding: 3rem 0.8rem 0.2rem; + background-color: var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color--light); + font-weight: 400; + line-height: 2.4rem; + white-space: nowrap; + cursor: pointer; + } + .md-nav--primary .md-nav__title .md-nav__icon { + display: block; + position: absolute; + top: 0.4rem; + left: 0.4rem; + width: 1.2rem; + height: 1.2rem; + margin: 0.2rem; + } + [dir=rtl] .md-nav--primary .md-nav__title .md-nav__icon { + right: 0.4rem; + left: initial; + } + .md-nav--primary .md-nav__title ~ .md-nav__list { + background-color: var(--md-default-bg-color); + box-shadow: inset 0 0.05rem 0 var(--md-default-fg-color--lightest); + overflow-y: auto; + -webkit-scroll-snap-type: y mandatory; + -ms-scroll-snap-type: y mandatory; + scroll-snap-type: y mandatory; + } + .md-nav--primary .md-nav__title ~ .md-nav__list > .md-nav__item:first-child { + border-top: 0; + } + .md-nav--primary .md-nav__title[for=__drawer] { + position: relative; + background-color: var(--md-primary-fg-color); + color: var(--md-primary-bg-color); + } + .md-nav--primary .md-nav__title[for=__drawer] .md-nav__button { + display: block; + position: absolute; + top: 0.2rem; + left: 0.2rem; + width: 3.2rem; + height: 3.2rem; + margin: 0.2rem; + padding: 0.4rem; + font-size: 2.4rem; + } + html [dir=rtl] .md-nav--primary .md-nav__title[for=__drawer] .md-nav__button { + right: 0.2rem; + left: initial; + } + .md-nav--primary .md-nav__list { + flex: 1; + } + .md-nav--primary .md-nav__item { + padding: 0; + border-top: 0.05rem solid var(--md-default-fg-color--lightest); + } + [dir=rtl] .md-nav--primary .md-nav__item { + padding: 0; + } + .md-nav--primary .md-nav__item--nested > .md-nav__link { + padding-right: 2.4rem; + } + [dir=rtl] .md-nav--primary .md-nav__item--nested > .md-nav__link { + padding-right: 0.8rem; + padding-left: 2.4rem; + } + .md-nav--primary .md-nav__item--active > .md-nav__link { + color: var(--md-primary-fg-color); + } + .md-nav--primary .md-nav__link { + position: relative; + margin-top: 0; + padding: 0.6rem 0.8rem; + } + .md-nav--primary .md-nav__link .md-nav__icon { + position: absolute; + top: 50%; + right: 0.6rem; + margin-top: -0.6rem; + color: inherit; + font-size: 1.2rem; + } + [dir=rtl] .md-nav--primary .md-nav__link .md-nav__icon { + right: initial; + left: 0.6rem; + } + [dir=rtl] .md-nav--primary .md-nav__icon svg { + transform: scale(-1); + } + .md-nav--primary .md-nav--secondary .md-nav__link { + position: static; + } + .md-nav--primary .md-nav--secondary .md-nav { + position: static; + background-color: transparent; + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav__link { + padding-left: 1.4rem; + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav__link { + padding-right: 1.4rem; + padding-left: initial; + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link { + padding-left: 2rem; + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav__link { + padding-right: 2rem; + padding-left: initial; + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link { + padding-left: 2.6rem; + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav__link { + padding-right: 2.6rem; + padding-left: initial; + } + .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link { + padding-left: 3.2rem; + } + [dir=rtl] .md-nav--primary .md-nav--secondary .md-nav .md-nav .md-nav .md-nav .md-nav__link { + padding-right: 3.2rem; + padding-left: initial; + } + .md-nav__toggle ~ .md-nav { + display: flex; + transform: translateX(100%); + transition: transform 250ms cubic-bezier(0.8, 0, 0.6, 1), opacity 125ms 50ms; + opacity: 0; + } + [dir=rtl] .md-nav__toggle ~ .md-nav { + transform: translateX(-100%); + } + .md-nav__toggle:checked ~ .md-nav { + transform: translateX(0); + transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), opacity 125ms 125ms; + opacity: 1; + } + .md-sidebar--primary { + position: fixed; + top: 0; + left: -12.1rem; + width: 12.1rem; + height: 100%; + transform: translateX(0); + transition: transform 250ms cubic-bezier(0.4, 0, 0.2, 1), box-shadow 250ms; + background-color: var(--md-default-bg-color); + z-index: 3; + } + [dir=rtl] .md-sidebar--primary { + right: -12.1rem; + left: initial; + } + [data-md-toggle=drawer]:checked ~ .md-container .md-sidebar--primary { + box-shadow: 0 8px 10px 1px rgba(0, 0, 0, 0.14), 0 3px 14px 2px rgba(0, 0, 0, 0.12), 0 5px 5px -3px rgba(0, 0, 0, 0.4); + transform: translateX(12.1rem); + } + [dir=rtl] [data-md-toggle=drawer]:checked ~ .md-container .md-sidebar--primary { + transform: translateX(-12.1rem); + } + .md-sidebar--primary .md-sidebar__scrollwrap { + overflow: hidden; + } + .md-sidebar--primary .md-sidebar__scrollwrap { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + margin: 0; + -webkit-scroll-snap-type: none; + -ms-scroll-snap-type: none; + scroll-snap-type: none; + } + .md-tabs { + display: none; + } +} +@media screen and (min-width: 60em) { + .md-content { + margin-right: 12.1rem; + } + [dir=rtl] .md-content { + margin-right: initial; + margin-left: 12.1rem; + } + .md-header-nav__button[for=__search] { + display: none; + } + .md-header-nav__source { + display: block; + width: 11.7rem; + max-width: 11.7rem; + margin-left: 1rem; + } + [dir=rtl] .md-header-nav__source { + margin-right: 1rem; + margin-left: initial; + } + .md-nav--secondary .md-nav__title[for=__toc] { + scroll-snap-align: start; + } + .md-nav--secondary .md-nav__title .md-nav__icon { + display: none; + } + .md-search { + padding: 0.2rem 0; + } + .md-search__overlay { + position: fixed; + top: 0; + left: 0; + width: 0; + height: 0; + transition: width 0ms 250ms, height 0ms 250ms, opacity 250ms; + background-color: var(--md-default-fg-color--light); + cursor: pointer; + } + [dir=rtl] .md-search__overlay { + right: 0; + left: initial; + } + [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { + width: 100%; + height: 100%; + transition: width 0ms, height 0ms, opacity 250ms; + opacity: 1; + } + .md-search__inner { + position: relative; + width: 11.7rem; + padding: 0.1rem 0; + float: right; + transition: width 250ms cubic-bezier(0.1, 0.7, 0.1, 1); + } + [dir=rtl] .md-search__inner { + float: left; + } + .md-search__form { + border-radius: 0.1rem; + } + .md-search__input { + width: 100%; + height: 1.8rem; + padding-left: 2.2rem; + transition: background-color 250ms cubic-bezier(0.1, 0.7, 0.1, 1), color 250ms cubic-bezier(0.1, 0.7, 0.1, 1); + border-radius: 0.1rem; + background-color: var(--md-default-fg-color--lighter); + color: inherit; + font-size: 0.8rem; + } + [dir=rtl] .md-search__input { + padding-right: 2.2rem; + } + .md-search__input + .md-search__icon { + color: var(--md-primary-bg-color); + } + .md-search__input::-webkit-input-placeholder { + color: var(--md-primary-bg-color--light); + } + .md-search__input::-moz-placeholder { + color: var(--md-primary-bg-color--light); + } + .md-search__input::-ms-input-placeholder { + color: var(--md-primary-bg-color--light); + } + .md-search__input::placeholder { + color: var(--md-primary-bg-color--light); + } + .md-search__input:hover { + background-color: var(--md-default-bg-color--lightest); + } + [data-md-toggle=search]:checked ~ .md-header .md-search__input { + border-radius: 0.1rem 0.1rem 0 0; + background-color: var(--md-default-bg-color); + color: var(--md-default-fg-color); + text-overflow: clip; + } + [data-md-toggle=search]:checked ~ .md-header .md-search__input::-webkit-input-placeholder { + color: var(--md-default-fg-color--light); + } + [data-md-toggle=search]:checked ~ .md-header .md-search__input::-moz-placeholder { + color: var(--md-default-fg-color--light); + } + [data-md-toggle=search]:checked ~ .md-header .md-search__input::-ms-input-placeholder { + color: var(--md-default-fg-color--light); + } + [data-md-toggle=search]:checked ~ .md-header .md-search__input + .md-search__icon, [data-md-toggle=search]:checked ~ .md-header .md-search__input::placeholder { + color: var(--md-default-fg-color--light); + } + .md-search__icon[for=__search] svg:last-child { + display: none; + } + .md-search__output { + top: 1.9rem; + transition: opacity 400ms; + opacity: 0; + } + [data-md-toggle=search]:checked ~ .md-header .md-search__output { + box-shadow: 0 6px 10px 0 rgba(0, 0, 0, 0.14), 0 1px 18px 0 rgba(0, 0, 0, 0.12), 0 3px 5px -1px rgba(0, 0, 0, 0.4); + opacity: 1; + } + .md-search__scrollwrap { + max-height: 0; + } + [data-md-toggle=search]:checked ~ .md-header .md-search__scrollwrap { + max-height: 75vh; + } + .md-search__scrollwrap::-webkit-scrollbar { + width: 0.2rem; + height: 0.2rem; + } + .md-search__scrollwrap::-webkit-scrollbar-thumb { + background-color: var(--md-default-fg-color--lighter); + } + .md-search__scrollwrap::-webkit-scrollbar-thumb:hover { + background-color: var(--md-accent-fg-color); + } + .md-search-result__meta { + padding-left: 2.2rem; + } + [dir=rtl] .md-search-result__meta { + padding-right: 2.2rem; + padding-left: initial; + } + .md-search-result__article { + padding-left: 2.2rem; + } + [dir=rtl] .md-search-result__article { + padding-right: 2.2rem; + padding-left: 0.8rem; + } + .md-sidebar--secondary { + display: block; + margin-left: calc(100% - 12.1rem); + } + [dir=rtl] .md-sidebar--secondary { + margin-right: calc(100% - 12.1rem); + margin-left: initial; + } + .md-sidebar--secondary .md-sidebar__scrollwrap { + -webkit-overflow-scrolling: touch; + } +} +@media screen and (min-width: 76.25em) { + .md-content { + margin-left: 12.1rem; + } + [dir=rtl] .md-content { + margin-right: 12.1rem; + } + .md-content__inner { + margin-right: 1.2rem; + margin-left: 1.2rem; + } + .md-header-nav__button[for=__drawer] { + display: none; + } + .md-header-nav__source { + margin-left: 1.4rem; + } + [dir=rtl] .md-header-nav__source { + margin-right: 1.4rem; + } + .md-nav { + transition: max-height 250ms cubic-bezier(0.86, 0, 0.07, 1); + } + .md-nav--primary .md-nav__title[for=__drawer] { + scroll-snap-align: start; + } + .md-nav--primary .md-nav__title .md-nav__icon { + display: none; + } + .md-nav__toggle ~ .md-nav { + display: none; + } + .md-nav__toggle:checked ~ .md-nav { + display: block; + } + .md-nav__item--nested > .md-nav > .md-nav__title { + display: none; + } + .md-nav__icon { + height: 0.9rem; + float: right; + transition: transform 250ms; + } + .md-nav__icon svg { + display: inline-block; + width: 0.9rem; + height: 0.9rem; + vertical-align: -0.1rem; + } + .md-nav__item--nested .md-nav__toggle:checked ~ .md-nav__link .md-nav__icon { + transform: rotateZ(90deg); + } + [data-md-toggle=search]:checked ~ .md-header .md-search__inner { + width: 34.4rem; + } + .md-search__scrollwrap { + width: 34.4rem; + } + .md-sidebar--secondary { + margin-left: 48.9rem; + } + [dir=rtl] .md-sidebar--secondary { + margin-right: 48.9rem; + margin-left: initial; + } + .md-tabs ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--nested { + display: none; + } + .md-tabs--active ~ .md-main .md-nav--primary .md-nav__title { + display: block; + padding: 0 0.6rem; + pointer-events: none; + scroll-snap-align: start; + } + .md-tabs--active ~ .md-main .md-nav--primary .md-nav__title[for=__drawer] { + display: none; + } + .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item { + display: none; + } + .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--nested { + display: none; + } + .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--active { + display: block; + padding: 0; + } + .md-tabs--active ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--active > .md-nav__link { + display: none; + } + .md-tabs--active ~ .md-main .md-nav[data-md-level="1"] > .md-nav__list > .md-nav__item { + padding: 0 0.6rem; + } + .md-tabs--active ~ .md-main .md-nav[data-md-level="1"] .md-nav .md-nav__title { + display: none; + } +} +@media screen and (min-width: 45em) { + .md-footer-nav__link { + width: 50%; + } + .md-footer-copyright { + max-width: 75%; + float: left; + } + [dir=rtl] .md-footer-copyright { + float: right; + } + .md-footer-social { + padding: 0.6rem 0; + float: right; + } + [dir=rtl] .md-footer-social { + float: left; + } +} +@media screen and (max-width: 29.9375em) { + [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { + transform: scale(45); + } +} +@media screen and (min-width: 30em) and (max-width: 44.9375em) { + [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { + transform: scale(60); + } +} +@media screen and (min-width: 45em) and (max-width: 59.9375em) { + [data-md-toggle=search]:checked ~ .md-header .md-search__overlay { + transform: scale(75); + } +} +@media screen and (min-width: 60em) and (max-width: 76.1875em) { + [data-md-toggle=search]:checked ~ .md-header .md-search__inner { + width: 23.4rem; + } + .md-search__scrollwrap { + width: 23.4rem; + } + .md-search-result__teaser { + max-height: 2.5rem; + -webkit-line-clamp: 3; + } +} +@media (-webkit-max-device-pixel-ratio: 1), (max-resolution: 1dppx) { + .md-search__scrollwrap { + transform: translateZ(0); + } +} +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/main.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_reset.scss */ +/*# sourceURL=main.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_colors.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_icons.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/base/_typeset.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_base.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_announce.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_clipboard.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_content.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_dialog.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/node_modules/material-shadows/material-shadows.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_header.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_hero.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_footer.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_nav.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_search.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_sidebar.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_source.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/layout/_tabs.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_admonition.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_codehilite.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_footnotes.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/_permalinks.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_arithmatex.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_critic.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_details.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_emoji.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_highlight.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_inlinehilite.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_tabbed.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/extensions/pymdown/_tasklist.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/utilities/_break.scss */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9tYWluLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvYmFzZS9fcmVzZXQuc2NzcyIsIm1haW4uc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9iYXNlL19jb2xvcnMuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9iYXNlL19pY29ucy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2Jhc2UvX3R5cGVzZXQuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2Jhc2Uuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2Fubm91bmNlLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvbGF5b3V0L19jbGlwYm9hcmQuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2NvbnRlbnQuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2RpYWxvZy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9ub2RlX21vZHVsZXMvbWF0ZXJpYWwtc2hhZG93cy9tYXRlcmlhbC1zaGFkb3dzLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvbGF5b3V0L19oZWFkZXIuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2hlcm8uc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX2Zvb3Rlci5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2xheW91dC9fbmF2LnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvbGF5b3V0L19zZWFyY2guc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX3NpZGViYXIuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9sYXlvdXQvX3NvdXJjZS5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2xheW91dC9fdGFicy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvX2FkbW9uaXRpb24uc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9leHRlbnNpb25zL19jb2RlaGlsaXRlLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9fZm9vdG5vdGVzLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9fcGVybWFsaW5rcy5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9fYXJpdGhtYXRleC5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9fY3JpdGljLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9weW1kb3duL19kZXRhaWxzLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9weW1kb3duL19lbW9qaS5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9faGlnaGxpZ2h0LnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvZXh0ZW5zaW9ucy9weW1kb3duL19pbmxpbmVoaWxpdGUuc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9leHRlbnNpb25zL3B5bWRvd24vX3RhYmJlZC5zY3NzIiwiL1VzZXJzL3NxdWlkZnVuay9EZXNrdG9wL0dlbmVyYWwvU291cmNlcy9ta2RvY3MtbWF0ZXJpYWwtdHlwZXNjcmlwdC9zcmMvYXNzZXRzL3N0eWxlc2hlZXRzL2V4dGVuc2lvbnMvcHltZG93bi9fdGFza2xpc3Quc2NzcyIsIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy91dGlsaXRpZXMvX2JyZWFrLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQUE7QUM2QkE7RUFDRSxzQkFBQTtBQzNCRjs7QUQrQkE7OztFQUdFLG1CQUFBO0FDNUJGOztBRGdDQTtFQUNFLDhCQUFBO0tBQUEsMkJBQUE7TUFBQSwwQkFBQTtVQUFBLHNCQUFBO0FDMUJGOztBRDhCQTtFQUNFLFNBQUE7QUMzQkY7O0FEK0JBO0VBQ0UsaUJBQUE7RUFDQSx1QkFBQTtBQzVCRjs7QURnQ0E7RUFDRSxxQ0FBQTtBQzdCRjs7QURpQ0E7Ozs7RUFJRSx3Q0FBQTtBQzlCRjs7QURrQ0E7RUFDRSxjQUFBO0VBQ0EscUJBQUE7QUMvQkY7O0FEbUNBO0VBQ0UsY0FBQTtBQ2hDRjs7QURvQ0E7O0VBRUUsa0JBQUE7RUFDQSxjQUFBO0VBQ0EsY0FBQTtFQUNBLHdCQUFBO0FDakNGOztBRHFDQTtFQUNFLGVBQUE7QUNsQ0Y7O0FEc0NBO0VBQ0UsV0FBQTtBQ25DRjs7QUR1Q0E7RUFDRSxrQkFBQTtBQ3BDRjs7QUR3Q0E7RUFDRSx5QkFBQTtFQUNBLGlCQUFBO0FDckNGOztBRHlDQTs7RUFFRSxtQkFBQTtFQUNBLG1CQUFBO0FDdENGOztBRDBDQTtFQUNFLFNBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtFQUNBLHVCQUFBO0VBQ0Esa0JBQUE7QUN2Q0Y7O0FEMkNBO0VBQ0UsU0FBQTtFQUNBLFVBQUE7QUN4Q0Y7O0FDL0RBO0VBR0UsNENBQUE7RUFDQSxtREFBQTtFQUNBLHFEQUFBO0VBQ0Esc0RBQUE7RUFDQSwyQ0FBQTtFQUNBLG9EQUFBO0VBQ0Esc0RBQUE7RUFDQSx3REFBQTtFQUdBLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtFQUNBLGlEQUFBO0VBQ0EsK0RBQUE7RUFHQSwrQ0FBQTtFQUNBLDhEQUFBO0VBQ0EsZ0RBQUE7RUFDQSw4REFBQTtFQUdBLDJDQUFBO0VBQ0EsMENBQUE7QUQwREY7O0FFakZFO0VBQ0UsY0FBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0FGb0ZKOztBRzVGQTtFQUNFLG1DQUFBO0VBQ0Esa0NBQUE7QUgrRkY7O0FHM0ZBOztFQUVFLGlDQUFBO0VBQ0EsNkNBQUE7VUFBQSxxQ0FBQTtFQUNBLDJEQUFBO0FIK0ZGOztBRzNGQTs7O0VBR0UsaUNBQUE7RUFDQSxxQ0FBQTtVQUFBLDZCQUFBO0VBQ0EsOENBQUE7QUgrRkY7O0FHcEZBO0VBQ0UsaUJBQUE7RUFDQSxnQkFBQTtFQUdBLGlDQUFBO0FIcUZGO0FHbEZFOzs7O0VBSUUsYUFBQTtBSG9GSjtBR2hGRTtFQUNFLGdCQUFBO0VBQ0Esd0NBQUE7RUFDQSxvQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7RUFDQSxnQkFBQTtBSGtGSjtBRzlFRTtFQUNFLHFCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0VBQ0EsZ0JBQUE7QUhnRko7QUc1RUU7RUFDRSx1QkFBQTtFQUNBLGVBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0VBQ0EsZ0JBQUE7QUg4RUo7QUcxRUU7RUFDRSxrQkFBQTtBSDRFSjtBR3hFRTtFQUNFLGdCQUFBO0VBQ0EsaUJBQUE7RUFDQSxnQkFBQTtFQUNBLHVCQUFBO0FIMEVKO0FHdEVFOztFQUVFLGdCQUFBO0VBQ0Esd0NBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsdUJBQUE7QUh3RUo7QUdwRUU7RUFDRSx5QkFBQTtBSHNFSjtBR2xFRTtFQUNFLGVBQUE7RUFDQSxpRUFBQTtBSG9FSjtBR2hFRTtFQUNFLGlDQUFBO0VBQ0Esc0JBQUE7QUhrRUo7QUcvREk7RUFFRSx1QkFBQTtBSGdFTjtBRzVESTtFQUVFLGdDQUFBO0FINkROO0FHOUNFOzs7RUFHRSx5Q0FBQTtFQUNBLDhCQUFBO0VBQ0EsY0FBQTtFQUNBLGNBQUE7QUhnREo7QUd2Q0U7RUFHRSx3QkFBQTtFQUNBLHlCQUFBO0VBQ0EscUJBQUE7RUFDQSxtR0FBQTtFQUdBLHNCQUFBO0VBQ0EsbUNBQUE7VUFBQSwyQkFBQTtBSHNDSjtBR2xDRTs7Ozs7O0VBTUUsU0FBQTtFQUNBLDZCQUFBO0VBQ0EsZ0JBQUE7QUhvQ0o7QUdoQ0U7RUFDRSxlQUFBO0VBQ0EsZ0JBQUE7RUFDQSxzQkFBQTtFQUNBLHlCQUFBO0VBQ0EsY0FBQTtFQUNBLGdCQUFBO0FIa0NKO0FHOUJFO0VBQ0Usa0JBQUE7RUFDQSxhQUFBO0VBQ0EscUJBQUE7RUFDQSxnQkFBQTtFQUVBLG1DQUFBO1VBQUEsMkJBQUE7RUFDQSxpQ0FBQTtBSGdDSjtBRzdCSTtFQUNFLGNBQUE7RUFDQSxTQUFBO0VBQ0Esd0JBQUE7RUFDQSw2QkFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxtQ0FBQTtVQUFBLDJCQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0FIZ0NOO0FHN0JNO0VBQ0UsYUFBQTtFQUNBLGNBQUE7QUgrQlI7QUczQk07RUFDRSxxREFBQTtBSDZCUjtBRzFCUTtFQUNFLDJDQUFBO0FINEJWO0FHTkU7RUFHRSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0EscUJBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0EscUtBQUE7RUFJQSxzQkFBQTtFQUNBLHdCQUFBO0FIR0o7QUdDRTtFQUNFLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxxQkFBQTtFQUNBLHlDQUFBO0VBQ0EsbUZBQUE7RUFHQSxzQkFBQTtFQUNBLG1DQUFBO1VBQUEsMkJBQUE7QUhBSjtBR0lFO0VBQ0UsK0RBQUE7RUFDQSxxQkFBQTtFQUNBLFlBQUE7QUhGSjtBR01FO0VBQ0UsYUFBQTtBSEpKO0FHUUU7O0VBRUUsdUJBQUE7QUhOSjtBR1NJOztFQUNFLHdCQUFBO0VBQ0Esb0JBQUE7QUhOTjtBR1dFO0VBQ0Usb0JBQUE7RUFDQSw2REFBQTtFQUNBLHdDQUFBO0FIVEo7QUdZSTtFQUNFLHFCQUFBO0VBQ0EscUJBQUE7RUFDQSw4REFBQTtFQUNBLG9CQUFBO0FIVk47QUdlRTtFQUNFLHFCQUFBO0FIYko7QUdpQkU7O0VBRUUsb0JBQUE7RUFDQSxVQUFBO0FIZko7QUdrQkk7O0VBQ0UscUJBQUE7RUFDQSxvQkFBQTtBSGZOO0FHbUJJOztFQUNFLDRCQUFBO0FIaEJOO0FHbUJNOztFQUNFLDRCQUFBO0FIaEJSO0FHcUJJOztFQUNFLG9CQUFBO0VBQ0EsbUJBQUE7QUhsQk47QUdxQk07O0VBQ0Usb0JBQUE7RUFDQSxvQkFBQTtBSGxCUjtBR3NCTTs7OztFQUVFLGVBQUE7QUhsQlI7QUdzQk07O0VBQ0UsZ0JBQUE7QUhuQlI7QUd1Qk07Ozs7RUFFRSw2QkFBQTtBSG5CUjtBR3NCUTs7OztFQUNFLHFCQUFBO0VBQ0Esb0JBQUE7QUhqQlY7QUd3QkU7RUFDRSx5QkFBQTtBSHRCSjtBR3lCSTtFQUNFLHFCQUFBO0VBQ0Esb0JBQUE7QUh2Qk47QUc0QkU7OztFQUdFLGVBQUE7QUgxQko7QUc4QkU7RUFDRSxxQkFBQTtFQUNBLGVBQUE7RUFDQSxxQkFBQTtFQUNBLHNDQUFBO0VBQ0Esa0JBQUE7RUFDQSwrRUFBQTtFQUdBLGNBQUE7RUFDQSxpQ0FBQTtBSDlCSjtBR21DSTtFQUNFLGlCQUFBO0FIakNOO0FHcUNJOztFQUVFLGdCQUFBO0FIbkNOO0FHc0NNOztFQUNFLGlCQUFBO0FIbkNSO0FHd0NJO0VBQ0UsZUFBQTtFQUNBLHNCQUFBO0VBQ0EsbURBQUE7RUFDQSxpQ0FBQTtFQUNBLG1CQUFBO0FIdENOO0FHMENJO0VBQ0Usc0JBQUE7RUFDQSw4REFBQTtFQUNBLG1CQUFBO0FIeENOO0FHNENJO0VBQ0Usa0NBQUE7QUgxQ047QUc2Q007RUFDRSxzQ0FBQTtFQUNBLHdEQUFBO0FIM0NSO0FHK0NNO0VBQ0UsYUFBQTtBSDdDUjtBR21ESTtFQUNFLGtCQUFBO0FIakROO0FHc0RFO0VBQ0UsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLGlDQUFBO0FIcERKO0FHd0RFO0VBQ0UscUJBQUE7RUFDQSxvQkFBQTtFQUNBLGlCQUFBO0FIdERKO0FHeURJO0VBQ0UsY0FBQTtFQUNBLFdBQUE7RUFDQSxTQUFBO0VBQ0EsZ0JBQUE7QUh2RE47O0FJL1pBO0VBQ0UsWUFBQTtFQUNBLDRDQUFBO0VBT0EsZUFBQTtFQUtBLGtCQUFBO0FKd1pGOztBSTFZQTtFQUNFLGFBQUE7RUFDQSxrQkFBQTtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtFQUNBLGdCQUFBO0VBR0EsaUJBQUE7QUoyWUY7O0FJOVhBO0VBQ0UsY0FBQTtFQUNBLGVBQUE7RUFDQSxVQUFBO0VBQ0EsU0FBQTtBSmlZRjs7QUk3WEE7RUFDRSxnQkFBQTtFQUNBLGtCQUFBO0VBQ0EsaUJBQUE7QUpnWUY7O0FJNVhBO0VBQ0UsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsWUFBQTtBSitYRjs7QUkzWEE7RUFDRSxZQUFBO0FKOFhGO0FJM1hFO0VBQ0UsWUFBQTtFQUNBLG1CQUFBO0VBSUEsdUJBQUE7QUowWEo7O0FJclhBO0VBQ0UsY0FBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtBSndYRjs7QUloWEE7RUFDRSxhQUFBO0FKbVhGOztBSS9XQTtFQUNFLGVBQUE7RUFDQSxNQUFBO0VBQ0EsUUFBQTtFQUNBLFNBQUE7RUFDQSw0REFBQTtFQUlBLG1EQUFBO0VBQ0EsVUFBQTtFQUNBLFVBQUE7QUorV0Y7O0FJeFZBO0VBQ0UsZUFBQTtFQUNBLGNBQUE7RUFDQSxzQkFBQTtFQUNBLDZCQUFBO0VBQ0EscUJBQUE7RUFDQSw0Q0FBQTtFQUNBLGlDQUFBO0VBQ0Esa0JBQUE7RUFDQSxVQUFBO0FKMlZGO0FJeFZFO0VBQ0Usd0JBQUE7RUFDQSw0RUFBQTtFQUdBLFVBQUE7RUFDQSxXQUFBO0FKd1ZKOztBSS9VQTtFQUNFLFlBQUE7QUprVkY7QUtoZ0JBO0VBQ0UsNENBQUE7QUxrZ0JGO0FLL2ZFO0VBQ0Usa0JBQUE7RUFDQSxpQkFBQTtFQUNBLGlDQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtBTGlnQko7O0FNMWdCQTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGFBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtFQUNBLHVCQUFBO0VBQ0EscUJBQUE7RUFDQSwyQ0FBQTtFQUNBLGVBQUE7RUFDQSxVQUFBO0VBRUEsbUNBQUE7VUFBQSwyQkFBQTtBTjZnQkY7QU1yZ0JFO0VBQ0UsYUFBQTtFQUNBLGNBQUE7QU51Z0JKO0FNbmdCRTtFQUNFLHdDQUFBO0FOcWdCSjtBTWpnQkU7RUFFRSxnQ0FBQTtBTmtnQko7QU8zZ0JFO0VBQ0UsdUJBQUE7RUFDQSxtQkFBQTtBUDZnQko7QU9uZ0JJO0VBQ0UsY0FBQTtFQUNBLGNBQUE7RUFDQSxXQUFBO0FQcWdCTjtBT2pnQkk7RUFDRSxnQkFBQTtBUG1nQk47QU85ZkU7RUFDRSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsVUFBQTtFQUNBLFlBQUE7QVBnZ0JKO0FPN2ZJO0VBQ0Usb0JBQUE7RUFDQSxvQkFBQTtFQUNBLFdBQUE7QVArZk47QU81Zk07RUFDRSxxQkFBQTtBUDhmUjtBT3pmSTtFQUNFLDBDQUFBO0FQMmZOO0FPdmZJO0VBQ0UsZUFBQTtFQUNBLG1CQUFBO0FQeWZOOztBUXBrQkE7RUNGRSwrR0FBQTtFREtBLGNBQUE7RUFDQSxlQUFBO0VBQ0EsYUFBQTtFQUNBLGNBQUE7RUFDQSxhQUFBO0VBQ0Esa0JBQUE7RUFDQSxzQkFBQTtFQUNBLDJCQUFBO0VBQ0EsOENBQUE7RUFHQSxZQUFBO0VBQ0EscUJBQUE7RUFDQSxzQ0FBQTtFQUNBLGlDQUFBO0VBQ0EsaUJBQUE7RUFDQSxVQUFBO0VBQ0EsVUFBQTtBUm9rQkY7QVFqa0JFO0VBQ0UsY0FBQTtFQUNBLFlBQUE7QVJta0JKO0FRL2pCRTtFQUNFLHdCQUFBO0VBQ0EsOEVBQUE7RUFHQSxVQUFBO0FSK2pCSjs7QVVqbUJBO0VBQ0Usd0JBQUE7RUFBQSxnQkFBQTtFQUNBLE1BQUE7RUFDQSxRQUFBO0VBQ0EsT0FBQTtFQUNBLGNBQUE7RUFDQSwrQ0FBQTtFQUdBLDRDQUFBO0VBQ0EsaUNBQUE7RUFHQSx5RUFBQTtFQUdBLG1DQUFBO1VBQUEsMkJBQUE7RUFDQSxVQUFBO0FWZ21CRjtBVTdsQkU7RUFDRSxnQkFBQTtFQUNBLGdCQUFBO0FWK2xCSjtBVTNsQkU7RUFDRSxpRUFBQTtFQUlBLDZFQUFBO0FWMGxCSjs7QVU5a0JBO0VBQ0UsYUFBQTtFQUNBLGlCQUFBO0FWaWxCRjtBVTlrQkU7RUFDRSxrQkFBQTtFQUNBLGNBQUE7RUFDQSxlQUFBO0VBQ0EseUJBQUE7RUFDQSxlQUFBO0VBQ0EsVUFBQTtBVmdsQko7QVUxa0JNO0VBQ0UscUJBQUE7QVY0a0JSO0FVdmtCSTtFQUVFLFlBQUE7QVZ3a0JOO0FVcGtCSTtFQUNFLGNBQUE7RUFDQSxlQUFBO0FWc2tCTjtBVW5rQk07O0VBRUUsY0FBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0Esa0JBQUE7QVZxa0JSO0FVaGtCSTtFQUNFLGFBQUE7QVZra0JOO0FVbGlCRTtFQUNFLGNBQUE7RUFDQSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxlQUFBO0VBQ0EseUVBQUE7RUFHQSx1QkFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7QVZraUJKO0FVL2hCSTtFQUNFLDhCQUFBO0VBQ0EseUVBQUE7RUFHQSxVQUFBO0VBQ0EsV0FBQTtFQUNBLG9CQUFBO0FWK2hCTjtBVTVoQk07RUFDRSwrQkFBQTtBVjhoQlI7QVV6aEJJO0VBQ0UsaUJBQUE7QVYyaEJOO0FVdmhCSTtFQUNFLGFBQUE7QVZ5aEJOO0FVcGhCRTtFQUNFLFlBQUE7RUFDQSxpQkFBQTtFQUNBLG1CQUFBO0FWc2hCSjtBVW5oQkk7RUFDRSwrQkFBQTtFQUNBLHlFQUFBO0VBR0EsVUFBQTtFQUNBLFdBQUE7RUFDQSxvQkFBQTtBVm1oQk47QVVoaEJNO0VBQ0UsOEJBQUE7QVZraEJSO0FVOWdCTTtFQUNFLHdCQUFBO0VBQ0EseUVBQUE7RUFHQSxVQUFBO0VBQ0EsVUFBQTtFQUNBLHVCQUFBO0FWOGdCUjtBVXpnQkk7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0FWMmdCTjtBVXRnQkU7RUFDRSxhQUFBO0FWd2dCSjs7QVdsdEJBO0VBQ0UsNEJBQUE7RUFDQSw0Q0FBQTtFQUNBLGlDQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0FYcXRCRjtBV2x0QkU7RUFDRSxnQkFBQTtFQUNBLDZCQUFBO0VBQ0EseUVBQUE7RUFHQSx1QkFBQTtBWGt0Qko7QVd6c0JJO0VBQ0Usb0JBQUE7RUFDQSwrQkFBQTtFQUNBLGtEQUFBO0VBR0EsVUFBQTtBWHlzQk47QVdyc0JJO0VBQ0UscUJBQUE7QVh1c0JOOztBWXp1QkE7RUFDRSw0Q0FBQTtFQUNBLGlDQUFBO0FaNHVCRjs7QVlodUJFO0VBQ0UsZUFBQTtFQUNBLGNBQUE7QVptdUJKO0FZL3RCRTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtFQUNBLHNCQUFBO0VBQ0EseUJBQUE7QVppdUJKO0FZenRCSTtFQUVFLFlBQUE7QVowdEJOO0FZdHRCSTtFQUNFLFVBQUE7RUFDQSxXQUFBO0Fad3RCTjtBWXJ0Qk07RUFDRSxZQUFBO0FadXRCUjtBWXB0QlE7RUFDRSxxQkFBQTtBWnN0QlY7QVl2c0JJO0VBQ0UsVUFBQTtFQUNBLFlBQUE7RUFDQSxpQkFBQTtBWnlzQk47QVl0c0JNO0VBQ0UsV0FBQTtFQUNBLGdCQUFBO0Fad3NCUjtBWXJzQlE7RUFDRSxxQkFBQTtBWnVzQlY7QVloc0JFO0VBQ0Usa0JBQUE7RUFDQSxZQUFBO0VBQ0EsOEJBQUE7RUFDQSxlQUFBO0VBQ0EsaUJBQUE7RUFDQSxtQkFBQTtBWmtzQko7QVk5ckJFO0VBQ0UsY0FBQTtFQUNBLGVBQUE7QVpnc0JKO0FZNXJCRTtFQUNFLGtCQUFBO0VBQ0EsUUFBQTtFQUNBLE9BQUE7RUFDQSxpQkFBQTtFQUNBLGVBQUE7RUFDQSx3Q0FBQTtFQUNBLGtCQUFBO0FaOHJCSjs7QVl6ckJBO0VBQ0UscURBQUE7QVo0ckJGO0FZenJCRTtFQUNFLGVBQUE7RUFDQSxjQUFBO0FaMnJCSjtBWXZyQkU7RUFDRSx3Q0FBQTtBWnlyQko7QVl0ckJJO0VBRUUsaUNBQUE7QVp1ckJOOztBWWpyQkE7RUFDRSxnQkFBQTtFQUNBLGlCQUFBO0VBQ0EsMENBQUE7RUFDQSxrQkFBQTtBWm9yQkY7QVl0cUJFO0VBQ0Usd0NBQUE7QVp3cUJKOztBWW5xQkE7RUFDRSxnQkFBQTtFQUNBLHdCQUFBO0Fac3FCRjtBWXhwQkU7RUFDRSxxQkFBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0EsdUJBQUE7RUFDQSxrQkFBQTtBWjBwQko7QVl2cEJJO0VBQ0UsZ0JBQUE7QVp5cEJOO0FZcnBCSTtFQUNFLGFBQUE7RUFDQSxvQkFBQTtFQUNBLGtCQUFBO0FadXBCTjs7QWFuMUJBO0VBQ0UsaUJBQUE7RUFDQSxnQkFBQTtBYnMxQkY7QWFuMUJFO0VBQ0UsY0FBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtFQUNBLGdCQUFBO0FicTFCSjtBYWwxQkk7RUFDRSxhQUFBO0FibzFCTjtBYWoxQk07RUFDRSxXQUFBO0VBQ0EsWUFBQTtBYm0xQlI7QWE1MEJROztFQUVFLGNBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtFQUNBLGtCQUFBO0FiODBCVjtBYXYwQkU7RUFDRSxTQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0FieTBCSjtBYXIwQkU7RUFDRSxpQkFBQTtBYnUwQko7QWFwMEJJO0VBQ0Usc0JBQUE7QWJzMEJOO0FhbDBCSTtFQUNFLGdCQUFBO0FibzBCTjtBYWowQk07RUFDRSxxQkFBQTtFQUNBLGVBQUE7QWJtMEJSO0FhL3pCTTtFQUNFLGlCQUFBO0FiaTBCUjtBYTN6QkU7RUFDRSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSx1QkFBQTtFQUNBLHVCQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0Esd0JBQUE7QWI2ekJKO0FhenpCSTtFQUNFLGFBQUE7QWIyekJOO0FheHpCTTtFQUNFLGFBQUE7QWIwekJSO0FhcnpCSTtFQUNFLHdDQUFBO0FidXpCTjtBYW56Qkk7RUFDRSxpQ0FBQTtBYnF6Qk47QWFqekJJO0VBQ0UsY0FBQTtBYm16Qk47QWEveUJJO0VBRUUsZ0NBQUE7QWJnekJOO0FhM3lCRTtFQUNFLGFBQUE7QWI2eUJKOztBY3g1QkE7RUFDRSxrQkFBQTtBZDI1QkY7QWN4NUJFO0VBQ0UsYUFBQTtBZDA1Qko7QWNqNUJFO0VBQ0UsVUFBQTtFQUNBLFVBQUE7QWRtNUJKO0FjN3pCRTtFQUVFLG1DQUFBO1VBQUEsMkJBQUE7QWQrekJKO0FjcnZCRTtFQUNFLGtCQUFBO0FkdXZCSjtBYzl1QkU7RUFDRSxrQkFBQTtFQUNBLDBCQUFBO0VBQ0EsdUJBQUE7RUFDQSxVQUFBO0FkZ3ZCSjtBYzd1Qkk7RUFDRSwwQkFBQTtBZCt1Qk47QWMzdUJJO0VBQ0UsOERBQUE7RUFBQSxzREFBQTtBZDh1Qk47QWMvdUJJO0VBQ0UsMkRBQUE7RUFBQSxzREFBQTtBZGt2Qk47QWNudkJJO0VBQ0UsMERBQUE7RUFBQSxzREFBQTtBZHN2Qk47QWN2dkJJO0VBQ0Usc0RBQUE7QWR5dkJOO0FjcnZCSTtFQUVFLHdDQUFBO0Fkc3ZCTjtBY3h2Qkk7RUFFRSx3Q0FBQTtBZHl2Qk47QWMzdkJJO0VBRUUsd0NBQUE7QWQ0dkJOO0FjOXZCSTtFQUVFLHdDQUFBO0FkK3ZCTjtBYzN2Qkk7RUFDRSxhQUFBO0FkNnZCTjtBY2pzQkU7RUFDRSxrQkFBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0EscUVBQUE7RUFHQSxlQUFBO0VBQ0EsVUFBQTtBZGlzQko7QWM5ckJJO0VBQ0UsWUFBQTtBZGdzQk47QWM1ckJJO0VBQ0UsV0FBQTtFQUNBLFlBQUE7QWQ4ckJOO0FjM3JCTTtFQUNFLGFBQUE7RUFDQSxhQUFBO0FkNnJCUjtBYzFyQlE7RUFDRSxxQkFBQTtBZDRyQlY7QWM1cEJJO0VBQ0UsV0FBQTtFQUNBLGFBQUE7RUFDQSxzQkFBQTtFQUNBLHlFQUFBO0VBR0EsVUFBQTtFQUNBLG9CQUFBO0FkNHBCTjtBY3pwQk07RUFDRSxjQUFBO0VBQ0EsWUFBQTtBZDJwQlI7QWMzb0JNO0VBQ0UsbUJBQUE7RUFDQSxVQUFBO0VBQ0EsdUJBQUE7QWQ2b0JSO0FjMW9CUTtFQUNFLFlBQUE7QWQ0b0JWO0Fjcm9CRTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLGdDQUFBO0VBQ0EsZ0JBQUE7RUFDQSxVQUFBO0FkdW9CSjtBYy9tQkU7RUFDRSxZQUFBO0VBQ0EsNENBQUE7RUFDQSxrRUFBQTtFQUNBLGdCQUFBO0VBRUEsbUNBQUE7VUFBQSwyQkFBQTtFQUNBLHFDQUFBO01BQUEsaUNBQUE7VUFBQSw2QkFBQTtFQUNBLGlDQUFBO0FkbW5CSjs7QWNya0JBO0VBQ0UsaUNBQUE7RUFDQSxzQkFBQTtBZHdrQkY7QWNya0JFO0VBQ0UsaUJBQUE7RUFDQSxzREFBQTtFQUNBLHdDQUFBO0VBQ0Esa0JBQUE7RUFDQSxtQkFBQTtFQUNBLHdCQUFBO0FkdWtCSjtBY3hqQkU7RUFDRSxTQUFBO0VBQ0EsVUFBQTtFQUNBLDhEQUFBO0VBQ0EsZ0JBQUE7QWQwakJKO0FjdGpCRTtFQUNFLDZEQUFBO0Fkd2pCSjtBY3BqQkU7RUFDRSxjQUFBO0VBQ0EsNEJBQUE7RUFDQSxVQUFBO0VBQ0EsZ0JBQUE7RUFDQSx3QkFBQTtBZHNqQko7QWNuakJJO0VBRUUsd0RBQUE7QWRvakJOO0FjampCTTtFQUNFLFlBQUE7QWRtakJSO0FjOWlCSTtFQUNFLHFCQUFBO0FkZ2pCTjtBYzNpQkU7RUFDRSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsY0FBQTtBZDZpQko7QWM1aEJNO0VBQ0UsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7QWQ4aEJSO0FjeGhCRTtFQUNFLGtCQUFBO0VBQ0EsT0FBQTtFQUNBLGNBQUE7RUFDQSxlQUFBO0VBQ0Esd0NBQUE7QWQwaEJKO0FjdmhCSTtFQUNFLFFBQUE7RUFDQSxhQUFBO0FkeWhCTjtBY3RoQk07RUFDRSxxQkFBQTtBZHdoQlI7QWM3Z0JFO0VBQ0UsZUFBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxnQkFBQTtBZCtnQko7QWN6Z0JFO0VBQ0Usb0JBQUE7RUFDQSxtQkFBQTtFQUNBLGVBQUE7RUFDQSx3Q0FBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtFQUNBLGdCQUFBO0VBQ0EsNEJBQUE7RUFDQSxxQkFBQTtBZDJnQko7QWN6ZkU7RUFDRSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EsMEJBQUE7QWQyZko7O0FlcG1DQTtFQUNFLGtCQUFBO0VBQ0EsY0FBQTtFQUNBLGlCQUFBO0VBQ0EsZ0JBQUE7QWZ1bUNGO0FlL2xDRTtFQUNFLGVBQUE7RUFDQSxXQUFBO0FmaW1DSjtBZW5qQ0U7RUFDRSxhQUFBO0FmcWpDSjtBZXJoQ0U7RUFDRSxnQkFBQTtFQUNBLGdCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxxQ0FBQTtNQUFBLGlDQUFBO1VBQUEsNkJBQUE7RUFFQSxtQ0FBQTtVQUFBLDJCQUFBO0FmeWhDSjtBZXZnQ0k7RUFDRSxhQUFBO0VBQ0EsY0FBQTtBZnlnQ047QWVyZ0NJO0VBQ0UscURBQUE7QWZ1Z0NOO0FlcGdDTTtFQUNFLDJDQUFBO0Fmc2dDUjs7QWdCOW9DQTtFQUNFO0lBQ0UsU0FBQTtFaEJpcENGO0VnQjlvQ0E7SUFDRSxlQUFBO0VoQmdwQ0Y7QUFDRjs7QWdCdnBDQTtFQUNFO0lBQ0UsU0FBQTtFaEIwcENGO0VnQnZwQ0E7SUFDRSxlQUFBO0VoQnlwQ0Y7QUFDRjtBZ0JycENBO0VBQ0U7SUFDRSwyQkFBQTtJQUNBLFVBQUE7RWhCdXBDRjtFZ0JwcENBO0lBQ0UsVUFBQTtFaEJzcENGO0VnQm5wQ0E7SUFDRSx5QkFBQTtJQUNBLFVBQUE7RWhCcXBDRjtBQUNGO0FnQmxxQ0E7RUFDRTtJQUNFLDJCQUFBO0lBQ0EsVUFBQTtFaEJvcUNGO0VnQmpxQ0E7SUFDRSxVQUFBO0VoQm1xQ0Y7RWdCaHFDQTtJQUNFLHlCQUFBO0lBQ0EsVUFBQTtFaEJrcUNGO0FBQ0Y7QWdCMXBDQTtFQUNFLGNBQUE7RUFDQSxxQkFBQTtFQUNBLHlCQUFBO0VBQ0Esa0JBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0VBRUEsbUNBQUE7VUFBQSwyQkFBQTtBaEI0cENGO0FnQnpwQ0U7RUFDRSxzQkFBQTtFQUNBLG9CQUFBO0FoQjJwQ0o7QWdCdnBDRTtFQUNFLFlBQUE7QWhCeXBDSjtBZ0JycENFO0VBQ0UscUJBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtFQUNBLHNCQUFBO0FoQnVwQ0o7QWdCcHBDSTtFQUNFLGtCQUFBO0VBQ0EsbUJBQUE7QWhCc3BDTjtBZ0JucENNO0VBQ0Usb0JBQUE7RUFDQSxvQkFBQTtBaEJxcENSO0FnQmhwQ0k7RUFDRSxrQkFBQTtFQUNBLGtCQUFBO0FoQmtwQ047QWdCL29DTTtFQUNFLG1CQUFBO0VBQ0Esb0JBQUE7RUFDQSxtQkFBQTtFQUNBLHFCQUFBO0FoQmlwQ1I7QWdCM29DRTtFQUNFLHFCQUFBO0VBQ0EsZUFBQTtFQUNBLG1CQUFBO0VBQ0EsZ0JBQUE7RUFDQSx1QkFBQTtFQUNBLGdCQUFBO0VBQ0Esc0JBQUE7QWhCNm9DSjtBZ0J6b0NFO0VBQ0UsU0FBQTtFQUNBLFVBQUE7RUFDQSxrQkFBQTtFQUNBLGdCQUFBO0VBQ0EscUJBQUE7RUFDQSxhQUFBO0VBQ0EsZ0JBQUE7QWhCMm9DSjtBZ0J4b0NJO0VBQ0UsdURBQUE7VUFBQSwrQ0FBQTtBaEIyb0NOO0FnQnRvQ0U7RUFDRSxXQUFBO0FoQndvQ0o7QWdCcm9DSTtFQUNFLFlBQUE7QWhCdW9DTjtBZ0Jub0NJO0VBQ0UsdURBQUE7VUFBQSwrQ0FBQTtBaEJzb0NOO0FnQmxvQ0k7RUFDRSxnQkFBQTtFQUNBLFlBQUE7QWhCb29DTjtBZ0Job0NJO0VBQ0UsYUFBQTtBaEJrb0NOOztBaUIxd0NBO0VBQ0UsV0FBQTtFQUNBLDRCQUFBO0VBQ0EsNENBQUE7RUFDQSxpQ0FBQTtFQUNBLGNBQUE7QWpCNndDRjtBaUIxd0NFO0VBQ0UsZ0JBQUE7QWpCNHdDSjtBaUI5dkNFO0VBQ0UsU0FBQTtFQUNBLG1CQUFBO0VBQ0EsVUFBQTtFQUNBLGdCQUFBO0VBQ0EsbUJBQUE7QWpCZ3dDSjtBaUI3dkNJO0VBQ0Usb0JBQUE7RUFDQSxvQkFBQTtBakIrdkNOO0FpQjF2Q0U7RUFDRSxxQkFBQTtFQUNBLGNBQUE7RUFDQSxxQkFBQTtFQUNBLG9CQUFBO0FqQjR2Q0o7QWlCdnZDRTtFQUNFLGNBQUE7RUFDQSxrQkFBQTtFQUNBLHlFQUFBO0VBR0EsaUJBQUE7RUFDQSxZQUFBO0FqQnV2Q0o7QWlCcHZDSTtFQUNFLGdCQUFBO0FqQnN2Q047QWlCbHZDSTtFQUVFLGNBQUE7RUFDQSxVQUFBO0FqQm12Q047QWlCOXVDTTtFQUNFLHNCQUFBO0FqQmd2Q1I7QWlCanZDTTtFQUNFLHNCQUFBO0FqQm12Q1I7QWlCcHZDTTtFQUNFLHNCQUFBO0FqQnN2Q1I7QWlCdnZDTTtFQUNFLHNCQUFBO0FqQnl2Q1I7QWlCMXZDTTtFQUNFLHVCQUFBO0FqQjR2Q1I7QWlCN3ZDTTtFQUNFLHVCQUFBO0FqQit2Q1I7QWlCaHdDTTtFQUNFLHVCQUFBO0FqQmt3Q1I7QWlCbndDTTtFQUNFLHVCQUFBO0FqQnF3Q1I7QWlCdHdDTTtFQUNFLHVCQUFBO0FqQnd3Q1I7QWlCendDTTtFQUNFLHVCQUFBO0FqQjJ3Q1I7QWlCNXdDTTtFQUNFLHVCQUFBO0FqQjh3Q1I7QWlCL3dDTTtFQUNFLHVCQUFBO0FqQml4Q1I7QWlCbHhDTTtFQUNFLHVCQUFBO0FqQm94Q1I7QWlCcnhDTTtFQUNFLHVCQUFBO0FqQnV4Q1I7QWlCeHhDTTtFQUNFLHVCQUFBO0FqQjB4Q1I7QWlCcHhDRTtFQUNFLG9CQUFBO0FqQnN4Q0o7QWlCbHhDSTtFQUNFLDBCQUFBO0VBQ0EsMkRBQUE7RUFJQSxVQUFBO0FqQml4Q047O0FrQnQyQ0U7RUFDRSxrQkFBQTtFQUNBLGlCQUFBO0VBQ0EsaUNBQUE7RUFDQSxxQkFBQTtFQUNBLGtCQUFBO0VBQ0EsK0VBQUE7RUFHQSxjQUFBO0FsQnUyQ0o7QWtCcDJDSTtFQUNFLGtDQUFBO0VBQ0EsaUJBQUE7QWxCczJDTjtBa0JsMkNJO0VBQ0UscUJBQUE7QWxCbzJDTjtBa0JoMkNJO0VBQ0UsYUFBQTtBbEJrMkNOO0FrQjcwQ007RUFFRSwwQkFBQTtBbEI4MENSO0FrQjMwQ1E7RUFDRSx3Q0FBQTtBbEI2MENWO0FrQjEwQ1U7RUFDRSx5QkFBQTtFQUNBLG9NQUFBO1VBQUEsNExBQUE7QWxCNjBDWjtBa0J4MUNNO0VBRUUsMEJBQUE7QWxCeTFDUjtBa0J0MUNRO0VBQ0Usd0NBQUE7QWxCdzFDVjtBa0JyMUNVO0VBQ0UseUJBQUE7RUFDQSxnUEFBQTtVQUFBLHdPQUFBO0FsQncxQ1o7QWtCbjJDTTtFQUVFLDBCQUFBO0FsQm8yQ1I7QWtCajJDUTtFQUNFLHdDQUFBO0FsQm0yQ1Y7QWtCaDJDVTtFQUNFLHlCQUFBO0VBQ0EsKy9CQUFBO1VBQUEsdS9CQUFBO0FsQm0yQ1o7QWtCOTJDTTtFQUVFLDBCQUFBO0FsQisyQ1I7QWtCNTJDUTtFQUNFLHVDQUFBO0FsQjgyQ1Y7QWtCMzJDVTtFQUNFLHlCQUFBO0VBQ0EsaVJBQUE7VUFBQSx5UUFBQTtBbEI4MkNaO0FrQnozQ007RUFFRSwwQkFBQTtBbEIwM0NSO0FrQnYzQ1E7RUFDRSx5Q0FBQTtBbEJ5M0NWO0FrQnQzQ1U7RUFDRSx5QkFBQTtFQUNBLHljQUFBO1VBQUEsaWNBQUE7QWxCeTNDWjtBa0JwNENNO0VBRUUsMEJBQUE7QWxCcTRDUjtBa0JsNENRO0VBQ0Usd0NBQUE7QWxCbzRDVjtBa0JqNENVO0VBQ0UseUJBQUE7RUFDQSx5TEFBQTtVQUFBLGlMQUFBO0FsQm80Q1o7QWtCLzRDTTtFQUVFLDBCQUFBO0FsQmc1Q1I7QWtCNzRDUTtFQUNFLHdDQUFBO0FsQis0Q1Y7QWtCNTRDVTtFQUNFLHlCQUFBO0VBQ0EsZ1ZBQUE7VUFBQSx3VUFBQTtBbEIrNENaO0FrQjE1Q007RUFFRSwwQkFBQTtBbEIyNUNSO0FrQng1Q1E7RUFDRSx3Q0FBQTtBbEIwNUNWO0FrQnY1Q1U7RUFDRSx5QkFBQTtFQUNBLGlYQUFBO1VBQUEseVdBQUE7QWxCMDVDWjtBa0JyNkNNO0VBRUUsMEJBQUE7QWxCczZDUjtBa0JuNkNRO0VBQ0UsdUNBQUE7QWxCcTZDVjtBa0JsNkNVO0VBQ0UseUJBQUE7RUFDQSx5akJBQUE7VUFBQSxpakJBQUE7QWxCcTZDWjtBa0JoN0NNO0VBRUUsMEJBQUE7QWxCaTdDUjtBa0I5NkNRO0VBQ0UseUNBQUE7QWxCZzdDVjtBa0I3NkNVO0VBQ0UseUJBQUE7RUFDQSwrVUFBQTtVQUFBLHVVQUFBO0FsQmc3Q1o7QWtCMzdDTTtFQUVFLDBCQUFBO0FsQjQ3Q1I7QWtCejdDUTtFQUNFLDBDQUFBO0FsQjI3Q1Y7QWtCeDdDVTtFQUNFLHlCQUFBO0VBQ0EsOExBQUE7VUFBQSxzTEFBQTtBbEIyN0NaO0FrQjE2Q0U7RUFDRSxpQkFBQTtFQUNBLGtDQUFBO0VBQ0EseUNBQUE7RUFDQSxnQkFBQTtBbEI0NkNKO0FrQno2Q0k7RUFDRSxrQ0FBQTtBbEIyNkNOO0FrQnY2Q0k7RUFDRSxnQkFBQTtBbEJ5NkNOO0FrQnI2Q0k7RUFDRSxrQkFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0Esb0JBQUE7RUFDQSx5QkFBQTtFQUNBLDJSQUFBO1VBQUEsbVJBQUE7RUFDQSxXQUFBO0FsQnc2Q047QWtCcjZDTTtFQUNFLHFCQUFBO0VBQ0Esb0JBQUE7QWxCdTZDUjs7QW1CejdDRTtFQUFNLGNBQUE7QW5CNjdDUjtBbUI1N0NFO0VBQU0sY0FBQTtBbkIrN0NSO0FtQjU3Q0U7RUFBTSxjQUFBO0FuQis3Q1I7QW1COTdDRTtFQUFNLGNBQUE7QW5CaThDUjtBbUJoOENFO0VBQU0sY0FBQTtBbkJtOENSO0FtQmw4Q0U7RUFBTSxjQUFBO0FuQnE4Q1I7QW1CcDhDRTtFQUFNLGNBQUE7QW5CdThDUjtBbUJ0OENFO0VBQU0sY0FBQTtBbkJ5OENSO0FtQng4Q0U7RUFBTSxjQUFBO0FuQjI4Q1I7QW1CMThDRTtFQUFNLGNBQUE7QW5CNjhDUjtBbUIxOENFO0VBQU0seUJBQUE7QW5CNjhDUjtBbUI1OENFO0VBQU0seUJBQUE7QW5CKzhDUjtBbUI1OENFO0VBQU0sY0FBQTtBbkIrOENSO0FtQjk4Q0U7RUFBTSxjQUFBO0FuQmk5Q1I7QW1CaDlDRTtFQUFNLGNBQUE7QW5CbTlDUjtBbUJsOUNFO0VBQU0sY0FBQTtBbkJxOUNSO0FtQnA5Q0U7RUFBTSxjQUFBO0FuQnU5Q1I7QW1CdDlDRTtFQUFNLGNBQUE7QW5CeTlDUjtBbUJ4OUNFO0VBQU0sY0FBQTtBbkIyOUNSO0FtQng5Q0U7RUFBTSxjQUFBO0FuQjI5Q1I7QW1CMTlDRTtFQUFNLGNBQUE7QW5CNjlDUjtBbUI1OUNFO0VBQU0sY0FBQTtBbkIrOUNSO0FtQjk5Q0U7RUFBTSxjQUFBO0FuQmkrQ1I7QW1CaCtDRTtFQUFNLGNBQUE7QW5CbStDUjtBbUJsK0NFO0VBQU0sY0FBQTtBbkJxK0NSO0FtQmwrQ0U7RUFBTSxjQUFBO0FuQnErQ1I7QW1CcCtDRTtFQUFNLGNBQUE7QW5CdStDUjtBbUJ0K0NFO0VBQU0sY0FBQTtBbkJ5K0NSO0FtQngrQ0U7RUFBTSxjQUFBO0FuQjIrQ1I7QW1CMStDRTtFQUFNLGNBQUE7QW5CNitDUjtBbUI1K0NFO0VBQU0sY0FBQTtBbkIrK0NSO0FtQjkrQ0U7RUFBTSxjQUFBO0FuQmkvQ1I7QW1CaC9DRTtFQUFNLGNBQUE7QW5CbS9DUjtBbUJsL0NFO0VBQU0sY0FBQTtBbkJxL0NSO0FtQnAvQ0U7RUFBTSxjQUFBO0FuQnUvQ1I7QW1CdC9DRTtFQUFNLGNBQUE7QW5CeS9DUjtBbUJ4L0NFO0VBQU0sY0FBQTtBbkIyL0NSO0FtQjEvQ0U7RUFBTSxjQUFBO0FuQjYvQ1I7QW1CNS9DRTtFQUFNLGNBQUE7QW5CKy9DUjtBbUI5L0NFO0VBQU0sY0FBQTtBbkJpZ0RSO0FtQmhnREU7RUFBTSxjQUFBO0FuQm1nRFI7QW1CbGdERTtFQUFNLGNBQUE7QW5CcWdEUjtBbUJsZ0RFO0VBQU0sY0FBQTtBbkJxZ0RSO0FtQnBnREU7RUFBTSxjQUFBO0FuQnVnRFI7QW1CdGdERTtFQUFNLGNBQUE7QW5CeWdEUjtBbUJ4Z0RFO0VBQU0sY0FBQTtBbkIyZ0RSO0FtQjFnREU7RUFBTSxjQUFBO0FuQjZnRFI7QW1CNWdERTtFQUFNLGNBQUE7QW5CK2dEUjtBbUI1Z0RFO0VBQU0sY0FBQTtBbkIrZ0RSO0FtQjlnREU7RUFBTSxjQUFBO0FuQmloRFI7QW1CaGhERTtFQUFNLGNBQUE7QW5CbWhEUjtBbUJsaERFO0VBQU0sY0FBQTtBbkJxaERSO0FtQnBoREU7RUFBTSxjQUFBO0FuQnVoRFI7QW1CdGhERTtFQUFNLGNBQUE7QW5CeWhEUjtBbUJ4aERFO0VBQU0sY0FBQTtBbkIyaERSO0FtQjFoREU7RUFBTSxjQUFBO0FuQjZoRFI7QW1CNWhERTtFQUFNLGNBQUE7QW5CK2hEUjtBbUI5aERFO0VBQU0sY0FBQTtBbkJpaURSO0FtQmhpREU7RUFBTSxjQUFBO0FuQm1pRFI7QW1CbGlERTtFQUFNLGNBQUE7QW5CcWlEUjtBbUJsaURFO0VBQU8sY0FBQTtBbkJxaURUO0FtQnBpREU7RUFBSyxrQkFBQTtBbkJ1aURQO0FtQnBpREU7RUFDRSxjQUFBO0VBQ0EsaUJBQUE7RUFDQSxpQkFBQTtFQUNBLHlDQUFBO0FuQnNpREo7O0FtQnZoREE7RUFDRSxjQUFBO0VBQ0EsZ0JBQUE7QW5CMGhERjtBbUJ0aERFOzs7RUFFRSxjQUFBO0VBQ0EsVUFBQTtBbkJ5aERKO0FtQnBoREU7RUFDRSxhQUFBO0FuQnNoREo7QW1CamhERTs7O0VBRUUsU0FBQTtFQUNBLGdCQUFBO0FuQm9oREo7QW1CaGhERTtFQUNFLHdCQUFBO0FuQmtoREo7QW1CN2dERTtFQUNFLDBDQUFBO0VBQ0EsdURBQUE7RUFDQSx5QkFBQTtLQUFBLHNCQUFBO01BQUEscUJBQUE7VUFBQSxpQkFBQTtBbkJraERKO0FtQi9nREk7RUFDRSw2QkFBQTtFQUNBLGNBQUE7RUFDQSxpQkFBQTtBbkJpaEROO0FtQjNnREU7RUFDRSxPQUFBO0VBQ0EsZ0JBQUE7QW5CNmdESjs7QW1CcmdERTtFQUNFLGFBQUE7RUFDQSxvQkFBQTtBbkJ3Z0RKOztBb0IzdkRFO0VBQ0UscUJBQUE7QXBCOHZESjtBb0IzdkRJO0VBQ0UsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0FwQjZ2RE47QW9CcnZESTtFQUNFLGFBQUE7RUFDQSxTQUFBO0VBQ0EsV0FBQTtBcEJ1dkROO0FvQm52REk7RUFDRSxjQUFBO0VBQ0EsbUJBQUE7RUFDQSxtQkFBQTtFQUNBLG9CQUFBO0FwQnF2RE47QW9CaHZERTtFQUNFLHdDQUFBO0VBQ0Esa0JBQUE7QXBCa3ZESjtBb0IvdURJO0VBQ0UsY0FBQTtBcEJpdkROO0FvQjd1REk7RUFDRSx1QkFBQTtBcEIrdUROO0FvQjV1RE07RUFDRSxpQ0FBQTtBcEI4dURSO0FvQjF1RE07RUFDRSxhQUFBO0FwQjR1RFI7QW9CeHVETTtFQUVFLHdCQUFBO0VBQ0EsVUFBQTtBcEJ5dURSO0FvQnJ1RE07RUFFRSxnQ0FBQTtBcEJzdURSO0FvQmh1REU7RUFDRSxxQkFBQTtFQUNBLHVCQUFBO0FwQmt1REo7QW9CL3RESTtFQUNFLGVBQUE7RUFDQSxlQUFBO0VBQ0EsOERBQUE7RUFDQSxpQkFBQTtFQUNBLFdBQUE7RUFDQSx3QkFBQTtBcEJpdUROO0FvQjV0REU7RUFDRSxxQkFBQTtFQUNBLDhCQUFBO0VBQ0EsbUVBQUE7RUFJQSwwQ0FBQTtFQUVBLFlBQUE7RUFDQSxVQUFBO0VBQ0EsMkJBQUE7QXBCMHRESjtBb0J2dERJO0VBQ0UsK0JBQUE7QXBCeXRETjtBb0JydERJO0VBQ0UscUJBQUE7RUFDQSxhQUFBO0VBQ0EsY0FBQTtFQUNBLDhCQUFBO0VBQ0EseU1BQUE7VUFBQSxpTUFBQTtFQUNBLFdBQUE7QXBCd3RETjtBb0JsdERRO0VBQ0UscUJBQUE7QXBCb3REVjs7QXFCMTBERTtFQUNFLHFCQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQ0FBQTtFQUNBLHlGQUFBO0VBS0EsVUFBQTtFQUdBLGtCQUFBO0FyQnUwREo7QXFCcDBESTtFQUNFLG9CQUFBO0VBQ0Esb0JBQUE7QXJCczBETjtBcUJsMERJO0VBQ0UsMENBQUE7QXJCbzBETjtBcUIxekRFOzs7RUFHRSwwQkFBQTtFQUNBLG1GQUFBO0VBS0EsVUFBQTtFQUNBLG1CQUFBO0FyQnd6REo7QXFCcHpERTs7O0VBR0UsZ0NBQUE7QXJCc3pESjtBcUIxeURNO0VBQ0UsY0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBO0FyQjR5RFI7QXFCeHlETTtFQUNFLG1CQUFBO0VBQ0EsbUJBQUE7QXJCMHlEUjtBcUJwekRNO0VBQ0UsY0FBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RUFDQSxXQUFBO0FyQnN6RFI7QXFCbHpETTtFQUNFLG9CQUFBO0VBQ0Esb0JBQUE7QXJCb3pEUjtBcUI5ekRNO0VBQ0UsY0FBQTtFQUNBLG1CQUFBO0VBQ0EsbUJBQUE7RUFDQSxXQUFBO0FyQmcwRFI7QXFCNXpETTtFQUNFLG1CQUFBO0VBQ0EsbUJBQUE7QXJCOHpEUjtBc0JuNERFO0VBQ0UsZ0JBQUE7RUFDQSxpQkFBQTtFQUNBLGNBQUE7RUFDQSxpQ0FBQTtBdEJxNERKO0FzQnYzREU7RUFDRSxVQUFBO0F0QnkzREo7O0F1Qjk0REU7OztFQUdFLGdCQUFBO0VBQ0EsbUJBQUE7RUFDQSxxQkFBQTtFQUNBLG1DQUFBO1VBQUEsMkJBQUE7QXZCazVESjtBdUI5NERFO0VBQ0UseUJBQUE7RUFDQSxtREFBQTtBdkJnNURKO0F1QjE0REU7RUFDRSx5QkFBQTtFQUNBLG1EQUFBO0F2QjQ0REo7QXVCdDRERTtFQUNFLGNBQUE7QXZCdzRESjtBdUJyNERJO0VBQ0UsY0FBQTtBdkJ1NEROO0F1Qm40REk7RUFDRSxjQUFBO0F2QnE0RE47QXVCaDRERTtFQUNFLGNBQUE7RUFDQSxhQUFBO0VBQ0EscUJBQUE7RUFDQSxvQkFBQTtFQUNBLGdCQUFBO0F2Qms0REo7QXVCLzNESTtFQUNFLGlCQUFBO0F2Qmk0RE47QXVCNzNESTtFQUNFLG9CQUFBO0F2QiszRE47O0F3QnQ3REU7RUFHRSxjQUFBO0VBQ0EsY0FBQTtBeEJ1N0RKO0F3QnA3REk7RUFDRSx5QkFBQTtBeEJzN0ROO0F3Qmw3REk7RUFDRSxpQkFBQTtBeEJvN0ROO0F3Qmo3RE07RUFDRSxtQkFBQTtBeEJtN0RSO0F3Qjk2REk7RUFDRSxrQkFBQTtFQUNBLG1CQUFBO0F4Qmc3RE47QXdCNzZETTtFQUNFLGtCQUFBO0F4Qis2RFI7QXdCejZERTtFQUlFLGNBQUE7RUFDQSxhQUFBO0VBQ0EsZUFBQTtBeEJ3NkRKO0F3QnI2REk7RUFDRSxhQUFBO0F4QnU2RE47QXdCbjZESTtFQUNFLGtCQUFBO0VBQ0EsYUFBQTtFQUNBLFdBQUE7RUFDQSxZQUFBO0VBQ0EscURBQUE7RUFDQSxrTUFBQTtVQUFBLDBMQUFBO0VBQ0EsV0FBQTtBeEJzNkROO0F3Qm42RE07RUFDRSxjQUFBO0VBQ0EsWUFBQTtBeEJxNkRSOztBeUJqK0RFOzs7RUFHRSxXQUFBO0VBQ0Esd0JBQUE7QXpCbytESjs7QTBCcCtESTtFQUNFLHFCQUFBO0VBQ0Esd0JBQUE7RUFBQSxnQkFBQTtFQUNBLGFBQUE7RUFDQSxvQkFBQTtFQUNBLG9CQUFBO0VBQ0Esb0JBQUE7RUFDQSxnRUFBQTtFQUNBLDBDQUFBO0VBQ0EsMkJBQUE7RUFDQSx5QkFBQTtLQUFBLHNCQUFBO01BQUEscUJBQUE7VUFBQSxpQkFBQTtBMUIyK0ROOztBMkJ6L0RFO0VBR0Usd0JBQUE7RUFDQSx5QkFBQTtBM0IwL0RKOztBNEI5L0RFO0VBQ0UsYUFBQTtFQUNBLFNBQUE7RUFDQSxXQUFBO0VBQ0EseUNBQUE7QTVCaWdFSjtBNEI5L0RJO0VBQ0UsU0FBQTtFQUNBLGdCQUFBO0E1QmdnRU47QTRCMy9ERTtFQUNFLGFBQUE7RUFDQSxrQkFBQTtFQUNBLGVBQUE7RUFDQSxhQUFBO0VBQ0EsMERBQUE7RUFDQSxxQkFBQTtBNUI2L0RKO0E0QjEvREk7RUFDRSxhQUFBO0E1QjQvRE47QTRCei9ETTtFQUNFLHVDQUFBO0VBQ0EsZ0NBQUE7QTVCMi9EUjtBNEJ4L0RRO0VBQ0UsY0FBQTtFQUNBLGlCQUFBO0E1QjAvRFY7QTRCdi9EVTtFQUNFLHFCQUFBO0E1QnkvRFo7QTRCOStEYzs7Ozs7RUFDRSxpQkFBQTtBNUJvL0RoQjtBNEJqL0RnQjs7Ozs7RUFDRSx1QkFBQTtBNUJ1L0RsQjtBNEI3K0RJO0VBQ0UsV0FBQTtFQUNBLGVBQUE7RUFDQSxzQkFBQTtFQUNBLHFDQUFBO0VBR0EsdUNBQUE7RUFDQSx3Q0FBQTtFQUNBLGtCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxlQUFBO0E1QjYrRE47QTRCMStETTtFQUNFLGdDQUFBO0E1QjQrRFI7O0E2QjNqRUU7RUFDRSxrQkFBQTtFQUNBLHFCQUFBO0E3QjhqRUo7QTZCMWpFSTtFQUNFLGtCQUFBO0VBQ0EsV0FBQTtFQUNBLFVBQUE7QTdCNGpFTjtBNkJ6akVNO0VBQ0UsV0FBQTtFQUNBLGFBQUE7QTdCMmpFUjtBNkJsakVJO0VBQ0Usa0JBQUE7RUFDQSxXQUFBO0VBQ0EsWUFBQTtFQUNBLGFBQUE7RUFDQSxjQUFBO0VBQ0Esc0RBQUE7RUFDQSxvTkFBQTtVQUFBLDRNQUFBO0VBQ0EsV0FBQTtBN0JxakVOO0E2QmxqRU07RUFDRSxhQUFBO0VBQ0EsYUFBQTtBN0JvakVSO0E2Qi9pRUk7RUFDRSx5QkFBQTtFQUNBLGlSQUFBO1VBQUEseVFBQUE7QTdCa2pFTjtBNkI5aUVJO0VBQ0UsVUFBQTtFQUNBLFdBQUE7QTdCZ2pFTjtBR3YrREk7RUFHRTtJQUNFLHdDQUFBO0lBQ0EsNEJBQUE7RUh1K0ROO0VHaitEQTs7O0lBVUkscUJBQUE7RUg0OURKO0VNOW1FRjtJQWdCSSxhQUFBO0VOaW1FRjtFT2hrRUE7SUErQkksYUFBQTtFUG9pRUo7RVFwbkVGO0lBdUNJLGFBQUE7RVJnbEVGO0VVdm5FRjtJQXNDSSxhQUFBO0VWb2xFRjtFWTFuRUY7SUFNSSxhQUFBO0VadW5FRjtFZXJuRUY7SUFRSSxhQUFBO0VmZ25FRjtFaUJob0VGO0lBbUJJLGFBQUE7RWpCZ25FRjtFcUJob0VBO0lBMkJJLGFBQUE7RXJCd21FSjtBQUNGO0E4QnI5REk7RTNCb0RBO0lBQ0UsbUJBQUE7SUFDQSxnQkFBQTtFSG82REo7RUdqNkRJO0lBQ0Usd0JBQUE7RUhtNkROO0VZMWxFSTtJQUlJLGFBQUE7RVp5bEVSO0VjaGtEQTtJQWNJLGtCQUFBO0lBQ0EscUJBQUE7RWRxakRKO0VtQi8rREE7SUFRSSxpQkFBQTtJQUNBLGlCQUFBO0VuQjArREo7RW1CNzVERTtJQUNFLG1CQUFBO0VuQis1REo7RW1CNTVESTtJQUNFLHdCQUFBO0VuQjg1RE47RW1CejVERTtJQUNFLG1CQUFBO0lBQ0EsZ0JBQUE7RW5CMjVESjtFbUJ4NURJO0lBQ0Usc0JBQUE7RW5CMDVETjtFc0IxcEVBO0lBSUksc0JBQUE7SUFDQSxzQkFBQTtFdEJ5cEVKO0UwQnBxRUU7SUFjSSxhQUFBO0lBQ0Esb0JBQUE7SUFDQSxvQkFBQTtFMUJ5cEVOO0U0QnhsRUE7SUFJSSxtQkFBQTtJQUNBLFNBQUE7SUFDQSw4REFBQTtJQUNBLGdCQUFBO0U1QnVsRUo7RTRCcGxFSTtJQUNFLHdCQUFBO0U1QnNsRU47RTRCbGxFSTtJQUNFLG1CQUFBO0U1Qm9sRU47QUFDRjtBOEI3aEVJO0UxQnZKSjtJQWtCSSxpQkFBQTtFSnNxRUY7QUFDRjtBOEJsaUVJO0UxQnZKSjtJQXVCSSxlQUFBO0VKc3FFRjtBQUNGO0E4QnJoRUk7RTFCL0hBO0lBQ0UsZUFBQTtFSnVwRUo7RWFsMURFO0lBQ0UsY0FBQTtJQUNBLHFCQUFBO0VibzFESjtFYWoxREk7SUFDRSxhQUFBO0VibTFETjtFYS8wREk7SUFDRSxhQUFBO0ViaTFETjtFYTUwREU7SUFDRSxxQkFBQTtJQUNBLG9CQUFBO0ViODBESjtFYTEwREU7SUFDRSxjQUFBO0lBQ0EsaUJBQUE7SUFDQSxrREFBQTtJQUNBLGlDQUFBO0ViNDBESjtFY3pzRUE7SUFNSSxrQkFBQTtJQUNBLFdBQUE7SUFDQSxhQUFBO0lBQ0EsV0FBQTtJQUNBLFlBQUE7SUFDQSx3QkFBQTtJQUNBLHNEQUFBO0lBR0EsbUJBQUE7SUFDQSw0Q0FBQTtJQUNBLGdCQUFBO0lBQ0Esb0JBQUE7RWRvc0VKO0VjanNFSTtJQUNFLGNBQUE7SUFDQSxhQUFBO0VkbXNFTjtFYy9yRUk7SUFDRSwwQ0FBQTtJQUdBLFVBQUE7RWQrckVOO0VjdG9FQTtJQU1JLGVBQUE7SUFDQSxNQUFBO0lBQ0EsVUFBQTtJQUNBLFdBQUE7SUFDQSxZQUFBO0lBQ0EseUJBQUE7SUFDQSxvSEFBQTtJQUtBLFVBQUE7SUFDQSxVQUFBO0VkK25FSjtFYzVuRUk7SUFDRSxPQUFBO0lBQ0Esd0JBQUE7SUFDQSxrSEFBQTtJQUtBLFVBQUE7RWQwbkVOO0Vjdm5FTTtJQUNFLFFBQUE7SUFDQSxhQUFBO0VkeW5FUjtFY3BuRUk7SUFDRSxXQUFBO0lBQ0EsYUFBQTtJQUNBLDBCQUFBO0Vkc25FTjtFYzFrRUE7SUE2QkksV0FBQTtJQUNBLGNBQUE7SUFDQSxpQkFBQTtFZGdqRUo7RWMzK0RFO0lBaUJJLFdBQUE7SUFDQSxZQUFBO0VkNjlETjtFYzE5RE07SUFDRSxhQUFBO0lBQ0EsYUFBQTtFZDQ5RFI7RWN4OURNO0lBQ0UsYUFBQTtFZDA5RFI7RWMzOERFO0lBa0JJLFdBQUE7SUFDQSxhQUFBO0VkNDdETjtFY3o3RE07SUFDRSxjQUFBO0lBQ0EsWUFBQTtFZDI3RFI7RWN4NkRBO0lBU0ksV0FBQTtJQUNBLFNBQUE7RWRrNkRKO0VjM3ZEQTtJQW9CSSxhQUFBO0VkMHVESjtBQUNGO0E4QjVuRUk7RTFCakRBO0lBQ0UsV0FBQTtJQUNBLFlBQUE7SUFDQSxnREFBQTtJQUlBLFVBQUE7RUo2cUVKO0VVN3NFSTtJQUNFLGFBQUE7RVYrc0VOO0VXaHpFQTtJQVVJLGtCQUFBO0lBQ0EscUJBQUE7RVh5eUVKO0VhNXpFRjtJQXdISSw0Q0FBQTtFYnVzRUY7RWFwc0VFO0lBRUUsYUFBQTtJQUNBLGtCQUFBO0lBQ0EsTUFBQTtJQUNBLFFBQUE7SUFDQSxPQUFBO0lBQ0Esc0JBQUE7SUFDQSxZQUFBO0lBQ0EsVUFBQTtFYnFzRUo7RWE5ckVJOztJQUVFLGlCQUFBO0lBQ0EsZ0JBQUE7RWJnc0VOO0VhNXJFSTtJQUNFLGtCQUFBO0lBQ0EsY0FBQTtJQUNBLDJCQUFBO0lBQ0Esc0RBQUE7SUFDQSx3Q0FBQTtJQUNBLGdCQUFBO0lBQ0EsbUJBQUE7SUFDQSxtQkFBQTtJQUNBLGVBQUE7RWI4ckVOO0VhM3JFTTtJQUNFLGNBQUE7SUFDQSxrQkFBQTtJQUNBLFdBQUE7SUFDQSxZQUFBO0lBQ0EsYUFBQTtJQUNBLGNBQUE7SUFDQSxjQUFBO0ViNnJFUjtFYTFyRVE7SUFDRSxhQUFBO0lBQ0EsYUFBQTtFYjRyRVY7RWF2ckVNO0lBQ0UsNENBQUE7SUFDQSxrRUFBQTtJQUVBLGdCQUFBO0lBQ0EscUNBQUE7UUFBQSxpQ0FBQTtZQUFBLDZCQUFBO0ViMHJFUjtFYXZyRVE7SUFDRSxhQUFBO0VieXJFVjtFYXByRU07SUFDRSxrQkFBQTtJQUNBLDRDQUFBO0lBQ0EsaUNBQUE7RWJzckVSO0VhbnJFUTtJQUNFLGNBQUE7SUFDQSxrQkFBQTtJQUNBLFdBQUE7SUFDQSxZQUFBO0lBQ0EsYUFBQTtJQUNBLGNBQUE7SUFDQSxjQUFBO0lBQ0EsZUFBQTtJQUNBLGlCQUFBO0VicXJFVjtFYTVxRU07SUFDRSxhQUFBO0lBQ0EsYUFBQTtFYjhxRVI7RWF6cUVJO0lBQ0UsT0FBQTtFYjJxRU47RWF2cUVJO0lBQ0UsVUFBQTtJQUNBLDhEQUFBO0VieXFFTjtFYXRxRU07SUFDRSxVQUFBO0Vid3FFUjtFYXBxRU07SUFDRSxxQkFBQTtFYnNxRVI7RWFucUVRO0lBQ0UscUJBQUE7SUFDQSxvQkFBQTtFYnFxRVY7RWFocUVNO0lBQ0UsaUNBQUE7RWJrcUVSO0VhN3BFSTtJQUNFLGtCQUFBO0lBQ0EsYUFBQTtJQUNBLHNCQUFBO0ViK3BFTjtFYTVwRU07SUFDRSxrQkFBQTtJQUNBLFFBQUE7SUFDQSxhQUFBO0lBQ0EsbUJBQUE7SUFDQSxjQUFBO0lBQ0EsaUJBQUE7RWI4cEVSO0VhM3BFUTtJQUNFLGNBQUE7SUFDQSxZQUFBO0ViNnBFVjtFYWpwRVE7SUFDRSxvQkFBQTtFYm1wRVY7RWExb0VNO0lBQ0UsZ0JBQUE7RWI0b0VSO0VheG9FTTtJQUNFLGdCQUFBO0lBQ0EsNkJBQUE7RWIwb0VSO0Vhdm9FUTtJQUNFLG9CQUFBO0VieW9FVjtFYXRvRVU7SUFDRSxxQkFBQTtJQUNBLHFCQUFBO0Vid29FWjtFYW5vRVE7SUFDRSxrQkFBQTtFYnFvRVY7RWFsb0VVO0lBQ0UsbUJBQUE7SUFDQSxxQkFBQTtFYm9vRVo7RWEvbkVRO0lBQ0Usb0JBQUE7RWJpb0VWO0VhOW5FVTtJQUNFLHFCQUFBO0lBQ0EscUJBQUE7RWJnb0VaO0VhM25FUTtJQUNFLG9CQUFBO0ViNm5FVjtFYTFuRVU7SUFDRSxxQkFBQTtJQUNBLHFCQUFBO0ViNG5FWjtFYXBuRUU7SUFDRSxhQUFBO0lBQ0EsMkJBQUE7SUFDQSw0RUFBQTtJQUdBLFVBQUE7RWJvbkVKO0Vham5FSTtJQUNFLDRCQUFBO0VibW5FTjtFYTltRUU7SUFDRSx3QkFBQTtJQUNBLDZFQUFBO0lBR0EsVUFBQTtFYjhtRUo7RWVqOEVFO0lBQ0UsZUFBQTtJQUNBLE1BQUE7SUFDQSxjQUFBO0lBQ0EsY0FBQTtJQUNBLFlBQUE7SUFDQSx3QkFBQTtJQUNBLDBFQUFBO0lBR0EsNENBQUE7SUFDQSxVQUFBO0VmaThFSjtFZTk3RUk7SUFDRSxlQUFBO0lBQ0EsYUFBQTtFZmc4RU47RWU1N0VJO0lOM0JKLHFIQUFBO0lNOEJNLDhCQUFBO0VmNjdFTjtFZTE3RU07SUFDRSwrQkFBQTtFZjQ3RVI7RWV2N0VJO0lBQ0UsZ0JBQUE7RWZ5N0VOO0VldDRFSTtJQUNFLGtCQUFBO0lBQ0EsTUFBQTtJQUNBLFFBQUE7SUFDQSxTQUFBO0lBQ0EsT0FBQTtJQUNBLFNBQUE7SUFDQSw4QkFBQTtRQUFBLDBCQUFBO1lBQUEsc0JBQUE7RWYwNEVOO0VpQmxnRkY7SUFjSSxhQUFBO0VqQnUvRUY7QUFDRjtBOEJ0MkVJO0V2QmhLSjtJQUlJLHFCQUFBO0VQc2dGRjtFT25nRkU7SUFDRSxxQkFBQTtJQUNBLG9CQUFBO0VQcWdGSjtFVS82RUk7SUFDRSxhQUFBO0VWaTdFTjtFVXgwRUE7SUFLSSxjQUFBO0lBQ0EsY0FBQTtJQUNBLGtCQUFBO0lBQ0EsaUJBQUE7RVZzMEVKO0VVbjBFSTtJQUNFLGtCQUFBO0lBQ0Esb0JBQUE7RVZxMEVOO0VhN25FSTtJQUNFLHdCQUFBO0ViK25FTjtFYTNuRUk7SUFDRSxhQUFBO0ViNm5FTjtFY3poRkY7SUFVSSxpQkFBQTtFZGtoRkY7RWM5Z0ZBO0lBd0RJLGVBQUE7SUFDQSxNQUFBO0lBQ0EsT0FBQTtJQUNBLFFBQUE7SUFDQSxTQUFBO0lBQ0EsNERBQUE7SUFJQSxtREFBQTtJQUNBLGVBQUE7RWRzOUVKO0VjbjlFSTtJQUNFLFFBQUE7SUFDQSxhQUFBO0VkcTlFTjtFY2o5RUk7SUFDRSxXQUFBO0lBQ0EsWUFBQTtJQUNBLGdEQUFBO0lBSUEsVUFBQTtFZGc5RU47RWMxOEVBO0lBZ0RJLGtCQUFBO0lBQ0EsY0FBQTtJQUNBLGlCQUFBO0lBQ0EsWUFBQTtJQUNBLHNEQUFBO0VkNjVFSjtFYzE1RUk7SUFDRSxXQUFBO0VkNDVFTjtFY3g0RUE7SUFLSSxxQkFBQTtFZHM0RUo7RWNqNEVBO0lBb0NJLFdBQUE7SUFDQSxjQUFBO0lBQ0Esb0JBQUE7SUFDQSw2R0FBQTtJQUdBLHFCQUFBO0lBQ0EscURBQUE7SUFDQSxjQUFBO0lBQ0EsaUJBQUE7RWQ4MUVKO0VjMzFFSTtJQUNFLHFCQUFBO0VkNjFFTjtFY3oxRUk7SUFDRSxpQ0FBQTtFZDIxRU47RWN2MUVJO0lBQ0Usd0NBQUE7RWR5MUVOO0VjMTFFSTtJQUNFLHdDQUFBO0VkNDFFTjtFYzcxRUk7SUFDRSx3Q0FBQTtFZCsxRU47RWNoMkVJO0lBQ0Usd0NBQUE7RWRrMkVOO0VjOTFFSTtJQUNFLHNEQUFBO0VkZzJFTjtFYzUxRUk7SUFDRSxnQ0FBQTtJQUNBLDRDQUFBO0lBQ0EsaUNBQUE7SUFDQSxtQkFBQTtFZDgxRU47RWMzMUVNO0lBRUUsd0NBQUE7RWQ0MUVSO0VjOTFFTTtJQUVFLHdDQUFBO0VkKzFFUjtFY2oyRU07SUFFRSx3Q0FBQTtFZGsyRVI7RWNwMkVNO0lBRUUsd0NBQUE7RWRxMkVSO0VjMXlFTTtJQUNFLGFBQUE7RWQ0eUVSO0VjM3ZFQTtJQWVJLFdBQUE7SUFDQSx5QkFBQTtJQUNBLFVBQUE7RWQrdUVKO0VjNXVFSTtJTGxZSixpSEFBQTtJS3FZTSxVQUFBO0VkNnVFTjtFY3Z1RUE7SUEyQkksYUFBQTtFZCtzRUo7RWM1c0VJO0lBQ0UsZ0JBQUE7RWQ4c0VOO0VjMXNFSTtJQUNFLGFBQUE7SUFDQSxjQUFBO0VkNHNFTjtFY3hzRUk7SUFDRSxxREFBQTtFZDBzRU47RWN2c0VNO0lBQ0UsMkNBQUE7RWR5c0VSO0VjNXJFQTtJQVVJLG9CQUFBO0VkcXJFSjtFY2xyRUk7SUFDRSxxQkFBQTtJQUNBLHFCQUFBO0Vkb3JFTjtFY3hvRUE7SUFPSSxvQkFBQTtFZG9vRUo7RWNqb0VJO0lBQ0UscUJBQUE7SUFDQSxvQkFBQTtFZG1vRU47RWU1bEZBO0lBS0ksY0FBQTtJQUNBLGlDQUFBO0VmMGxGSjtFZXZsRkk7SUFDRSxrQ0FBQTtJQUNBLG9CQUFBO0VmeWxGTjtFZXJsRkk7SUFDRSxpQ0FBQTtFZnVsRk47QUFDRjtBOEI1Z0ZJO0V2QmhLSjtJQWVJLG9CQUFBO0VQaXFGRjtFTzlwRkU7SUFDRSxxQkFBQTtFUGdxRko7RU8zcEZBO0lBTUksb0JBQUE7SUFDQSxtQkFBQTtFUHdwRko7RVV0a0ZJO0lBQ0UsYUFBQTtFVndrRk47RVVqL0VBO0lBbUJJLG1CQUFBO0VWaStFSjtFVTk5RUk7SUFDRSxvQkFBQTtFVmcrRU47RWFoc0ZGO0lBMmFJLDJEQUFBO0Vid3hFRjtFYWx4RUk7SUFDRSx3QkFBQTtFYm94RU47RWFoeEVJO0lBQ0UsYUFBQTtFYmt4RU47RWE3d0VFO0lBQ0UsYUFBQTtFYit3RUo7RWEzd0VFO0lBQ0UsY0FBQTtFYjZ3RUo7RWF6d0VFO0lBQ0UsYUFBQTtFYjJ3RUo7RWF2d0VFO0lBQ0UsY0FBQTtJQUNBLFlBQUE7SUFDQSwyQkFBQTtFYnl3RUo7RWF0d0VJO0lBQ0UscUJBQUE7SUFDQSxhQUFBO0lBQ0EsY0FBQTtJQUNBLHVCQUFBO0Vid3dFTjtFYXB3RUk7SUFDRSx5QkFBQTtFYnN3RU47RWNyakZFO0lBU0ksY0FBQTtFZCtpRk47RWN4MEVBO0lBc0JJLGNBQUE7RWRxekVKO0VlbHFGQTtJQXNCSSxvQkFBQTtFZitvRko7RWU1b0ZJO0lBQ0UscUJBQUE7SUFDQSxvQkFBQTtFZjhvRk47RWlCN29GRTtJQUNFLGFBQUE7RWpCK29GSjtFaUJyb0ZNO0lBQ0UsY0FBQTtJQUNBLGlCQUFBO0lBQ0Esb0JBQUE7SUFDQSx3QkFBQTtFakJ1b0ZSO0VpQnBvRlE7SUFDRSxhQUFBO0VqQnNvRlY7RWlCam9GTTtJQUNFLGFBQUE7RWpCbW9GUjtFaUJob0ZRO0lBQ0UsYUFBQTtFakJrb0ZWO0VpQjluRlE7SUFDRSxjQUFBO0lBQ0EsVUFBQTtFakJnb0ZWO0VpQjduRlU7SUFDRSxhQUFBO0VqQituRlo7RWlCcm5GTTtJQUNFLGlCQUFBO0VqQnVuRlI7RWlCbm5GTTtJQUNFLGFBQUE7RWpCcW5GUjtBQUNGO0E4QjdtRkk7RWxCNUlGO0lBUUksVUFBQTtFWnF2Rko7RVk3b0ZGO0lBUUksY0FBQTtJQUNBLFdBQUE7RVp3b0ZGO0VZcm9GRTtJQUNFLFlBQUE7RVp1b0ZKO0VZNW5GRjtJQU1JLGlCQUFBO0lBQ0EsWUFBQTtFWnluRkY7RVl0bkZFO0lBQ0UsV0FBQTtFWnduRko7QUFDRjtBOEI5bUZJO0VoQnhIQTtJQUlJLG9CQUFBO0Vkc3VGTjtBQUNGO0E4QjFwRk07RWhCakZGO0lBU0ksb0JBQUE7RWRzdUZOO0FBQ0Y7QThCL3BGTTtFaEJqRkY7SUFjSSxvQkFBQTtFZHN1Rk47QUFDRjtBOEJwcUZNO0VoQmdDRjtJQUlJLGNBQUE7RWRvb0ZOO0VjeDVFQTtJQWlCSSxjQUFBO0VkMDRFSjtFY3B1RUE7SUFvQkksa0JBQUE7SUFDQSxxQkFBQTtFZG10RUo7QUFDRjtBY3I1RUk7RUFYRjtJQVlJLHdCQUFBO0VkdzVFSjtBQUNGIiwiZmlsZSI6Im1haW4uc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIkBjaGFyc2V0IFwiVVRGLThcIjtcbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5odG1sIHtcbiAgdGV4dC1zaXplLWFkanVzdDogbm9uZTtcbn1cblxuYm9keSB7XG4gIG1hcmdpbjogMDtcbn1cblxuaHIge1xuICBvdmVyZmxvdzogdmlzaWJsZTtcbiAgYm94LXNpemluZzogY29udGVudC1ib3g7XG59XG5cbmEge1xuICAtd2Via2l0LXRleHQtZGVjb3JhdGlvbi1za2lwOiBvYmplY3RzO1xufVxuXG5hLFxuYnV0dG9uLFxubGFiZWwsXG5pbnB1dCB7XG4gIC13ZWJraXQtdGFwLWhpZ2hsaWdodC1jb2xvcjogdHJhbnNwYXJlbnQ7XG59XG5cbmEge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xufVxuXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG5zdWIsXG5zdXAge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZvbnQtc2l6ZTogODAlO1xuICBsaW5lLWhlaWdodDogMDtcbiAgdmVydGljYWwtYWxpZ246IGJhc2VsaW5lO1xufVxuXG5zdWIge1xuICBib3R0b206IC0wLjI1ZW07XG59XG5cbnN1cCB7XG4gIHRvcDogLTAuNWVtO1xufVxuXG5pbWcge1xuICBib3JkZXItc3R5bGU6IG5vbmU7XG59XG5cbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbnRkLFxudGgge1xuICBmb250LXdlaWdodDogbm9ybWFsO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG5idXR0b24ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cblxuaW5wdXQge1xuICBib3JkZXI6IDA7XG4gIG91dGxpbmU6IDA7XG59XG5cbjpyb290IHtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMC44Nyk7XG4gIC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMCwgMCUsIDAlLCAwLjU0KTtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyOiBoc2xhKDAsIDAlLCAwJSwgMC4yNik7XG4gIC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3Q6IGhzbGEoMCwgMCUsIDAlLCAwLjA3KTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yOiBoc2xhKDAsIDAlLCAxMDAlLCAxKTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodDogaHNsYSgwLCAwJSwgMTAwJSwgMC43KTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVyOiBoc2xhKDAsIDAlLCAxMDAlLCAwLjMpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0ZXN0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjEyKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDIzMWRlZywgNDglLCA0OCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDIzMGRlZywgNDQlLCA2NCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjMyZGVnLCA1NCUsIDQxJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvci0tbGlnaHQ6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMjMxZGVnLCA5OSUsIDY2JSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgyMzFkZWcsIDk5JSwgNjYlLCAwLjEpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQpO1xuICAtLW1kLWNvZGUtYmctY29sb3I6IGhzbGEoMCwgMCUsIDkyLjUlLCAwLjUpO1xuICAtLW1kLWNvZGUtZmctY29sb3I6IGhzbGEoMjAwLCAxOCUsIDI2JSwgMSk7XG59XG5cbi5tZC1pY29uIHN2ZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgbWFyZ2luOiAwIGF1dG87XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cblxuYm9keSB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG5ib2R5LFxuaW5wdXQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIsIFwibGlnYVwiO1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG5jb2RlLFxucHJlLFxua2JkIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiO1xuICBmb250LWZhbWlseTogXCJDb3VyaWVyIE5ld1wiLCBDb3VyaWVyLCBtb25vc3BhY2U7XG59XG5cbi5tZC10eXBlc2V0IHtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG4gIC13ZWJraXQtcHJpbnQtY29sb3ItYWRqdXN0OiBleGFjdDtcbn1cbi5tZC10eXBlc2V0IHAsXG4ubWQtdHlwZXNldCB1bCxcbi5tZC10eXBlc2V0IG9sLFxuLm1kLXR5cGVzZXQgYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMWVtIDA7XG59XG4ubWQtdHlwZXNldCBoMSB7XG4gIG1hcmdpbjogMCAwIDJyZW07XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIGZvbnQtc2l6ZTogMS41NjI1cmVtO1xuICBmb250LXdlaWdodDogMzAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcbn1cbi5tZC10eXBlc2V0IGgyIHtcbiAgbWFyZ2luOiAycmVtIDAgMC44cmVtO1xuICBmb250LXNpemU6IDEuMjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBsaW5lLWhlaWdodDogMS40O1xufVxuLm1kLXR5cGVzZXQgaDMge1xuICBtYXJnaW46IDEuNnJlbSAwIDAuOHJlbTtcbiAgZm9udC1zaXplOiAxcmVtO1xuICBmb250LXdlaWdodDogNDAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbn1cbi5tZC10eXBlc2V0IGgyICsgaDMge1xuICBtYXJnaW4tdG9wOiAwLjhyZW07XG59XG4ubWQtdHlwZXNldCBoNCB7XG4gIG1hcmdpbjogMC44cmVtIDA7XG4gIGZvbnQtc2l6ZTogMC44cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbn1cbi5tZC10eXBlc2V0IGg1LFxuLm1kLXR5cGVzZXQgaDYge1xuICBtYXJnaW46IDAuOHJlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuLm1kLXR5cGVzZXQgaDUge1xuICB0ZXh0LXRyYW5zZm9ybTogdXBwZXJjYXNlO1xufVxuLm1kLXR5cGVzZXQgaHIge1xuICBtYXJnaW46IDEuNWVtIDA7XG4gIGJvcmRlci1ib3R0b206IDAuMDVyZW0gZG90dGVkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xufVxuLm1kLXR5cGVzZXQgYSB7XG4gIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cbi5tZC10eXBlc2V0IGEsIC5tZC10eXBlc2V0IGE6OmJlZm9yZSB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDEyNW1zO1xufVxuLm1kLXR5cGVzZXQgYTpmb2N1cywgLm1kLXR5cGVzZXQgYTpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLXR5cGVzZXQgYTo6YWZ0ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgY29udGVudDogXCIgW1wiIGF0dHIoaHJlZikgXCJdXCI7XG4gIH1cbn1cbi5tZC10eXBlc2V0IGNvZGUsXG4ubWQtdHlwZXNldCBwcmUsXG4ubWQtdHlwZXNldCBrYmQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1jb2RlLWJnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWNvZGUtZmctY29sb3IpO1xuICBmb250LXNpemU6IDg1JTtcbiAgZGlyZWN0aW9uOiBsdHI7XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtdHlwZXNldCBjb2RlLFxuLm1kLXR5cGVzZXQgcHJlLFxuLm1kLXR5cGVzZXQga2JkIHtcbiAgICB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7XG4gIH1cbn1cbi5tZC10eXBlc2V0IGNvZGUge1xuICBtYXJnaW46IDAgMC4yOTQxMTc2NDcxZW07XG4gIHBhZGRpbmc6IDAuMDczNTI5NDExOGVtIDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgYm94LXNoYWRvdzogMC4yOTQxMTc2NDcxZW0gMCAwIHZhcigtLW1kLWNvZGUtYmctY29sb3IpLCAtMC4yOTQxMTc2NDcxZW0gMCAwIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICBib3gtZGVjb3JhdGlvbi1icmVhazogY2xvbmU7XG59XG4ubWQtdHlwZXNldCBoMSBjb2RlLFxuLm1kLXR5cGVzZXQgaDIgY29kZSxcbi5tZC10eXBlc2V0IGgzIGNvZGUsXG4ubWQtdHlwZXNldCBoNCBjb2RlLFxuLm1kLXR5cGVzZXQgaDUgY29kZSxcbi5tZC10eXBlc2V0IGg2IGNvZGUge1xuICBtYXJnaW46IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLm1kLXR5cGVzZXQgYSA+IGNvZGUge1xuICBtYXJnaW46IGluaGVyaXQ7XG4gIHBhZGRpbmc6IGluaGVyaXQ7XG4gIGJvcmRlci1yYWRpdXM6IGluaXRpYWw7XG4gIGJhY2tncm91bmQtY29sb3I6IGluaGVyaXQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICBib3gtc2hhZG93OiBub25lO1xufVxuLm1kLXR5cGVzZXQgcHJlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBtYXJnaW46IDFlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuLm1kLXR5cGVzZXQgcHJlID4gY29kZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDAuNTI1cmVtIDAuNnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbiAgYm94LXNoYWRvdzogbm9uZTtcbiAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xuICBvdmVyZmxvdzogYXV0bztcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuLm1kLXR5cGVzZXQgcHJlID4gY29kZTo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICB3aWR0aDogMC4ycmVtO1xuICBoZWlnaHQ6IDAuMnJlbTtcbn1cbi5tZC10eXBlc2V0IHByZSA+IGNvZGU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtdHlwZXNldCBwcmUgPiBjb2RlOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLXR5cGVzZXQgPiBwcmUge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAubWQtdHlwZXNldCA+IHByZSA+IGNvZGUge1xuICAgIHBhZGRpbmc6IDAuNTI1cmVtIDAuOHJlbTtcbiAgfVxufVxuLm1kLXR5cGVzZXQga2JkIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwYWRkaW5nOiAwIDAuNTg4MjM1Mjk0MWVtO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGZvbnQtc2l6ZTogMC43NWVtO1xuICBsaW5lLWhlaWdodDogMS41O1xuICBib3gtc2hhZG93OiAwIDAuMXJlbSAwIDAuMDVyZW0gdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlciksIDAgMC4xcmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlciksIGluc2V0IDAgLTAuMXJlbSAwLjJyZW0gdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbn1cbi5tZC10eXBlc2V0IG1hcmsge1xuICBtYXJnaW46IDAgMC4yNWVtO1xuICBwYWRkaW5nOiAwLjA2MjVlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyMzUsIDU5LCAwLjUpO1xuICBib3gtc2hhZG93OiAwLjI1ZW0gMCAwIHJnYmEoMjU1LCAyMzUsIDU5LCAwLjUpLCAtMC4yNWVtIDAgMCByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xufVxuLm1kLXR5cGVzZXQgYWJiciB7XG4gIGJvcmRlci1ib3R0b206IDAuMDVyZW0gZG90dGVkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICBjdXJzb3I6IGhlbHA7XG59XG4ubWQtdHlwZXNldCBzbWFsbCB7XG4gIG9wYWNpdHk6IDAuNzU7XG59XG4ubWQtdHlwZXNldCBzdXAsXG4ubWQtdHlwZXNldCBzdWIge1xuICBtYXJnaW4tbGVmdDogMC4wNzgxMjVlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCBzdXAsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3ViIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjA3ODEyNWVtO1xuICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IGJsb2NrcXVvdGUge1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbiAgYm9yZGVyLWxlZnQ6IDAuMnJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCBibG9ja3F1b3RlIHtcbiAgcGFkZGluZy1yaWdodDogMC42cmVtO1xuICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIGJvcmRlci1yaWdodDogMC4ycmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBib3JkZXItbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IHVsIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBkaXNjO1xufVxuLm1kLXR5cGVzZXQgdWwsXG4ubWQtdHlwZXNldCBvbCB7XG4gIG1hcmdpbi1sZWZ0OiAwLjYyNWVtO1xuICBwYWRkaW5nOiAwO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHVsLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IG9sIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjYyNWVtO1xuICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IHVsIG9sLFxuLm1kLXR5cGVzZXQgb2wgb2wge1xuICBsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLWFscGhhO1xufVxuLm1kLXR5cGVzZXQgdWwgb2wgb2wsXG4ubWQtdHlwZXNldCBvbCBvbCBvbCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItcm9tYW47XG59XG4ubWQtdHlwZXNldCB1bCBsaSxcbi5tZC10eXBlc2V0IG9sIGxpIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gIG1hcmdpbi1sZWZ0OiAxLjI1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdWwgbGksXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgb2wgbGkge1xuICBtYXJnaW4tcmlnaHQ6IDEuMjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCB1bCBsaSBwLFxuLm1kLXR5cGVzZXQgdWwgbGkgYmxvY2txdW90ZSxcbi5tZC10eXBlc2V0IG9sIGxpIHAsXG4ubWQtdHlwZXNldCBvbCBsaSBibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAwLjVlbSAwO1xufVxuLm1kLXR5cGVzZXQgdWwgbGk6bGFzdC1jaGlsZCxcbi5tZC10eXBlc2V0IG9sIGxpOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwO1xufVxuLm1kLXR5cGVzZXQgdWwgbGkgdWwsXG4ubWQtdHlwZXNldCB1bCBsaSBvbCxcbi5tZC10eXBlc2V0IG9sIGxpIHVsLFxuLm1kLXR5cGVzZXQgb2wgbGkgb2wge1xuICBtYXJnaW46IDAuNWVtIDAgMC41ZW0gMC42MjVlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCB1bCBsaSB1bCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCB1bCBsaSBvbCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCBvbCBsaSB1bCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCBvbCBsaSBvbCB7XG4gIG1hcmdpbi1yaWdodDogMC42MjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCBkZCB7XG4gIG1hcmdpbjogMWVtIDAgMWVtIDEuODc1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgZGQge1xuICBtYXJnaW4tcmlnaHQ6IDEuODc1ZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgaWZyYW1lLFxuLm1kLXR5cGVzZXQgaW1nLFxuLm1kLXR5cGVzZXQgc3ZnIHtcbiAgbWF4LXdpZHRoOiAxMDAlO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgYmFja2dyb3VuZDogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMC41cmVtIHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMCAwLjA1cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSArICoge1xuICBtYXJnaW4tdG9wOiAxLjVlbTtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0aDpub3QoW2FsaWduXSksXG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGQ6bm90KFthbGlnbl0pIHtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGg6bm90KFthbGlnbl0pLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0ZDpub3QoW2FsaWduXSkge1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0aCB7XG4gIG1pbi13aWR0aDogNXJlbTtcbiAgcGFkZGluZzogMC42cmVtIDAuOHJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGQge1xuICBwYWRkaW5nOiAwLjZyZW0gMC44cmVtO1xuICBib3JkZXItdG9wOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgdmVydGljYWwtYWxpZ246IHRvcDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB0ciB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTI1bXM7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdHI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuMDM1KTtcbiAgYm94LXNoYWRvdzogMCAwLjA1cmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcikgaW5zZXQ7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdHI6Zmlyc3QtY2hpbGQgdGQge1xuICBib3JkZXItdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIGEge1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG4ubWQtdHlwZXNldF9fc2Nyb2xsd3JhcCB7XG4gIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gIG92ZXJmbG93LXg6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbi5tZC10eXBlc2V0IC5tZC10eXBlc2V0X190YWJsZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG4gIHBhZGRpbmc6IDAgMC44cmVtO1xufVxuLm1kLXR5cGVzZXQgLm1kLXR5cGVzZXRfX3RhYmxlIHRhYmxlIHtcbiAgZGlzcGxheTogdGFibGU7XG4gIHdpZHRoOiAxMDAlO1xuICBtYXJnaW46IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbmh0bWwge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDEyNSU7XG4gIG92ZXJmbG93LXg6IGhpZGRlbjtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEwMGVtKSB7XG4gIGh0bWwge1xuICAgIGZvbnQtc2l6ZTogMTM3LjUlO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjVlbSkge1xuICBodG1sIHtcbiAgICBmb250LXNpemU6IDE1MCU7XG4gIH1cbn1cblxuYm9keSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIGZvbnQtc2l6ZTogMC41cmVtO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIGJvZHlbZGF0YS1tZC1zdGF0ZT1sb2NrXSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICB9XG59XG5cbmhyIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIGhlaWdodDogMC4wNXJlbTtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwO1xufVxuXG4ubWQtZ3JpZCB7XG4gIG1heC13aWR0aDogNjFyZW07XG4gIG1hcmdpbi1yaWdodDogYXV0bztcbiAgbWFyZ2luLWxlZnQ6IGF1dG87XG59XG5cbi5tZC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi5tZC1tYWluIHtcbiAgZmxleC1ncm93OiAxO1xufVxuLm1kLW1haW5fX2lubmVyIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBwYWRkaW5nLXRvcDogMS41cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC4wNXJlbTtcbn1cblxuLm1kLWVsbGlwc2lzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG4ubWQtdG9nZ2xlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1kLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgdHJhbnNpdGlvbjogd2lkdGggMG1zIDI1MG1zLCBoZWlnaHQgMG1zIDI1MG1zLCBvcGFjaXR5IDI1MG1zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDM7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cblxuLm1kLXNraXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG1hcmdpbjogMC41cmVtO1xuICBwYWRkaW5nOiAwLjNyZW0gMC41cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC40cmVtKTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIG9wYWNpdHk6IDA7XG59XG4ubWQtc2tpcDpmb2N1cyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTc1bXMgNzVtcztcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBwYWdlIHtcbiAgbWFyZ2luOiAyNW1tO1xufVxuLm1kLWFubm91bmNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG4ubWQtYW5ub3VuY2VfX2lubmVyIHtcbiAgbWluLWhlaWdodDogMi40cmVtO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcbn1cblxuLm1kLWNsaXBib2FyZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjRyZW07XG4gIHJpZ2h0OiAwLjRyZW07XG4gIHdpZHRoOiAxLjJyZW07XG4gIGhlaWdodDogMS4ycmVtO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcztcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDE7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbkBtZWRpYSBwcmludCB7XG4gIC5tZC1jbGlwYm9hcmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbi5tZC1jbGlwYm9hcmQgc3ZnIHtcbiAgd2lkdGg6IDAuOXJlbTtcbiAgaGVpZ2h0OiAwLjlyZW07XG59XG5wcmU6aG92ZXIgLm1kLWNsaXBib2FyZCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5wcmUgLm1kLWNsaXBib2FyZDpmb2N1cywgcHJlIC5tZC1jbGlwYm9hcmQ6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtY29udGVudCB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxMi4xcmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtY29udGVudCB7XG4gICAgbWFyZ2luLXJpZ2h0OiBpbml0aWFsO1xuICAgIG1hcmdpbi1sZWZ0OiAxMi4xcmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tbGVmdDogMTIuMXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWNvbnRlbnQge1xuICAgIG1hcmdpbi1yaWdodDogMTIuMXJlbTtcbiAgfVxufVxuLm1kLWNvbnRlbnRfX2lubmVyIHtcbiAgbWFyZ2luOiAwIDAuOHJlbSAxLjJyZW07XG4gIHBhZGRpbmctdG9wOiAwLjZyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1jb250ZW50X19pbm5lciB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxLjJyZW07XG4gICAgbWFyZ2luLWxlZnQ6IDEuMnJlbTtcbiAgfVxufVxuLm1kLWNvbnRlbnRfX2lubmVyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwLjRyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtY29udGVudF9faW5uZXIgPiA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4ubWQtY29udGVudF9fYnV0dG9uIHtcbiAgbWFyZ2luOiAwLjRyZW0gMDtcbiAgbWFyZ2luLWxlZnQ6IDAuNHJlbTtcbiAgcGFkZGluZzogMDtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gIGZsb2F0OiBsZWZ0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLXR5cGVzZXQgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWQtZGlhbG9nIHtcbiAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICByaWdodDogMC44cmVtO1xuICBib3R0b206IDAuOHJlbTtcbiAgbGVmdDogaW5pdGlhbDtcbiAgbWluLXdpZHRoOiAxMS4xcmVtO1xuICBwYWRkaW5nOiAwLjRyZW0gMC42cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgNDAwbXM7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogMjtcbn1cbltkaXI9cnRsXSAubWQtZGlhbG9nIHtcbiAgcmlnaHQ6IGluaXRpYWw7XG4gIGxlZnQ6IDAuOHJlbTtcbn1cbi5tZC1kaWFsb2dbZGF0YS1tZC1zdGF0ZT1vcGVuXSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjA3NSwgMC44NSwgMC4xNzUsIDEpLCBvcGFjaXR5IDQwMG1zO1xuICBvcGFjaXR5OiAxO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLWRpYWxvZyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWQtaGVhZGVyIHtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgaGVpZ2h0OiAyLjRyZW07XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMsIGNvbG9yIDI1MG1zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICBib3gtc2hhZG93OiAwIDAgMC4ycmVtIHJnYmEoMCwgMCwgMCwgMCksIDAgMC4ycmVtIDAuNHJlbSByZ2JhKDAsIDAsIDAsIDApO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHotaW5kZXg6IDI7XG59XG4ubm8tanMgLm1kLWhlYWRlciB7XG4gIHRyYW5zaXRpb246IG5vbmU7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtaGVhZGVyW2RhdGEtbWQtc3RhdGU9c2hhZG93XSB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMsIGNvbG9yIDI1MG1zLCBib3gtc2hhZG93IDI1MG1zO1xuICBib3gtc2hhZG93OiAwIDAgMC4ycmVtIHJnYmEoMCwgMCwgMCwgMC4xKSwgMCAwLjJyZW0gMC40cmVtIHJnYmEoMCwgMCwgMCwgMC4yKTtcbn1cbkBtZWRpYSBwcmludCB7XG4gIC5tZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLm1kLWhlYWRlci1uYXYge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nOiAwIDAuMnJlbTtcbn1cbi5tZC1oZWFkZXItbmF2X19idXR0b24ge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXM7XG4gIGN1cnNvcjogcG9pbnRlcjtcbiAgei1pbmRleDogMTtcbn1cbltkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fYnV0dG9uIHN2ZyB7XG4gIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbn1cbi5tZC1oZWFkZXItbmF2X19idXR0b246Zm9jdXMsIC5tZC1oZWFkZXItbmF2X19idXR0b246aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtaGVhZGVyLW5hdl9fYnV0dG9uLm1kLWxvZ28ge1xuICBtYXJnaW46IDAuMnJlbTtcbiAgcGFkZGluZzogMC40cmVtO1xufVxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbi5tZC1sb2dvIGltZyxcbi5tZC1oZWFkZXItbmF2X19idXR0b24ubWQtbG9nbyBzdmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEuMnJlbTtcbiAgaGVpZ2h0OiAxLjJyZW07XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cbi5uby1qcyAubWQtaGVhZGVyLW5hdl9fYnV0dG9uW2Zvcj1fX3NlYXJjaF0ge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fYnV0dG9uW2Zvcj1fX3NlYXJjaF0ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fYnV0dG9uLm1kLWxvZ28ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2LjI1ZW0pIHtcbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbltmb3I9X19kcmF3ZXJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4ubWQtaGVhZGVyLW5hdl9fdG9waWMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigxLCAwLjcsIDAuMSwgMC4xKSwgb3BhY2l0eSAxNTBtcztcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogLTE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgcG9zaXRpb246IGluaXRpYWw7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGxpbmUtaGVpZ2h0OiAyLjRyZW07XG59XG4ubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMSwgMC43LCAwLjEsIDAuMSksIG9wYWNpdHkgMTUwbXM7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbltkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZVtkYXRhLW1kLXN0YXRlPWFjdGl2ZV0gLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICBvcGFjaXR5OiAxO1xuICB6LWluZGV4OiAwO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSA+IC5tZC1oZWFkZXItbmF2X19lbGxpcHNpcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fc291cmNlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICB3aWR0aDogMTEuN3JlbTtcbiAgICBtYXgtd2lkdGg6IDExLjdyZW07XG4gICAgbWFyZ2luLWxlZnQ6IDFyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIG1hcmdpbi1yaWdodDogMXJlbTtcbiAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYuMjVlbSkge1xuICAubWQtaGVhZGVyLW5hdl9fc291cmNlIHtcbiAgICBtYXJnaW4tbGVmdDogMS40cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fc291cmNlIHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEuNHJlbTtcbiAgfVxufVxuXG4ubWQtaGVybyB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZXJvX19pbm5lciB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMC40cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMDBtcztcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICAubWQtaGVyb19faW5uZXIge1xuICAgIG1hcmdpbi10b3A6IDIuNHJlbTtcbiAgICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG4gIH1cbn1cbltkYXRhLW1kLXN0YXRlPWhpZGRlbl0gLm1kLWhlcm9fX2lubmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjYyNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgMTAwbXMgMG1zO1xuICBvcGFjaXR5OiAwO1xufVxuLm1kLWhlcm8tLWV4cGFuZCAubWQtaGVyb19faW5uZXIge1xuICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG59XG5cbi5tZC1mb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLWZvb3RlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4ubWQtZm9vdGVyLW5hdl9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMS40cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC40cmVtO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDVlbSkge1xuICAubWQtZm9vdGVyLW5hdl9fbGluayB7XG4gICAgd2lkdGg6IDUwJTtcbiAgfVxufVxuLm1kLWZvb3Rlci1uYXZfX2xpbms6Zm9jdXMsIC5tZC1mb290ZXItbmF2X19saW5rOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYge1xuICB3aWR0aDogMjUlO1xuICBmbG9hdDogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiB7XG4gIGZsb2F0OiByaWdodDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYgLm1kLWZvb3Rlci1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4ubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCB7XG4gIHdpZHRoOiA3NSU7XG4gIGZsb2F0OiByaWdodDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5bZGlyPXJ0bF0gLm1kLWZvb3Rlci1uYXZfX2xpbmstLW5leHQge1xuICBmbG9hdDogbGVmdDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtZm9vdGVyLW5hdl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjRyZW0pO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBsaW5lLWhlaWdodDogMi40cmVtO1xufVxuLm1kLWZvb3Rlci1uYXZfX2J1dHRvbiB7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG59XG4ubWQtZm9vdGVyLW5hdl9fZGlyZWN0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLXRvcDogLTFyZW07XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4ubWQtZm9vdGVyLW1ldGEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1mb290ZXItbWV0YV9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbn1cbmh0bWwgLm1kLWZvb3Rlci1tZXRhLm1kLXR5cGVzZXQgYTpmb2N1cywgaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuXG4ubWQtZm9vdGVyLWNvcHlyaWdodCB7XG4gIG1hcmdpbjogMCAwLjZyZW07XG4gIHBhZGRpbmc6IDAuNHJlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlcik7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1ZW0pIHtcbiAgLm1kLWZvb3Rlci1jb3B5cmlnaHQge1xuICAgIG1heC13aWR0aDogNzUlO1xuICAgIGZsb2F0OiBsZWZ0O1xuICB9XG4gIFtkaXI9cnRsXSAubWQtZm9vdGVyLWNvcHlyaWdodCB7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG59XG4ubWQtZm9vdGVyLWNvcHlyaWdodF9faGlnaGxpZ2h0IHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbn1cblxuLm1kLWZvb3Rlci1zb2NpYWwge1xuICBtYXJnaW46IDAgMC40cmVtO1xuICBwYWRkaW5nOiAwLjJyZW0gMCAwLjZyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NWVtKSB7XG4gIC5tZC1mb290ZXItc29jaWFsIHtcbiAgICBwYWRkaW5nOiAwLjZyZW0gMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1mb290ZXItc29jaWFsIHtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxufVxuLm1kLWZvb3Rlci1zb2NpYWxfX2xpbmsge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHdpZHRoOiAxLjZyZW07XG4gIGhlaWdodDogMS42cmVtO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcztcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xufVxuLm1kLWZvb3Rlci1zb2NpYWxfX2xpbms6OmJlZm9yZSB7XG4gIGxpbmUtaGVpZ2h0OiAxLjk7XG59XG4ubWQtZm9vdGVyLXNvY2lhbF9fbGluayBzdmcge1xuICB3aWR0aDogMC44cmVtO1xuICB2ZXJ0aWNhbC1hbGlnbjogLTI1JTtcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuXG4ubWQtbmF2IHtcbiAgZm9udC1zaXplOiAwLjdyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjM7XG59XG4ubWQtbmF2X190aXRsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG4ubWQtbmF2X190aXRsZSAubWQtbmF2X19idXR0b24ge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uIGltZyB7XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IGF1dG87XG59XG4ubWQtbmF2X190aXRsZSAubWQtbmF2X19idXR0b24ubWQtbG9nbyBzdmcgaW1nLFxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uLm1kLWxvZ28gc3ZnIHN2ZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuLm1kLW5hdl9fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi5tZC1uYXZfX2l0ZW0ge1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbn1cbi5tZC1uYXZfX2l0ZW06bGFzdC1jaGlsZCB7XG4gIHBhZGRpbmctYm90dG9tOiAwLjZyZW07XG59XG4ubWQtbmF2X19pdGVtIC5tZC1uYXZfX2l0ZW0ge1xuICBwYWRkaW5nLXJpZ2h0OiAwO1xufVxuW2Rpcj1ydGxdIC5tZC1uYXZfX2l0ZW0gLm1kLW5hdl9faXRlbSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwO1xufVxuLm1kLW5hdl9faXRlbSAubWQtbmF2X19pdGVtOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cbi5tZC1uYXZfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogMC42MjVlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXM7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbn1cbmh0bWwgLm1kLW5hdl9fbGlua1tmb3I9X190b2NdIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbmh0bWwgLm1kLW5hdl9fbGlua1tmb3I9X190b2NdIH4gLm1kLW5hdiB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtbmF2X19saW5rW2RhdGEtbWQtc3RhdGU9Ymx1cl0ge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuLm1kLW5hdl9faXRlbSAubWQtbmF2X19saW5rLS1hY3RpdmUge1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG59XG4ubWQtbmF2X19pdGVtLS1uZXN0ZWQgPiAubWQtbmF2X19saW5rIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4ubWQtbmF2X19saW5rOmZvY3VzLCAubWQtbmF2X19saW5rOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtbmF2X19zb3VyY2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzYuMTg3NWVtKSB7XG4gIC5tZC1uYXYge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnksIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdiB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwO1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgei1pbmRleDogMTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlLFxuLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtIHtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgICBsaW5lLWhlaWdodDogMS41O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBoZWlnaHQ6IDUuNnJlbTtcbiAgICBwYWRkaW5nOiAzcmVtIDAuOHJlbSAwLjJyZW07XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBsaW5lLWhlaWdodDogMi40cmVtO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9faWNvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC40cmVtO1xuICAgIGxlZnQ6IDAuNHJlbTtcbiAgICB3aWR0aDogMS4ycmVtO1xuICAgIGhlaWdodDogMS4ycmVtO1xuICAgIG1hcmdpbjogMC4ycmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2ljb24ge1xuICAgIHJpZ2h0OiAwLjRyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIH4gLm1kLW5hdl9fbGlzdCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCAwLjA1cmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSB+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtOmZpcnN0LWNoaWxkIHtcbiAgICBib3JkZXItdG9wOiAwO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlW2Zvcj1fX2RyYXdlcl0gLm1kLW5hdl9fYnV0dG9uIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwLjJyZW07XG4gICAgbGVmdDogMC4ycmVtO1xuICAgIHdpZHRoOiAzLjJyZW07XG4gICAgaGVpZ2h0OiAzLjJyZW07XG4gICAgbWFyZ2luOiAwLjJyZW07XG4gICAgcGFkZGluZzogMC40cmVtO1xuICAgIGZvbnQtc2l6ZTogMi40cmVtO1xuICB9XG4gIGh0bWwgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSAubWQtbmF2X19idXR0b24ge1xuICAgIHJpZ2h0OiAwLjJyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2xpc3Qge1xuICAgIGZsZXg6IDE7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGJvcmRlci10b3A6IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2l0ZW0ge1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtLS1uZXN0ZWQgPiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjRyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMC44cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMi40cmVtO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbS0tYWN0aXZlID4gLm1kLW5hdl9fbGluayB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fbGluayB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbi10b3A6IDA7XG4gICAgcGFkZGluZzogMC42cmVtIDAuOHJlbTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2xpbmsgLm1kLW5hdl9faWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogNTAlO1xuICAgIHJpZ2h0OiAwLjZyZW07XG4gICAgbWFyZ2luLXRvcDogLTAuNnJlbTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IDEuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19saW5rIC5tZC1uYXZfX2ljb24ge1xuICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgIGxlZnQ6IDAuNnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pY29uIHN2ZyB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgtMSk7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdl9fbGluayB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IHtcbiAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAxLjRyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMS40cmVtO1xuICAgIHBhZGRpbmctbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAycmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAyLjZyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuNnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDMuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAzLjJyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXZfX3RvZ2dsZSB+IC5tZC1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC44LCAwLCAwLjYsIDEpLCBvcGFjaXR5IDEyNW1zIDUwbXM7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdl9fdG9nZ2xlIH4gLm1kLW5hdiB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgfVxuICAubWQtbmF2X190b2dnbGU6Y2hlY2tlZCB+IC5tZC1uYXYge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgb3BhY2l0eSAxMjVtcyAxMjVtcztcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuNHJlbTtcbiAgfVxuICBodG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSArIC5tZC1uYXZfX2xpbmsge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10gfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIGh0bWwgW2Rpcj1ydGxdIC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgfVxuICAubWQtbmF2X19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDAgMC4ycmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcmspO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fdG9jXSB7XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICB9XG4gIC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2X190aXRsZSAubWQtbmF2X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1uYXYge1xuICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMjUwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9faWNvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtbmF2X190b2dnbGUgfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gLm1kLW5hdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdiA+IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX2ljb24ge1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXM7XG4gIH1cbiAgLm1kLW5hdl9faWNvbiBzdmcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMC45cmVtO1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xcmVtO1xuICB9XG4gIC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCAubWQtbmF2X190b2dnbGU6Y2hlY2tlZCB+IC5tZC1uYXZfX2xpbmsgLm1kLW5hdl9faWNvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVaKDkwZGVnKTtcbiAgfVxufVxuXG4ubWQtc2VhcmNoIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm5vLWpzIC5tZC1zZWFyY2gge1xuICBkaXNwbGF5OiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICAubWQtc2VhcmNoIHtcbiAgICBwYWRkaW5nOiAwLjJyZW0gMDtcbiAgfVxufVxuLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IDE7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC4ycmVtO1xuICAgIGxlZnQ6IC0yLjJyZW07XG4gICAgd2lkdGg6IDJyZW07XG4gICAgaGVpZ2h0OiAycmVtO1xuICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMzAwbXMgMTAwbXMsIG9wYWNpdHkgMjAwbXMgMjAwbXM7XG4gICAgYm9yZGVyLXJhZGl1czogMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICByaWdodDogLTIuMnJlbTtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX292ZXJsYXkge1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcywgb3BhY2l0eSAxMDBtcztcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAyOS45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSg0NSk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDMwZW0pIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSg2MCk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDQ1ZW0pIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSg3NSk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwbXMgMjUwbXMsIGhlaWdodCAwbXMgMjUwbXMsIG9wYWNpdHkgMjUwbXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbn1cbi5tZC1zZWFyY2hfX2lubmVyIHtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIC5tZC1zZWFyY2hfX2lubmVyIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiAwO1xuICAgIGxlZnQ6IDEwMCU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCg1JSk7XG4gICAgdHJhbnNpdGlvbjogcmlnaHQgMG1zIDMwMG1zLCBsZWZ0IDBtcyAzMDBtcywgdHJhbnNmb3JtIDE1MG1zIDE1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTUwbXMgMTUwbXM7XG4gICAgb3BhY2l0eTogMDtcbiAgICB6LWluZGV4OiAyO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lubmVyIHtcbiAgICBsZWZ0OiAwO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB0cmFuc2l0aW9uOiByaWdodCAwbXMgMG1zLCBsZWZ0IDBtcyAwbXMsIHRyYW5zZm9ybSAxNTBtcyAxNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksIG9wYWNpdHkgMTUwbXMgMTUwbXM7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICBbZGlyPXJ0bF0gW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHJpZ2h0OiAwO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgaHRtbCBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHJpZ2h0OiAxMDAlO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01JSk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTEuN3JlbTtcbiAgICBwYWRkaW5nOiAwLjFyZW0gMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHdpZHRoOiAyMy40cmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lubmVyIHtcbiAgICB3aWR0aDogMzQuNHJlbTtcbiAgfVxufVxuLm1kLXNlYXJjaF9fZm9ybSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fZm9ybSB7XG4gICAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICB9XG59XG4ubWQtc2VhcmNoX19pbnB1dCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMCAyLjJyZW0gMCAzLjZyZW07XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICB6LWluZGV4OiAyO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgcGFkZGluZzogMCAzLjZyZW0gMCAyLjJyZW07XG59XG4ubWQtc2VhcmNoX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSk7XG59XG4ubWQtc2VhcmNoX19pbnB1dCB+IC5tZC1zZWFyY2hfX2ljb24sIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG4ubWQtc2VhcmNoX19pbnB1dDo6LW1zLWNsZWFyIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5LjkzNzVlbSkge1xuICAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyLjRyZW07XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9faW5wdXQge1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMS44cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMi4ycmVtO1xuICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBjb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSk7XG4gICAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgIGNvbG9yOiBpbmhlcml0O1xuICAgIGZvbnQtc2l6ZTogMC44cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgcGFkZGluZy1yaWdodDogMi4ycmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0ICsgLm1kLXNlYXJjaF9faWNvbiB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICBib3JkZXItcmFkaXVzOiAwLjFyZW0gMC4xcmVtIDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dCArIC5tZC1zZWFyY2hfX2ljb24sIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxufVxuLm1kLXNlYXJjaF9faWNvbiB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEuMnJlbTtcbiAgaGVpZ2h0OiAxLjJyZW07XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSwgb3BhY2l0eSAyNTBtcztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB6LWluZGV4OiAyO1xufVxuLm1kLXNlYXJjaF9faWNvbjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbi5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSB7XG4gIHRvcDogMC4zcmVtO1xuICBsZWZ0OiAwLjVyZW07XG59XG5bZGlyPXJ0bF0gLm1kLXNlYXJjaF9faWNvbltmb3I9X19zZWFyY2hdIHtcbiAgcmlnaHQ6IDAuNXJlbTtcbiAgbGVmdDogaW5pdGlhbDtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSB7XG4gICAgdG9wOiAwLjZyZW07XG4gICAgbGVmdDogMC44cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0ge1xuICAgIHJpZ2h0OiAwLjhyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0gc3ZnOmZpcnN0LWNoaWxkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmc6bGFzdC1jaGlsZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gIHRvcDogMC4zcmVtO1xuICByaWdodDogMC41cmVtO1xuICB0cmFuc2Zvcm06IHNjYWxlKDAuNzUpO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMTUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICBvcGFjaXR5OiAwO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgcmlnaHQ6IGluaXRpYWw7XG4gIGxlZnQ6IDAuNXJlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDU5LjkzNzVlbSkge1xuICAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgICB0b3A6IDAuNnJlbTtcbiAgICByaWdodDogMC44cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICBsZWZ0OiAwLjhyZW07XG4gIH1cbn1cbltkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0OnZhbGlkIH4gLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIG9wYWNpdHk6IDE7XG4gIHBvaW50ZXItZXZlbnRzOiBpbml0aWFsO1xufVxuW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5wdXQ6dmFsaWQgfiAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgYm9yZGVyLXJhZGl1czogMCAwIDAuMXJlbSAwLjFyZW07XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHotaW5kZXg6IDE7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgICB0b3A6IDIuNHJlbTtcbiAgICBib3R0b206IDA7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgICB0b3A6IDEuOXJlbTtcbiAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDQwMG1zO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3V0cHV0IHtcbiAgICBib3gtc2hhZG93OiAwIDZweCAxMHB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggMThweCAwIHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgM3B4IDVweCAtMXB4IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG4ubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgYm94LXNoYWRvdzogaW5zZXQgMCAwLjA1cmVtIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBvdmVyZmxvdy15OiBhdXRvO1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5AbWVkaWEgKG1heC1yZXNvbHV0aW9uOiAxZHBweCkge1xuICAubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVooMCk7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDIzLjRyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDc2LjI1ZW0pIHtcbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDM0LjRyZW07XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgbWF4LWhlaWdodDogMDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgICBtYXgtaGVpZ2h0OiA3NXZoO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogMC4ycmVtO1xuICAgIGhlaWdodDogMC4ycmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgfVxuICAubWQtc2VhcmNoX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgfVxufVxuXG4ubWQtc2VhcmNoLXJlc3VsdCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgcGFkZGluZzogMCAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBsaW5lLWhlaWdodDogMS44cmVtO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX21ldGEge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXItdG9wOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgbGlzdC1zdHlsZTogbm9uZTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19pdGVtIHtcbiAgYm94LXNoYWRvdzogMCAtMC4wNXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIG91dGxpbmU6IDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmZvY3VzLCAubWQtc2VhcmNoLXJlc3VsdF9fbGluazpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQpO1xufVxuLm1kLXNlYXJjaC1yZXN1bHRfX2xpbms6Zm9jdXMgLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGU6OmJlZm9yZSwgLm1kLXNlYXJjaC1yZXN1bHRfX2xpbms6aG92ZXIgLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGU6OmJlZm9yZSB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmxhc3QtY2hpbGQgLm1kLXNlYXJjaC1yZXN1bHRfX3RlYXNlciB7XG4gIG1hcmdpbi1ib3R0b206IDAuNnJlbTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuOHJlbTtcbiAgfVxufVxuLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUtLWRvY3VtZW50IC5tZC1zZWFyY2gtcmVzdWx0X190aXRsZSB7XG4gIG1hcmdpbjogMC41NXJlbSAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBtYXJnaW46IDAuMXJlbTtcbiAgcGFkZGluZzogMC40cmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGluaXRpYWw7XG59XG5bZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2ljb24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNTkuOTM3NWVtKSB7XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fdGl0bGUge1xuICBtYXJnaW46IDAuNWVtIDA7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgbWF4LWhlaWdodDogMS42NXJlbTtcbiAgbWFyZ2luOiAwLjVlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICAtd2Via2l0LWJveC1vcmllbnQ6IHZlcnRpY2FsO1xuICAtd2Via2l0LWxpbmUtY2xhbXA6IDI7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLXNlYXJjaC1yZXN1bHRfX3RlYXNlciB7XG4gICAgbWF4LWhlaWdodDogMi41cmVtO1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkgYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICAubWQtc2VhcmNoLXJlc3VsdF9fdGVhc2VyIHtcbiAgICBtYXgtaGVpZ2h0OiAyLjVyZW07XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICB9XG59XG4ubWQtc2VhcmNoLXJlc3VsdCBlbSB7XG4gIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7XG59XG5cbi5tZC1zaWRlYmFyIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTIuMXJlbTtcbiAgcGFkZGluZzogMS4ycmVtIDA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtc2lkZWJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXNpZGViYXJbZGF0YS1tZC1zdGF0ZT1sb2NrXSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAyLjRyZW07XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgLm1kLXNpZGViYXItLXByaW1hcnkge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogLTEyLjFyZW07XG4gICAgd2lkdGg6IDEyLjFyZW07XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgYm94LXNoYWRvdyAyNTBtcztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICB6LWluZGV4OiAzO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2lkZWJhci0tcHJpbWFyeSB7XG4gICAgcmlnaHQ6IC0xMi4xcmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1jb250YWluZXIgLm1kLXNpZGViYXItLXByaW1hcnkge1xuICAgIGJveC1zaGFkb3c6IDAgOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDAgM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC40KTtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMTIuMXJlbSk7XG4gIH1cbiAgW2Rpcj1ydGxdIFtkYXRhLW1kLXRvZ2dsZT1kcmF3ZXJdOmNoZWNrZWQgfiAubWQtY29udGFpbmVyIC5tZC1zaWRlYmFyLS1wcmltYXJ5IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTEyLjFyZW0pO1xuICB9XG4gIC5tZC1zaWRlYmFyLS1wcmltYXJ5IC5tZC1zaWRlYmFyX19zY3JvbGx3cmFwIHtcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICB9XG59XG4ubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDYwZW0pIHtcbiAgLm1kLXNpZGViYXItLXNlY29uZGFyeSB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLWxlZnQ6IGNhbGMoMTAwJSAtIDEyLjFyZW0pO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMTAwJSAtIDEyLjFyZW0pO1xuICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1zaWRlYmFyLS1zZWNvbmRhcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYuMjVlbSkge1xuICAubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgICBtYXJnaW4tbGVmdDogNDguOXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNpZGViYXItLXNlY29uZGFyeSB7XG4gICAgbWFyZ2luLXJpZ2h0OiA0OC45cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICB9XG59XG4ubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gIG1heC1oZWlnaHQ6IDEwMCU7XG4gIG1hcmdpbjogMCAwLjJyZW07XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgLm1kLXNpZGViYXItLXByaW1hcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIHNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG4gIH1cbn1cbi5tZC1zaWRlYmFyX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwLjJyZW07XG4gIGhlaWdodDogMC4ycmVtO1xufVxuLm1kLXNpZGViYXJfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuXG5Aa2V5ZnJhbWVzIG1kLXNvdXJjZV9fZmFjdHMtLWRvbmUge1xuICAwJSB7XG4gICAgaGVpZ2h0OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIGhlaWdodDogMC42NXJlbTtcbiAgfVxufVxuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm1kLXNvdXJjZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXM7XG4gIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2Uge1xuICBwYWRkaW5nLXJpZ2h0OiBpbml0aWFsO1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbn1cbi5tZC1zb3VyY2U6aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc291cmNlX19pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMi40cmVtO1xuICBoZWlnaHQ6IDIuNHJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXRvcDogMC42cmVtO1xuICBtYXJnaW4tbGVmdDogMC42cmVtO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjZyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXNvdXJjZV9faWNvbiArIC5tZC1zb3VyY2VfX3JlcG9zaXRvcnkge1xuICBtYXJnaW4tbGVmdDogLTJyZW07XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbltkaXI9cnRsXSAubWQtc291cmNlX19pY29uICsgLm1kLXNvdXJjZV9fcmVwb3NpdG9yeSB7XG4gIG1hcmdpbi1yaWdodDogLTJyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xuICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtc291cmNlX19yZXBvc2l0b3J5IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm1kLXNvdXJjZV9fZmFjdHMge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMC41NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvcGFjaXR5OiAwLjc1O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuW2RhdGEtbWQtc3RhdGU9ZG9uZV0gLm1kLXNvdXJjZV9fZmFjdHMge1xuICBhbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdHMtLWRvbmUgMjUwbXMgZWFzZS1pbjtcbn1cbi5tZC1zb3VyY2VfX2ZhY3Qge1xuICBmbG9hdDogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtc291cmNlX19mYWN0IHtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuW2RhdGEtbWQtc3RhdGU9ZG9uZV0gLm1kLXNvdXJjZV9fZmFjdCB7XG4gIGFuaW1hdGlvbjogbWQtc291cmNlX19mYWN0LS1kb25lIDQwMG1zIGVhc2Utb3V0O1xufVxuLm1kLXNvdXJjZV9fZmFjdDo6YmVmb3JlIHtcbiAgbWFyZ2luOiAwIDAuMXJlbTtcbiAgY29udGVudDogXCLCt1wiO1xufVxuLm1kLXNvdXJjZV9fZmFjdDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1kLXRhYnMge1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG4ubm8tanMgLm1kLXRhYnMge1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzYuMTg3NWVtKSB7XG4gIC5tZC10YWJzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtdGFicyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXRhYnNfX2xpc3Qge1xuICBtYXJnaW46IDA7XG4gIG1hcmdpbi1sZWZ0OiAwLjJyZW07XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG59XG5bZGlyPXJ0bF0gLm1kLXRhYnNfX2xpc3Qge1xuICBtYXJnaW4tcmlnaHQ6IDAuMnJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdGFic19faXRlbSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgaGVpZ2h0OiAyLjRyZW07XG4gIHBhZGRpbmctcmlnaHQ6IDAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjZyZW07XG59XG4ubWQtdGFic19fbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAwLjhyZW07XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksIG9wYWNpdHkgMjUwbXM7XG4gIGZvbnQtc2l6ZTogMC43cmVtO1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubm8tanMgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uOiBub25lO1xufVxuLm1kLXRhYnNfX2xpbmstLWFjdGl2ZSwgLm1kLXRhYnNfX2xpbms6aG92ZXIge1xuICBjb2xvcjogaW5oZXJpdDtcbiAgb3BhY2l0eTogMTtcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgyKSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDIwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMykgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiA0MG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDQpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogNjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg1KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDgwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoNikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg3KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDEyMG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDgpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTQwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoOSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxNjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMCkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxODBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyMDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyMjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxMykgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyNDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxNCkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyNjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxNSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyODBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgxNikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAzMDBtcztcbn1cbi5tZC10YWJzW2RhdGEtbWQtc3RhdGU9aGlkZGVuXSB7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuLm1kLXRhYnNbZGF0YS1tZC1zdGF0ZT1oaWRkZW5dIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zLCB0cmFuc2Zvcm0gMG1zIDQwMG1zLCBvcGFjaXR5IDEwMG1zO1xuICBvcGFjaXR5OiAwO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNzYuMjVlbSkge1xuICAubWQtdGFicyB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tbmVzdGVkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5ID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtLS1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tYWN0aXZlID4gLm1kLW5hdl9fbGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSAubWQtbmF2IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLCAubWQtdHlwZXNldCBkZXRhaWxzIHtcbiAgbWFyZ2luOiAxLjU2MjVlbSAwO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgYm9yZGVyLWxlZnQ6IDAuMnJlbSBzb2xpZCAjNDQ4YWZmO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgYm94LXNoYWRvdzogMCAwLjJyZW0gMC41cmVtIHJnYmEoMCwgMCwgMCwgMC4wNSksIDAgMCAwLjA1cmVtIHJnYmEoMCwgMCwgMCwgMC4xKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24sIFtkaXI9cnRsXSAubWQtdHlwZXNldCBkZXRhaWxzIHtcbiAgYm9yZGVyLXJpZ2h0OiAwLjJyZW0gc29saWQgIzQ0OGFmZjtcbiAgYm9yZGVyLWxlZnQ6IG5vbmU7XG59XG5odG1sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uID4gOmxhc3QtY2hpbGQsIGh0bWwgLm1kLXR5cGVzZXQgZGV0YWlscyA+IDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24gLmFkbW9uaXRpb24sIC5tZC10eXBlc2V0IGRldGFpbHMgLmFkbW9uaXRpb24sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uIGRldGFpbHMsIC5tZC10eXBlc2V0IGRldGFpbHMgZGV0YWlscyB7XG4gIG1hcmdpbjogMWVtIDA7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi50bGRyLCAubWQtdHlwZXNldCBkZXRhaWxzLnRsZHIsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1bW1hcnksIC5tZC10eXBlc2V0IGRldGFpbHMuc3VtbWFyeSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uYWJzdHJhY3QsIC5tZC10eXBlc2V0IGRldGFpbHMuYWJzdHJhY3Qge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYjBmZjtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRsZHIgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMudGxkciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VtbWFyeSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hYnN0cmFjdCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5hYnN0cmFjdCA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTc2LCAyNTUsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi50bGRyID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMudGxkciA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VtbWFyeSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hYnN0cmFjdCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiMGZmO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyB0ZXh0LXN1YmplY3QgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi50b2RvLCAubWQtdHlwZXNldCBkZXRhaWxzLnRvZG8sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmluZm8sIC5tZC10eXBlc2V0IGRldGFpbHMuaW5mbyB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDBiOGQ0O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udG9kbyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy50b2RvID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbmZvID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmluZm8gPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE4NCwgMjEyLCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udG9kbyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnRvZG8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW5mbyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmluZm8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGI4ZDQ7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGluZm9ybWF0aW9uIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW1wb3J0YW50LCAubWQtdHlwZXNldCBkZXRhaWxzLmltcG9ydGFudCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGludCwgLm1kLXR5cGVzZXQgZGV0YWlscy5oaW50LCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi50aXAsIC5tZC10eXBlc2V0IGRldGFpbHMudGlwIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICMwMGJmYTU7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuaW1wb3J0YW50ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5oaW50ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmhpbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRpcCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy50aXAgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDE5MSwgMTY1LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW1wb3J0YW50ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuaW1wb3J0YW50ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhpbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5oaW50ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRpcCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnRpcCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYmZhNTtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgZmlyZSB9fVwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRvbmUsIC5tZC10eXBlc2V0IGRldGFpbHMuZG9uZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2hlY2ssIC5tZC10eXBlc2V0IGRldGFpbHMuY2hlY2ssIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1Y2Nlc3MsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VjY2VzcyB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDBjODUzO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZG9uZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5kb25lID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaGVjayA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5jaGVjayA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VjY2VzcyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdWNjZXNzID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAyMDAsIDgzLCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZG9uZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmRvbmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2hlY2sgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5jaGVjayA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdWNjZXNzID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VjY2VzcyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwYzg1MztcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hlY2stY2lyY2xlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFxLCAubWQtdHlwZXNldCBkZXRhaWxzLmZhcSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGVscCwgLm1kLXR5cGVzZXQgZGV0YWlscy5oZWxwLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5xdWVzdGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdWVzdGlvbiB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjNjRkZDE3O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFxID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmZhcSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGVscCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5oZWxwID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5xdWVzdGlvbiA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdWVzdGlvbiA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAwLCAyMjEsIDIzLCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFxID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFxID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhlbHAgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5oZWxwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1ZXN0aW9uID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMucXVlc3Rpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NGRkMTc7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGhlbHAtY2lyY2xlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uYXR0ZW50aW9uLCAubWQtdHlwZXNldCBkZXRhaWxzLmF0dGVudGlvbiwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2F1dGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscy5jYXV0aW9uLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi53YXJuaW5nLCAubWQtdHlwZXNldCBkZXRhaWxzLndhcm5pbmcge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2ZmOTEwMDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmF0dGVudGlvbiA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNhdXRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuY2F1dGlvbiA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ud2FybmluZyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy53YXJuaW5nID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDE0NSwgMCwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmF0dGVudGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmF0dGVudGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jYXV0aW9uID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuY2F1dGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi53YXJuaW5nID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMud2FybmluZyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmOTEwMDtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgYWxlcnQgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZjUyNTI7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDgyLCA4MiwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5taXNzaW5nID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWx1cmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyBjbG9zZS1jaXJjbGUgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5lcnJvciwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZGFuZ2VyLCAubWQtdHlwZXNldCBkZXRhaWxzLmRhbmdlciB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmYxNzQ0O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRhbmdlciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjMsIDY4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjE3NDQ7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGZsYXNoLWNpcmNsZSB9fVwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZywgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2Y1MDA1Nztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NSwgMCwgODcsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTAwNTc7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGJ1ZyB9fVwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmV4YW1wbGUsIC5tZC10eXBlc2V0IGRldGFpbHMuZXhhbXBsZSB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjNjUxZmZmO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXhhbXBsZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5leGFtcGxlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxMDEsIDMxLCAyNTUsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5leGFtcGxlID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuZXhhbXBsZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzY1MWZmZjtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgZm9ybWF0LWxpc3QtbnVtYmVyZWQgfX1cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5ZTllOWU7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTgsIDE1OCwgMTU4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2l0ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVvdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdW90ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZTtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgZm9ybWF0LXF1b3RlLWNsb3NlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGUsIC5tZC10eXBlc2V0IHN1bW1hcnkge1xuICBtYXJnaW46IDAgLTAuNnJlbTtcbiAgcGFkZGluZzogMC40cmVtIDAuNnJlbSAwLjRyZW0gMnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSg2OCwgMTM4LCAyNTUsIDAuMSk7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGUsIFtkaXI9cnRsXSAubWQtdHlwZXNldCBzdW1tYXJ5IHtcbiAgcGFkZGluZzogMC40cmVtIDJyZW0gMC40cmVtIDAuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLXRpdGxlOmxhc3QtY2hpbGQsIC5tZC10eXBlc2V0IHN1bW1hcnk6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi10aXRsZTo6YmVmb3JlLCAubWQtdHlwZXNldCBzdW1tYXJ5OjpiZWZvcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIG1hcmdpbi1sZWZ0OiAtMS40cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDQ4YWZmO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyBwZW5jaWwgfX1cIik7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGU6OmJlZm9yZSwgW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHN1bW1hcnk6OmJlZm9yZSB7XG4gIG1hcmdpbi1yaWdodDogLTEuNHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG5cbi5jb2RlaGlsaXRlIC5vLCAuaGlnaGxpZ2h0IC5vIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29kZWhpbGl0ZSAub3csIC5oaWdobGlnaHQgLm93IHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29kZWhpbGl0ZSAuZ2UsIC5oaWdobGlnaHQgLmdlIHtcbiAgY29sb3I6ICMwMDAwMDA7XG59XG4uY29kZWhpbGl0ZSAuZ3IsIC5oaWdobGlnaHQgLmdyIHtcbiAgY29sb3I6ICNBQTAwMDA7XG59XG4uY29kZWhpbGl0ZSAuZ2gsIC5oaWdobGlnaHQgLmdoIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuZ28sIC5oaWdobGlnaHQgLmdvIHtcbiAgY29sb3I6ICM4ODg4ODg7XG59XG4uY29kZWhpbGl0ZSAuZ3AsIC5oaWdobGlnaHQgLmdwIHtcbiAgY29sb3I6ICM1NTU1NTU7XG59XG4uY29kZWhpbGl0ZSAuZ3MsIC5oaWdobGlnaHQgLmdzIHtcbiAgY29sb3I6IGluaGVyaXQ7XG59XG4uY29kZWhpbGl0ZSAuZ3UsIC5oaWdobGlnaHQgLmd1IHtcbiAgY29sb3I6ICNBQUFBQUE7XG59XG4uY29kZWhpbGl0ZSAuZ3QsIC5oaWdobGlnaHQgLmd0IHtcbiAgY29sb3I6ICNBQTAwMDA7XG59XG4uY29kZWhpbGl0ZSAuZ2QsIC5oaWdobGlnaHQgLmdkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRERERDtcbn1cbi5jb2RlaGlsaXRlIC5naSwgLmhpZ2hsaWdodCAuZ2kge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRERGRkREO1xufVxuLmNvZGVoaWxpdGUgLmssIC5oaWdobGlnaHQgLmsge1xuICBjb2xvcjogIzNCNzhFNztcbn1cbi5jb2RlaGlsaXRlIC5rYywgLmhpZ2hsaWdodCAua2Mge1xuICBjb2xvcjogI0E3MUQ1RDtcbn1cbi5jb2RlaGlsaXRlIC5rZCwgLmhpZ2hsaWdodCAua2Qge1xuICBjb2xvcjogIzNCNzhFNztcbn1cbi5jb2RlaGlsaXRlIC5rbiwgLmhpZ2hsaWdodCAua24ge1xuICBjb2xvcjogIzNCNzhFNztcbn1cbi5jb2RlaGlsaXRlIC5rcCwgLmhpZ2hsaWdodCAua3Age1xuICBjb2xvcjogI0E3MUQ1RDtcbn1cbi5jb2RlaGlsaXRlIC5rciwgLmhpZ2hsaWdodCAua3Ige1xuICBjb2xvcjogIzNFNjFBMjtcbn1cbi5jb2RlaGlsaXRlIC5rdCwgLmhpZ2hsaWdodCAua3Qge1xuICBjb2xvcjogIzNFNjFBMjtcbn1cbi5jb2RlaGlsaXRlIC5jLCAuaGlnaGxpZ2h0IC5jIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY20sIC5oaWdobGlnaHQgLmNtIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY3AsIC5oaWdobGlnaHQgLmNwIHtcbiAgY29sb3I6ICM2NjY2NjY7XG59XG4uY29kZWhpbGl0ZSAuYzEsIC5oaWdobGlnaHQgLmMxIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY2gsIC5oaWdobGlnaHQgLmNoIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuY3MsIC5oaWdobGlnaHQgLmNzIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAubmEsIC5oaWdobGlnaHQgLm5hIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubmIsIC5oaWdobGlnaHQgLm5iIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAuYnAsIC5oaWdobGlnaHQgLmJwIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAubmMsIC5oaWdobGlnaHQgLm5jIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubm8sIC5oaWdobGlnaHQgLm5vIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAubmQsIC5oaWdobGlnaHQgLm5kIHtcbiAgY29sb3I6ICM2NjY2NjY7XG59XG4uY29kZWhpbGl0ZSAubmksIC5oaWdobGlnaHQgLm5pIHtcbiAgY29sb3I6ICM2NjY2NjY7XG59XG4uY29kZWhpbGl0ZSAubmUsIC5oaWdobGlnaHQgLm5lIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubmYsIC5oaWdobGlnaHQgLm5mIHtcbiAgY29sb3I6ICNDMjE4NUI7XG59XG4uY29kZWhpbGl0ZSAubmwsIC5oaWdobGlnaHQgLm5sIHtcbiAgY29sb3I6ICMzQjUxNzk7XG59XG4uY29kZWhpbGl0ZSAubm4sIC5oaWdobGlnaHQgLm5uIHtcbiAgY29sb3I6ICNFQzQwN0E7XG59XG4uY29kZWhpbGl0ZSAubnQsIC5oaWdobGlnaHQgLm50IHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAubnYsIC5oaWdobGlnaHQgLm52IHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAudmMsIC5oaWdobGlnaHQgLnZjIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAudmcsIC5oaWdobGlnaHQgLnZnIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAudmksIC5oaWdobGlnaHQgLnZpIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAubngsIC5oaWdobGlnaHQgLm54IHtcbiAgY29sb3I6ICNFQzQwN0E7XG59XG4uY29kZWhpbGl0ZSAubSwgLmhpZ2hsaWdodCAubSB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1mLCAuaGlnaGxpZ2h0IC5tZiB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1oLCAuaGlnaGxpZ2h0IC5taCB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1pLCAuaGlnaGxpZ2h0IC5taSB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLmlsLCAuaGlnaGxpZ2h0IC5pbCB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLm1vLCAuaGlnaGxpZ2h0IC5tbyB7XG4gIGNvbG9yOiAjRTc0QzNDO1xufVxuLmNvZGVoaWxpdGUgLnMsIC5oaWdobGlnaHQgLnMge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zYiwgLmhpZ2hsaWdodCAuc2Ige1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zYywgLmhpZ2hsaWdodCAuc2Mge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zZCwgLmhpZ2hsaWdodCAuc2Qge1xuICBjb2xvcjogIzk5OTk5OTtcbn1cbi5jb2RlaGlsaXRlIC5zMiwgLmhpZ2hsaWdodCAuczIge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zZSwgLmhpZ2hsaWdodCAuc2Uge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zaCwgLmhpZ2hsaWdodCAuc2gge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zaSwgLmhpZ2hsaWdodCAuc2kge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zeCwgLmhpZ2hsaWdodCAuc3gge1xuICBjb2xvcjogIzE4MzY5MTtcbn1cbi5jb2RlaGlsaXRlIC5zciwgLmhpZ2hsaWdodCAuc3Ige1xuICBjb2xvcjogIzAwOTkyNjtcbn1cbi5jb2RlaGlsaXRlIC5zMSwgLmhpZ2hsaWdodCAuczEge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5zcywgLmhpZ2hsaWdodCAuc3Mge1xuICBjb2xvcjogIzBEOTA0Rjtcbn1cbi5jb2RlaGlsaXRlIC5lcnIsIC5oaWdobGlnaHQgLmVyciB7XG4gIGNvbG9yOiAjQTYxNzE3O1xufVxuLmNvZGVoaWxpdGUgLncsIC5oaWdobGlnaHQgLncge1xuICBjb2xvcjogdHJhbnNwYXJlbnQ7XG59XG4uY29kZWhpbGl0ZSAuaGxsLCAuaGlnaGxpZ2h0IC5obGwge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAwIC0wLjZyZW07XG4gIHBhZGRpbmc6IDAgMC42cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICAuY29kZWhpbGl0ZSAuaGxsLCAuaGlnaGxpZ2h0IC5obGwge1xuICAgIG1hcmdpbjogMCAtMC44cmVtO1xuICAgIHBhZGRpbmc6IDAgMC44cmVtO1xuICB9XG59XG5cbi5jb2RlaGlsaXRldGFibGUsIC5oaWdobGlnaHR0YWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0Ym9keSwgLmhpZ2hsaWdodHRhYmxlIHRib2R5LFxuLmNvZGVoaWxpdGV0YWJsZSB0ZCxcbi5oaWdobGlnaHR0YWJsZSB0ZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0ciwgLmhpZ2hsaWdodHRhYmxlIHRyIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5jb2RlaGlsaXRldGFibGUgcHJlLCAuaGlnaGxpZ2h0dGFibGUgcHJlLFxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vZGl2LFxuLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9kaXYge1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4uY29kZWhpbGl0ZXRhYmxlIC5saW5lbm9kaXYsIC5oaWdobGlnaHR0YWJsZSAubGluZW5vZGl2IHtcbiAgcGFkZGluZzogMC41MjVyZW0gMC42cmVtO1xufVxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vcywgLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9zIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAwLjA1cmVtIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbi5jb2RlaGlsaXRldGFibGUgLmxpbmVub3MgcHJlLCAuaGlnaGxpZ2h0dGFibGUgLmxpbmVub3MgcHJlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWFsaWduOiByaWdodDtcbn1cbi5jb2RlaGlsaXRldGFibGUgLmNvZGUsIC5oaWdobGlnaHR0YWJsZSAuY29kZSB7XG4gIGZsZXg6IDE7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5tZC10eXBlc2V0ID4gLmNvZGVoaWxpdGV0YWJsZSwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUge1xuICBtYXJnaW46IDFlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjJlbTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAuY29kZWhpbGl0ZSBjb2RlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQgY29kZSB7XG4gICAgcGFkZGluZzogMC41MjVyZW0gMC44cmVtO1xuICB9XG4gIC5tZC10eXBlc2V0ID4gLmNvZGVoaWxpdGV0YWJsZSwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRldGFibGUgLmxpbmVub2RpdiwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUgLmxpbmVub2RpdiB7XG4gICAgcGFkZGluZzogMC41cmVtIDAuOHJlbTtcbiAgfVxufVxuXG4ubWQtdHlwZXNldCBbaWRePVwiZm5yZWY6XCJdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm1kLXR5cGVzZXQgW2lkXj1cImZucmVmOlwiXTp0YXJnZXQge1xuICBtYXJnaW4tdG9wOiAtMy44cmVtO1xuICBwYWRkaW5nLXRvcDogMy44cmVtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06dGFyZ2V0OjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTMuNXJlbTtcbiAgcGFkZGluZy10b3A6IDMuNXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUgb2wge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOnRhcmdldCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSA6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICBvcGFjaXR5OiAxO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmOmhvdmVyLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUtcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1yZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWFyZ2luOiAwIDAuMmVtO1xuICBib3JkZXItbGVmdDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHZlcnRpY2FsLWFsaWduOiAtMC4yNXJlbTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXM7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAwO1xuICBvcGFjaXR5OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWYge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTAuMjVyZW0pO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDAuOHJlbTtcbiAgaGVpZ2h0OiAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sga2V5Ym9hcmQtcmV0dXJuIH19XCIpO1xuICBjb250ZW50OiBcIlwiO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmOjpiZWZvcmUgc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuXG4ubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXMsIHZpc2liaWxpdHkgMG1zIDUwMG1zO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG5odG1sIGJvZHkgLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG5AbWVkaWEgcHJpbnQge1xuICAubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuLm1kLXR5cGVzZXQgOmhvdmVyIC5oZWFkZXJsaW5rLFxuLm1kLXR5cGVzZXQgOnRhcmdldCAuaGVhZGVybGluayxcbi5tZC10eXBlc2V0IC5oZWFkZXJsaW5rOmZvY3VzIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXMsIHZpc2liaWxpdHkgMG1zO1xuICBvcGFjaXR5OiAxO1xuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xufVxuLm1kLXR5cGVzZXQgLmhlYWRlcmxpbms6Zm9jdXMsXG4ubWQtdHlwZXNldCAuaGVhZGVybGluazpob3Zlcixcbi5tZC10eXBlc2V0IDp0YXJnZXQgLmhlYWRlcmxpbmsge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IGgzW2lkXTo6YmVmb3JlLCAubWQtdHlwZXNldCBoMltpZF06OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDFbaWRdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTAuNHJlbTtcbiAgcGFkZGluZy10b3A6IDAuNHJlbTtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IGgzW2lkXTp0YXJnZXQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDJbaWRdOnRhcmdldDo6YmVmb3JlLCAubWQtdHlwZXNldCBoMVtpZF06dGFyZ2V0OjpiZWZvcmUge1xuICBtYXJnaW4tdG9wOiAtMy40cmVtO1xuICBwYWRkaW5nLXRvcDogMy40cmVtO1xufVxuLm1kLXR5cGVzZXQgaDRbaWRdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTAuNDVyZW07XG4gIHBhZGRpbmctdG9wOiAwLjQ1cmVtO1xuICBjb250ZW50OiBcIlwiO1xufVxuLm1kLXR5cGVzZXQgaDRbaWRdOnRhcmdldDo6YmVmb3JlIHtcbiAgbWFyZ2luLXRvcDogLTMuNDVyZW07XG4gIHBhZGRpbmctdG9wOiAzLjQ1cmVtO1xufVxuLm1kLXR5cGVzZXQgaDZbaWRdOjpiZWZvcmUsIC5tZC10eXBlc2V0IGg1W2lkXTo6YmVmb3JlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IC0wLjZyZW07XG4gIHBhZGRpbmctdG9wOiAwLjZyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtdHlwZXNldCBoNltpZF06dGFyZ2V0OjpiZWZvcmUsIC5tZC10eXBlc2V0IGg1W2lkXTp0YXJnZXQ6OmJlZm9yZSB7XG4gIG1hcmdpbi10b3A6IC0zLjZyZW07XG4gIHBhZGRpbmctdG9wOiAzLjZyZW07XG59XG4ubWQtdHlwZXNldCAuTUpYYy1kaXNwbGF5IHtcbiAgbWFyZ2luOiAwLjc1ZW0gMDtcbiAgcGFkZGluZzogMC43NWVtIDA7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA0NC45Mzc1ZW0pIHtcbiAgLm1kLXR5cGVzZXQgPiBwID4gLk1KWGMtZGlzcGxheSB7XG4gICAgbWFyZ2luOiAwLjc1ZW0gLTAuOHJlbTtcbiAgICBwYWRkaW5nOiAwLjI1ZW0gMC44cmVtO1xuICB9XG59XG4ubWQtdHlwZXNldCAuTWF0aEpheF9DSFRNTCB7XG4gIG91dGxpbmU6IDA7XG59XG5cbi5tZC10eXBlc2V0IGRlbC5jcml0aWMsXG4ubWQtdHlwZXNldCBpbnMuY3JpdGljLFxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50IHtcbiAgbWFyZ2luOiAwIDAuMjVlbTtcbiAgcGFkZGluZzogMC4wNjI1ZW0gMDtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBib3gtZGVjb3JhdGlvbi1icmVhazogY2xvbmU7XG59XG4ubWQtdHlwZXNldCBkZWwuY3JpdGljIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZGRERERDtcbiAgYm94LXNoYWRvdzogMC4yNWVtIDAgMCAjRkZERERELCAtMC4yNWVtIDAgMCAjRkZEREREO1xufVxuLm1kLXR5cGVzZXQgaW5zLmNyaXRpYyB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNEREZGREQ7XG4gIGJveC1zaGFkb3c6IDAuMjVlbSAwIDAgI0RERkZERCwgLTAuMjVlbSAwIDAgI0RERkZERDtcbn1cbi5tZC10eXBlc2V0IC5jcml0aWMuY29tbWVudCB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50OjpiZWZvcmUge1xuICBjb250ZW50OiBcIi8qIFwiO1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50OjphZnRlciB7XG4gIGNvbnRlbnQ6IFwiICovXCI7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmJsb2NrIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMWVtIDA7XG4gIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjhyZW07XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmJsb2NrIDpmaXJzdC1jaGlsZCB7XG4gIG1hcmdpbi10b3A6IDAuNWVtO1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5ibG9jayA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xufVxuXG4ubWQtdHlwZXNldCBkZXRhaWxzIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHBhZGRpbmctdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlsc1tvcGVuXSA+IHN1bW1hcnk6OmFmdGVyIHtcbiAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbn1cbi5tZC10eXBlc2V0IGRldGFpbHM6bm90KFtvcGVuXSkge1xuICBwYWRkaW5nLWJvdHRvbTogMDtcbn1cbi5tZC10eXBlc2V0IGRldGFpbHM6bm90KFtvcGVuXSkgPiBzdW1tYXJ5IHtcbiAgYm9yZGVyLWJvdHRvbTogbm9uZTtcbn1cbi5tZC10eXBlc2V0IGRldGFpbHMgc3VtbWFyeSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZy1yaWdodDogMnJlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCBkZXRhaWxzIHN1bW1hcnkge1xuICBwYWRkaW5nLWxlZnQ6IDJyZW07XG59XG4ubWQtdHlwZXNldCBzdW1tYXJ5IHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG91dGxpbmU6IG5vbmU7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbi5tZC10eXBlc2V0IHN1bW1hcnk6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLXR5cGVzZXQgc3VtbWFyeTo6YWZ0ZXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHJpZ2h0OiAwLjZyZW07XG4gIHdpZHRoOiAxcmVtO1xuICBoZWlnaHQ6IDFyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBtYXNrLWltYWdlOiB1cmwoXCJ7eyBjaGV2cm9uLWRvd24gfX1cIik7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3VtbWFyeTo6YWZ0ZXIge1xuICByaWdodDogaW5pdGlhbDtcbiAgbGVmdDogMC42cmVtO1xufVxuXG4ubWQtdHlwZXNldCAuZW1vamlvbmUsXG4ubWQtdHlwZXNldCAudHdlbW9qaSxcbi5tZC10eXBlc2V0IC5nZW1vamkge1xuICB3aWR0aDogMXJlbTtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xufVxuXG4uaGlnaGxpZ2h0IFtkYXRhLWxpbmVub3NdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIGxlZnQ6IC0wLjZyZW07XG4gIG1hcmdpbi1yaWdodDogMC42cmVtO1xuICBtYXJnaW4tbGVmdDogLTAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiAwLjZyZW07XG4gIGJvcmRlci1yaWdodDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgY29udGVudDogYXR0cihkYXRhLWxpbmVub3MpO1xuICB1c2VyLXNlbGVjdDogbm9uZTtcbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICAuaGlnaGxpZ2h0IFtkYXRhLWxpbmVub3NdOjpiZWZvcmUge1xuICAgIGxlZnQ6IC0xLjZyZW07XG4gICAgbWFyZ2luLWxlZnQ6IC0xLjZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiAxLjZyZW07XG4gIH1cbn1cblxuLm1kLXR5cGVzZXQgY29kZS5jb2RlaGlsaXRlLCAubWQtdHlwZXNldCBjb2RlLmhpZ2hsaWdodCB7XG4gIG1hcmdpbjogMCAwLjI5NDExNzY0NzFlbTtcbiAgcGFkZGluZzogMC4wNzM1Mjk0MTE4ZW0gMDtcbn1cblxuLm1kLXR5cGVzZXQgLnRhYmJlZC1jb250ZW50IHtcbiAgZGlzcGxheTogbm9uZTtcbiAgb3JkZXI6IDk5O1xuICB3aWR0aDogMTAwJTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtY29kZS1iZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLWNvbnRlbnQgcHJlIHtcbiAgbWFyZ2luOiAwO1xuICBib3JkZXItcmFkaXVzOiAwO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtd3JhcDogd3JhcDtcbiAgbWFyZ2luOiAxZW0gMDtcbiAgYm9yZGVyOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dCB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCB7XG4gIGJvcmRlci1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwLjZyZW07XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IHByZTpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0Om9ubHktY2hpbGQsXG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IC5oaWdobGlnaHR0YWJsZTpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZTpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZXRhYmxlOm9ubHktY2hpbGQge1xuICBtYXJnaW46IDAgLTAuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gcHJlOm9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0Om9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0dGFibGU6b25seS1jaGlsZCBwcmUsXG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IC5jb2RlaGlsaXRlOm9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZXRhYmxlOm9ubHktY2hpbGQgcHJlIHtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGxhYmVsIHtcbiAgd2lkdGg6IGF1dG87XG4gIHBhZGRpbmc6IDAuNnJlbTtcbiAgcGFkZGluZy1ib3R0b206IDAuNXJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXMsIGJvcmRlciAyNTBtcztcbiAgYm9yZGVyLWJvdHRvbTogMC4xcmVtIHNvbGlkIHRyYW5zcGFyZW50O1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGN1cnNvcjogcG9pbnRlcjtcbn1cbmh0bWwgLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBsYWJlbDpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQuOTM3NWVtKSB7XG4gIC5tZC10eXBlc2V0ID4gLnRhYmJlZC1zZXQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBjb2RlIHtcbiAgICBwYWRkaW5nOiAwLjUyNXJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBpbnB1dDpmaXJzdC1jaGlsZCArIGxhYmVsIHtcbiAgICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICB9XG59XG5cbi5tZC10eXBlc2V0IC50YXNrLWxpc3QtaXRlbSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1pdGVtIFt0eXBlPWNoZWNrYm94XSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjQ1ZW07XG4gIGxlZnQ6IC0yZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1pdGVtIFt0eXBlPWNoZWNrYm94XSB7XG4gIHJpZ2h0OiAtMmVtO1xuICBsZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1jb250cm9sIC50YXNrLWxpc3QtaW5kaWNhdG9yOjpiZWZvcmUge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHRvcDogMC4xNWVtO1xuICBsZWZ0OiAtMS41ZW07XG4gIHdpZHRoOiAxLjI1ZW07XG4gIGhlaWdodDogMS4yNWVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIG1hc2staW1hZ2U6IHVybChcInt7IGNoZWNrYm94LWJsYW5rLWNpcmNsZSB9fVwiKTtcbiAgY29udGVudDogXCJcIjtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgLnRhc2stbGlzdC1pbmRpY2F0b3I6OmJlZm9yZSB7XG4gIHJpZ2h0OiAtMS41ZW07XG4gIGxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAudGFzay1saXN0LWluZGljYXRvcjo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTY3NjtcbiAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hlY2stY2lyY2xlIH19XCIpO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1jb250cm9sIFt0eXBlPWNoZWNrYm94XSB7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xufSIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBuby1kdXBsaWNhdGUtc2VsZWN0b3JzXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEVuZm9yY2UgY29ycmVjdCBib3ggbW9kZWxcbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4vLyBBbGwgZWxlbWVudHMgc2hhbGwgaW5oZXJpdCB0aGUgZG9jdW1lbnQgZGVmYXVsdFxuKixcbio6OmJlZm9yZSxcbio6OmFmdGVyIHtcbiAgYm94LXNpemluZzogaW5oZXJpdDtcbn1cblxuLy8gUHJldmVudCBhZGp1c3RtZW50cyBvZiBmb250IHNpemUgYWZ0ZXIgb3JpZW50YXRpb24gY2hhbmdlcyBpbiBJRSBhbmQgaU9TXG5odG1sIHtcbiAgdGV4dC1zaXplLWFkanVzdDogbm9uZTtcbn1cblxuLy8gUmVtb3ZlIG1hcmdpbiBpbiBhbGwgYnJvd3NlcnNcbmJvZHkge1xuICBtYXJnaW46IDA7XG59XG5cbi8vIFJlc2V0IGhvcml6b250YWwgcnVsZXMgaW4gRkZcbmhyIHtcbiAgb3ZlcmZsb3c6IHZpc2libGU7XG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xufVxuXG4vLyBSZW1vdmUgZ2FwcyBpbiB1bmRlcmxpbmVkIGxpbmtzIGluIGlPUyA+PSA4IGFuZCBTYWZhcmkgPj0gOFxuYSB7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmVcbn1cblxuLy8gUmVzZXQgdGFwIG91dGxpbmVzIG9uIGlPUyBhbmQgQW5kcm9pZFxuYSxcbmJ1dHRvbixcbmxhYmVsLFxuaW5wdXQge1xuICAtd2Via2l0LXRhcC1oaWdobGlnaHQtY29sb3I6IHRyYW5zcGFyZW50O1xufVxuXG4vLyBSZXNldCBsaW5rIHN0eWxlc1xuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbi8vIE5vcm1hbGl6ZSBmb250LXNpemUgaW4gYWxsIGJyb3dzZXJzXG5zbWFsbCB7XG4gIGZvbnQtc2l6ZTogODAlO1xufVxuXG4vLyBQcmV2ZW50IHN1YnNjcmlwdCBhbmQgc3VwZXJzY3JpcHQgZnJvbSBhZmZlY3RpbmcgbGluZS1oZWlnaHRcbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiA4MCU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbi8vIENvcnJlY3Qgc3Vic2NyaXB0IG9mZnNldFxuc3ViIHtcbiAgYm90dG9tOiAtMC4yNWVtO1xufVxuXG4vLyBDb3JyZWN0IHN1cGVyc2NyaXB0IG9mZnNldFxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbi8vIFJlbW92ZSBib3JkZXJzIG9uIGltYWdlc1xuaW1nIHtcbiAgYm9yZGVyLXN0eWxlOiBub25lO1xufVxuXG4vLyBSZXNldCB0YWJsZSBzdHlsZXNcbnRhYmxlIHtcbiAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcbiAgYm9yZGVyLXNwYWNpbmc6IDA7XG59XG5cbi8vIFJlc2V0IHRhYmxlIGNlbGwgc3R5bGVzXG50ZCxcbnRoIHtcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDsgLy8gc3R5bGVsaW50LWRpc2FibGUtbGluZVxuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4vLyBSZXNldCAobmF0aXZlKSBidXR0b24gc3R5bGVzXG5idXR0b24ge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGJvcmRlcjogMDtcbiAgYmFja2dyb3VuZDogdHJhbnNwYXJlbnQ7XG4gIGZvbnQtc2l6ZTogaW5oZXJpdDtcbn1cblxuLy8gUmVzZXQgKG5hdGl2ZSkgaW5wdXQgc3R5bGVzXG5pbnB1dCB7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbn1cbiIsIkBjaGFyc2V0IFwiVVRGLThcIjtcbmh0bWwge1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxuXG4qLFxuKjo6YmVmb3JlLFxuKjo6YWZ0ZXIge1xuICBib3gtc2l6aW5nOiBpbmhlcml0O1xufVxuXG5odG1sIHtcbiAgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBub25lO1xuICAgICAtbW96LXRleHQtc2l6ZS1hZGp1c3Q6IG5vbmU7XG4gICAgICAtbXMtdGV4dC1zaXplLWFkanVzdDogbm9uZTtcbiAgICAgICAgICB0ZXh0LXNpemUtYWRqdXN0OiBub25lO1xufVxuXG5ib2R5IHtcbiAgbWFyZ2luOiAwO1xufVxuXG5ociB7XG4gIG92ZXJmbG93OiB2aXNpYmxlO1xuICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcbn1cblxuYSB7XG4gIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9uLXNraXA6IG9iamVjdHM7XG59XG5cbmEsXG5idXR0b24sXG5sYWJlbCxcbmlucHV0IHtcbiAgLXdlYmtpdC10YXAtaGlnaGxpZ2h0LWNvbG9yOiB0cmFuc3BhcmVudDtcbn1cblxuYSB7XG4gIGNvbG9yOiBpbmhlcml0O1xuICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG59XG5cbnNtYWxsIHtcbiAgZm9udC1zaXplOiA4MCU7XG59XG5cbnN1YixcbnN1cCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZm9udC1zaXplOiA4MCU7XG4gIGxpbmUtaGVpZ2h0OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogYmFzZWxpbmU7XG59XG5cbnN1YiB7XG4gIGJvdHRvbTogLTAuMjVlbTtcbn1cblxuc3VwIHtcbiAgdG9wOiAtMC41ZW07XG59XG5cbmltZyB7XG4gIGJvcmRlci1zdHlsZTogbm9uZTtcbn1cblxudGFibGUge1xuICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xuICBib3JkZXItc3BhY2luZzogMDtcbn1cblxudGQsXG50aCB7XG4gIGZvbnQtd2VpZ2h0OiBub3JtYWw7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG5cbmJ1dHRvbiB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyOiAwO1xuICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xufVxuXG5pbnB1dCB7XG4gIGJvcmRlcjogMDtcbiAgb3V0bGluZTogMDtcbn1cblxuOnJvb3Qge1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAwLjg3KTtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodDogaHNsYSgwLCAwJSwgMCUsIDAuNTQpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXI6IGhzbGEoMCwgMCUsIDAlLCAwLjI2KTtcbiAgLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdDogaHNsYSgwLCAwJSwgMCUsIDAuMDcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3I6IGhzbGEoMCwgMCUsIDEwMCUsIDEpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0OiBoc2xhKDAsIDAlLCAxMDAlLCAwLjcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0ZXI6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMyk7XG4gIC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3Q6IGhzbGEoMCwgMCUsIDEwMCUsIDAuMTIpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMjMxZGVnLCA0OCUsIDQ4JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMjMwZGVnLCA0NCUsIDY0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgyMzJkZWcsIDU0JSwgNDElLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSgyMzFkZWcsIDk5JSwgNjYlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDIzMWRlZywgOTklLCA2NiUsIDAuMSk7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodCk7XG4gIC0tbWQtY29kZS1iZy1jb2xvcjogaHNsYSgwLCAwJSwgOTIuNSUsIDAuNSk7XG4gIC0tbWQtY29kZS1mZy1jb2xvcjogaHNsYSgyMDAsIDE4JSwgMjYlLCAxKTtcbn1cblxuLm1kLWljb24gc3ZnIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIHdpZHRoOiAxLjJyZW07XG4gIGhlaWdodDogMS4ycmVtO1xuICBtYXJnaW46IDAgYXV0bztcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuXG5ib2R5IHtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG59XG5cbmJvZHksXG5pbnB1dCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiLCBcImxpZ2FcIjtcbiAgICAgICAgICBmb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiLCBcImxpZ2FcIjtcbiAgZm9udC1mYW1pbHk6IFwiSGVsdmV0aWNhIE5ldWVcIiwgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjtcbn1cblxuY29kZSxcbnByZSxcbmtiZCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLXdlYmtpdC1mb250LWZlYXR1cmUtc2V0dGluZ3M6IFwia2VyblwiO1xuICAgICAgICAgIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCI7XG4gIGZvbnQtZmFtaWx5OiBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZTtcbn1cblxuLm1kLXR5cGVzZXQge1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNjtcbiAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0O1xufVxuLm1kLXR5cGVzZXQgcCxcbi5tZC10eXBlc2V0IHVsLFxuLm1kLXR5cGVzZXQgb2wsXG4ubWQtdHlwZXNldCBibG9ja3F1b3RlIHtcbiAgbWFyZ2luOiAxZW0gMDtcbn1cbi5tZC10eXBlc2V0IGgxIHtcbiAgbWFyZ2luOiAwIDAgMnJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAxLjU2MjVyZW07XG4gIGZvbnQtd2VpZ2h0OiAzMDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBsaW5lLWhlaWdodDogMS4zO1xufVxuLm1kLXR5cGVzZXQgaDIge1xuICBtYXJnaW46IDJyZW0gMCAwLjhyZW07XG4gIGZvbnQtc2l6ZTogMS4yNXJlbTtcbiAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG4ubWQtdHlwZXNldCBoMyB7XG4gIG1hcmdpbjogMS42cmVtIDAgMC44cmVtO1xuICBmb250LXNpemU6IDFyZW07XG4gIGZvbnQtd2VpZ2h0OiA0MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICBsaW5lLWhlaWdodDogMS41O1xufVxuLm1kLXR5cGVzZXQgaDIgKyBoMyB7XG4gIG1hcmdpbi10b3A6IDAuOHJlbTtcbn1cbi5tZC10eXBlc2V0IGg0IHtcbiAgbWFyZ2luOiAwLjhyZW0gMDtcbiAgZm9udC1zaXplOiAwLjhyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xufVxuLm1kLXR5cGVzZXQgaDUsXG4ubWQtdHlwZXNldCBoNiB7XG4gIG1hcmdpbjogMC44cmVtIDA7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG59XG4ubWQtdHlwZXNldCBoNSB7XG4gIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG59XG4ubWQtdHlwZXNldCBociB7XG4gIG1hcmdpbjogMS41ZW0gMDtcbiAgYm9yZGVyLWJvdHRvbTogMC4wNXJlbSBkb3R0ZWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtdHlwZXNldCBhIHtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xufVxuLm1kLXR5cGVzZXQgYSwgLm1kLXR5cGVzZXQgYTo6YmVmb3JlIHtcbiAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXM7XG59XG4ubWQtdHlwZXNldCBhOmZvY3VzLCAubWQtdHlwZXNldCBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCBjb2RlLFxuLm1kLXR5cGVzZXQgcHJlLFxuLm1kLXR5cGVzZXQga2JkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtY29kZS1iZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1jb2RlLWZnLWNvbG9yKTtcbiAgZm9udC1zaXplOiA4NSU7XG4gIGRpcmVjdGlvbjogbHRyO1xufVxuLm1kLXR5cGVzZXQgY29kZSB7XG4gIG1hcmdpbjogMCAwLjI5NDExNzY0NzFlbTtcbiAgcGFkZGluZzogMC4wNzM1Mjk0MTE4ZW0gMDtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBib3gtc2hhZG93OiAwLjI5NDExNzY0NzFlbSAwIDAgdmFyKC0tbWQtY29kZS1iZy1jb2xvciksIC0wLjI5NDExNzY0NzFlbSAwIDAgdmFyKC0tbWQtY29kZS1iZy1jb2xvcik7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICAgICAgICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbn1cbi5tZC10eXBlc2V0IGgxIGNvZGUsXG4ubWQtdHlwZXNldCBoMiBjb2RlLFxuLm1kLXR5cGVzZXQgaDMgY29kZSxcbi5tZC10eXBlc2V0IGg0IGNvZGUsXG4ubWQtdHlwZXNldCBoNSBjb2RlLFxuLm1kLXR5cGVzZXQgaDYgY29kZSB7XG4gIG1hcmdpbjogMDtcbiAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtdHlwZXNldCBhID4gY29kZSB7XG4gIG1hcmdpbjogaW5oZXJpdDtcbiAgcGFkZGluZzogaW5oZXJpdDtcbiAgYm9yZGVyLXJhZGl1czogaW5pdGlhbDtcbiAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIGJveC1zaGFkb3c6IG5vbmU7XG59XG4ubWQtdHlwZXNldCBwcmUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIG1hcmdpbjogMWVtIDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG4ubWQtdHlwZXNldCBwcmUgPiBjb2RlIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMC41MjVyZW0gMC42cmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgZm9udC1zaXplOiBpbmhlcml0O1xuICBib3gtc2hhZG93OiBub25lO1xuICAtd2Via2l0LWJveC1kZWNvcmF0aW9uLWJyZWFrOiBzbGljZTtcbiAgICAgICAgICBib3gtZGVjb3JhdGlvbi1icmVhazogc2xpY2U7XG4gIG92ZXJmbG93OiBhdXRvO1xuICB3b3JkLWJyZWFrOiBub3JtYWw7XG59XG4ubWQtdHlwZXNldCBwcmUgPiBjb2RlOjotd2Via2l0LXNjcm9sbGJhciB7XG4gIHdpZHRoOiAwLjJyZW07XG4gIGhlaWdodDogMC4ycmVtO1xufVxuLm1kLXR5cGVzZXQgcHJlID4gY29kZTo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC10eXBlc2V0IHByZSA+IGNvZGU6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IGtiZCB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgcGFkZGluZzogMCAwLjU4ODIzNTI5NDFlbTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBmb250LXNpemU6IDAuNzVlbTtcbiAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgYm94LXNoYWRvdzogMCAwLjFyZW0gMCAwLjA1cmVtIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLCAwIDAuMXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLCBpbnNldCAwIC0wLjFyZW0gMC4ycmVtIHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG59XG4ubWQtdHlwZXNldCBtYXJrIHtcbiAgbWFyZ2luOiAwIDAuMjVlbTtcbiAgcGFkZGluZzogMC4wNjI1ZW0gMDtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KTtcbiAgYm94LXNoYWRvdzogMC4yNWVtIDAgMCByZ2JhKDI1NSwgMjM1LCA1OSwgMC41KSwgLTAuMjVlbSAwIDAgcmdiYSgyNTUsIDIzNSwgNTksIDAuNSk7XG4gIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICAgICAgICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbn1cbi5tZC10eXBlc2V0IGFiYnIge1xuICBib3JkZXItYm90dG9tOiAwLjA1cmVtIGRvdHRlZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgY3Vyc29yOiBoZWxwO1xufVxuLm1kLXR5cGVzZXQgc21hbGwge1xuICBvcGFjaXR5OiAwLjc1O1xufVxuLm1kLXR5cGVzZXQgc3VwLFxuLm1kLXR5cGVzZXQgc3ViIHtcbiAgbWFyZ2luLWxlZnQ6IDAuMDc4MTI1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3VwLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHN1YiB7XG4gIG1hcmdpbi1yaWdodDogMC4wNzgxMjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCBibG9ja3F1b3RlIHtcbiAgcGFkZGluZy1sZWZ0OiAwLjZyZW07XG4gIGJvcmRlci1sZWZ0OiAwLjJyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgYmxvY2txdW90ZSB7XG4gIHBhZGRpbmctcmlnaHQ6IDAuNnJlbTtcbiAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICBib3JkZXItcmlnaHQ6IDAuMnJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgYm9yZGVyLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCB1bCB7XG4gIGxpc3Qtc3R5bGUtdHlwZTogZGlzYztcbn1cbi5tZC10eXBlc2V0IHVsLFxuLm1kLXR5cGVzZXQgb2wge1xuICBtYXJnaW4tbGVmdDogMC42MjVlbTtcbiAgcGFkZGluZzogMDtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCB1bCxcbltkaXI9cnRsXSAubWQtdHlwZXNldCBvbCB7XG4gIG1hcmdpbi1yaWdodDogMC42MjVlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCB1bCBvbCxcbi5tZC10eXBlc2V0IG9sIG9sIHtcbiAgbGlzdC1zdHlsZS10eXBlOiBsb3dlci1hbHBoYTtcbn1cbi5tZC10eXBlc2V0IHVsIG9sIG9sLFxuLm1kLXR5cGVzZXQgb2wgb2wgb2wge1xuICBsaXN0LXN0eWxlLXR5cGU6IGxvd2VyLXJvbWFuO1xufVxuLm1kLXR5cGVzZXQgdWwgbGksXG4ubWQtdHlwZXNldCBvbCBsaSB7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICBtYXJnaW4tbGVmdDogMS4yNWVtO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHVsIGxpLFxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IG9sIGxpIHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjI1ZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgdWwgbGkgcCxcbi5tZC10eXBlc2V0IHVsIGxpIGJsb2NrcXVvdGUsXG4ubWQtdHlwZXNldCBvbCBsaSBwLFxuLm1kLXR5cGVzZXQgb2wgbGkgYmxvY2txdW90ZSB7XG4gIG1hcmdpbjogMC41ZW0gMDtcbn1cbi5tZC10eXBlc2V0IHVsIGxpOmxhc3QtY2hpbGQsXG4ubWQtdHlwZXNldCBvbCBsaTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5tZC10eXBlc2V0IHVsIGxpIHVsLFxuLm1kLXR5cGVzZXQgdWwgbGkgb2wsXG4ubWQtdHlwZXNldCBvbCBsaSB1bCxcbi5tZC10eXBlc2V0IG9sIGxpIG9sIHtcbiAgbWFyZ2luOiAwLjVlbSAwIDAuNWVtIDAuNjI1ZW07XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdWwgbGkgdWwsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdWwgbGkgb2wsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgb2wgbGkgdWwsXG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgb2wgbGkgb2wge1xuICBtYXJnaW4tcmlnaHQ6IDAuNjI1ZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXR5cGVzZXQgZGQge1xuICBtYXJnaW46IDFlbSAwIDFlbSAxLjg3NWVtO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IGRkIHtcbiAgbWFyZ2luLXJpZ2h0OiAxLjg3NWVtO1xuICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IGlmcmFtZSxcbi5tZC10eXBlc2V0IGltZyxcbi5tZC10eXBlc2V0IHN2ZyB7XG4gIG1heC13aWR0aDogMTAwJTtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWF4LXdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIGJhY2tncm91bmQ6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGJveC1zaGFkb3c6IDAgMC4ycmVtIDAuNXJlbSByZ2JhKDAsIDAsIDAsIDAuMDUpLCAwIDAgMC4wNXJlbSByZ2JhKDAsIDAsIDAsIDAuMSk7XG4gIG92ZXJmbG93OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgKyAqIHtcbiAgbWFyZ2luLXRvcDogMS41ZW07XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGg6bm90KFthbGlnbl0pLFxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRkOm5vdChbYWxpZ25dKSB7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRoOm5vdChbYWxpZ25dKSxcbltkaXI9cnRsXSAubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGQ6bm90KFthbGlnbl0pIHtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdGgge1xuICBtaW4td2lkdGg6IDVyZW07XG4gIHBhZGRpbmc6IDAuNnJlbSAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRkIHtcbiAgcGFkZGluZzogMC42cmVtIDAuOHJlbTtcbiAgYm9yZGVyLXRvcDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIHZlcnRpY2FsLWFsaWduOiB0b3A7XG59XG4ubWQtdHlwZXNldCB0YWJsZTpub3QoW2NsYXNzXSkgdHIge1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDEyNW1zO1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRyOmhvdmVyIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzNSk7XG4gIGJveC1zaGFkb3c6IDAgMC4wNXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpIGluc2V0O1xufVxuLm1kLXR5cGVzZXQgdGFibGU6bm90KFtjbGFzc10pIHRyOmZpcnN0LWNoaWxkIHRkIHtcbiAgYm9yZGVyLXRvcDogMDtcbn1cbi5tZC10eXBlc2V0IHRhYmxlOm5vdChbY2xhc3NdKSBhIHtcbiAgd29yZC1icmVhazogbm9ybWFsO1xufVxuLm1kLXR5cGVzZXRfX3Njcm9sbHdyYXAge1xuICBtYXJnaW46IDFlbSAtMC44cmVtO1xuICBvdmVyZmxvdy14OiBhdXRvO1xuICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG59XG4ubWQtdHlwZXNldCAubWQtdHlwZXNldF9fdGFibGUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbn1cbi5tZC10eXBlc2V0IC5tZC10eXBlc2V0X190YWJsZSB0YWJsZSB7XG4gIGRpc3BsYXk6IHRhYmxlO1xuICB3aWR0aDogMTAwJTtcbiAgbWFyZ2luOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuXG5odG1sIHtcbiAgaGVpZ2h0OiAxMDAlO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgZm9udC1zaXplOiAxMjUlO1xuICBvdmVyZmxvdy14OiBoaWRkZW47XG59XG5cbmJvZHkge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBtaW4taGVpZ2h0OiAxMDAlO1xuICBmb250LXNpemU6IDAuNXJlbTtcbn1cblxuaHIge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwLjA1cmVtO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbi5tZC1ncmlkIHtcbiAgbWF4LXdpZHRoOiA2MXJlbTtcbiAgbWFyZ2luLXJpZ2h0OiBhdXRvO1xuICBtYXJnaW4tbGVmdDogYXV0bztcbn1cblxuLm1kLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIGZsZXgtZ3JvdzogMTtcbn1cblxuLm1kLW1haW4ge1xuICBmbGV4LWdyb3c6IDE7XG59XG4ubWQtbWFpbl9faW5uZXIge1xuICBoZWlnaHQ6IDEwMCU7XG4gIHBhZGRpbmctdG9wOiAxLjVyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjA1cmVtO1xufVxuXG4ubWQtZWxsaXBzaXMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIG92ZXJmbG93OiBoaWRkZW47XG59XG5cbi5tZC10b2dnbGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWQtb3ZlcmxheSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICB3aWR0aDogMDtcbiAgaGVpZ2h0OiAwO1xuICB0cmFuc2l0aW9uOiB3aWR0aCAwbXMgMjUwbXMsIGhlaWdodCAwbXMgMjUwbXMsIG9wYWNpdHkgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogMztcbn1cblxuLm1kLXNraXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG1hcmdpbjogMC41cmVtO1xuICBwYWRkaW5nOiAwLjNyZW0gMC41cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMC40cmVtKTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIG9wYWNpdHk6IDA7XG59XG4ubWQtc2tpcDpmb2N1cyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTc1bXMgNzVtcztcbiAgb3BhY2l0eTogMTtcbiAgei1pbmRleDogMTA7XG59XG5cbkBwYWdlIHtcbiAgbWFyZ2luOiAyNW1tO1xufVxuLm1kLWFubm91bmNlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG4ubWQtYW5ub3VuY2VfX2lubmVyIHtcbiAgbWluLWhlaWdodDogMi40cmVtO1xuICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcbn1cblxuLm1kLWNsaXBib2FyZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjRyZW07XG4gIHJpZ2h0OiAwLjRyZW07XG4gIHdpZHRoOiAxLjJyZW07XG4gIGhlaWdodDogMS4ycmVtO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcztcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDE7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbn1cbi5tZC1jbGlwYm9hcmQgc3ZnIHtcbiAgd2lkdGg6IDAuOXJlbTtcbiAgaGVpZ2h0OiAwLjlyZW07XG59XG5wcmU6aG92ZXIgLm1kLWNsaXBib2FyZCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5wcmUgLm1kLWNsaXBib2FyZDpmb2N1cywgcHJlIC5tZC1jbGlwYm9hcmQ6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cbi5tZC1jb250ZW50X19pbm5lciB7XG4gIG1hcmdpbjogMCAwLjhyZW0gMS4ycmVtO1xuICBwYWRkaW5nLXRvcDogMC42cmVtO1xufVxuLm1kLWNvbnRlbnRfX2lubmVyOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgaGVpZ2h0OiAwLjRyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtY29udGVudF9faW5uZXIgPiA6bGFzdC1jaGlsZCB7XG4gIG1hcmdpbi1ib3R0b206IDA7XG59XG4ubWQtY29udGVudF9fYnV0dG9uIHtcbiAgbWFyZ2luOiAwLjRyZW0gMDtcbiAgbWFyZ2luLWxlZnQ6IDAuNHJlbTtcbiAgcGFkZGluZzogMDtcbiAgZmxvYXQ6IHJpZ2h0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24ge1xuICBtYXJnaW4tcmlnaHQ6IDAuNHJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gIGZsb2F0OiBsZWZ0O1xufVxuW2Rpcj1ydGxdIC5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLXR5cGVzZXQgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1jb250ZW50X19idXR0b24gc3ZnIHtcbiAgZGlzcGxheTogaW5saW5lO1xuICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xufVxuXG4ubWQtZGlhbG9nIHtcbiAgYm94LXNoYWRvdzogMCAycHggMnB4IDAgcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAxcHggNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAwLjIpO1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGZpeGVkO1xuICByaWdodDogMC44cmVtO1xuICBib3R0b206IDAuOHJlbTtcbiAgbGVmdDogaW5pdGlhbDtcbiAgbWluLXdpZHRoOiAxMS4xcmVtO1xuICBwYWRkaW5nOiAwLjRyZW0gMC42cmVtO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgNDAwbXM7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICBiYWNrZ3JvdW5kOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogMjtcbn1cbltkaXI9cnRsXSAubWQtZGlhbG9nIHtcbiAgcmlnaHQ6IGluaXRpYWw7XG4gIGxlZnQ6IDAuOHJlbTtcbn1cbi5tZC1kaWFsb2dbZGF0YS1tZC1zdGF0ZT1vcGVuXSB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjA3NSwgMC44NSwgMC4xNzUsIDEpLCBvcGFjaXR5IDQwMG1zO1xuICBvcGFjaXR5OiAxO1xufVxuXG4ubWQtaGVhZGVyIHtcbiAgcG9zaXRpb246IC13ZWJraXQtc3RpY2t5O1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDIuNHJlbTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyNTBtcywgY29sb3IgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGJveC1zaGFkb3c6IDAgMCAwLjJyZW0gcmdiYSgwLCAwLCAwLCAwKSwgMCAwLjJyZW0gMC40cmVtIHJnYmEoMCwgMCwgMCwgMCk7XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMjtcbn1cbi5uby1qcyAubWQtaGVhZGVyIHtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5tZC1oZWFkZXJbZGF0YS1tZC1zdGF0ZT1zaGFkb3ddIHtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAyNTBtcywgY29sb3IgMjUwbXMsIGJveC1zaGFkb3cgMjUwbXM7XG4gIGJveC1zaGFkb3c6IDAgMCAwLjJyZW0gcmdiYSgwLCAwLCAwLCAwLjEpLCAwIDAuMnJlbSAwLjRyZW0gcmdiYSgwLCAwLCAwLCAwLjIpO1xufVxuXG4ubWQtaGVhZGVyLW5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgMC4ycmVtO1xufVxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbiB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgbWFyZ2luOiAwLjJyZW07XG4gIHBhZGRpbmc6IDAuNHJlbTtcbiAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICB6LWluZGV4OiAxO1xufVxuW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X19idXR0b24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbjpmb2N1cywgLm1kLWhlYWRlci1uYXZfX2J1dHRvbjpob3ZlciB7XG4gIG9wYWNpdHk6IDAuNztcbn1cbi5tZC1oZWFkZXItbmF2X19idXR0b24ubWQtbG9nbyB7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG59XG4ubWQtaGVhZGVyLW5hdl9fYnV0dG9uLm1kLWxvZ28gaW1nLFxuLm1kLWhlYWRlci1uYXZfX2J1dHRvbi5tZC1sb2dvIHN2ZyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgZmlsbDogY3VycmVudENvbG9yO1xufVxuLm5vLWpzIC5tZC1oZWFkZXItbmF2X19idXR0b25bZm9yPV9fc2VhcmNoXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtaGVhZGVyLW5hdl9fdG9waWMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMTAwJTtcbiAgcGFkZGluZzogMCAxcmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigxLCAwLjcsIDAuMSwgMC4xKSwgb3BhY2l0eSAxNTBtcztcbiAgb3BhY2l0eTogMDtcbiAgei1pbmRleDogLTE7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X190b3BpYyArIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgcG9zaXRpb246IGluaXRpYWw7XG59XG4ubm8tanMgLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZm9udC1zaXplOiAwLjlyZW07XG4gIGxpbmUtaGVpZ2h0OiAyLjRyZW07XG59XG4ubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMS4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMSwgMC43LCAwLjEsIDAuMSksIG9wYWNpdHkgMTUwbXM7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbltkaXI9cnRsXSAubWQtaGVhZGVyLW5hdl9fdGl0bGVbZGF0YS1tZC1zdGF0ZT1hY3RpdmVdIC5tZC1oZWFkZXItbmF2X190b3BpYyB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxLjI1cmVtKTtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZVtkYXRhLW1kLXN0YXRlPWFjdGl2ZV0gLm1kLWhlYWRlci1uYXZfX3RvcGljICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDE1MG1zO1xuICBvcGFjaXR5OiAxO1xuICB6LWluZGV4OiAwO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC1oZWFkZXItbmF2X190aXRsZSA+IC5tZC1oZWFkZXItbmF2X19lbGxpcHNpcyB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgd2lkdGg6IDEwMCU7XG4gIGhlaWdodDogMTAwJTtcbn1cbi5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4ubWQtaGVybyB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogMXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cbi5tZC1oZXJvX19pbm5lciB7XG4gIG1hcmdpbi10b3A6IDFyZW07XG4gIHBhZGRpbmc6IDAuOHJlbSAwLjhyZW0gMC40cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMDBtcztcbn1cbltkYXRhLW1kLXN0YXRlPWhpZGRlbl0gLm1kLWhlcm9fX2lubmVyIHtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwLjYyNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAwbXMgNDAwbXMsIG9wYWNpdHkgMTAwbXMgMG1zO1xuICBvcGFjaXR5OiAwO1xufVxuLm1kLWhlcm8tLWV4cGFuZCAubWQtaGVyb19faW5uZXIge1xuICBtYXJnaW4tYm90dG9tOiAxLjJyZW07XG59XG5cbi5tZC1mb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuXG4ubWQtZm9vdGVyLW5hdl9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmsge1xuICBkaXNwbGF5OiBmbGV4O1xuICBwYWRkaW5nLXRvcDogMS40cmVtO1xuICBwYWRkaW5nLWJvdHRvbTogMC40cmVtO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zO1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbms6Zm9jdXMsIC5tZC1mb290ZXItbmF2X19saW5rOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYge1xuICB3aWR0aDogMjUlO1xuICBmbG9hdDogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiB7XG4gIGZsb2F0OiByaWdodDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tcHJldiBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCB7XG4gIHdpZHRoOiA3NSU7XG4gIGZsb2F0OiByaWdodDtcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XG59XG5bZGlyPXJ0bF0gLm1kLWZvb3Rlci1uYXZfX2xpbmstLW5leHQge1xuICBmbG9hdDogbGVmdDtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbn1cbltkaXI9cnRsXSAubWQtZm9vdGVyLW5hdl9fbGluay0tbmV4dCBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtZm9vdGVyLW5hdl9fdGl0bGUge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGZsZXgtZ3JvdzogMTtcbiAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAyLjRyZW0pO1xuICBwYWRkaW5nOiAwIDFyZW07XG4gIGZvbnQtc2l6ZTogMC45cmVtO1xuICBsaW5lLWhlaWdodDogMi40cmVtO1xufVxuLm1kLWZvb3Rlci1uYXZfX2J1dHRvbiB7XG4gIG1hcmdpbjogMC4ycmVtO1xuICBwYWRkaW5nOiAwLjRyZW07XG59XG4ubWQtZm9vdGVyLW5hdl9fZGlyZWN0aW9uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICByaWdodDogMDtcbiAgbGVmdDogMDtcbiAgbWFyZ2luLXRvcDogLTFyZW07XG4gIHBhZGRpbmc6IDAgMXJlbTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjc1cmVtO1xufVxuXG4ubWQtZm9vdGVyLW1ldGEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1mb290ZXItbWV0YV9faW5uZXIge1xuICBwYWRkaW5nOiAwLjJyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbn1cbmh0bWwgLm1kLWZvb3Rlci1tZXRhLm1kLXR5cGVzZXQgYTpmb2N1cywgaHRtbCAubWQtZm9vdGVyLW1ldGEubWQtdHlwZXNldCBhOmhvdmVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xufVxuXG4ubWQtZm9vdGVyLWNvcHlyaWdodCB7XG4gIG1hcmdpbjogMCAwLjZyZW07XG4gIHBhZGRpbmc6IDAuNHJlbSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlcik7XG4gIGZvbnQtc2l6ZTogMC42NHJlbTtcbn1cbi5tZC1mb290ZXItY29weXJpZ2h0X19oaWdobGlnaHQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQpO1xufVxuXG4ubWQtZm9vdGVyLXNvY2lhbCB7XG4gIG1hcmdpbjogMCAwLjRyZW07XG4gIHBhZGRpbmc6IDAuMnJlbSAwIDAuNnJlbTtcbn1cbi5tZC1mb290ZXItc29jaWFsX19saW5rIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMS42cmVtO1xuICBoZWlnaHQ6IDEuNnJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXM7XG4gIHRleHQtYWxpZ246IGNlbnRlcjtcbn1cbi5tZC1mb290ZXItc29jaWFsX19saW5rOjpiZWZvcmUge1xuICBsaW5lLWhlaWdodDogMS45O1xufVxuLm1kLWZvb3Rlci1zb2NpYWxfX2xpbmsgc3ZnIHtcbiAgd2lkdGg6IDAuOHJlbTtcbiAgdmVydGljYWwtYWxpZ246IC0yNSU7XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cblxuLm1kLW5hdiB7XG4gIGZvbnQtc2l6ZTogMC43cmVtO1xuICBsaW5lLWhlaWdodDogMS4zO1xufVxuLm1kLW5hdl9fdGl0bGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2J1dHRvbiBpbWcge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBhdXRvO1xufVxuLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9fYnV0dG9uLm1kLWxvZ28gc3ZnIGltZyxcbi5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2J1dHRvbi5tZC1sb2dvIHN2ZyBzdmcge1xuICBkaXNwbGF5OiBibG9jaztcbiAgd2lkdGg6IDEuMnJlbTtcbiAgaGVpZ2h0OiAxLjJyZW07XG4gIGZpbGw6IGN1cnJlbnRDb2xvcjtcbn1cbi5tZC1uYXZfX2xpc3Qge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4ubWQtbmF2X19pdGVtIHtcbiAgcGFkZGluZzogMCAwLjZyZW07XG59XG4ubWQtbmF2X19pdGVtOmxhc3QtY2hpbGQge1xuICBwYWRkaW5nLWJvdHRvbTogMC42cmVtO1xufVxuLm1kLW5hdl9faXRlbSAubWQtbmF2X19pdGVtIHtcbiAgcGFkZGluZy1yaWdodDogMDtcbn1cbltkaXI9cnRsXSAubWQtbmF2X19pdGVtIC5tZC1uYXZfX2l0ZW0ge1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHBhZGRpbmctbGVmdDogMDtcbn1cbi5tZC1uYXZfX2l0ZW0gLm1kLW5hdl9faXRlbTpsYXN0LWNoaWxkIHtcbiAgcGFkZGluZy1ib3R0b206IDA7XG59XG4ubWQtbmF2X19saW5rIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbi10b3A6IDAuNjI1ZW07XG4gIHRyYW5zaXRpb246IGNvbG9yIDEyNW1zO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgY3Vyc29yOiBwb2ludGVyO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG5odG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5odG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSB+IC5tZC1uYXYge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLW5hdl9fbGlua1tkYXRhLW1kLXN0YXRlPWJsdXJdIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbi5tZC1uYXZfX2l0ZW0gLm1kLW5hdl9fbGluay0tYWN0aXZlIHtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xufVxuLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdl9fbGluayB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLm1kLW5hdl9fbGluazpmb2N1cywgLm1kLW5hdl9fbGluazpob3ZlciB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuLm1kLW5hdl9fc291cmNlIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cblxuLm1kLXNlYXJjaCB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbn1cbi5uby1qcyAubWQtc2VhcmNoIHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1zZWFyY2hfX292ZXJsYXkge1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAxO1xufVxuLm1kLXNlYXJjaF9faW5uZXIge1xuICAtd2Via2l0LWJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgICAgICAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG59XG4ubWQtc2VhcmNoX19mb3JtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xufVxuLm1kLXNlYXJjaF9faW5wdXQge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIHBhZGRpbmc6IDAgMi4ycmVtIDAgMy42cmVtO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgei1pbmRleDogMjtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pbnB1dCB7XG4gIHBhZGRpbmc6IDAgMy42cmVtIDAgMi4ycmVtO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAtd2Via2l0LXRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi1tb3otcGxhY2Vob2xkZXIge1xuICAtbW96LXRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi1tcy1pbnB1dC1wbGFjZWhvbGRlciB7XG4gIC1tcy10cmFuc2l0aW9uOiBjb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSk7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cbi5tZC1zZWFyY2hfX2lucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQgfiAubWQtc2VhcmNoX19pY29uLCAubWQtc2VhcmNoX19pbnB1dDo6cGxhY2Vob2xkZXIge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuLm1kLXNlYXJjaF9faW5wdXQ6Oi1tcy1jbGVhciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtc2VhcmNoX19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB3aWR0aDogMS4ycmVtO1xuICBoZWlnaHQ6IDEuMnJlbTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDI7XG59XG4ubWQtc2VhcmNoX19pY29uOmhvdmVyIHtcbiAgb3BhY2l0eTogMC43O1xufVxuLm1kLXNlYXJjaF9faWNvbltmb3I9X19zZWFyY2hdIHtcbiAgdG9wOiAwLjNyZW07XG4gIGxlZnQ6IDAuNXJlbTtcbn1cbltkaXI9cnRsXSAubWQtc2VhcmNoX19pY29uW2Zvcj1fX3NlYXJjaF0ge1xuICByaWdodDogMC41cmVtO1xuICBsZWZ0OiBpbml0aWFsO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmcge1xuICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG59XG4ubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgdG9wOiAwLjNyZW07XG4gIHJpZ2h0OiAwLjVyZW07XG4gIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAxNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksIG9wYWNpdHkgMTUwbXM7XG4gIG9wYWNpdHk6IDA7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2ljb25bdHlwZT1yZXNldF0ge1xuICByaWdodDogaW5pdGlhbDtcbiAgbGVmdDogMC41cmVtO1xufVxuW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5wdXQ6dmFsaWQgfiAubWQtc2VhcmNoX19pY29uW3R5cGU9cmVzZXRdIHtcbiAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgb3BhY2l0eTogMTtcbiAgcG9pbnRlci1ldmVudHM6IGluaXRpYWw7XG59XG5bZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDp2YWxpZCB+IC5tZC1zZWFyY2hfX2ljb25bdHlwZT1yZXNldF06aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc2VhcmNoX19vdXRwdXQge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiAxMDAlO1xuICBib3JkZXItcmFkaXVzOiAwIDAgMC4xcmVtIDAuMXJlbTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgei1pbmRleDogMTtcbn1cbi5tZC1zZWFyY2hfX3Njcm9sbHdyYXAge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAuMDVyZW0gMCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIG92ZXJmbG93LXk6IGF1dG87XG4gIC13ZWJraXQtYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuICAgICAgICAgIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgIC1tcy1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xufVxuXG4ubWQtc2VhcmNoLXJlc3VsdCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgcGFkZGluZzogMCAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBsaW5lLWhlaWdodDogMS44cmVtO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGlzdCB7XG4gIG1hcmdpbjogMDtcbiAgcGFkZGluZzogMDtcbiAgYm9yZGVyLXRvcDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIGxpc3Qtc3R5bGU6IG5vbmU7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9faXRlbSB7XG4gIGJveC1zaGFkb3c6IDAgLTAuMDVyZW0gMCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGluayB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDI1MG1zO1xuICBvdXRsaW5lOiAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGluazpmb2N1cywgLm1kLXNlYXJjaC1yZXN1bHRfX2xpbms6aG92ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50KTtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmZvY3VzIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlOjpiZWZvcmUsIC5tZC1zZWFyY2gtcmVzdWx0X19saW5rOmhvdmVyIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlOjpiZWZvcmUge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fbGluazpsYXN0LWNoaWxkIC5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICBtYXJnaW4tYm90dG9tOiAwLjZyZW07XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fYXJ0aWNsZSB7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgcGFkZGluZzogMCAwLjhyZW07XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUtLWRvY3VtZW50IC5tZC1zZWFyY2gtcmVzdWx0X190aXRsZSB7XG4gIG1hcmdpbjogMC41NXJlbSAwO1xuICBmb250LXNpemU6IDAuOHJlbTtcbiAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgbGluZS1oZWlnaHQ6IDEuNDtcbn1cbi5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICBsZWZ0OiAwO1xuICBtYXJnaW46IDAuMXJlbTtcbiAgcGFkZGluZzogMC40cmVtO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuW2Rpcj1ydGxdIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgcmlnaHQ6IDA7XG4gIGxlZnQ6IGluaXRpYWw7XG59XG5bZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2ljb24gc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuLm1kLXNlYXJjaC1yZXN1bHRfX3RpdGxlIHtcbiAgbWFyZ2luOiAwLjVlbSAwO1xuICBmb250LXNpemU6IDAuNjRyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIGxpbmUtaGVpZ2h0OiAxLjQ7XG59XG4ubWQtc2VhcmNoLXJlc3VsdF9fdGVhc2VyIHtcbiAgZGlzcGxheTogLXdlYmtpdC1ib3g7XG4gIG1heC1oZWlnaHQ6IDEuNjVyZW07XG4gIG1hcmdpbjogMC41ZW0gMDtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBsaW5lLWhlaWdodDogMS40O1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgLXdlYmtpdC1ib3gtb3JpZW50OiB2ZXJ0aWNhbDtcbiAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xufVxuLm1kLXNlYXJjaC1yZXN1bHQgZW0ge1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xufVxuXG4ubWQtc2lkZWJhciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDEyLjFyZW07XG4gIHBhZGRpbmc6IDEuMnJlbSAwO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLm1kLXNpZGViYXJbZGF0YS1tZC1zdGF0ZT1sb2NrXSB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAyLjRyZW07XG59XG4ubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgZGlzcGxheTogbm9uZTtcbn1cbi5tZC1zaWRlYmFyX19zY3JvbGx3cmFwIHtcbiAgbWF4LWhlaWdodDogMTAwJTtcbiAgbWFyZ2luOiAwIDAuMnJlbTtcbiAgb3ZlcmZsb3cteTogYXV0bztcbiAgLXdlYmtpdC1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgIC1tcy1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuLm1kLXNpZGViYXJfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgd2lkdGg6IDAuMnJlbTtcbiAgaGVpZ2h0OiAwLjJyZW07XG59XG4ubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbn1cbi5tZC1zaWRlYmFyX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG5cbkAtd2Via2l0LWtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3RzLS1kb25lIHtcbiAgMCUge1xuICAgIGhlaWdodDogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBoZWlnaHQ6IDAuNjVyZW07XG4gIH1cbn1cblxuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3RzLS1kb25lIHtcbiAgMCUge1xuICAgIGhlaWdodDogMDtcbiAgfVxuICAxMDAlIHtcbiAgICBoZWlnaHQ6IDAuNjVyZW07XG4gIH1cbn1cbkAtd2Via2l0LWtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUge1xuICAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG4gIDEwMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwJSk7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxufVxuLm1kLXNvdXJjZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHRyYW5zaXRpb246IG9wYWNpdHkgMjUwbXM7XG4gIGZvbnQtc2l6ZTogMC42NXJlbTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgLXdlYmtpdC1iYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgICAgICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2Uge1xuICBwYWRkaW5nLXJpZ2h0OiBpbml0aWFsO1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbn1cbi5tZC1zb3VyY2U6aG92ZXIge1xuICBvcGFjaXR5OiAwLjc7XG59XG4ubWQtc291cmNlX19pY29uIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB3aWR0aDogMi40cmVtO1xuICBoZWlnaHQ6IDIuNHJlbTtcbiAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcbn1cbi5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXRvcDogMC42cmVtO1xuICBtYXJnaW4tbGVmdDogMC42cmVtO1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2VfX2ljb24gc3ZnIHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjZyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXNvdXJjZV9faWNvbiArIC5tZC1zb3VyY2VfX3JlcG9zaXRvcnkge1xuICBtYXJnaW4tbGVmdDogLTJyZW07XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbltkaXI9cnRsXSAubWQtc291cmNlX19pY29uICsgLm1kLXNvdXJjZV9fcmVwb3NpdG9yeSB7XG4gIG1hcmdpbi1yaWdodDogLTJyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xuICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG59XG4ubWQtc291cmNlX19yZXBvc2l0b3J5IHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBtYXgtd2lkdGg6IDEwMCU7XG4gIG1hcmdpbi1sZWZ0OiAwLjZyZW07XG4gIGZvbnQtd2VpZ2h0OiA3MDA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xufVxuLm1kLXNvdXJjZV9fZmFjdHMge1xuICBtYXJnaW46IDA7XG4gIHBhZGRpbmc6IDA7XG4gIGZvbnQtc2l6ZTogMC41NXJlbTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbiAgbGlzdC1zdHlsZS10eXBlOiBub25lO1xuICBvcGFjaXR5OiAwLjc1O1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuW2RhdGEtbWQtc3RhdGU9ZG9uZV0gLm1kLXNvdXJjZV9fZmFjdHMge1xuICAtd2Via2l0LWFuaW1hdGlvbjogbWQtc291cmNlX19mYWN0cy0tZG9uZSAyNTBtcyBlYXNlLWluO1xuICAgICAgICAgIGFuaW1hdGlvbjogbWQtc291cmNlX19mYWN0cy0tZG9uZSAyNTBtcyBlYXNlLWluO1xufVxuLm1kLXNvdXJjZV9fZmFjdCB7XG4gIGZsb2F0OiBsZWZ0O1xufVxuW2Rpcj1ydGxdIC5tZC1zb3VyY2VfX2ZhY3Qge1xuICBmbG9hdDogcmlnaHQ7XG59XG5bZGF0YS1tZC1zdGF0ZT1kb25lXSAubWQtc291cmNlX19mYWN0IHtcbiAgLXdlYmtpdC1hbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdC0tZG9uZSA0MDBtcyBlYXNlLW91dDtcbiAgICAgICAgICBhbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdC0tZG9uZSA0MDBtcyBlYXNlLW91dDtcbn1cbi5tZC1zb3VyY2VfX2ZhY3Q6OmJlZm9yZSB7XG4gIG1hcmdpbjogMCAwLjFyZW07XG4gIGNvbnRlbnQ6IFwiwrdcIjtcbn1cbi5tZC1zb3VyY2VfX2ZhY3Q6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG5cbi5tZC10YWJzIHtcbiAgd2lkdGg6IDEwMCU7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIG92ZXJmbG93OiBhdXRvO1xufVxuLm5vLWpzIC5tZC10YWJzIHtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbn1cbi5tZC10YWJzX19saXN0IHtcbiAgbWFyZ2luOiAwO1xuICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICBwYWRkaW5nOiAwO1xuICBsaXN0LXN0eWxlOiBub25lO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xufVxuW2Rpcj1ydGxdIC5tZC10YWJzX19saXN0IHtcbiAgbWFyZ2luLXJpZ2h0OiAwLjJyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuLm1kLXRhYnNfX2l0ZW0ge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGhlaWdodDogMi40cmVtO1xuICBwYWRkaW5nLXJpZ2h0OiAwLjZyZW07XG4gIHBhZGRpbmctbGVmdDogMC42cmVtO1xufVxuLm1kLXRhYnNfX2xpbmsge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogMC44cmVtO1xuICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLCBvcGFjaXR5IDI1MG1zO1xuICBmb250LXNpemU6IDAuN3JlbTtcbiAgb3BhY2l0eTogMC43O1xufVxuLm5vLWpzIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbjogbm9uZTtcbn1cbi5tZC10YWJzX19saW5rLS1hY3RpdmUsIC5tZC10YWJzX19saW5rOmhvdmVyIHtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIG9wYWNpdHk6IDE7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMikgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAyMG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDMpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogNDBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg0KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDYwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoNSkgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiA4MG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDYpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTAwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoNykgLm1kLXRhYnNfX2xpbmsge1xuICB0cmFuc2l0aW9uLWRlbGF5OiAxMjBtcztcbn1cbi5tZC10YWJzX19pdGVtOm50aC1jaGlsZCg4KSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zaXRpb24tZGVsYXk6IDE0MG1zO1xufVxuLm1kLXRhYnNfX2l0ZW06bnRoLWNoaWxkKDkpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTYwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTApIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMTgwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTEpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjAwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTIpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjIwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTMpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjQwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTQpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjYwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTUpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMjgwbXM7XG59XG4ubWQtdGFic19faXRlbTpudGgtY2hpbGQoMTYpIC5tZC10YWJzX19saW5rIHtcbiAgdHJhbnNpdGlvbi1kZWxheTogMzAwbXM7XG59XG4ubWQtdGFic1tkYXRhLW1kLXN0YXRlPWhpZGRlbl0ge1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5tZC10YWJzW2RhdGEtbWQtc3RhdGU9aGlkZGVuXSAubWQtdGFic19fbGluayB7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWSg1MCUpO1xuICB0cmFuc2l0aW9uOiBjb2xvciAyNTBtcywgdHJhbnNmb3JtIDBtcyA0MDBtcywgb3BhY2l0eSAxMDBtcztcbiAgb3BhY2l0eTogMDtcbn1cblxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24sIC5tZC10eXBlc2V0IGRldGFpbHMge1xuICBtYXJnaW46IDEuNTYyNWVtIDA7XG4gIHBhZGRpbmc6IDAgMC42cmVtO1xuICBib3JkZXItbGVmdDogMC4ycmVtIHNvbGlkICM0NDhhZmY7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBib3gtc2hhZG93OiAwIDAuMnJlbSAwLjVyZW0gcmdiYSgwLCAwLCAwLCAwLjA1KSwgMCAwIDAuMDVyZW0gcmdiYSgwLCAwLCAwLCAwLjEpO1xuICBvdmVyZmxvdzogYXV0bztcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAuYWRtb25pdGlvbiwgW2Rpcj1ydGxdIC5tZC10eXBlc2V0IGRldGFpbHMge1xuICBib3JkZXItcmlnaHQ6IDAuMnJlbSBzb2xpZCAjNDQ4YWZmO1xuICBib3JkZXItbGVmdDogbm9uZTtcbn1cbmh0bWwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24gPiA6bGFzdC1jaGlsZCwgaHRtbCAubWQtdHlwZXNldCBkZXRhaWxzID4gOmxhc3QtY2hpbGQge1xuICBtYXJnaW4tYm90dG9tOiAwLjZyZW07XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbiAuYWRtb25pdGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscyAuYWRtb25pdGlvbiwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24gZGV0YWlscywgLm1kLXR5cGVzZXQgZGV0YWlscyBkZXRhaWxzIHtcbiAgbWFyZ2luOiAxZW0gMDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRsZHIsIC5tZC10eXBlc2V0IGRldGFpbHMudGxkciwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VtbWFyeSwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdW1tYXJ5LCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hYnN0cmFjdCwgLm1kLXR5cGVzZXQgZGV0YWlscy5hYnN0cmFjdCB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjMDBiMGZmO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udGxkciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy50bGRyID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnN1bW1hcnkgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxNzYsIDI1NSwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRsZHIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy50bGRyID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1bW1hcnkgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5zdW1tYXJ5ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmFic3RyYWN0ID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuYWJzdHJhY3QgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGIwZmY7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTQsNUgyMFY3SDRWNU00LDlIMjBWMTFINFY5TTQsMTNIMjBWMTVINFYxM000LDE3SDE0VjE5SDRWMTdaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNNCw1SDIwVjdINFY1TTQsOUgyMFYxMUg0VjlNNCwxM0gyMFYxNUg0VjEzTTQsMTdIMTRWMTlINFYxN1pcXFwiIC8+PC9zdmc+XCIpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udG9kbywgLm1kLXR5cGVzZXQgZGV0YWlscy50b2RvLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbmZvLCAubWQtdHlwZXNldCBkZXRhaWxzLmluZm8ge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYjhkNDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRvZG8gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMudG9kbyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaW5mbyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbmZvID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAxODQsIDIxMiwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRvZG8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy50b2RvID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmluZm8gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbmZvID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiOGQ0O1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMyw5SDExVjdIMTNNMTMsMTdIMTFWMTFIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTMsOUgxMVY3SDEzTTEzLDE3SDExVjExSDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkExMCwxMCAwIDAsMCAxMiwyWlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbXBvcnRhbnQsIC5tZC10eXBlc2V0IGRldGFpbHMuaW1wb3J0YW50LCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5oaW50LCAubWQtdHlwZXNldCBkZXRhaWxzLmhpbnQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnRpcCwgLm1kLXR5cGVzZXQgZGV0YWlscy50aXAge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYmZhNTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmltcG9ydGFudCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhpbnQgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuaGludCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udGlwID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnRpcCA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMTkxLCAxNjUsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5pbXBvcnRhbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uaGludCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmhpbnQgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24udGlwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMudGlwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDBiZmE1O1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xNy41NSwxMS4yQzE3LjMyLDEwLjkgMTcuMDUsMTAuNjQgMTYuNzksMTAuMzhDMTYuMTQsOS43OCAxNS4zOSw5LjM1IDE0Ljc2LDguNzJDMTMuMyw3LjI2IDEzLDQuODUgMTMuOTEsM0MxMywzLjIzIDEyLjE2LDMuNzUgMTEuNDYsNC4zMkM4LjkyLDYuNCA3LjkyLDEwLjA3IDkuMTIsMTMuMjJDOS4xNiwxMy4zMiA5LjIsMTMuNDIgOS4yLDEzLjU1QzkuMiwxMy43NyA5LjA1LDEzLjk3IDguODUsMTQuMDVDOC42MywxNC4xNSA4LjM5LDE0LjA5IDguMjEsMTMuOTNDOC4xNSwxMy44OCA4LjExLDEzLjgzIDguMDYsMTMuNzZDNi45NiwxMi4zMyA2Ljc4LDEwLjI4IDcuNTMsOC42NEM1Ljg5LDEwIDUsMTIuMyA1LjE0LDE0LjQ3QzUuMTgsMTQuOTcgNS4yNCwxNS40NyA1LjQxLDE1Ljk3QzUuNTUsMTYuNTcgNS44MSwxNy4xNyA2LjEzLDE3LjdDNy4xNywxOS40MyA5LDIwLjY3IDEwLjk3LDIwLjkyQzEzLjA3LDIxLjE5IDE1LjMyLDIwLjggMTYuOTMsMTkuMzJDMTguNzMsMTcuNjYgMTkuMzgsMTUgMTguNDMsMTIuNzJMMTguMywxMi40NkMxOC4xLDEyIDE3LjgzLDExLjU5IDE3LjUsMTEuMjFMMTcuNTUsMTEuMk0xNC40NSwxNy41QzE0LjE3LDE3Ljc0IDEzLjcyLDE4IDEzLjM3LDE4LjFDMTIuMjcsMTguNSAxMS4xNywxNy45NCAxMC41LDE3LjI4QzExLjY5LDE3IDEyLjM5LDE2LjEyIDEyLjU5LDE1LjIzQzEyLjc2LDE0LjQzIDEyLjQ1LDEzLjc3IDEyLjMyLDEzQzEyLjIsMTIuMjYgMTIuMjIsMTEuNjMgMTIuNSwxMC45NEMxMi42NywxMS4zMiAxMi44NywxMS43IDEzLjEsMTJDMTMuODYsMTMgMTUuMDUsMTMuNDQgMTUuMywxNC44QzE1LjM0LDE0Ljk0IDE1LjM2LDE1LjA4IDE1LjM2LDE1LjIzQzE1LjM5LDE2LjA1IDE1LjA0LDE2Ljk1IDE0LjQ0LDE3LjVIMTQuNDVaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTcuNTUsMTEuMkMxNy4zMiwxMC45IDE3LjA1LDEwLjY0IDE2Ljc5LDEwLjM4QzE2LjE0LDkuNzggMTUuMzksOS4zNSAxNC43Niw4LjcyQzEzLjMsNy4yNiAxMyw0Ljg1IDEzLjkxLDNDMTMsMy4yMyAxMi4xNiwzLjc1IDExLjQ2LDQuMzJDOC45Miw2LjQgNy45MiwxMC4wNyA5LjEyLDEzLjIyQzkuMTYsMTMuMzIgOS4yLDEzLjQyIDkuMiwxMy41NUM5LjIsMTMuNzcgOS4wNSwxMy45NyA4Ljg1LDE0LjA1QzguNjMsMTQuMTUgOC4zOSwxNC4wOSA4LjIxLDEzLjkzQzguMTUsMTMuODggOC4xMSwxMy44MyA4LjA2LDEzLjc2QzYuOTYsMTIuMzMgNi43OCwxMC4yOCA3LjUzLDguNjRDNS44OSwxMCA1LDEyLjMgNS4xNCwxNC40N0M1LjE4LDE0Ljk3IDUuMjQsMTUuNDcgNS40MSwxNS45N0M1LjU1LDE2LjU3IDUuODEsMTcuMTcgNi4xMywxNy43QzcuMTcsMTkuNDMgOSwyMC42NyAxMC45NywyMC45MkMxMy4wNywyMS4xOSAxNS4zMiwyMC44IDE2LjkzLDE5LjMyQzE4LjczLDE3LjY2IDE5LjM4LDE1IDE4LjQzLDEyLjcyTDE4LjMsMTIuNDZDMTguMSwxMiAxNy44MywxMS41OSAxNy41LDExLjIxTDE3LjU1LDExLjJNMTQuNDUsMTcuNUMxNC4xNywxNy43NCAxMy43MiwxOCAxMy4zNywxOC4xQzEyLjI3LDE4LjUgMTEuMTcsMTcuOTQgMTAuNSwxNy4yOEMxMS42OSwxNyAxMi4zOSwxNi4xMiAxMi41OSwxNS4yM0MxMi43NiwxNC40MyAxMi40NSwxMy43NyAxMi4zMiwxM0MxMi4yLDEyLjI2IDEyLjIyLDExLjYzIDEyLjUsMTAuOTRDMTIuNjcsMTEuMzIgMTIuODcsMTEuNyAxMy4xLDEyQzEzLjg2LDEzIDE1LjA1LDEzLjQ0IDE1LjMsMTQuOEMxNS4zNCwxNC45NCAxNS4zNiwxNS4wOCAxNS4zNiwxNS4yM0MxNS4zOSwxNi4wNSAxNS4wNCwxNi45NSAxNC40NCwxNy41SDE0LjQ1WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5kb25lLCAubWQtdHlwZXNldCBkZXRhaWxzLmRvbmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNoZWNrLCAubWQtdHlwZXNldCBkZXRhaWxzLmNoZWNrLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5zdWNjZXNzLCAubWQtdHlwZXNldCBkZXRhaWxzLnN1Y2Nlc3Mge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzAwYzg1Mztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRvbmUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZG9uZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2hlY2sgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuY2hlY2sgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnN1Y2Nlc3MgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuc3VjY2VzcyA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMjAwLCA4MywgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRvbmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5kb25lID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNoZWNrID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuY2hlY2sgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uc3VjY2VzcyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnN1Y2Nlc3MgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICMwMGM4NTM7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTExLDE2LjVMMTgsOS41TDE2LjU5LDguMDlMMTEsMTMuNjdMNy45MSwxMC41OUw2LjUsMTJMMTEsMTYuNVpcXFwiIC8+PC9zdmc+XCIpO1xuICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMiwyQTEwLDEwIDAgMCwxIDIyLDEyQTEwLDEwIDAgMCwxIDEyLDIyQTEwLDEwIDAgMCwxIDIsMTJBMTAsMTAgMCAwLDEgMTIsMk0xMSwxNi41TDE4LDkuNUwxNi41OSw4LjA5TDExLDEzLjY3TDcuOTEsMTAuNTlMNi41LDEyTDExLDE2LjVaXFxcIiAvPjwvc3ZnPlwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhcSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYXEsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhlbHAsIC5tZC10eXBlc2V0IGRldGFpbHMuaGVscCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVlc3Rpb24sIC5tZC10eXBlc2V0IGRldGFpbHMucXVlc3Rpb24ge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzY0ZGQxNztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhcSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYXEgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmhlbHAgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuaGVscCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVlc3Rpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMucXVlc3Rpb24gPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDEwMCwgMjIxLCAyMywgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhcSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmZhcSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5oZWxwID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IGRldGFpbHMuaGVscCA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5xdWVzdGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1ZXN0aW9uID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjNjRkZDE3O1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xNS4wNywxMS4yNUwxNC4xNywxMi4xN0MxMy40NSwxMi44OSAxMywxMy41IDEzLDE1SDExVjE0LjVDMTEsMTMuMzkgMTEuNDUsMTIuMzkgMTIuMTcsMTEuNjdMMTMuNDEsMTAuNDFDMTMuNzgsMTAuMDUgMTQsOS41NSAxNCw5QzE0LDcuODkgMTMuMSw3IDEyLDdBMiwyIDAgMCwwIDEwLDlIOEE0LDQgMCAwLDEgMTIsNUE0LDQgMCAwLDEgMTYsOUMxNiw5Ljg4IDE1LjY0LDEwLjY3IDE1LjA3LDExLjI1TTEzLDE5SDExVjE3SDEzTTEyLDJBMTAsMTAgMCAwLDAgMiwxMkExMCwxMCAwIDAsMCAxMiwyMkExMCwxMCAwIDAsMCAyMiwxMkMyMiw2LjQ3IDE3LjUsMiAxMiwyWlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE1LjA3LDExLjI1TDE0LjE3LDEyLjE3QzEzLjQ1LDEyLjg5IDEzLDEzLjUgMTMsMTVIMTFWMTQuNUMxMSwxMy4zOSAxMS40NSwxMi4zOSAxMi4xNywxMS42N0wxMy40MSwxMC40MUMxMy43OCwxMC4wNSAxNCw5LjU1IDE0LDlDMTQsNy44OSAxMy4xLDcgMTIsN0EyLDIgMCAwLDAgMTAsOUg4QTQsNCAwIDAsMSAxMiw1QTQsNCAwIDAsMSAxNiw5QzE2LDkuODggMTUuNjQsMTAuNjcgMTUuMDcsMTEuMjVNMTMsMTlIMTFWMTdIMTNNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQzIyLDYuNDcgMTcuNSwyIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmF0dGVudGlvbiwgLm1kLXR5cGVzZXQgZGV0YWlscy5hdHRlbnRpb24sIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmNhdXRpb24sIC5tZC10eXBlc2V0IGRldGFpbHMuY2F1dGlvbiwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ud2FybmluZywgLm1kLXR5cGVzZXQgZGV0YWlscy53YXJuaW5nIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZjkxMDA7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuYXR0ZW50aW9uID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jYXV0aW9uID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmNhdXRpb24gPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLndhcm5pbmcgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMud2FybmluZyA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAxNDUsIDAsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5hdHRlbnRpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2F1dGlvbiA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNhdXRpb24gPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ud2FybmluZyA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLndhcm5pbmcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjkxMDA7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEzLDE0SDExVjEwSDEzTTEzLDE4SDExVjE2SDEzTTEsMjFIMjNMMTIsMkwxLDIxWlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEzLDE0SDExVjEwSDEzTTEzLDE4SDExVjE2SDEzTTEsMjFIMjNMMTIsMkwxLDIxWlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICNmZjUyNTI7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5taXNzaW5nID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZmFpbCA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZmFpbHVyZSA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDgyLCA4MiwgMC4xKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLm1pc3NpbmcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5taXNzaW5nID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWwgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmZhaWx1cmUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5mYWlsdXJlID4gOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY1MjUyO1xuICAtd2Via2l0LW1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMiwyQzE3LjUzLDIgMjIsNi40NyAyMiwxMkMyMiwxNy41MyAxNy41MywyMiAxMiwyMkM2LjQ3LDIyIDIsMTcuNTMgMiwxMkMyLDYuNDcgNi40NywyIDEyLDJNMTUuNTksN0wxMiwxMC41OUw4LjQxLDdMNyw4LjQxTDEwLjU5LDEyTDcsMTUuNTlMOC40MSwxN0wxMiwxMy40MUwxNS41OSwxN0wxNywxNS41OUwxMy40MSwxMkwxNyw4LjQxTDE1LjU5LDdaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkMxNy41MywyIDIyLDYuNDcgMjIsMTJDMjIsMTcuNTMgMTcuNTMsMjIgMTIsMjJDNi40NywyMiAyLDE3LjUzIDIsMTJDMiw2LjQ3IDYuNDcsMiAxMiwyTTE1LjU5LDdMMTIsMTAuNTlMOC40MSw3TDcsOC40MUwxMC41OSwxMkw3LDE1LjU5TDguNDEsMTdMMTIsMTMuNDFMMTUuNTksMTdMMTcsMTUuNTlMMTMuNDEsMTJMMTcsOC40MUwxNS41OSw3WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5lcnJvciwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZGFuZ2VyLCAubWQtdHlwZXNldCBkZXRhaWxzLmRhbmdlciB7XG4gIGJvcmRlci1sZWZ0LWNvbG9yOiAjZmYxNzQ0O1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZXJyb3IgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmRhbmdlciA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjMsIDY4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXJyb3IgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5lcnJvciA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCAuYWRtb25pdGlvbi5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5kYW5nZXIgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmZjE3NDQ7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTExLjUsMjBMMTYuMzYsMTAuMjdIMTNWNEw4LDEzLjczSDExLjVWMjBNMTIsMkMxNC43NSwyIDE3LjEsMyAxOS4wNSw0Ljk1QzIxLDYuOSAyMiw5LjI1IDIyLDEyQzIyLDE0Ljc1IDIxLDE3LjEgMTkuMDUsMTkuMDVDMTcuMSwyMSAxNC43NSwyMiAxMiwyMkM5LjI1LDIyIDYuOSwyMSA0Ljk1LDE5LjA1QzMsMTcuMSAyLDE0Ljc1IDIsMTJDMiw5LjI1IDMsNi45IDQuOTUsNC45NUM2LjksMyA5LjI1LDIgMTIsMlpcXFwiIC8+PC9zdmc+XCIpO1xuICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xMS41LDIwTDE2LjM2LDEwLjI3SDEzVjRMOCwxMy43M0gxMS41VjIwTTEyLDJDMTQuNzUsMiAxNy4xLDMgMTkuMDUsNC45NUMyMSw2LjkgMjIsOS4yNSAyMiwxMkMyMiwxNC43NSAyMSwxNy4xIDE5LjA1LDE5LjA1QzE3LjEsMjEgMTQuNzUsMjIgMTIsMjJDOS4yNSwyMiA2LjksMjEgNC45NSwxOS4wNUMzLDE3LjEgMiwxNC43NSAyLDEyQzIsOS4yNSAzLDYuOSA0Ljk1LDQuOTVDNi45LDMgOS4yNSwyIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZywgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcge1xuICBib3JkZXItbGVmdC1jb2xvcjogI2Y1MDA1Nztcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmJ1ZyA+IDpmaXJzdC1jaGlsZCwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI0NSwgMCwgODcsIDAuMSk7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5idWcgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNmNTAwNTc7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE0LDEySDEwVjEwSDE0TTE0LDE2SDEwVjE0SDE0TTIwLDhIMTcuMTlDMTYuNzQsNy4yMiAxNi4xMiw2LjU1IDE1LjM3LDYuMDRMMTcsNC40MUwxNS41OSwzTDEzLjQyLDUuMTdDMTIuOTYsNS4wNiAxMi41LDUgMTIsNUMxMS41LDUgMTEuMDQsNS4wNiAxMC41OSw1LjE3TDguNDEsM0w3LDQuNDFMOC42Miw2LjA0QzcuODgsNi41NSA3LjI2LDcuMjIgNi44MSw4SDRWMTBINi4wOUM2LjA0LDEwLjMzIDYsMTAuNjYgNiwxMVYxMkg0VjE0SDZWMTVDNiwxNS4zNCA2LjA0LDE1LjY3IDYuMDksMTZINFYxOEg2LjgxQzcuODUsMTkuNzkgOS43OCwyMSAxMiwyMUMxNC4yMiwyMSAxNi4xNSwxOS43OSAxNy4xOSwxOEgyMFYxNkgxNy45MUMxNy45NiwxNS42NyAxOCwxNS4zNCAxOCwxNVYxNEgyMFYxMkgxOFYxMUMxOCwxMC42NiAxNy45NiwxMC4zMyAxNy45MSwxMEgyMFY4WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE0LDEySDEwVjEwSDE0TTE0LDE2SDEwVjE0SDE0TTIwLDhIMTcuMTlDMTYuNzQsNy4yMiAxNi4xMiw2LjU1IDE1LjM3LDYuMDRMMTcsNC40MUwxNS41OSwzTDEzLjQyLDUuMTdDMTIuOTYsNS4wNiAxMi41LDUgMTIsNUMxMS41LDUgMTEuMDQsNS4wNiAxMC41OSw1LjE3TDguNDEsM0w3LDQuNDFMOC42Miw2LjA0QzcuODgsNi41NSA3LjI2LDcuMjIgNi44MSw4SDRWMTBINi4wOUM2LjA0LDEwLjMzIDYsMTAuNjYgNiwxMVYxMkg0VjE0SDZWMTVDNiwxNS4zNCA2LjA0LDE1LjY3IDYuMDksMTZINFYxOEg2LjgxQzcuODUsMTkuNzkgOS43OCwyMSAxMiwyMUMxNC4yMiwyMSAxNi4xNSwxOS43OSAxNy4xOSwxOEgyMFYxNkgxNy45MUMxNy45NiwxNS42NyAxOCwxNS4zNCAxOCwxNVYxNEgyMFYxMkgxOFYxMUMxOCwxMC42NiAxNy45NiwxMC4zMyAxNy45MSwxMEgyMFY4WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5leGFtcGxlLCAubWQtdHlwZXNldCBkZXRhaWxzLmV4YW1wbGUge1xuICBib3JkZXItbGVmdC1jb2xvcjogIzY1MWZmZjtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLmV4YW1wbGUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IGRldGFpbHMuZXhhbXBsZSA+IDpmaXJzdC1jaGlsZCB7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTAxLCAzMSwgMjU1LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uZXhhbXBsZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmV4YW1wbGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM2NTFmZmY7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcsMTNWMTFIMjFWMTNIN003LDE5VjE3SDIxVjE5SDdNNyw3VjVIMjFWN0g3TTMsOFY1SDJWNEg0VjhIM00yLDE3VjE2SDVWMjBIMlYxOUg0VjE4LjVIM1YxNy41SDRWMTdIMk00LjI1LDEwQTAuNzUsMC43NSAwIDAsMSA1LDEwLjc1QzUsMTAuOTUgNC45MiwxMS4xNCA0Ljc5LDExLjI3TDMuMTIsMTNINVYxNEgyVjEzLjA4TDQsMTFIMlYxMEg0LjI1WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcsMTNWMTFIMjFWMTNIN003LDE5VjE3SDIxVjE5SDdNNyw3VjVIMjFWN0g3TTMsOFY1SDJWNEg0VjhIM00yLDE3VjE2SDVWMjBIMlYxOUg0VjE4LjVIM1YxNy41SDRWMTdIMk00LjI1LDEwQTAuNzUsMC43NSAwIDAsMSA1LDEwLjc1QzUsMTAuOTUgNC45MiwxMS4xNCA0Ljc5LDExLjI3TDMuMTIsMTNINVYxNEgyVjEzLjA4TDQsMTFIMlYxMEg0LjI1WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlIHtcbiAgYm9yZGVyLWxlZnQtY29sb3I6ICM5ZTllOWU7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi5jaXRlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQsIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLnF1b3RlID4gOmZpcnN0LWNoaWxkLCAubWQtdHlwZXNldCBkZXRhaWxzLnF1b3RlID4gOmZpcnN0LWNoaWxkIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgxNTgsIDE1OCwgMTU4LCAwLjEpO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24uY2l0ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlLCAubWQtdHlwZXNldCBkZXRhaWxzLmNpdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24ucXVvdGUgPiA6Zmlyc3QtY2hpbGQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgZGV0YWlscy5xdW90ZSA+IDpmaXJzdC1jaGlsZDo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzllOWU5ZTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTQsMTdIMTdMMTksMTNWN0gxM1YxM0gxNk02LDE3SDlMMTEsMTNWN0g1VjEzSDhMNiwxN1pcXFwiIC8+PC9zdmc+XCIpO1xuICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDt1dGY4LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB2aWV3Qm94PVxcXCIwIDAgMjQgMjRcXFwiPjxwYXRoIGQ9XFxcIk0xNCwxN0gxN0wxOSwxM1Y3SDEzVjEzSDE2TTYsMTdIOUwxMSwxM1Y3SDVWMTNIOEw2LDE3WlxcXCIgLz48L3N2Zz5cIik7XG59XG4ubWQtdHlwZXNldCAuYWRtb25pdGlvbi10aXRsZSwgLm1kLXR5cGVzZXQgc3VtbWFyeSB7XG4gIG1hcmdpbjogMCAtMC42cmVtO1xuICBwYWRkaW5nOiAwLjRyZW0gMC42cmVtIDAuNHJlbSAycmVtO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDY4LCAxMzgsIDI1NSwgMC4xKTtcbiAgZm9udC13ZWlnaHQ6IDcwMDtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAuYWRtb25pdGlvbi10aXRsZSwgW2Rpcj1ydGxdIC5tZC10eXBlc2V0IHN1bW1hcnkge1xuICBwYWRkaW5nOiAwLjRyZW0gMnJlbSAwLjRyZW0gMC42cmVtO1xufVxuLm1kLXR5cGVzZXQgLmFkbW9uaXRpb24tdGl0bGU6bGFzdC1jaGlsZCwgLm1kLXR5cGVzZXQgc3VtbWFyeTpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMDtcbn1cbi5tZC10eXBlc2V0IC5hZG1vbml0aW9uLXRpdGxlOjpiZWZvcmUsIC5tZC10eXBlc2V0IHN1bW1hcnk6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgbWFyZ2luLWxlZnQ6IC0xLjRyZW07XG4gIGJhY2tncm91bmQtY29sb3I6ICM0NDhhZmY7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTIwLjcxLDcuMDRDMjEuMSw2LjY1IDIxLjEsNiAyMC43MSw1LjYzTDE4LjM3LDMuMjlDMTgsMi45IDE3LjM1LDIuOSAxNi45NiwzLjI5TDE1LjEyLDUuMTJMMTguODcsOC44N00zLDE3LjI1VjIxSDYuNzVMMTcuODEsOS45M0wxNC4wNiw2LjE4TDMsMTcuMjVaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMjAuNzEsNy4wNEMyMS4xLDYuNjUgMjEuMSw2IDIwLjcxLDUuNjNMMTguMzcsMy4yOUMxOCwyLjkgMTcuMzUsMi45IDE2Ljk2LDMuMjlMMTUuMTIsNS4xMkwxOC44Nyw4Ljg3TTMsMTcuMjVWMjFINi43NUwxNy44MSw5LjkzTDE0LjA2LDYuMThMMywxNy4yNVpcXFwiIC8+PC9zdmc+XCIpO1xuICBjb250ZW50OiBcIlwiO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IC5hZG1vbml0aW9uLXRpdGxlOjpiZWZvcmUsIFtkaXI9cnRsXSAubWQtdHlwZXNldCBzdW1tYXJ5OjpiZWZvcmUge1xuICBtYXJnaW4tcmlnaHQ6IC0xLjRyZW07XG4gIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xufVxuXG4uY29kZWhpbGl0ZSAubywgLmhpZ2hsaWdodCAubyB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmNvZGVoaWxpdGUgLm93LCAuaGlnaGxpZ2h0IC5vdyB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmNvZGVoaWxpdGUgLmdlLCAuaGlnaGxpZ2h0IC5nZSB7XG4gIGNvbG9yOiAjMDAwMDAwO1xufVxuLmNvZGVoaWxpdGUgLmdyLCAuaGlnaGxpZ2h0IC5nciB7XG4gIGNvbG9yOiAjQUEwMDAwO1xufVxuLmNvZGVoaWxpdGUgLmdoLCAuaGlnaGxpZ2h0IC5naCB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmdvLCAuaGlnaGxpZ2h0IC5nbyB7XG4gIGNvbG9yOiAjODg4ODg4O1xufVxuLmNvZGVoaWxpdGUgLmdwLCAuaGlnaGxpZ2h0IC5ncCB7XG4gIGNvbG9yOiAjNTU1NTU1O1xufVxuLmNvZGVoaWxpdGUgLmdzLCAuaGlnaGxpZ2h0IC5ncyB7XG4gIGNvbG9yOiBpbmhlcml0O1xufVxuLmNvZGVoaWxpdGUgLmd1LCAuaGlnaGxpZ2h0IC5ndSB7XG4gIGNvbG9yOiAjQUFBQUFBO1xufVxuLmNvZGVoaWxpdGUgLmd0LCAuaGlnaGxpZ2h0IC5ndCB7XG4gIGNvbG9yOiAjQUEwMDAwO1xufVxuLmNvZGVoaWxpdGUgLmdkLCAuaGlnaGxpZ2h0IC5nZCB7XG4gIGJhY2tncm91bmQtY29sb3I6ICNGRkREREQ7XG59XG4uY29kZWhpbGl0ZSAuZ2ksIC5oaWdobGlnaHQgLmdpIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RERkZERDtcbn1cbi5jb2RlaGlsaXRlIC5rLCAuaGlnaGxpZ2h0IC5rIHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAua2MsIC5oaWdobGlnaHQgLmtjIHtcbiAgY29sb3I6ICNBNzFENUQ7XG59XG4uY29kZWhpbGl0ZSAua2QsIC5oaWdobGlnaHQgLmtkIHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAua24sIC5oaWdobGlnaHQgLmtuIHtcbiAgY29sb3I6ICMzQjc4RTc7XG59XG4uY29kZWhpbGl0ZSAua3AsIC5oaWdobGlnaHQgLmtwIHtcbiAgY29sb3I6ICNBNzFENUQ7XG59XG4uY29kZWhpbGl0ZSAua3IsIC5oaWdobGlnaHQgLmtyIHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAua3QsIC5oaWdobGlnaHQgLmt0IHtcbiAgY29sb3I6ICMzRTYxQTI7XG59XG4uY29kZWhpbGl0ZSAuYywgLmhpZ2hsaWdodCAuYyB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNtLCAuaGlnaGxpZ2h0IC5jbSB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNwLCAuaGlnaGxpZ2h0IC5jcCB7XG4gIGNvbG9yOiAjNjY2NjY2O1xufVxuLmNvZGVoaWxpdGUgLmMxLCAuaGlnaGxpZ2h0IC5jMSB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNoLCAuaGlnaGxpZ2h0IC5jaCB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLmNzLCAuaGlnaGxpZ2h0IC5jcyB7XG4gIGNvbG9yOiAjOTk5OTk5O1xufVxuLmNvZGVoaWxpdGUgLm5hLCAuaGlnaGxpZ2h0IC5uYSB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5iLCAuaGlnaGxpZ2h0IC5uYiB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLmJwLCAuaGlnaGxpZ2h0IC5icCB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLm5jLCAuaGlnaGxpZ2h0IC5uYyB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5vLCAuaGlnaGxpZ2h0IC5ubyB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLm5kLCAuaGlnaGxpZ2h0IC5uZCB7XG4gIGNvbG9yOiAjNjY2NjY2O1xufVxuLmNvZGVoaWxpdGUgLm5pLCAuaGlnaGxpZ2h0IC5uaSB7XG4gIGNvbG9yOiAjNjY2NjY2O1xufVxuLmNvZGVoaWxpdGUgLm5lLCAuaGlnaGxpZ2h0IC5uZSB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5mLCAuaGlnaGxpZ2h0IC5uZiB7XG4gIGNvbG9yOiAjQzIxODVCO1xufVxuLmNvZGVoaWxpdGUgLm5sLCAuaGlnaGxpZ2h0IC5ubCB7XG4gIGNvbG9yOiAjM0I1MTc5O1xufVxuLmNvZGVoaWxpdGUgLm5uLCAuaGlnaGxpZ2h0IC5ubiB7XG4gIGNvbG9yOiAjRUM0MDdBO1xufVxuLmNvZGVoaWxpdGUgLm50LCAuaGlnaGxpZ2h0IC5udCB7XG4gIGNvbG9yOiAjM0I3OEU3O1xufVxuLmNvZGVoaWxpdGUgLm52LCAuaGlnaGxpZ2h0IC5udiB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLnZjLCAuaGlnaGxpZ2h0IC52YyB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLnZnLCAuaGlnaGxpZ2h0IC52ZyB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLnZpLCAuaGlnaGxpZ2h0IC52aSB7XG4gIGNvbG9yOiAjM0U2MUEyO1xufVxuLmNvZGVoaWxpdGUgLm54LCAuaGlnaGxpZ2h0IC5ueCB7XG4gIGNvbG9yOiAjRUM0MDdBO1xufVxuLmNvZGVoaWxpdGUgLm0sIC5oaWdobGlnaHQgLm0ge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5tZiwgLmhpZ2hsaWdodCAubWYge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5taCwgLmhpZ2hsaWdodCAubWgge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5taSwgLmhpZ2hsaWdodCAubWkge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5pbCwgLmhpZ2hsaWdodCAuaWwge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5tbywgLmhpZ2hsaWdodCAubW8ge1xuICBjb2xvcjogI0U3NEMzQztcbn1cbi5jb2RlaGlsaXRlIC5zLCAuaGlnaGxpZ2h0IC5zIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2IsIC5oaWdobGlnaHQgLnNiIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2MsIC5oaWdobGlnaHQgLnNjIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2QsIC5oaWdobGlnaHQgLnNkIHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4uY29kZWhpbGl0ZSAuczIsIC5oaWdobGlnaHQgLnMyIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc2UsIC5oaWdobGlnaHQgLnNlIHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc2gsIC5oaWdobGlnaHQgLnNoIHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc2ksIC5oaWdobGlnaHQgLnNpIHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc3gsIC5oaWdobGlnaHQgLnN4IHtcbiAgY29sb3I6ICMxODM2OTE7XG59XG4uY29kZWhpbGl0ZSAuc3IsIC5oaWdobGlnaHQgLnNyIHtcbiAgY29sb3I6ICMwMDk5MjY7XG59XG4uY29kZWhpbGl0ZSAuczEsIC5oaWdobGlnaHQgLnMxIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuc3MsIC5oaWdobGlnaHQgLnNzIHtcbiAgY29sb3I6ICMwRDkwNEY7XG59XG4uY29kZWhpbGl0ZSAuZXJyLCAuaGlnaGxpZ2h0IC5lcnIge1xuICBjb2xvcjogI0E2MTcxNztcbn1cbi5jb2RlaGlsaXRlIC53LCAuaGlnaGxpZ2h0IC53IHtcbiAgY29sb3I6IHRyYW5zcGFyZW50O1xufVxuLmNvZGVoaWxpdGUgLmhsbCwgLmhpZ2hsaWdodCAuaGxsIHtcbiAgZGlzcGxheTogYmxvY2s7XG4gIG1hcmdpbjogMCAtMC42cmVtO1xuICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgyNTUsIDIzNSwgNTksIDAuNSk7XG59XG5cbi5jb2RlaGlsaXRldGFibGUsIC5oaWdobGlnaHR0YWJsZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0Ym9keSwgLmhpZ2hsaWdodHRhYmxlIHRib2R5LFxuLmNvZGVoaWxpdGV0YWJsZSB0ZCxcbi5oaWdobGlnaHR0YWJsZSB0ZCB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwYWRkaW5nOiAwO1xufVxuLmNvZGVoaWxpdGV0YWJsZSB0ciwgLmhpZ2hsaWdodHRhYmxlIHRyIHtcbiAgZGlzcGxheTogZmxleDtcbn1cbi5jb2RlaGlsaXRldGFibGUgcHJlLCAuaGlnaGxpZ2h0dGFibGUgcHJlLFxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vZGl2LFxuLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9kaXYge1xuICBtYXJnaW46IDA7XG4gIGJvcmRlci1yYWRpdXM6IDA7XG59XG4uY29kZWhpbGl0ZXRhYmxlIC5saW5lbm9kaXYsIC5oaWdobGlnaHR0YWJsZSAubGluZW5vZGl2IHtcbiAgcGFkZGluZzogMC41MjVyZW0gMC42cmVtO1xufVxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vcywgLmhpZ2hsaWdodHRhYmxlIC5saW5lbm9zIHtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBib3gtc2hhZG93OiBpbnNldCAwIDAgMCAwLjA1cmVtIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICAtd2Via2l0LXVzZXItc2VsZWN0OiBub25lO1xuICAgICAtbW96LXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgLW1zLXVzZXItc2VsZWN0OiBub25lO1xuICAgICAgICAgIHVzZXItc2VsZWN0OiBub25lO1xufVxuLmNvZGVoaWxpdGV0YWJsZSAubGluZW5vcyBwcmUsIC5oaWdobGlnaHR0YWJsZSAubGluZW5vcyBwcmUge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgY29sb3I6IGluaGVyaXQ7XG4gIHRleHQtYWxpZ246IHJpZ2h0O1xufVxuLmNvZGVoaWxpdGV0YWJsZSAuY29kZSwgLmhpZ2hsaWdodHRhYmxlIC5jb2RlIHtcbiAgZmxleDogMTtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLm1kLXR5cGVzZXQgPiAuY29kZWhpbGl0ZXRhYmxlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHR0YWJsZSB7XG4gIG1hcmdpbjogMWVtIDA7XG4gIGJvcmRlci1yYWRpdXM6IDAuMmVtO1xufVxuXG4ubWQtdHlwZXNldCBbaWRePVwiZm5yZWY6XCJdIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLm1kLXR5cGVzZXQgW2lkXj1cImZucmVmOlwiXTp0YXJnZXQge1xuICBtYXJnaW4tdG9wOiAtMy44cmVtO1xuICBwYWRkaW5nLXRvcDogMy44cmVtO1xuICBwb2ludGVyLWV2ZW50czogbm9uZTtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIGhlaWdodDogMDtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IFtpZF49XCJmbjpcIl06dGFyZ2V0OjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTMuNXJlbTtcbiAgcGFkZGluZy10b3A6IDMuNXJlbTtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBmb250LXNpemU6IDAuNjRyZW07XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUgb2wge1xuICBtYXJnaW4tbGVmdDogMDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSB7XG4gIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOnRhcmdldCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZSBsaSA6Zmlyc3QtY2hpbGQge1xuICBtYXJnaW4tdG9wOiAwO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICBvcGFjaXR5OiAxO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlIGxpOmhvdmVyIC5mb290bm90ZS1iYWNrcmVmOmhvdmVyLCAubWQtdHlwZXNldCAuZm9vdG5vdGUgbGk6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG59XG4ubWQtdHlwZXNldCAuZm9vdG5vdGUtcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1yZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZTtcbiAgbWFyZ2luOiAwIDAuMmVtO1xuICBib3JkZXItbGVmdDogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAxLjI1ZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG4gIHZlcnRpY2FsLWFsaWduOiAtMC4yNXJlbTtcbn1cbi5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXM7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgZm9udC1zaXplOiAwO1xuICBvcGFjaXR5OiAwO1xuICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWYge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTAuMjVyZW0pO1xufVxuLm1kLXR5cGVzZXQgLmZvb3Rub3RlLWJhY2tyZWY6OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgd2lkdGg6IDAuOHJlbTtcbiAgaGVpZ2h0OiAwLjhyZW07XG4gIGJhY2tncm91bmQtY29sb3I6IGN1cnJlbnRDb2xvcjtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTksN1YxMUg1LjgzTDkuNDEsNy40MUw4LDZMMiwxMkw4LDE4TDkuNDEsMTYuNThMNS44MywxM0gyMVY3SDE5WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTE5LDdWMTFINS44M0w5LjQxLDcuNDFMOCw2TDIsMTJMOCwxOEw5LjQxLDE2LjU4TDUuODMsMTNIMjFWN0gxOVpcXFwiIC8+PC9zdmc+XCIpO1xuICBjb250ZW50OiBcIlwiO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IC5mb290bm90ZS1iYWNrcmVmOjpiZWZvcmUgc3ZnIHtcbiAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xufVxuXG4ubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgbWFyZ2luLWxlZnQ6IDAuNXJlbTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMC4yNXJlbSk7XG4gIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyAyNTBtcywgY29sb3IgMjUwbXMsIG9wYWNpdHkgMTI1bXMgMjUwbXMsIHZpc2liaWxpdHkgMG1zIDUwMG1zO1xuICBvcGFjaXR5OiAwO1xuICB2aXNpYmlsaXR5OiBoaWRkZW47XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBtYXJnaW4tcmlnaHQ6IDAuNXJlbTtcbiAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG59XG5odG1sIGJvZHkgLm1kLXR5cGVzZXQgLmhlYWRlcmxpbmsge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG59XG4ubWQtdHlwZXNldCA6aG92ZXIgLmhlYWRlcmxpbmssXG4ubWQtdHlwZXNldCA6dGFyZ2V0IC5oZWFkZXJsaW5rLFxuLm1kLXR5cGVzZXQgLmhlYWRlcmxpbms6Zm9jdXMge1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIDI1MG1zLCBjb2xvciAyNTBtcywgb3BhY2l0eSAxMjVtcyAyNTBtcywgdmlzaWJpbGl0eSAwbXM7XG4gIG9wYWNpdHk6IDE7XG4gIHZpc2liaWxpdHk6IHZpc2libGU7XG59XG4ubWQtdHlwZXNldCAuaGVhZGVybGluazpmb2N1cyxcbi5tZC10eXBlc2V0IC5oZWFkZXJsaW5rOmhvdmVyLFxuLm1kLXR5cGVzZXQgOnRhcmdldCAuaGVhZGVybGluayB7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuLm1kLXR5cGVzZXQgaDNbaWRdOjpiZWZvcmUsIC5tZC10eXBlc2V0IGgyW2lkXTo6YmVmb3JlLCAubWQtdHlwZXNldCBoMVtpZF06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMC40cmVtO1xuICBwYWRkaW5nLXRvcDogMC40cmVtO1xuICBjb250ZW50OiBcIlwiO1xufVxuLm1kLXR5cGVzZXQgaDNbaWRdOnRhcmdldDo6YmVmb3JlLCAubWQtdHlwZXNldCBoMltpZF06dGFyZ2V0OjpiZWZvcmUsIC5tZC10eXBlc2V0IGgxW2lkXTp0YXJnZXQ6OmJlZm9yZSB7XG4gIG1hcmdpbi10b3A6IC0zLjRyZW07XG4gIHBhZGRpbmctdG9wOiAzLjRyZW07XG59XG4ubWQtdHlwZXNldCBoNFtpZF06OmJlZm9yZSB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBtYXJnaW4tdG9wOiAtMC40NXJlbTtcbiAgcGFkZGluZy10b3A6IDAuNDVyZW07XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG4ubWQtdHlwZXNldCBoNFtpZF06dGFyZ2V0OjpiZWZvcmUge1xuICBtYXJnaW4tdG9wOiAtMy40NXJlbTtcbiAgcGFkZGluZy10b3A6IDMuNDVyZW07XG59XG4ubWQtdHlwZXNldCBoNltpZF06OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDVbaWRdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luLXRvcDogLTAuNnJlbTtcbiAgcGFkZGluZy10b3A6IDAuNnJlbTtcbiAgY29udGVudDogXCJcIjtcbn1cbi5tZC10eXBlc2V0IGg2W2lkXTp0YXJnZXQ6OmJlZm9yZSwgLm1kLXR5cGVzZXQgaDVbaWRdOnRhcmdldDo6YmVmb3JlIHtcbiAgbWFyZ2luLXRvcDogLTMuNnJlbTtcbiAgcGFkZGluZy10b3A6IDMuNnJlbTtcbn1cbi5tZC10eXBlc2V0IC5NSlhjLWRpc3BsYXkge1xuICBtYXJnaW46IDAuNzVlbSAwO1xuICBwYWRkaW5nOiAwLjc1ZW0gMDtcbiAgb3ZlcmZsb3c6IGF1dG87XG4gIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbn1cbi5tZC10eXBlc2V0IC5NYXRoSmF4X0NIVE1MIHtcbiAgb3V0bGluZTogMDtcbn1cblxuLm1kLXR5cGVzZXQgZGVsLmNyaXRpYyxcbi5tZC10eXBlc2V0IGlucy5jcml0aWMsXG4ubWQtdHlwZXNldCAuY3JpdGljLmNvbW1lbnQge1xuICBtYXJnaW46IDAgMC4yNWVtO1xuICBwYWRkaW5nOiAwLjA2MjVlbSAwO1xuICBib3JkZXItcmFkaXVzOiAwLjFyZW07XG4gIC13ZWJraXQtYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICAgICAgICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbn1cbi5tZC10eXBlc2V0IGRlbC5jcml0aWMge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZEREREO1xuICBib3gtc2hhZG93OiAwLjI1ZW0gMCAwICNGRkREREQsIC0wLjI1ZW0gMCAwICNGRkREREQ7XG59XG4ubWQtdHlwZXNldCBpbnMuY3JpdGljIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI0RERkZERDtcbiAgYm94LXNoYWRvdzogMC4yNWVtIDAgMCAjRERGRkRELCAtMC4yNWVtIDAgMCAjRERGRkREO1xufVxuLm1kLXR5cGVzZXQgLmNyaXRpYy5jb21tZW50IHtcbiAgY29sb3I6ICM5OTk5OTk7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmNvbW1lbnQ6OmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwiLyogXCI7XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmNvbW1lbnQ6OmFmdGVyIHtcbiAgY29udGVudDogXCIgKi9cIjtcbn1cbi5tZC10eXBlc2V0IC5jcml0aWMuYmxvY2sge1xuICBkaXNwbGF5OiBibG9jaztcbiAgbWFyZ2luOiAxZW0gMDtcbiAgcGFkZGluZy1yaWdodDogMC44cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuOHJlbTtcbiAgYm94LXNoYWRvdzogbm9uZTtcbn1cbi5tZC10eXBlc2V0IC5jcml0aWMuYmxvY2sgOmZpcnN0LWNoaWxkIHtcbiAgbWFyZ2luLXRvcDogMC41ZW07XG59XG4ubWQtdHlwZXNldCAuY3JpdGljLmJsb2NrIDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMC41ZW07XG59XG5cbi5tZC10eXBlc2V0IGRldGFpbHMge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy10b3A6IDA7XG59XG4ubWQtdHlwZXNldCBkZXRhaWxzW29wZW5dID4gc3VtbWFyeTo6YWZ0ZXIge1xuICB0cmFuc2Zvcm06IHJvdGF0ZSgxODBkZWcpO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlsczpub3QoW29wZW5dKSB7XG4gIHBhZGRpbmctYm90dG9tOiAwO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlsczpub3QoW29wZW5dKSA+IHN1bW1hcnkge1xuICBib3JkZXItYm90dG9tOiBub25lO1xufVxuLm1kLXR5cGVzZXQgZGV0YWlscyBzdW1tYXJ5IHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBwYWRkaW5nLXJpZ2h0OiAycmVtO1xufVxuW2Rpcj1ydGxdIC5tZC10eXBlc2V0IGRldGFpbHMgc3VtbWFyeSB7XG4gIHBhZGRpbmctbGVmdDogMnJlbTtcbn1cbi5tZC10eXBlc2V0IHN1bW1hcnkge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3V0bGluZTogbm9uZTtcbiAgY3Vyc29yOiBwb2ludGVyO1xufVxuLm1kLXR5cGVzZXQgc3VtbWFyeTo6LXdlYmtpdC1kZXRhaWxzLW1hcmtlciB7XG4gIGRpc3BsYXk6IG5vbmU7XG59XG4ubWQtdHlwZXNldCBzdW1tYXJ5OjphZnRlciB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgcmlnaHQ6IDAuNnJlbTtcbiAgd2lkdGg6IDFyZW07XG4gIGhlaWdodDogMXJlbTtcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gIC13ZWJraXQtbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcuNDEsOC41OEwxMiwxMy4xN0wxNi41OSw4LjU4TDE4LDEwTDEyLDE2TDYsMTBMNy40MSw4LjU4WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTcuNDEsOC41OEwxMiwxMy4xN0wxNi41OSw4LjU4TDE4LDEwTDEyLDE2TDYsMTBMNy40MSw4LjU4WlxcXCIgLz48L3N2Zz5cIik7XG4gIGNvbnRlbnQ6IFwiXCI7XG59XG5bZGlyPXJ0bF0gLm1kLXR5cGVzZXQgc3VtbWFyeTo6YWZ0ZXIge1xuICByaWdodDogaW5pdGlhbDtcbiAgbGVmdDogMC42cmVtO1xufVxuXG4ubWQtdHlwZXNldCAuZW1vamlvbmUsXG4ubWQtdHlwZXNldCAudHdlbW9qaSxcbi5tZC10eXBlc2V0IC5nZW1vamkge1xuICB3aWR0aDogMXJlbTtcbiAgdmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xufVxuXG4uaGlnaGxpZ2h0IFtkYXRhLWxpbmVub3NdOjpiZWZvcmUge1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIHBvc2l0aW9uOiAtd2Via2l0LXN0aWNreTtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgbGVmdDogLTAuNnJlbTtcbiAgbWFyZ2luLXJpZ2h0OiAwLjZyZW07XG4gIG1hcmdpbi1sZWZ0OiAtMC42cmVtO1xuICBwYWRkaW5nLWxlZnQ6IDAuNnJlbTtcbiAgYm9yZGVyLXJpZ2h0OiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICBjb250ZW50OiBhdHRyKGRhdGEtbGluZW5vcyk7XG4gIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgIC1tb3otdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAtbXMtdXNlci1zZWxlY3Q6IG5vbmU7XG4gICAgICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG59XG5cbi5tZC10eXBlc2V0IGNvZGUuY29kZWhpbGl0ZSwgLm1kLXR5cGVzZXQgY29kZS5oaWdobGlnaHQge1xuICBtYXJnaW46IDAgMC4yOTQxMTc2NDcxZW07XG4gIHBhZGRpbmc6IDAuMDczNTI5NDExOGVtIDA7XG59XG5cbi5tZC10eXBlc2V0IC50YWJiZWQtY29udGVudCB7XG4gIGRpc3BsYXk6IG5vbmU7XG4gIG9yZGVyOiA5OTtcbiAgd2lkdGg6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1jb250ZW50IHByZSB7XG4gIG1hcmdpbjogMDtcbiAgYm9yZGVyLXJhZGl1czogMDtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0IHtcbiAgZGlzcGxheTogZmxleDtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBmbGV4LXdyYXA6IHdyYXA7XG4gIG1hcmdpbjogMWVtIDA7XG4gIGJvcmRlcjogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbn1cbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQge1xuICBkaXNwbGF5OiBub25lO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwge1xuICBib3JkZXItY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZzogMCAwLjZyZW07XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IDpsYXN0LWNoaWxkIHtcbiAgbWFyZ2luLWJvdHRvbTogMC42cmVtO1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiBwcmU6b25seS1jaGlsZCxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmhpZ2hsaWdodDpvbmx5LWNoaWxkLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuaGlnaGxpZ2h0dGFibGU6b25seS1jaGlsZCxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmNvZGVoaWxpdGU6b25seS1jaGlsZCxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmNvZGVoaWxpdGV0YWJsZTpvbmx5LWNoaWxkIHtcbiAgbWFyZ2luOiAwIC0wLjZyZW07XG59XG4ubWQtdHlwZXNldCAudGFiYmVkLXNldCA+IGlucHV0OmNoZWNrZWQgKyBsYWJlbCArIC50YWJiZWQtY29udGVudCA+IHByZTpvbmx5LWNoaWxkIHByZSxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmhpZ2hsaWdodDpvbmx5LWNoaWxkIHByZSxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmhpZ2hsaWdodHRhYmxlOm9ubHktY2hpbGQgcHJlLFxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBpbnB1dDpjaGVja2VkICsgbGFiZWwgKyAudGFiYmVkLWNvbnRlbnQgPiAuY29kZWhpbGl0ZTpvbmx5LWNoaWxkIHByZSxcbi5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gaW5wdXQ6Y2hlY2tlZCArIGxhYmVsICsgLnRhYmJlZC1jb250ZW50ID4gLmNvZGVoaWxpdGV0YWJsZTpvbmx5LWNoaWxkIHByZSB7XG4gIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xufVxuLm1kLXR5cGVzZXQgLnRhYmJlZC1zZXQgPiBsYWJlbCB7XG4gIHdpZHRoOiBhdXRvO1xuICBwYWRkaW5nOiAwLjZyZW07XG4gIHBhZGRpbmctYm90dG9tOiAwLjVyZW07XG4gIHRyYW5zaXRpb246IGNvbG9yIDEyNW1zLCBib3JkZXIgMjUwbXM7XG4gIGJvcmRlci1ib3R0b206IDAuMXJlbSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgZm9udC1zaXplOiAwLjY0cmVtO1xuICBmb250LXdlaWdodDogNzAwO1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG5odG1sIC5tZC10eXBlc2V0IC50YWJiZWQtc2V0ID4gbGFiZWw6aG92ZXIge1xuICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbn1cblxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1pdGVtIHtcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBsaXN0LXN0eWxlLXR5cGU6IG5vbmU7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWl0ZW0gW3R5cGU9Y2hlY2tib3hdIHtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuICB0b3A6IDAuNDVlbTtcbiAgbGVmdDogLTJlbTtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAudGFzay1saXN0LWl0ZW0gW3R5cGU9Y2hlY2tib3hdIHtcbiAgcmlnaHQ6IC0yZW07XG4gIGxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgLnRhc2stbGlzdC1pbmRpY2F0b3I6OmJlZm9yZSB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiAwLjE1ZW07XG4gIGxlZnQ6IC0xLjVlbTtcbiAgd2lkdGg6IDEuMjVlbTtcbiAgaGVpZ2h0OiAxLjI1ZW07XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgICAgICAgICBtYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkExMCwxMCAwIDAsMCAyLDEyQTEwLDEwIDAgMCwwIDEyLDIyQTEwLDEwIDAgMCwwIDIyLDEyQTEwLDEwIDAgMCwwIDEyLDJaXFxcIiAvPjwvc3ZnPlwiKTtcbiAgY29udGVudDogXCJcIjtcbn1cbltkaXI9cnRsXSAubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgLnRhc2stbGlzdC1pbmRpY2F0b3I6OmJlZm9yZSB7XG4gIHJpZ2h0OiAtMS41ZW07XG4gIGxlZnQ6IGluaXRpYWw7XG59XG4ubWQtdHlwZXNldCAudGFzay1saXN0LWNvbnRyb2wgW3R5cGU9Y2hlY2tib3hdOmNoZWNrZWQgKyAudGFzay1saXN0LWluZGljYXRvcjo6YmVmb3JlIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzAwZTY3NjtcbiAgLXdlYmtpdC1tYXNrLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7dXRmOCw8c3ZnIHhtbG5zPVxcXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1xcXCIgdmlld0JveD1cXFwiMCAwIDI0IDI0XFxcIj48cGF0aCBkPVxcXCJNMTIsMkExMCwxMCAwIDAsMSAyMiwxMkExMCwxMCAwIDAsMSAxMiwyMkExMCwxMCAwIDAsMSAyLDEyQTEwLDEwIDAgMCwxIDEyLDJNMTEsMTYuNUwxOCw5LjVMMTYuNTksOC4wOUwxMSwxMy42N0w3LjkxLDEwLjU5TDYuNSwxMkwxMSwxNi41WlxcXCIgLz48L3N2Zz5cIik7XG4gICAgICAgICAgbWFzay1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO3V0ZjgsPHN2ZyB4bWxucz1cXFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcXFwiIHZpZXdCb3g9XFxcIjAgMCAyNCAyNFxcXCI+PHBhdGggZD1cXFwiTTEyLDJBMTAsMTAgMCAwLDEgMjIsMTJBMTAsMTAgMCAwLDEgMTIsMjJBMTAsMTAgMCAwLDEgMiwxMkExMCwxMCAwIDAsMSAxMiwyTTExLDE2LjVMMTgsOS41TDE2LjU5LDguMDlMMTEsMTMuNjdMNy45MSwxMC41OUw2LjUsMTJMMTEsMTYuNVpcXFwiIC8+PC9zdmc+XCIpO1xufVxuLm1kLXR5cGVzZXQgLnRhc2stbGlzdC1jb250cm9sIFt0eXBlPWNoZWNrYm94XSB7XG4gIG9wYWNpdHk6IDA7XG4gIHotaW5kZXg6IC0xO1xufVxuQG1lZGlhIHByaW50IHtcbiAgLm1kLXR5cGVzZXQgYTo6YWZ0ZXIge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgY29udGVudDogXCIgW1wiIGF0dHIoaHJlZikgXCJdXCI7XG4gIH1cbiAgLm1kLXR5cGVzZXQgY29kZSxcbi5tZC10eXBlc2V0IHByZSxcbi5tZC10eXBlc2V0IGtiZCB7XG4gICAgd2hpdGUtc3BhY2U6IHByZS13cmFwO1xuICB9XG4gIC5tZC1jbGlwYm9hcmQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLWNvbnRlbnRfX2J1dHRvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtZGlhbG9nIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZWFkZXIge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLWZvb3RlciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtc2lkZWJhciB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicyB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdHlwZXNldCAuaGVhZGVybGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNDQuOTM3NWVtKSB7XG4gIC5tZC10eXBlc2V0ID4gcHJlIHtcbiAgICBtYXJnaW46IDFlbSAtMC44cmVtO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiBwcmUgPiBjb2RlIHtcbiAgICBwYWRkaW5nOiAwLjUyNXJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLWZvb3Rlci1uYXZfX2xpbmstLXByZXYgLm1kLWZvb3Rlci1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICAgIG1heC1oZWlnaHQ6IDIuNXJlbTtcbiAgICAtd2Via2l0LWxpbmUtY2xhbXA6IDM7XG4gIH1cbiAgLmNvZGVoaWxpdGUgLmhsbCwgLmhpZ2hsaWdodCAuaGxsIHtcbiAgICBtYXJnaW46IDAgLTAuOHJlbTtcbiAgICBwYWRkaW5nOiAwIDAuOHJlbTtcbiAgfVxuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAuY29kZWhpbGl0ZSBjb2RlLCAubWQtdHlwZXNldCA+IC5oaWdobGlnaHQgY29kZSB7XG4gICAgcGFkZGluZzogMC41MjVyZW0gMC44cmVtO1xuICB9XG4gIC5tZC10eXBlc2V0ID4gLmNvZGVoaWxpdGV0YWJsZSwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyLXJhZGl1czogMDtcbiAgfVxuICAubWQtdHlwZXNldCA+IC5jb2RlaGlsaXRldGFibGUgLmxpbmVub2RpdiwgLm1kLXR5cGVzZXQgPiAuaGlnaGxpZ2h0dGFibGUgLmxpbmVub2RpdiB7XG4gICAgcGFkZGluZzogMC41cmVtIDAuOHJlbTtcbiAgfVxuICAubWQtdHlwZXNldCA+IHAgPiAuTUpYYy1kaXNwbGF5IHtcbiAgICBtYXJnaW46IDAuNzVlbSAtMC44cmVtO1xuICAgIHBhZGRpbmc6IDAuMjVlbSAwLjhyZW07XG4gIH1cbiAgLmhpZ2hsaWdodCBbZGF0YS1saW5lbm9zXTo6YmVmb3JlIHtcbiAgICBsZWZ0OiAtMS42cmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAtMS42cmVtO1xuICAgIHBhZGRpbmctbGVmdDogMS42cmVtO1xuICB9XG4gIC5tZC10eXBlc2V0ID4gLnRhYmJlZC1zZXQge1xuICAgIG1hcmdpbjogMWVtIC0wLjhyZW07XG4gICAgYm9yZGVyOiAwO1xuICAgIGJvcmRlci10b3A6IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBjb2RlIHtcbiAgICBwYWRkaW5nOiAwLjUyNXJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLXR5cGVzZXQgPiAudGFiYmVkLXNldCBpbnB1dDpmaXJzdC1jaGlsZCArIGxhYmVsIHtcbiAgICBtYXJnaW4tbGVmdDogMC4ycmVtO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMDBlbSkge1xuICBodG1sIHtcbiAgICBmb250LXNpemU6IDEzNy41JTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMTI1ZW0pIHtcbiAgaHRtbCB7XG4gICAgZm9udC1zaXplOiAxNTAlO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgYm9keVtkYXRhLW1kLXN0YXRlPWxvY2tdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gIH1cbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuNHJlbTtcbiAgfVxuICBodG1sIC5tZC1uYXZfX2xpbmtbZm9yPV9fdG9jXSArIC5tZC1uYXZfX2xpbmsge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgaHRtbCAubWQtbmF2X19saW5rW2Zvcj1fX3RvY10gfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICB9XG4gIGh0bWwgW2Rpcj1ydGxdIC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgfVxuICAubWQtbmF2X19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDAgMC4ycmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcmspO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgdG9wOiAwLjJyZW07XG4gICAgbGVmdDogLTIuMnJlbTtcbiAgICB3aWR0aDogMnJlbTtcbiAgICBoZWlnaHQ6IDJyZW07XG4gICAgdHJhbnNmb3JtLW9yaWdpbjogY2VudGVyO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAzMDBtcyAxMDBtcywgb3BhY2l0eSAyMDBtcyAyMDBtcztcbiAgICBib3JkZXItcmFkaXVzOiAxcmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX292ZXJsYXkge1xuICAgIHJpZ2h0OiAtMi4ycmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDQwMG1zLCBvcGFjaXR5IDEwMG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB0b3A6IDA7XG4gICAgbGVmdDogMTAwJTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDUlKTtcbiAgICB0cmFuc2l0aW9uOiByaWdodCAwbXMgMzAwbXMsIGxlZnQgMG1zIDMwMG1zLCB0cmFuc2Zvcm0gMTUwbXMgMTUwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSwgb3BhY2l0eSAxNTBtcyAxNTBtcztcbiAgICBvcGFjaXR5OiAwO1xuICAgIHotaW5kZXg6IDI7XG4gIH1cbiAgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIGxlZnQ6IDA7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIHRyYW5zaXRpb246IHJpZ2h0IDBtcyAwbXMsIGxlZnQgMG1zIDBtcywgdHJhbnNmb3JtIDE1MG1zIDE1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSwgb3BhY2l0eSAxNTBtcyAxNTBtcztcbiAgICBvcGFjaXR5OiAxO1xuICB9XG4gIFtkaXI9cnRsXSBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBodG1sIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgcmlnaHQ6IDEwMCU7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUlKTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgaGVpZ2h0OiAyLjRyZW07XG4gICAgZm9udC1zaXplOiAwLjlyZW07XG4gIH1cbiAgLm1kLXNlYXJjaF9faWNvbltmb3I9X19zZWFyY2hdIHtcbiAgICB0b3A6IDAuNnJlbTtcbiAgICBsZWZ0OiAwLjhyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSB7XG4gICAgcmlnaHQ6IDAuOHJlbTtcbiAgICBsZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmc6Zmlyc3QtY2hpbGQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gICAgdG9wOiAwLjZyZW07XG4gICAgcmlnaHQ6IDAuOHJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9faWNvblt0eXBlPXJlc2V0XSB7XG4gICAgcmlnaHQ6IGluaXRpYWw7XG4gICAgbGVmdDogMC44cmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX291dHB1dCB7XG4gICAgdG9wOiAyLjRyZW07XG4gICAgYm90dG9tOiAwO1xuICB9XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19pY29uIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3Ni4xODc1ZW0pIHtcbiAgW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbi5tZC1sb2dvIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZXJvX19pbm5lciB7XG4gICAgbWFyZ2luLXRvcDogMi40cmVtO1xuICAgIG1hcmdpbi1ib3R0b206IDEuMnJlbTtcbiAgfVxuICAubWQtbmF2IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5LCAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMDtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHotaW5kZXg6IDE7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSxcbi5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbSB7XG4gICAgZm9udC1zaXplOiAwLjhyZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgaGVpZ2h0OiA1LjZyZW07XG4gICAgcGFkZGluZzogM3JlbSAwLjhyZW0gMC4ycmVtO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGluZS1oZWlnaHQ6IDIuNHJlbTtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2ljb24ge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDAuNHJlbTtcbiAgICBsZWZ0OiAwLjRyZW07XG4gICAgd2lkdGg6IDEuMnJlbTtcbiAgICBoZWlnaHQ6IDEuMnJlbTtcbiAgICBtYXJnaW46IDAuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSAubWQtbmF2X19pY29uIHtcbiAgICByaWdodDogMC40cmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZSB+IC5tZC1uYXZfX2xpc3Qge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMC4wNXJlbSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG4gICAgICAgIC1tcy1zY3JvbGwtc25hcC10eXBlOiB5IG1hbmRhdG9yeTtcbiAgICAgICAgICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgfiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbTpmaXJzdC1jaGlsZCB7XG4gICAgYm9yZGVyLXRvcDogMDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlW2Zvcj1fX2RyYXdlcl0ge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZVtmb3I9X19kcmF3ZXJdIC5tZC1uYXZfX2J1dHRvbiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHRvcDogMC4ycmVtO1xuICAgIGxlZnQ6IDAuMnJlbTtcbiAgICB3aWR0aDogMy4ycmVtO1xuICAgIGhlaWdodDogMy4ycmVtO1xuICAgIG1hcmdpbjogMC4ycmVtO1xuICAgIHBhZGRpbmc6IDAuNHJlbTtcbiAgICBmb250LXNpemU6IDIuNHJlbTtcbiAgfVxuICBodG1sIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlW2Zvcj1fX2RyYXdlcl0gLm1kLW5hdl9fYnV0dG9uIHtcbiAgICByaWdodDogMC4ycmVtO1xuICAgIGxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19saXN0IHtcbiAgICBmbGV4OiAxO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbSB7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItdG9wOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMi40cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCA+IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDAuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuNHJlbTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2l0ZW0tLWFjdGl2ZSA+IC5tZC1uYXZfX2xpbmsge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX2xpbmsge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBtYXJnaW4tdG9wOiAwO1xuICAgIHBhZGRpbmc6IDAuNnJlbSAwLjhyZW07XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X19saW5rIC5tZC1uYXZfX2ljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICByaWdodDogMC42cmVtO1xuICAgIG1hcmdpbi10b3A6IC0wLjZyZW07XG4gICAgY29sb3I6IGluaGVyaXQ7XG4gICAgZm9udC1zaXplOiAxLjJyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fbGluayAubWQtbmF2X19pY29uIHtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICBsZWZ0OiAwLjZyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9faWNvbiBzdmcge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoLTEpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXZfX2xpbmsge1xuICAgIHBvc2l0aW9uOiBzdGF0aWM7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiB7XG4gICAgcG9zaXRpb246IHN0YXRpYztcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgfVxuICAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctbGVmdDogMS40cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDEuNHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctbGVmdDogMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2LS1zZWNvbmRhcnkgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctcmlnaHQ6IDJyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgIHBhZGRpbmctbGVmdDogMi42cmVtO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2X19saW5rIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjZyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1sZWZ0OiAzLjJyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXYgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgcGFkZGluZy1yaWdodDogMy4ycmVtO1xuICAgIHBhZGRpbmctbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtbmF2X190b2dnbGUgfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMDAlKTtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXMgY3ViaWMtYmV6aWVyKDAuOCwgMCwgMC42LCAxKSwgb3BhY2l0eSAxMjVtcyA1MG1zO1xuICAgIG9wYWNpdHk6IDA7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1uYXZfX3RvZ2dsZSB+IC5tZC1uYXYge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTAwJSk7XG4gIH1cbiAgLm1kLW5hdl9fdG9nZ2xlOmNoZWNrZWQgfiAubWQtbmF2IHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgdHJhbnNpdGlvbjogdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksIG9wYWNpdHkgMTI1bXMgMTI1bXM7XG4gICAgb3BhY2l0eTogMTtcbiAgfVxuICAubWQtc2lkZWJhci0tcHJpbWFyeSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAtMTIuMXJlbTtcbiAgICB3aWR0aDogMTIuMXJlbTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLCBib3gtc2hhZG93IDI1MG1zO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIHotaW5kZXg6IDM7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zaWRlYmFyLS1wcmltYXJ5IHtcbiAgICByaWdodDogLTEyLjFyZW07XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9ZHJhd2VyXTpjaGVja2VkIH4gLm1kLWNvbnRhaW5lciAubWQtc2lkZWJhci0tcHJpbWFyeSB7XG4gICAgYm94LXNoYWRvdzogMCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAwLjE0KSwgMCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjQpO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgxMi4xcmVtKTtcbiAgfVxuICBbZGlyPXJ0bF0gW2RhdGEtbWQtdG9nZ2xlPWRyYXdlcl06Y2hlY2tlZCB+IC5tZC1jb250YWluZXIgLm1kLXNpZGViYXItLXByaW1hcnkge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtMTIuMXJlbSk7XG4gIH1cbiAgLm1kLXNpZGViYXItLXByaW1hcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gIH1cbiAgLm1kLXNpZGViYXItLXByaW1hcnkgLm1kLXNpZGViYXJfX3Njcm9sbHdyYXAge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDA7XG4gICAgcmlnaHQ6IDA7XG4gICAgYm90dG9tOiAwO1xuICAgIGxlZnQ6IDA7XG4gICAgbWFyZ2luOiAwO1xuICAgIC13ZWJraXQtc2Nyb2xsLXNuYXAtdHlwZTogbm9uZTtcbiAgICAgICAgLW1zLXNjcm9sbC1zbmFwLXR5cGU6IG5vbmU7XG4gICAgICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBub25lO1xuICB9XG4gIC5tZC10YWJzIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA2MGVtKSB7XG4gIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tcmlnaHQ6IDEyLjFyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tcmlnaHQ6IGluaXRpYWw7XG4gICAgbWFyZ2luLWxlZnQ6IDEyLjFyZW07XG4gIH1cbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbltmb3I9X19zZWFyY2hdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMS43cmVtO1xuICAgIG1heC13aWR0aDogMTEuN3JlbTtcbiAgICBtYXJnaW4tbGVmdDogMXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWhlYWRlci1uYXZfX3NvdXJjZSB7XG4gICAgbWFyZ2luLXJpZ2h0OiAxcmVtO1xuICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1uYXYtLXNlY29uZGFyeSAubWQtbmF2X190aXRsZVtmb3I9X190b2NdIHtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gIH1cbiAgLm1kLW5hdi0tc2Vjb25kYXJ5IC5tZC1uYXZfX3RpdGxlIC5tZC1uYXZfX2ljb24ge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbiAgLm1kLXNlYXJjaCB7XG4gICAgcGFkZGluZzogMC4ycmVtIDA7XG4gIH1cbiAgLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcG9zaXRpb246IGZpeGVkO1xuICAgIHRvcDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIHdpZHRoOiAwO1xuICAgIGhlaWdodDogMDtcbiAgICB0cmFuc2l0aW9uOiB3aWR0aCAwbXMgMjUwbXMsIGhlaWdodCAwbXMgMjUwbXMsIG9wYWNpdHkgMjUwbXM7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9fb3ZlcmxheSB7XG4gICAgcmlnaHQ6IDA7XG4gICAgbGVmdDogaW5pdGlhbDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMG1zLCBoZWlnaHQgMG1zLCBvcGFjaXR5IDI1MG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLXNlYXJjaF9faW5uZXIge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICB3aWR0aDogMTEuN3JlbTtcbiAgICBwYWRkaW5nOiAwLjFyZW0gMDtcbiAgICBmbG9hdDogcmlnaHQ7XG4gICAgdHJhbnNpdGlvbjogd2lkdGggMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICB9XG4gIFtkaXI9cnRsXSAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbiAgLm1kLXNlYXJjaF9fZm9ybSB7XG4gICAgYm9yZGVyLXJhZGl1czogMC4xcmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6IDEuOHJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSwgY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICAgIGJvcmRlci1yYWRpdXM6IDAuMXJlbTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBmb250LXNpemU6IDAuOHJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaF9faW5wdXQge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dCArIC5tZC1zZWFyY2hfX2ljb24ge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIC5tZC1zZWFyY2hfX2lucHV0OjpwbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICAubWQtc2VhcmNoX19pbnB1dDpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICBib3JkZXItcmFkaXVzOiAwLjFyZW0gMC4xcmVtIDAgMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDo6LW1vei1wbGFjZWhvbGRlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbnB1dDo6LW1zLWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLXRvZ2dsZT1zZWFyY2hdOmNoZWNrZWQgfiAubWQtaGVhZGVyIC5tZC1zZWFyY2hfX2lucHV0ICsgLm1kLXNlYXJjaF9faWNvbiwgW2RhdGEtbWQtdG9nZ2xlPXNlYXJjaF06Y2hlY2tlZCB+IC5tZC1oZWFkZXIgLm1kLXNlYXJjaF9faW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIC5tZC1zZWFyY2hfX2ljb25bZm9yPV9fc2VhcmNoXSBzdmc6bGFzdC1jaGlsZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtc2VhcmNoX19vdXRwdXQge1xuICAgIHRvcDogMS45cmVtO1xuICAgIHRyYW5zaXRpb246IG9wYWNpdHkgNDAwbXM7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdXRwdXQge1xuICAgIGJveC1zaGFkb3c6IDAgNnB4IDEwcHggMCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwIDFweCAxOHB4IDAgcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAwLjQpO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgbWF4LWhlaWdodDogMDtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19zY3JvbGx3cmFwIHtcbiAgICBtYXgtaGVpZ2h0OiA3NXZoO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICB3aWR0aDogMC4ycmVtO1xuICAgIGhlaWdodDogMC4ycmVtO1xuICB9XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXA6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgfVxuICAubWQtc2VhcmNoX19zY3JvbGx3cmFwOjotd2Via2l0LXNjcm9sbGJhci10aHVtYjpob3ZlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgfVxuICAubWQtc2VhcmNoLXJlc3VsdF9fbWV0YSB7XG4gICAgcGFkZGluZy1sZWZ0OiAyLjJyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zZWFyY2gtcmVzdWx0X19tZXRhIHtcbiAgICBwYWRkaW5nLXJpZ2h0OiAyLjJyZW07XG4gICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICB9XG4gIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlIHtcbiAgICBwYWRkaW5nLWxlZnQ6IDIuMnJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLXNlYXJjaC1yZXN1bHRfX2FydGljbGUge1xuICAgIHBhZGRpbmctcmlnaHQ6IDIuMnJlbTtcbiAgICBwYWRkaW5nLWxlZnQ6IDAuOHJlbTtcbiAgfVxuICAubWQtc2lkZWJhci0tc2Vjb25kYXJ5IHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tbGVmdDogY2FsYygxMDAlIC0gMTIuMXJlbSk7XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zaWRlYmFyLS1zZWNvbmRhcnkge1xuICAgIG1hcmdpbi1yaWdodDogY2FsYygxMDAlIC0gMTIuMXJlbSk7XG4gICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gIH1cbiAgLm1kLXNpZGViYXItLXNlY29uZGFyeSAubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIC5tZC1jb250ZW50IHtcbiAgICBtYXJnaW4tbGVmdDogMTIuMXJlbTtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWNvbnRlbnQge1xuICAgIG1hcmdpbi1yaWdodDogMTIuMXJlbTtcbiAgfVxuICAubWQtY29udGVudF9faW5uZXIge1xuICAgIG1hcmdpbi1yaWdodDogMS4ycmVtO1xuICAgIG1hcmdpbi1sZWZ0OiAxLjJyZW07XG4gIH1cbiAgLm1kLWhlYWRlci1uYXZfX2J1dHRvbltmb3I9X19kcmF3ZXJdIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIG1hcmdpbi1sZWZ0OiAxLjRyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1oZWFkZXItbmF2X19zb3VyY2Uge1xuICAgIG1hcmdpbi1yaWdodDogMS40cmVtO1xuICB9XG4gIC5tZC1uYXYge1xuICAgIHRyYW5zaXRpb246IG1heC1oZWlnaHQgMjUwbXMgY3ViaWMtYmV6aWVyKDAuODYsIDAsIDAuMDcsIDEpO1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICB9XG4gIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGUgLm1kLW5hdl9faWNvbiB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtbmF2X190b2dnbGUgfiAubWQtbmF2IHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gLm1kLW5hdiB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gIH1cbiAgLm1kLW5hdl9faXRlbS0tbmVzdGVkID4gLm1kLW5hdiA+IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC1uYXZfX2ljb24ge1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIGZsb2F0OiByaWdodDtcbiAgICB0cmFuc2l0aW9uOiB0cmFuc2Zvcm0gMjUwbXM7XG4gIH1cbiAgLm1kLW5hdl9faWNvbiBzdmcge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogMC45cmVtO1xuICAgIGhlaWdodDogMC45cmVtO1xuICAgIHZlcnRpY2FsLWFsaWduOiAtMC4xcmVtO1xuICB9XG4gIC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCAubWQtbmF2X190b2dnbGU6Y2hlY2tlZCB+IC5tZC1uYXZfX2xpbmsgLm1kLW5hdl9faWNvbiB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGVaKDkwZGVnKTtcbiAgfVxuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgd2lkdGg6IDM0LjRyZW07XG4gIH1cbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDM0LjRyZW07XG4gIH1cbiAgLm1kLXNpZGViYXItLXNlY29uZGFyeSB7XG4gICAgbWFyZ2luLWxlZnQ6IDQ4LjlyZW07XG4gIH1cbiAgW2Rpcj1ydGxdIC5tZC1zaWRlYmFyLS1zZWNvbmRhcnkge1xuICAgIG1hcmdpbi1yaWdodDogNDguOXJlbTtcbiAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgfVxuICAubWQtdGFicyB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tbmVzdGVkIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPV9fZHJhd2VyXSB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG4gIC5tZC10YWJzLS1hY3RpdmUgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5ID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdi0tcHJpbWFyeSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtLS1hY3RpdmUge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmc6IDA7XG4gIH1cbiAgLm1kLXRhYnMtLWFjdGl2ZSB+IC5tZC1tYWluIC5tZC1uYXYtLXByaW1hcnkgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbS0tYWN0aXZlID4gLm1kLW5hdl9fbGluayB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSA+IC5tZC1uYXZfX2xpc3QgPiAubWQtbmF2X19pdGVtIHtcbiAgICBwYWRkaW5nOiAwIDAuNnJlbTtcbiAgfVxuICAubWQtdGFicy0tYWN0aXZlIH4gLm1kLW1haW4gLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSAubWQtbmF2IC5tZC1uYXZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuICB9XG59XG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA0NWVtKSB7XG4gIC5tZC1mb290ZXItbmF2X19saW5rIHtcbiAgICB3aWR0aDogNTAlO1xuICB9XG4gIC5tZC1mb290ZXItY29weXJpZ2h0IHtcbiAgICBtYXgtd2lkdGg6IDc1JTtcbiAgICBmbG9hdDogbGVmdDtcbiAgfVxuICBbZGlyPXJ0bF0gLm1kLWZvb3Rlci1jb3B5cmlnaHQge1xuICAgIGZsb2F0OiByaWdodDtcbiAgfVxuICAubWQtZm9vdGVyLXNvY2lhbCB7XG4gICAgcGFkZGluZzogMC42cmVtIDA7XG4gICAgZmxvYXQ6IHJpZ2h0O1xuICB9XG4gIFtkaXI9cnRsXSAubWQtZm9vdGVyLXNvY2lhbCB7XG4gICAgZmxvYXQ6IGxlZnQ7XG4gIH1cbn1cbkBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDI5LjkzNzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDQ1KTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogMzBlbSkgYW5kIChtYXgtd2lkdGg6IDQ0LjkzNzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDYwKTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNDVlbSkgYW5kIChtYXgtd2lkdGg6IDU5LjkzNzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19vdmVybGF5IHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDc1KTtcbiAgfVxufVxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkgYW5kIChtYXgtd2lkdGg6IDc2LjE4NzVlbSkge1xuICBbZGF0YS1tZC10b2dnbGU9c2VhcmNoXTpjaGVja2VkIH4gLm1kLWhlYWRlciAubWQtc2VhcmNoX19pbm5lciB7XG4gICAgd2lkdGg6IDIzLjRyZW07XG4gIH1cbiAgLm1kLXNlYXJjaF9fc2Nyb2xsd3JhcCB7XG4gICAgd2lkdGg6IDIzLjRyZW07XG4gIH1cbiAgLm1kLXNlYXJjaC1yZXN1bHRfX3RlYXNlciB7XG4gICAgbWF4LWhlaWdodDogMi41cmVtO1xuICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgfVxufVxuQG1lZGlhICgtd2Via2l0LW1heC1kZXZpY2UtcGl4ZWwtcmF0aW86IDEpLCAobWF4LXJlc29sdXRpb246IDFkcHB4KSB7XG4gIC5tZC1zZWFyY2hfX3Njcm9sbHdyYXAge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWigwKTtcbiAgfVxufSIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbjpyb290IHtcblxuICAvLyBEZWZhdWx0IGNvbG9yIHNoYWRlc1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3I6ICAgICAgICAgICAgICAgaHNsYSgwLCAwJSwgMCUsIDAuODcpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0OiAgICAgICAgaHNsYSgwLCAwJSwgMCUsIDAuNTQpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXI6ICAgICAgaHNsYSgwLCAwJSwgMCUsIDAuMjYpO1xuICAtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0OiAgICAgaHNsYSgwLCAwJSwgMCUsIDAuMDcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3I6ICAgICAgICAgICAgICAgaHNsYSgwLCAwJSwgMTAwJSwgMSk7XG4gIC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHQ6ICAgICAgICBoc2xhKDAsIDAlLCAxMDAlLCAwLjcpO1xuICAtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0ZXI6ICAgICAgaHNsYSgwLCAwJSwgMTAwJSwgMC4zKTtcbiAgLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVzdDogICAgIGhzbGEoMCwgMCUsIDEwMCUsIDAuMTIpO1xuXG4gIC8vIFByaW1hcnkgY29sb3Igc2hhZGVzXG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogICAgICAgICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby01MDApfSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6ICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby0zMDApfSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby03MDApfSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvcjogICAgICAgICAgICAgICB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodDogICAgICAgIHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcblxuICAvLyBBY2NlbnQgY29sb3Igc2hhZGVzXG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiAgICAgICAgICAgICAgICBoc2xhKCN7aGV4MmhzbCgkY2xyLWluZGlnby1hMjAwKX0sIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6ICAgaHNsYSgje2hleDJoc2woJGNsci1pbmRpZ28tYTIwMCl9LCAwLjEpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvcjogICAgICAgICAgICAgICAgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yLS1saWdodDogICAgICAgICB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodCk7XG5cbiAgLy8gQ29kZSBibG9jayBjb2xvciBzaGFkZXNcbiAgLS1tZC1jb2RlLWJnLWNvbG9yOiAgICAgICAgICAgICAgICAgIGhzbGEoMCwgMCUsIDkyLjUlLCAwLjUpO1xuICAtLW1kLWNvZGUtZmctY29sb3I6ICAgICAgICAgICAgICAgICAgaHNsYSgyMDAsIDE4JSwgMjYlLCAxKTtcbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBJY29uXG4ubWQtaWNvbiB7XG5cbiAgLy8gU1ZHIGRlZmF1bHRzXG4gIHN2ZyB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgd2lkdGg6IHB4MnJlbSgyNHB4KTtcbiAgICBoZWlnaHQ6IHB4MnJlbSgyNHB4KTtcbiAgICBtYXJnaW46IDAgYXV0bztcbiAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogZm9udCBkZWZpbml0aW9uc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBFbmFibGUgZm9udC1zbW9vdGhpbmcgaW4gV2Via2l0IGFuZCBGRlxuYm9keSB7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICAtbW96LW9zeC1mb250LXNtb290aGluZzogZ3JheXNjYWxlO1xufVxuXG4vLyBEZWZhdWx0IGZvbnRzXG5ib2R5LFxuaW5wdXQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCIsIFwibGlnYVwiO1xuICBmb250LWZhbWlseTogXCJIZWx2ZXRpY2EgTmV1ZVwiLCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmO1xufVxuXG4vLyBQcm9wb3J0aW9uYWxseSBzcGFjZWQgZm9udHNcbmNvZGUsXG5wcmUsXG5rYmQge1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIGZvbnQtZmVhdHVyZS1zZXR0aW5nczogXCJrZXJuXCI7XG4gIGZvbnQtZmFtaWx5OiBcIkNvdXJpZXIgTmV3XCIsIENvdXJpZXIsIG1vbm9zcGFjZTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IHR5cGVzZXR0ZWQgY29udGVudFxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb250ZW50IHRoYXQgaXMgdHlwZXNldCAtIGlmIHBvc3NpYmxlLCBhbGwgbWFyZ2lucywgcGFkZGluZ3MgYW5kIGZvbnQgc2l6ZXNcbi8vIHNob3VsZCBiZSBzZXQgaW4gZW1zLCBzbyBuZXN0ZWQgYmxvY2tzIChlLmcuIEFkbW9uaXRpb24pIHJlbmRlciBjb3JyZWN0bHksXG4vLyBleGNlcHQgaGVhZGxpbmVzIHRoYXQgc2hvdWxkIG9ubHkgYXBwZWFyIG9uIHRoZSB0b3AgbGV2ZWwgYW5kIG5lZWQgdG8gaGF2ZVxuLy8gY29uc2lzdGVudCBzcGFjaW5nIGR1ZSB0byBsYXlvdXQgY29uc3RyYWludHMuXG4ubWQtdHlwZXNldCB7XG4gIGZvbnQtc2l6ZTogbXMoMCk7XG4gIGxpbmUtaGVpZ2h0OiAxLjY7XG5cbiAgLy8gQ29sb3JzIHNob3VsZCBiZSBrZXB0IHdoZW4gcHJpbnRpbmdcbiAgLXdlYmtpdC1wcmludC1jb2xvci1hZGp1c3Q6IGV4YWN0OyAvLyBzdHlsZWxpbnQtZGlzYWJsZS1saW5lXG5cbiAgLy8gRGVmYXVsdCBzcGFjaW5nXG4gIHAsXG4gIHVsLFxuICBvbCxcbiAgYmxvY2txdW90ZSB7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgfVxuXG4gIC8vIDFzdCBsZXZlbCBoZWFkbGluZVxuICBoMSB7XG4gICAgbWFyZ2luOiAwIDAgcHgycmVtKDQwcHgpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC1zaXplOiBtcygzKTtcbiAgICBmb250LXdlaWdodDogMzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICAgIGxpbmUtaGVpZ2h0OiAxLjM7XG4gIH1cblxuICAvLyAybmQgbGV2ZWwgaGVhZGxpbmVcbiAgaDIge1xuICAgIG1hcmdpbjogcHgycmVtKDQwcHgpIDAgcHgycmVtKDE2cHgpO1xuICAgIGZvbnQtc2l6ZTogbXMoMik7XG4gICAgZm9udC13ZWlnaHQ6IDMwMDtcbiAgICBsZXR0ZXItc3BhY2luZzogLTAuMDFlbTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICB9XG5cbiAgLy8gM3JkIGxldmVsIGhlYWRsaW5lXG4gIGgzIHtcbiAgICBtYXJnaW46IHB4MnJlbSgzMnB4KSAwIHB4MnJlbSgxNnB4KTtcbiAgICBmb250LXNpemU6IG1zKDEpO1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgfVxuXG4gIC8vIDNyZCBsZXZlbCBoZWFkbGluZSBmb2xsb3dpbmcgYW4gMm5kIGxldmVsIGhlYWRsaW5lXG4gIGgyICsgaDMge1xuICAgIG1hcmdpbi10b3A6IHB4MnJlbSgxNnB4KTtcbiAgfVxuXG4gIC8vIDR0aCBsZXZlbCBoZWFkbGluZVxuICBoNCB7XG4gICAgbWFyZ2luOiBweDJyZW0oMTZweCkgMDtcbiAgICBmb250LXNpemU6IG1zKDApO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGV0dGVyLXNwYWNpbmc6IC0wLjAxZW07XG4gIH1cblxuICAvLyA1dGggYW5kIDZ0aCBsZXZlbCBoZWFkbGluZVxuICBoNSxcbiAgaDYge1xuICAgIG1hcmdpbjogcHgycmVtKDE2cHgpIDA7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgICBmb250LXNpemU6IG1zKC0xKTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxldHRlci1zcGFjaW5nOiAtMC4wMWVtO1xuICB9XG5cbiAgLy8gT3ZlcnJpZGVzIGZvciA1dGggbGV2ZWwgaGVhZGxpbmVcbiAgaDUge1xuICAgIHRleHQtdHJhbnNmb3JtOiB1cHBlcmNhc2U7XG4gIH1cblxuICAvLyBIb3Jpem9udGFsIHNlcGFyYXRvcnNcbiAgaHIge1xuICAgIG1hcmdpbjogMS41ZW0gMDtcbiAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBkb3R0ZWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gIH1cblxuICAvLyBMaW5rc1xuICBhIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAgIC8vIEFsc28gZW5hYmxlIGNvbG9yIHRyYW5zaXRpb24gb24gcHNldWRvIGVsZW1lbnRzXG4gICAgJixcbiAgICAmOjpiZWZvcmUge1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMTI1bXM7XG4gICAgfVxuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlciBsaW5rc1xuICAgICY6Zm9jdXMsXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgVVJMcyBmb3IgcHJpbnRcbiAgICBAbWVkaWEgcHJpbnQge1xuXG4gICAgICAvLyBTaG93IGxpbmsgVVJMXG4gICAgICAmOjphZnRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICAgIGNvbnRlbnQ6IFwiIFtcIiBhdHRyKGhyZWYpIFwiXVwiO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIENvZGUgYmxvY2tzXG4gIGNvZGUsXG4gIHByZSxcbiAga2JkIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1jb2RlLWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtY29kZS1mZy1jb2xvcik7XG4gICAgZm9udC1zaXplOiA4NSU7XG4gICAgZGlyZWN0aW9uOiBsdHI7XG5cbiAgICAvLyBXcmFwIHRleHQgYW5kIGhpZGUgc2NvbGxiYXJzXG4gICAgQG1lZGlhIHByaW50IHtcbiAgICAgIHdoaXRlLXNwYWNlOiBwcmUtd3JhcDtcbiAgICB9XG4gIH1cblxuICAvLyBJbmxpbmUgY29kZSBibG9ja3MsIGNvcnJlY3QgcmVsYXRpdmUgZW1zIGZvciBzbWFsbGVyIGZvbnQgc2l6ZVxuICBjb2RlIHtcbiAgICAkZjogMSAvIDAuODU7XG5cbiAgICBtYXJnaW46IDAgMC4yNWVtICogJGY7XG4gICAgcGFkZGluZzogMC4wNjI1ZW0gKiAkZiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICArMC4yNWVtICogJGYgMCAwIHZhcigtLW1kLWNvZGUtYmctY29sb3IpLFxuICAgICAgLTAuMjVlbSAqICRmIDAgMCB2YXIoLS1tZC1jb2RlLWJnLWNvbG9yKTtcbiAgICB3b3JkLWJyZWFrOiBicmVhay13b3JkO1xuICAgIGJveC1kZWNvcmF0aW9uLWJyZWFrOiBjbG9uZTtcbiAgfVxuXG4gIC8vIERpc2FibGUgY29udGFpbmluZyBibG9jayBpbnNpZGUgaGVhZGxpbmVzXG4gIGgxIGNvZGUsXG4gIGgyIGNvZGUsXG4gIGgzIGNvZGUsXG4gIGg0IGNvZGUsXG4gIGg1IGNvZGUsXG4gIGg2IGNvZGUge1xuICAgIG1hcmdpbjogMDtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgLy8gUmVzZXQgY29kZSBpZiBpdCdzIGluc2lkZSBhIGxpbmtcbiAgYSA+IGNvZGUge1xuICAgIG1hcmdpbjogaW5oZXJpdDtcbiAgICBwYWRkaW5nOiBpbmhlcml0O1xuICAgIGJvcmRlci1yYWRpdXM6IGluaXRpYWw7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogaW5oZXJpdDtcbiAgICBjb2xvcjogaW5oZXJpdDtcbiAgICBib3gtc2hhZG93OiBub25lO1xuICB9XG5cbiAgLy8gVW5mb3JtYXR0ZWQgY29kZSBibG9ja3NcbiAgcHJlIHtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICBsaW5lLWhlaWdodDogMS40O1xuICAgIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgLy8gQWN0dWFsIGNvbnRhaW5lciB3aXRoIGNvZGUsIG92ZXJmbG93aW5nXG4gICAgPiBjb2RlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgcGFkZGluZzogcHgycmVtKDEwLjVweCkgcHgycmVtKDEycHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBmb250LXNpemU6IGluaGVyaXQ7XG4gICAgICBib3gtc2hhZG93OiBub25lO1xuICAgICAgYm94LWRlY29yYXRpb24tYnJlYWs6IHNsaWNlO1xuICAgICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgICB3b3JkLWJyZWFrOiBub3JtYWw7XG5cbiAgICAgIC8vIE92ZXJyaWRlIG5hdGl2ZSBzY3JvbGxiYXIgc3R5bGVzXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhciB7XG4gICAgICAgIHdpZHRoOiBweDJyZW0oNHB4KTtcbiAgICAgICAgaGVpZ2h0OiBweDJyZW0oNHB4KTtcbiAgICAgIH1cblxuICAgICAgLy8gU2Nyb2xsYmFyIHRodW1iXG4gICAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuXG4gICAgICAgIC8vIEhvdmVyZWQgc2Nyb2xsYmFyIHRodW1iXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBbbW9iaWxlIC1dOiBTdHJldGNoIHRvIHdob2xlIHdpZHRoXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUpIHtcblxuICAgIC8vIFN0cmV0Y2ggdG9wLWxldmVsIGNvbnRhaW5lcnNcbiAgICA+IHByZSB7XG4gICAgICBtYXJnaW46IDFlbSBweDJyZW0oLTE2cHgpO1xuICAgICAgYm9yZGVyLXJhZGl1czogMDtcblxuICAgICAgLy8gQWN0dWFsIGNvbnRhaW5lciB3aXRoIGNvZGUsIG92ZXJmbG93aW5nXG4gICAgICA+IGNvZGUge1xuICAgICAgICBwYWRkaW5nOiBweDJyZW0oMTAuNXB4KSBweDJyZW0oMTZweCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gS2V5c3Ryb2tlc1xuICBrYmQge1xuICAgICRmOiAxIC8gMC44NTtcblxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwYWRkaW5nOiAwIDAuNWVtICogJGY7XG4gICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG4gICAgZm9udC1zaXplOiAwLjc1ZW07XG4gICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgMCBweDJyZW0oMnB4KSAwIHB4MnJlbSgxcHgpIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLFxuICAgICAgMCBweDJyZW0oMnB4KSAwICAgICAgICAgICAgIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpLFxuICAgICAgaW5zZXQgMCBweDJyZW0oLTJweCkgcHgycmVtKDRweCkgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgd29yZC1icmVhazogYnJlYWstd29yZDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC10b3A7XG4gIH1cblxuICAvLyBUZXh0IGhpZ2hsaWdodGluZyBtYXJrZXJcbiAgbWFyayB7XG4gICAgbWFyZ2luOiAwIDAuMjVlbTtcbiAgICBwYWRkaW5nOiAwLjA2MjVlbSAwO1xuICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRjbHIteWVsbG93LTUwMCwgMC41KTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgKzAuMjVlbSAwIDAgdHJhbnNwYXJlbnRpemUoJGNsci15ZWxsb3ctNTAwLCAwLjUpLFxuICAgICAgLTAuMjVlbSAwIDAgdHJhbnNwYXJlbnRpemUoJGNsci15ZWxsb3ctNTAwLCAwLjUpO1xuICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgYm94LWRlY29yYXRpb24tYnJlYWs6IGNsb25lO1xuICB9XG5cbiAgLy8gQWJicmV2aWF0aW9uc1xuICBhYmJyIHtcbiAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBkb3R0ZWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcbiAgICBjdXJzb3I6IGhlbHA7XG4gIH1cblxuICAvLyBTbWFsbCB0ZXh0XG4gIHNtYWxsIHtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICB9XG5cbiAgLy8gU3VwZXJzY3JpcHQgYW5kIHN1YnNjcmlwdFxuICBzdXAsXG4gIHN1YiB7XG4gICAgbWFyZ2luLWxlZnQ6IDAuMDYyNWVtICogMSAvIDAuODtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgbWFyZ2luLXJpZ2h0OiAwLjA2MjVlbSAqIDEgLyAwLjg7XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG4gIH1cblxuICAvLyBCbG9ja3F1b3RlcywgcG9zc2libHkgbmVzdGVkXG4gIGJsb2NrcXVvdGUge1xuICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDEycHgpO1xuICAgIGJvcmRlci1sZWZ0OiBweDJyZW0oNHB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTJweCk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICBib3JkZXItcmlnaHQ6IHB4MnJlbSg0cHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgYm9yZGVyLWxlZnQ6IGluaXRpYWw7XG4gICAgfVxuICB9XG5cbiAgLy8gVW5vcmRlcmVkIGxpc3RzXG4gIHVsIHtcbiAgICBsaXN0LXN0eWxlLXR5cGU6IGRpc2M7XG4gIH1cblxuICAvLyBVbm9yZGVyZWQgYW5kIG9yZGVyZWQgbGlzdHNcbiAgdWwsXG4gIG9sIHtcbiAgICBtYXJnaW4tbGVmdDogMC42MjVlbTtcbiAgICBwYWRkaW5nOiAwO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDAuNjI1ZW07XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG5cbiAgICAvLyBOZXN0ZWQgb3JkZXJlZCBsaXN0c1xuICAgIG9sIHtcbiAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItYWxwaGE7XG5cbiAgICAgIC8vIFRyaXBseSBuZXN0ZWQgb3JkZXJlZCBsaXN0XG4gICAgICBvbCB7XG4gICAgICAgIGxpc3Qtc3R5bGUtdHlwZTogbG93ZXItcm9tYW47XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gTGlzdCBlbGVtZW50c1xuICAgIGxpIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgICAgbWFyZ2luLWxlZnQ6IDEuMjVlbTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAxLjI1ZW07XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgfVxuXG4gICAgICAvLyBEZWNyZWFzZSB2ZXJ0aWNhbCBzcGFjaW5nXG4gICAgICBwLFxuICAgICAgYmxvY2txdW90ZSB7XG4gICAgICAgIG1hcmdpbjogMC41ZW0gMDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIG1hcmdpbiBvbiBsYXN0IGVsZW1lbnRcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgICB9XG5cbiAgICAgIC8vIE5lc3RlZCBsaXN0c1xuICAgICAgdWwsXG4gICAgICBvbCB7XG4gICAgICAgIG1hcmdpbjogMC41ZW0gMCAwLjVlbSAwLjYyNWVtO1xuXG4gICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDAuNjI1ZW07XG4gICAgICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbml0aW9uIGxpc3RzXG4gIGRkIHtcbiAgICBtYXJnaW46IDFlbSAwIDFlbSAxLjg3NWVtO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBtYXJnaW4tcmlnaHQ6IDEuODc1ZW07XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG4gIH1cblxuICAvLyBMaW1pdCB3aWR0aCB0byBjb250YWluZXJcbiAgaWZyYW1lLFxuICBpbWcsXG4gIHN2ZyB7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICB9XG5cbiAgLy8gRGF0YSB0YWJsZXNcbiAgdGFibGU6bm90KFtjbGFzc10pIHtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgbWF4LXdpZHRoOiAxMDAlO1xuICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICAgIGJhY2tncm91bmQ6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGZvbnQtc2l6ZTogbXMoLTEpO1xuICAgIGJveC1zaGFkb3c6XG4gICAgICAwIHB4MnJlbSg0cHgpIHB4MnJlbSgxMHB4KSBoc2xhKDAsIDAlLCAwJSwgMC4wNSksXG4gICAgICAwIDAgICAgICAgICAgIHB4MnJlbSgxcHgpICBoc2xhKDAsIDAlLCAwJSwgMC4xKTtcbiAgICBvdmVyZmxvdzogYXV0bztcbiAgICAtd2Via2l0LW92ZXJmbG93LXNjcm9sbGluZzogdG91Y2g7XG5cbiAgICAvLyBEdWUgdG8gbWFyZ2luIGNvbGxhcHNlIGJlY2F1c2Ugb2YgdGhlIG5lY2Vzc2FyeSBpbmxpbmUtYmxvY2sgaGFjaywgd2VcbiAgICAvLyBjYW5ub3QgaW5jcmVhc2UgdGhlIGJvdHRvbSBtYXJnaW4gb24gdGhlIHRhYmxlLCBzbyB3ZSBqdXN0IGluY3JlYXNlIHRoZVxuICAgIC8vIHRvcCBtYXJnaW4gb24gdGhlIGZvbGxvd2luZyBlbGVtZW50XG4gICAgJiArICoge1xuICAgICAgbWFyZ2luLXRvcDogMS41ZW07XG4gICAgfVxuXG4gICAgLy8gVGFibGUgaGVhZGluZ3MgYW5kIGNlbGxzXG4gICAgdGg6bm90KFthbGlnbl0pLFxuICAgIHRkOm5vdChbYWxpZ25dKSB7XG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICB0ZXh0LWFsaWduOiByaWdodDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWJsZSBoZWFkaW5nc1xuICAgIHRoIHtcbiAgICAgIG1pbi13aWR0aDogcHgycmVtKDEwMHB4KTtcbiAgICAgIHBhZGRpbmc6IHB4MnJlbSgxMnB4KSBweDJyZW0oMTZweCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xuICAgIH1cblxuICAgIC8vIFRhYmxlIGNlbGxzXG4gICAgdGQge1xuICAgICAgcGFkZGluZzogcHgycmVtKDEycHgpIHB4MnJlbSgxNnB4KTtcbiAgICAgIGJvcmRlci10b3A6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgfVxuXG4gICAgLy8gVGFibGUgcm93c1xuICAgIHRyIHtcbiAgICAgIHRyYW5zaXRpb246IGJhY2tncm91bmQtY29sb3IgMTI1bXM7XG5cbiAgICAgIC8vIEFkZCBiYWNrZ3JvdW5kIG9uIGhvdmVyXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiYSgwLCAwLCAwLCAwLjAzNSk7XG4gICAgICAgIGJveC1zaGFkb3c6IDAgcHgycmVtKDFweCkgIDAgdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcikgaW5zZXQ7XG4gICAgICB9XG5cbiAgICAgIC8vIFJlbW92ZSB0b3AgYm9yZGVyIG9uIGZpcnN0IHJvd1xuICAgICAgJjpmaXJzdC1jaGlsZCB0ZCB7XG4gICAgICAgIGJvcmRlci10b3A6IDA7XG4gICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBEbyBub3Qgd3JhcCBsaW5rcyBpbiB0YWJsZXNcbiAgICBhIHtcbiAgICAgIHdvcmQtYnJlYWs6IG5vcm1hbDtcbiAgICB9XG4gIH1cblxuICAvLyBXcmFwcGVyIGZvciBzY3JvbGxpbmcgb24gb3ZlcmZsb3dcbiAgJl9fc2Nyb2xsd3JhcCB7XG4gICAgbWFyZ2luOiAxZW0gcHgycmVtKC0xNnB4KTtcbiAgICBvdmVyZmxvdy14OiBhdXRvO1xuICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgfVxuXG4gIC8vIERhdGEgdGFibGUgd3JhcHBlciwgaW4gY2FzZSBKYXZhU2NyaXB0IGlzIGF2YWlsYWJsZVxuICAubWQtdHlwZXNldF9fdGFibGUge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBtYXJnaW4tYm90dG9tOiAwLjVlbTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgxNnB4KTtcblxuICAgIC8vIERhdGEgdGFibGVzXG4gICAgdGFibGUge1xuICAgICAgZGlzcGxheTogdGFibGU7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIG1hcmdpbjogMDtcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFjdGl2ZSAodG9nZ2xlZCkgZHJhd2VyXG4kbWQtdG9nZ2xlX19kcmF3ZXItLWNoZWNrZWQ6XG4gIFwiW2RhdGEtbWQtdG9nZ2xlPVxcXCJkcmF3ZXJcXFwiXTpjaGVja2VkIH5cIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IGJhc2UgZ3JpZCBhbmQgY29udGFpbmVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTdHJldGNoIGNvbnRhaW5lciB0byB2aWV3cG9ydCBhbmQgc2V0IGJhc2UgZm9udC1zaXplZm9yIHNpbXBsZSBjYWxjdWxhdGlvbnNcbi8vIGJhc2VkIG9uIHJlbGF0aXZlIGVtcyAocmVtcylcbmh0bWwge1xuICBoZWlnaHQ6IDEwMCU7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAvLyBIYWNrOiBub3JtYWxseSwgd2Ugd291bGQgc2V0IHRoZSBiYXNlIGZvbnQtc2l6ZSB0byA2Mi41JSwgc28gd2UgY2FuIGJhc2VcbiAgLy8gYWxsIGNhbGN1bGF0aW9ucyBvbiAxMHB4LCBidXQgQ2hyb21pdW0gYW5kIENocm9tZSBkZWZpbmUgYSBtaW5pbWFsIGZvbnRcbiAgLy8gc2l6ZSBvZiAxMiBpZiB0aGUgc3lzdGVtIGxhbmd1YWdlIGlzIHNldCB0byBDaGluZXNlLiBGb3IgdGhpcyByZWFzb24gd2VcbiAgLy8ganVzdCBkb3VibGUgdGhlIGZvbnQtc2l6ZSwgc2V0IGl0IHRvIDIwcHggd2hpY2ggc2VlbXMgdG8gZG8gdGhlIHRyaWNrLlxuICAvL1xuICAvLyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3NxdWlkZnVuay9ta2RvY3MtbWF0ZXJpYWwvaXNzdWVzLzkxMVxuICBmb250LXNpemU6IDEyNSU7XG4gIC8vIEhhY2s6IHNvbWUgYnJvd3NlcnMgb24gc29tZSBvcGVyYXRpbmcgc3lzdGVtcyBkb24ndCBhY2NvdW50IGZvciBzY3JvbGxcbiAgLy8gYmFycyB3aGVuIGZpcmluZyBtZWRpYSBxdWVyaWVzLCBzbyB3ZSBuZWVkIHRvIGRvIHRoaXMgZm9yIHNhZmV0eS4gVGhpc1xuICAvLyBjdXJyZW50bHkgaW1wYWN0cyB0aGUgdGFibGUgb2YgY29udGVudHMgY29tcG9uZW50IGJldHdlZW4gMTIyMCBhbmQgMTIzNHB4XG4gIC8vIGFuZCBpcyB0byBjdXJyZW50IGtub3dsZWRnZSBub3QgZml4YWJsZS5cbiAgb3ZlcmZsb3cteDogaGlkZGVuO1xuXG4gIC8vIFtzY3JlZW4gbWVkaXVtICtdOiBTZXQgYmFzZSBmb250LXNpemUgdG8gMTFweFxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4gbWVkaXVtKSB7XG4gICAgZm9udC1zaXplOiAxMzcuNTAlO1xuICB9XG5cbiAgLy8gW3NjcmVlbiBsYXJnZSArXTogU2V0IGJhc2UgZm9udC1zaXplIHRvIDEycHhcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuIGxhcmdlKSB7XG4gICAgZm9udC1zaXplOiAxNTAlO1xuICB9XG59XG5cbi8vIFN0cmV0Y2ggYm9keSB0byBjb250YWluZXIgYW5kIGxlYXZlIHJvb20gZm9yIGZvb3RlclxuYm9keSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi1oZWlnaHQ6IDEwMCU7XG4gIC8vIEhhY2s6IHJlc2V0IGZvbnQtc2l6ZSB0byAxMHB4LCBzbyB0aGUgc3BhY2luZyBmb3IgYWxsIGlubGluZSBlbGVtZW50cyBpc1xuICAvLyBjb3JyZWN0IGFnYWluLiBPdGhlcndpc2UgdGhlIHNwYWNpbmcgd291bGQgYmUgYmFzZWQgb24gMjBweC5cbiAgZm9udC1zaXplOiAwLjVyZW07IC8vIHN0eWxlbGludC1kaXNhYmxlLWxpbmUgdW5pdC13aGl0ZWxpc3RcblxuICAvLyBbdGFibGV0IHBvcnRyYWl0IC1dOiBMb2NrIGJvZHkgdG8gZGlzYWJsZSBzY3JvbGwgYnViYmxpbmdcbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuXG4gICAgLy8gTG9jayBib2R5IHRvIHZpZXdwb3J0IGhlaWdodCAoZS5nLiBpbiBzZWFyY2ggbW9kZSlcbiAgICAmW2RhdGEtbWQtc3RhdGU9XCJsb2NrXCJdIHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB9XG4gIH1cbn1cblxuLy8gSG9yaXpvbnRhbCBzZXBhcmF0b3JzXG5ociB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICBoZWlnaHQ6IHB4MnJlbSgxcHgpO1xuICBwYWRkaW5nOiAwO1xuICBib3JkZXI6IDA7XG59XG5cbi8vIFRlbXBsYXRlLXdpZGUgZ3JpZFxuLm1kLWdyaWQge1xuICBtYXgtd2lkdGg6IHB4MnJlbSgxMjIwcHgpO1xuICBtYXJnaW4tcmlnaHQ6IGF1dG87XG4gIG1hcmdpbi1sZWZ0OiBhdXRvO1xufVxuXG4vLyBDb250ZW50IHdyYXBwZXJcbi5tZC1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICBmbGV4LWdyb3c6IDE7XG59XG5cbi8vIFRoZSBtYWluIGNvbnRlbnQgc2hvdWxkIHN0cmV0Y2ggdG8gbWF4aW11bSBoZWlnaHQgaW4gdGhlIHRhYmxlXG4ubWQtbWFpbiB7XG4gIGZsZXgtZ3JvdzogMTtcblxuICAvLyBJbmNyZWFzZSB0b3Agc3BhY2luZyBvZiBjb250ZW50IGFyZWEgdG8gZ2l2ZSB0eXBvZ3JhcGh5IG1vcmUgcm9vbVxuICAmX19pbm5lciB7XG4gICAgaGVpZ2h0OiAxMDAlO1xuICAgIHBhZGRpbmctdG9wOiBweDJyZW0oMjRweCArIDZweCk7XG4gICAgLy8gSGFjazogaW5kdWNlIG1hcmdpbi1jb2xsYXBzZSwgYmVjYXVzZSBvdGhlcndpc2UgdGhlIHNpZGViYXIgaGVpZ2h0IGlzXG4gICAgLy8gbm90IGNhbGN1bGF0ZWQgY29ycmVjdGx5IGFuZCB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgb24gdGhpcyBlbGVtZW50IG11c3RcbiAgICAvLyBiZSBsZWZ0IGluIGluaXRpYWwgc3RhdGUgZm9yIHRhcmdldHRlZCBsaW5rIG9mZnNldHMgdG8gd29yayBwcm9wZXJseVxuICAgIHBhZGRpbmctYm90dG9tOiBweDJyZW0oMXB4KTtcbiAgfVxufVxuXG4vLyBBcHBseSBlbGxpcHNpcyBpbiBjYXNlIG9mIG92ZXJmbG93aW5nIHRleHRcbi5tZC1lbGxpcHNpcyB7XG4gIGRpc3BsYXk6IGJsb2NrO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IG5hdmlnYXRpb25hbCBlbGVtZW50c1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUb2dnbGUgY2hlY2tib3hcbi5tZC10b2dnbGUge1xuICBkaXNwbGF5OiBub25lO1xufVxuXG4vLyBPdmVybGF5IGJlbG93IGV4cGFuZGVkIGRyYXdlclxuLm1kLW92ZXJsYXkge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHRvcDogMDtcbiAgd2lkdGg6IDA7XG4gIGhlaWdodDogMDtcbiAgdHJhbnNpdGlvbjpcbiAgICB3aWR0aCAgICAgMG1zIDI1MG1zLFxuICAgIGhlaWdodCAgICAwbXMgMjUwbXMsXG4gICAgb3BhY2l0eSAyNTBtcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAzO1xuXG4gIC8vIFt0YWJsZXQgLV06IFRyaWdnZXIgb3ZlcmxheVxuICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0KSB7XG5cbiAgICAvLyBFeHBhbmRlZCBkcmF3ZXJcbiAgICAjeyRtZC10b2dnbGVfX2RyYXdlci0tY2hlY2tlZH0gJiB7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIGhlaWdodDogMTAwJTtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIHdpZHRoICAgICAwbXMsXG4gICAgICAgIGhlaWdodCAgICAwbXMsXG4gICAgICAgIG9wYWNpdHkgMjUwbXM7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogc2tpcCBsaW5rXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNraXAgbGlua1xuLm1kLXNraXAge1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIG1hcmdpbjogcHgycmVtKDEwcHgpO1xuICBwYWRkaW5nOiBweDJyZW0oNnB4KSBweDJyZW0oMTBweCk7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWShweDJyZW0oOHB4KSk7XG4gIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBmb250LXNpemU6IG1zKC0xKTtcbiAgb3BhY2l0eTogMDtcblxuICAvLyBTaG93IHNraXAgbGluayBvbiBmb2N1c1xuICAmOmZvY3VzIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgb3BhY2l0eSAgIDE3NW1zIDc1bXM7XG4gICAgb3BhY2l0eTogMTtcbiAgICB6LWluZGV4OiAxMDtcbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogcHJpbnQgc3R5bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFkZCBtYXJnaW5zIHRvIHBhZ2VcbkBwYWdlIHtcbiAgbWFyZ2luOiAyNW1tO1xufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFubm91bmNlbWVudCBiYXJcbi5tZC1hbm5vdW5jZSB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuXG4gIC8vIEFjdHVhbCBjb250ZW50XG4gICZfX2lubmVyIHtcbiAgICBtaW4taGVpZ2h0OiBweDJyZW0oNDhweCk7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTZweCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGZvbnQtc2l6ZTogcHgycmVtKDE0cHgpO1xuICAgIGxpbmUtaGVpZ2h0OiBweDJyZW0oNDhweCk7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb3B5IHRvIGNsaXBib2FyZFxuLm1kLWNsaXBib2FyZCB7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgdG9wOiBweDJyZW0oOHB4KTtcbiAgcmlnaHQ6IHB4MnJlbSg4cHgpO1xuICB3aWR0aDogcHgycmVtKDI0cHgpO1xuICBoZWlnaHQ6IHB4MnJlbSgyNHB4KTtcbiAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXM7XG4gIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICBjdXJzb3I6IHBvaW50ZXI7XG4gIHotaW5kZXg6IDE7XG4gIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gIC8vIEhpZGUgZm9yIHByaW50XG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxuXG4gIC8vIFNsaWdodGx5IHNtYWxsZXIgaWNvblxuICBzdmcge1xuICAgIHdpZHRoOiBweDJyZW0oMThweCk7XG4gICAgaGVpZ2h0OiBweDJyZW0oMThweCk7XG4gIH1cblxuICAvLyBTaG93IG9uIGNvbnRhaW5lciBob3ZlclxuICBwcmU6aG92ZXIgJiB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgfVxuXG4gIC8vIEZvY3VzZWQgb3IgaG92ZXJlZCBpY29uXG4gIHByZSAmOmZvY3VzLFxuICBwcmUgJjpob3ZlciB7XG4gICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb250ZW50IGNvbnRhaW5lclxuLm1kLWNvbnRlbnQge1xuXG4gIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBBZGQgc3BhY2UgZm9yIHRhYmxlIG9mIGNvbnRlbnRzXG4gIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICBtYXJnaW4tcmlnaHQ6IHB4MnJlbSgyNDJweCk7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogaW5pdGlhbDtcbiAgICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMjQycHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFtzY3JlZW4gK106IEFkZCBzcGFjZSBmb3IgdGFibGUgb2YgY29udGVudHNcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuKSB7XG4gICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgyNDJweCk7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDI0MnB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBEZWZpbmUgc3BhY2luZ1xuICAmX19pbm5lciB7XG4gICAgbWFyZ2luOiAwIHB4MnJlbSgxNnB4KSBweDJyZW0oMjRweCk7XG4gICAgcGFkZGluZy10b3A6IHB4MnJlbSgxMnB4KTtcblxuICAgIC8vIFtzY3JlZW4gK106IEluY3JlYXNlIGhvcml6b250YWwgc3BhY2luZ1xuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHNjcmVlbikge1xuICAgICAgbWFyZ2luLXJpZ2h0OiBweDJyZW0oMjRweCk7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKDI0cHgpO1xuICAgIH1cblxuICAgIC8vIEhhY2s6IGFkZCBwc2V1ZG8gZWxlbWVudCBmb3Igc3BhY2luZywgYXMgdGhlIG92ZXJmbG93IG9mIHRoZSBjb250ZW50XG4gICAgLy8gY29udGFpbmVyIG1heSBub3QgYmUgaGlkZGVuIGR1ZSB0byBhbiBpbW1pbmVudCBvZmZzZXQgZXJyb3Igb24gdGFyZ2V0c1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIGhlaWdodDogcHgycmVtKDhweCk7XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgIH1cblxuICAgIC8vIEhhY2s6IHJlbW92ZSBib3R0b20gc3BhY2luZyBvZiBsYXN0IGVsZW1lbnQsIGR1ZSB0byBtYXJnaW4gY29sbGFwc2VcbiAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDA7XG4gICAgfVxuICB9XG5cbiAgLy8gQnV0dG9uIG5leHQgdG8gdGhlIHRpdGxlXG4gICZfX2J1dHRvbiB7XG4gICAgbWFyZ2luOiBweDJyZW0oOHB4KSAwO1xuICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oOHB4KTtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGZsb2F0OiByaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgbWFyZ2luLXJpZ2h0OiBweDJyZW0oOHB4KTtcbiAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAgIC8vIEZsaXAgaWNvbiB2ZXJ0aWNhbGx5XG4gICAgICBzdmcge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlWCgtMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gT3ZlcnJpZGUgZGVmYXVsdCBsaW5rIGNvbG9yIGZvciBpY29uc1xuICAgIC5tZC10eXBlc2V0ICYge1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgIH1cblxuICAgIC8vIEFsaWduIHRleHQgd2l0aCBpY29uXG4gICAgc3ZnIHtcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XG4gICAgfVxuXG4gICAgLy8gSGlkZSBmb3IgcHJpbnRcbiAgICBAbWVkaWEgcHJpbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBEaWFsb2cgcmVuZGVyZWQgYXMgc25hY2tiYXJcbi5tZC1kaWFsb2cge1xuICBAaW5jbHVkZSB6LWRlcHRoKDIpO1xuXG4gIGRpc3BsYXk6IGJsb2NrO1xuICBwb3NpdGlvbjogZml4ZWQ7XG4gIHJpZ2h0OiBweDJyZW0oMTZweCk7XG4gIGJvdHRvbTogcHgycmVtKDE2cHgpO1xuICBsZWZ0OiBpbml0aWFsO1xuICBtaW4td2lkdGg6IHB4MnJlbSgyMjJweCk7XG4gIHBhZGRpbmc6IHB4MnJlbSg4cHgpIHB4MnJlbSgxMnB4KTtcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xuICB0cmFuc2l0aW9uOlxuICAgIHRyYW5zZm9ybSAwbXMgICA0MDBtcyxcbiAgICBvcGFjaXR5ICAgNDAwbXM7XG4gIGJvcmRlcjogbm9uZTtcbiAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG4gIGJhY2tncm91bmQ6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogcHgycmVtKDE0cHgpO1xuICBvcGFjaXR5OiAwO1xuICB6LWluZGV4OiAyO1xuXG4gIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICByaWdodDogaW5pdGlhbDtcbiAgICBsZWZ0OiBweDJyZW0oMTZweCk7XG4gIH1cblxuICAvLyBTaG93IG9wZW4gZGlhbG9nXG4gICZbZGF0YS1tZC1zdGF0ZT1cIm9wZW5cIl0ge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjA3NSwgMC44NSwgMC4xNzUsIDEpLFxuICAgICAgb3BhY2l0eSAgIDQwMG1zO1xuICAgIG9wYWNpdHk6IDE7XG4gIH1cblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cbiIsIi8vXG4vLyBOYW1lOiAgICAgICAgICAgTWF0ZXJpYWwgU2hhZG93c1xuLy8gRGVzY3JpcHRpb246ICAgIE1peGlucyBmb3IgTWF0ZXJpYWwgRGVzaWduIFNoYWRvd3MuXG4vLyBWZXJzaW9uOiAgICAgICAgMy4wLjFcbi8vXG4vLyBBdXRob3I6ICAgICAgICAgRGVuaXMgTWFsaW5vY2hraW5cbi8vIEdpdDogICAgICAgICAgICBodHRwczovL2dpdGh1Yi5jb20vbXJtbG5jL21hdGVyaWFsLXNoYWRvd3Ncbi8vXG4vLyB0d2l0dGVyOiAgICAgICAgQG1ybWxuY1xuLy9cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cbi8vIE1peGluc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBtaXhpbiB6LWRlcHRoLXRyYW5zaXRpb24oKSB7XG4gIHRyYW5zaXRpb246IGJveC1zaGFkb3cgLjI4cyBjdWJpYy1iZXppZXIoLjQsIDAsIC4yLCAxKTtcbn1cblxuQG1peGluIHotZGVwdGgtZm9jdXMoKSB7XG4gIGJveC1zaGFkb3c6IDAgMCA4cHggcmdiYSgwLCAwLCAwLCAuMTgpLCAwIDhweCAxNnB4IHJnYmEoMCwgMCwgMCwgLjM2KTtcbn1cblxuQG1peGluIHotZGVwdGgtMmRwKCkge1xuICBib3gtc2hhZG93OiAwIDJweCAycHggMCByZ2JhKDAsIDAsIDAsIC4xNCksXG4gICAgICAgICAgICAgIDAgMXB4IDVweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSxcbiAgICAgICAgICAgICAgMCAzcHggMXB4IC0ycHggcmdiYSgwLCAwLCAwLCAuMik7XG59XG5cbkBtaXhpbiB6LWRlcHRoLTNkcCgpIHtcbiAgYm94LXNoYWRvdzogMCAzcHggNHB4IDAgcmdiYSgwLCAwLCAwLCAuMTQpLFxuICAgICAgICAgICAgICAwIDFweCA4cHggMCByZ2JhKDAsIDAsIDAsIC4xMiksXG4gICAgICAgICAgICAgIDAgM3B4IDNweCAtMnB4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG5AbWl4aW4gei1kZXB0aC00ZHAoKSB7XG4gIGJveC1zaGFkb3c6IDAgNHB4IDVweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSxcbiAgICAgICAgICAgICAgMCAxcHggMTBweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSxcbiAgICAgICAgICAgICAgMCAycHggNHB4IC0xcHggcmdiYSgwLCAwLCAwLCAuNCk7XG59XG5cbkBtaXhpbiB6LWRlcHRoLTZkcCgpIHtcbiAgYm94LXNoYWRvdzogMCA2cHggMTBweCAwIHJnYmEoMCwgMCwgMCwgLjE0KSxcbiAgICAgICAgICAgICAgMCAxcHggMThweCAwIHJnYmEoMCwgMCwgMCwgLjEyKSxcbiAgICAgICAgICAgICAgMCAzcHggNXB4IC0xcHggcmdiYSgwLCAwLCAwLCAuNCk7XG59XG5cbkBtaXhpbiB6LWRlcHRoLThkcCgpIHtcbiAgYm94LXNoYWRvdzogMCA4cHggMTBweCAxcHggcmdiYSgwLCAwLCAwLCAuMTQpLFxuICAgICAgICAgICAgICAwIDNweCAxNHB4IDJweCByZ2JhKDAsIDAsIDAsIC4xMiksXG4gICAgICAgICAgICAgIDAgNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG5AbWl4aW4gei1kZXB0aC0xNmRwKCkge1xuICBib3gtc2hhZG93OiAwIDE2cHggMjRweCAycHggcmdiYSgwLCAwLCAwLCAuMTQpLFxuICAgICAgICAgICAgICAwICA2cHggMzBweCA1cHggcmdiYSgwLCAwLCAwLCAuMTIpLFxuICAgICAgICAgICAgICAwICA4cHggMTBweCAtNXB4IHJnYmEoMCwgMCwgMCwgLjQpO1xufVxuXG5AbWl4aW4gei1kZXB0aC0yNGRwKCkge1xuICBib3gtc2hhZG93OiAwICA5cHggNDZweCAgOHB4IHJnYmEoMCwgMCwgMCwgLjE0KSxcbiAgICAgICAgICAgICAgMCAyNHB4IDM4cHggIDNweCByZ2JhKDAsIDAsIDAsIC4xMiksXG4gICAgICAgICAgICAgIDAgMTFweCAxNXB4IC03cHggcmdiYSgwLCAwLCAwLCAuNCk7XG59XG5cbkBtaXhpbiB6LWRlcHRoKCRkcDogMikge1xuICBAaWYgJGRwID09IDIge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtMmRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDMge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtM2RwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDQge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtNGRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDYge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtNmRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDgge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtOGRwKCk7XG4gIH0gQGVsc2UgaWYgJGRwID09IDE2IHtcbiAgICBAaW5jbHVkZSB6LWRlcHRoLTE2ZHAoKTtcbiAgfSBAZWxzZSBpZiAkZHAgPT0gMjQge1xuICAgIEBpbmNsdWRlIHotZGVwdGgtMjRkcCgpO1xuICB9XG59XG5cblxuLy8gQ2xhc3MgZ2VuZXJhdG9yXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQG1peGluIHotZGVwdGgtY2xhc3NlcygkdHJhbnNpdGlvbjogZmFsc2UsICRmb2N1czogZmFsc2UpIHtcbiAgQGlmICR0cmFuc2l0aW9uID09IHRydWUge1xuICAgICYtdHJhbnNpdGlvbiB7XG4gICAgICBAaW5jbHVkZSB6LWRlcHRoLXRyYW5zaXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBAaWYgJGZvY3VzID09IHRydWUge1xuICAgICYtZm9jdXMge1xuICAgICAgQGluY2x1ZGUgei1kZXB0aC1mb2N1cygpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSBhdmFpbGFibGUgdmFsdWVzIGZvciB0aGUgc2hhZG93IGRlcHRoXG4gIEBlYWNoICRkZXB0aCBpbiAyLCAzLCA0LCA2LCA4LCAxNiwgMjQge1xuICAgICYtI3skZGVwdGh9ZHAge1xuICAgICAgQGluY2x1ZGUgei1kZXB0aCgkZGVwdGgpO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFwcGxpY2F0aW9uIGhlYWRlciAoc3RheXMgYWx3YXlzIG9uIHRvcClcbi5tZC1oZWFkZXIge1xuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDA7XG4gIHJpZ2h0OiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IHB4MnJlbSg0OHB4KTtcbiAgdHJhbnNpdGlvbjpcbiAgICBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zLFxuICAgIGNvbG9yIDI1MG1zO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICAvLyBIYWNrOiByZWR1Y2Ugaml0dGVyIGJ5IGFkZGluZyBhIHRyYW5zcGFyZW50IGJveCBzaGFkb3cgb2YgdGhlIHNhbWUgc2l6ZVxuICAvLyBzbyB0aGUgc2l6ZSBvZiB0aGUgbGF5ZXIgZG9lc24ndCBjaGFuZ2UgZHVyaW5nIGFuaW1hdGlvblxuICBib3gtc2hhZG93OlxuICAgIDAgMCAgICAgICAgICAgcHgycmVtKDRweCkgcmdiYSgwLCAwLCAwLCAwKSxcbiAgICAwIHB4MnJlbSg0cHgpIHB4MnJlbSg4cHgpIHJnYmEoMCwgMCwgMCwgMCk7XG4gIGJhY2tmYWNlLXZpc2liaWxpdHk6IGhpZGRlbjtcbiAgei1pbmRleDogMjtcblxuICAvLyBBbHdheXMgaGlkZSBzaGFkb3csIGluIGNhc2UgSmF2YVNjcmlwdCBpcyBub3QgYXZhaWxhYmxlXG4gIC5uby1qcyAmIHtcbiAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIGJveC1zaGFkb3c6IG5vbmU7XG4gIH1cblxuICAvLyBTaG93IGFuZCBhbmltYXRlIHNoYWRvd1xuICAmW2RhdGEtbWQtc3RhdGU9XCJzaGFkb3dcIl0ge1xuICAgIHRyYW5zaXRpb246XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yIDI1MG1zLFxuICAgICAgY29sb3IgICAgICAgICAgICAyNTBtcyxcbiAgICAgIGJveC1zaGFkb3cgICAgICAgMjUwbXM7XG4gICAgYm94LXNoYWRvdzpcbiAgICAgIDAgMCAgICAgICAgICAgcHgycmVtKDRweCkgcmdiYSgwLCAwLCAwLCAwLjEpLFxuICAgICAgMCBweDJyZW0oNHB4KSBweDJyZW0oOHB4KSByZ2JhKDAsIDAsIDAsIDAuMik7XG4gIH1cblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cbn1cblxuLy8gTmF2aWdhdGlvbiB3aXRoaW4gaGVhZGVyXG4ubWQtaGVhZGVyLW5hdiB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIHBhZGRpbmc6IDAgcHgycmVtKDRweCk7XG5cbiAgLy8gSWNvbiBidXR0b25zXG4gICZfX2J1dHRvbiB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG4gICAgcGFkZGluZzogcHgycmVtKDhweCk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgei1pbmRleDogMTtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuXG4gICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEZvY3VzZWQgb3IgaG92ZXJlZCBpY29uXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICAvLyBMb2dvXG4gICAgJi5tZC1sb2dvIHtcbiAgICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG4gICAgICBwYWRkaW5nOiBweDJyZW0oOHB4KTtcblxuICAgICAgLy8gSW1hZ2Ugb3IgaWNvblxuICAgICAgaW1nLFxuICAgICAgc3ZnIHtcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgIHdpZHRoOiBweDJyZW0oMjRweCk7XG4gICAgICAgIGhlaWdodDogcHgycmVtKDI0cHgpO1xuICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGlkZSBzZWFyY2ggaWNvbiwgaWYgSmF2YVNjcmlwdCBpcyBub3QgYXZhaWxhYmxlLlxuICAgIC5uby1qcyAmW2Zvcj1cIl9fc2VhcmNoXCJdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IEhpZGUgdGhlIHNlYXJjaCBidXR0b25cbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG5cbiAgICAgIC8vIFNlYXJjaCBidXR0b25cbiAgICAgICZbZm9yPVwiX19zZWFyY2hcIl0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgLV06IEhpZGUgdGhlIGxvZ29cbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0KSB7XG5cbiAgICAgIC8vIExvZ29cbiAgICAgICYubWQtbG9nbyB7XG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gW3NjcmVlbiArXTogSGlkZSB0aGUgbWVudSBidXR0b25cbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcblxuICAgICAgLy8gTWVudSBidXR0b25cbiAgICAgICZbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhlYWRlciB0b3BpY3NcbiAgJl9fdG9waWMge1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgyMHB4KTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKSxcbiAgICAgIG9wYWNpdHkgICAxNTBtcztcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBQYWdlIHRpdGxlXG4gICAgJiArICYge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgyNXB4KSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gNDAwbXMgY3ViaWMtYmV6aWVyKDEsIDAuNywgMC4xLCAwLjEpLFxuICAgICAgICBvcGFjaXR5ICAgMTUwbXM7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgei1pbmRleDogLTE7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgtMjVweCkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEluZHVjZSBlbGxpcHNpcywgaWYgbm8gSmF2YVNjcmlwdCBpcyBhdmFpbGFibGVcbiAgICAubm8tanMgJiB7XG4gICAgICBwb3NpdGlvbjogaW5pdGlhbDtcbiAgICB9XG5cbiAgICAvLyBIaWRlIHBhZ2UgdGl0bGUgYXMgaXQgaXMgaW52aXNpYmxlIGFueXdheSBhbmQgd2lsbCBvdmVyZmxvdyB0aGUgaGVhZGVyXG4gICAgLm5vLWpzICYgKyAmIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgfVxuICB9XG5cbiAgLy8gSGVhZGVyIHRpdGxlIC0gc2V0IGxpbmUgaGVpZ2h0IHRvIG1hdGNoIGljb24gZm9yIGNvcnJlY3QgYWxpZ25tZW50XG4gICZfX3RpdGxlIHtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgZm9udC1zaXplOiBweDJyZW0oMThweCk7XG4gICAgbGluZS1oZWlnaHQ6IHB4MnJlbSg0OHB4KTtcblxuICAgIC8vIFNob3cgcGFnZSB0aXRsZVxuICAgICZbZGF0YS1tZC1zdGF0ZT1cImFjdGl2ZVwiXSAubWQtaGVhZGVyLW5hdl9fdG9waWMge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgtMjVweCkpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgdHJhbnNmb3JtIDQwMG1zIGN1YmljLWJlemllcigxLCAwLjcsIDAuMSwgMC4xKSxcbiAgICAgICAgb3BhY2l0eSAgIDE1MG1zO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICAgIHotaW5kZXg6IC0xO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChweDJyZW0oMjVweCkpO1xuICAgICAgfVxuXG4gICAgICAvLyBQYWdlIHRpdGxlXG4gICAgICAmICsgLm1kLWhlYWRlci1uYXZfX3RvcGljIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDApO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICAgICAgb3BhY2l0eSAgIDE1MG1zO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICB6LWluZGV4OiAwO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBQYXRjaCBlbGxpcHNpc1xuICAgID4gLm1kLWhlYWRlci1uYXZfX2VsbGlwc2lzIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgIH1cbiAgfVxuXG4gIC8vIFJlcG9zaXRvcnkgY29udGFpbmluZyBzb3VyY2VcbiAgJl9fc291cmNlIHtcbiAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IFNob3cgdGhlIHJlcG9zaXN0b3J5IGZyb20gdGFibGV0XG4gICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICB3aWR0aDogcHgycmVtKDIzNHB4KTtcbiAgICAgIG1heC13aWR0aDogcHgycmVtKDIzNHB4KTtcbiAgICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMjBweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDIwcHgpO1xuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbc2NyZWVuICtdOiBJbmNyZWFzZSBzcGFjaW5nIG9mIHNlYXJjaCBiYXJcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcbiAgICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMjhweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDI4cHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEhlcm8gdGVhc2VyXG4ubWQtaGVybyB7XG4gIHRyYW5zaXRpb246IGJhY2tncm91bmQgMjUwbXM7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gIGZvbnQtc2l6ZTogbXMoMSk7XG4gIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgLy8gSW5uZXIgd3JhcHBlclxuICAmX19pbm5lciB7XG4gICAgbWFyZ2luLXRvcDogcHgycmVtKDIwcHgpO1xuICAgIHBhZGRpbmc6IHB4MnJlbSgxNnB4KSBweDJyZW0oMTZweCkgcHgycmVtKDhweCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICBvcGFjaXR5ICAgMjUwbXM7XG4gICAgdHJhbnNpdGlvbi1kZWxheTogMTAwbXM7XG5cbiAgICAvLyBbdGFibGV0IC1dOiBDb21wZW5zYXRlIGZvciBtaXNzaW5nIHRhYnNcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0KSB7XG4gICAgICBtYXJnaW4tdG9wOiBweDJyZW0oNDhweCk7XG4gICAgICBtYXJnaW4tYm90dG9tOiBweDJyZW0oMjRweCk7XG4gICAgfVxuXG4gICAgLy8gRmFkZS1vdXQgdGFicyBiYWNrZ3JvdW5kIHVwb24gc2Nyb2xsaW5nXG4gICAgW2RhdGEtbWQtc3RhdGU9XCJoaWRkZW5cIl0gJiB7XG4gICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWShweDJyZW0oMTIuNXB4KSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gICAwbXMgNDAwbXMsXG4gICAgICAgIG9wYWNpdHkgICAxMDBtcyAgIDBtcztcbiAgICAgIG9wYWNpdHk6IDA7XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IGJvdHRvbSBzcGFjaW5nIGlmIHRoZXJlIGFyZSBubyB0YWJzXG4gICAgLm1kLWhlcm8tLWV4cGFuZCAmIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IHB4MnJlbSgyNHB4KTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBBcHBsaWNhdGlvbiBmb290ZXJcbi5tZC1mb290ZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuXG4gIC8vIEhpZGUgZm9yIHByaW50XG4gIEBtZWRpYSBwcmludCB7XG4gICAgZGlzcGxheTogbm9uZTtcbiAgfVxufVxuXG4vLyBOYXZpZ2F0aW9uIHdpdGhpbiBmb290ZXJcbi5tZC1mb290ZXItbmF2IHtcblxuICAvLyBTZXQgc3BhY2luZ1xuICAmX19pbm5lciB7XG4gICAgcGFkZGluZzogcHgycmVtKDRweCk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyBMaW5rcyB0byBwcmV2aW91cyBhbmQgbmV4dCBwYWdlXG4gICZfX2xpbmsge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgcGFkZGluZy10b3A6IHB4MnJlbSgyOHB4KTtcbiAgICBwYWRkaW5nLWJvdHRvbTogcHgycmVtKDhweCk7XG4gICAgdHJhbnNpdGlvbjogb3BhY2l0eSAyNTBtcztcblxuICAgIC8vIFt0YWJsZXQgK106IFNldCBwcm9wb3J0aW9uYWwgd2lkdGhcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQpIHtcbiAgICAgIHdpZHRoOiA1MCU7XG4gICAgfVxuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlcmVkIGxpbmtzXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIG9wYWNpdHk6IDAuNztcbiAgICB9XG5cbiAgICAvLyBMaW5rIHRvIHByZXZpb3VzIHBhZ2VcbiAgICAmLS1wcmV2IHtcbiAgICAgIHdpZHRoOiAyNSU7XG4gICAgICBmbG9hdDogbGVmdDtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgZmxvYXQ6IHJpZ2h0O1xuXG4gICAgICAgIC8vIEZsaXAgaWNvbiB2ZXJ0aWNhbGx5XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRpdGxlXG4gICAgICAubWQtZm9vdGVyLW5hdl9fdGl0bGUge1xuXG4gICAgICAgIC8vIFttb2JpbGUgLV06IEhpZGUgdGl0bGUgZm9yIHByZXZpb3VzIHBhZ2VcbiAgICAgICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBMaW5rIHRvIG5leHQgcGFnZVxuICAgICYtLW5leHQge1xuICAgICAgd2lkdGg6IDc1JTtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBmbG9hdDogbGVmdDtcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcblxuICAgICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgICBzdmcge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpbmsgdGl0bGUgLSBzZXQgbGluZSBoZWlnaHQgdG8gbWF0Y2ggaWNvbiBmb3IgY29ycmVjdCBhbGlnbm1lbnRcbiAgJl9fdGl0bGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBmbGV4LWdyb3c6IDE7XG4gICAgbWF4LXdpZHRoOiBjYWxjKDEwMCUgLSAje3B4MnJlbSg0OHB4KX0pO1xuICAgIHBhZGRpbmc6IDAgcHgycmVtKDIwcHgpO1xuICAgIGZvbnQtc2l6ZTogcHgycmVtKDE4cHgpO1xuICAgIGxpbmUtaGVpZ2h0OiBweDJyZW0oNDhweCk7XG4gIH1cblxuICAvLyBMaW5rIGJ1dHRvblxuICAmX19idXR0b24ge1xuICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG4gICAgcGFkZGluZzogcHgycmVtKDhweCk7XG4gIH1cblxuICAvLyBMaW5rIGRpcmVjdGlvblxuICAmX19kaXJlY3Rpb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICByaWdodDogMDtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbi10b3A6IHB4MnJlbSgtMjBweCk7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMjBweCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgICBmb250LXNpemU6IHB4MnJlbSgxNXB4KTtcbiAgfVxufVxuXG4vLyBOb24tbmF2aWdhdGlvbmFsIGluZm9ybWF0aW9uXG4ubWQtZm9vdGVyLW1ldGEge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcblxuICAvLyBTZXQgc3BhY2luZ1xuICAmX19pbm5lciB7XG4gICAgcGFkZGluZzogcHgycmVtKDRweCk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gIH1cblxuICAvLyBVc2UgYSBkZWNlbnQgY29sb3IgZm9yIG5vbi1ob3ZlcmVkIGxpbmtzIGFuZCBlbnN1cmUgc3BlY2lmaWNpdHlcbiAgaHRtbCAmLm1kLXR5cGVzZXQgYSB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcblxuICAgIC8vIEZvY3VzZWQgb3IgaG92ZXJlZCBsaW5rXG4gICAgJjpmb2N1cyxcbiAgICAmOmhvdmVyIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICB9XG4gIH1cbn1cblxuLy8gQ29weXJpZ2h0IGFuZCB0aGVtZSBpbmZvcm1hdGlvblxuLm1kLWZvb3Rlci1jb3B5cmlnaHQge1xuICBtYXJnaW46IDAgcHgycmVtKDEycHgpO1xuICBwYWRkaW5nOiBweDJyZW0oOHB4KSAwO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlcik7XG4gIGZvbnQtc2l6ZTogbXMoLTEpO1xuXG4gIC8vIFt0YWJsZXQgcG9ydHJhaXQgK106IFNob3cgbmV4dCB0byBzb2NpYWwgbWVkaWEgbGlua3NcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgbWF4LXdpZHRoOiA3NSU7XG4gICAgZmxvYXQ6IGxlZnQ7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICB9XG4gIH1cblxuICAvLyBIaWdobGlnaHQgY29weXJpZ2h0IGluZm9ybWF0aW9uXG4gICZfX2hpZ2hsaWdodCB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3ItLWxpZ2h0KTtcbiAgfVxufVxuXG4vLyBTb2NpYWwgbWVkaWEgbGlua3Ncbi5tZC1mb290ZXItc29jaWFsIHtcbiAgbWFyZ2luOiAwIHB4MnJlbSg4cHgpO1xuICBwYWRkaW5nOiBweDJyZW0oNHB4KSAwIHB4MnJlbSgxMnB4KTtcblxuICAvLyBbdGFibGV0IHBvcnRyYWl0ICtdOiBTaG93IG5leHQgdG8gY29weXJpZ2h0IGluZm9ybWF0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuICAgIHBhZGRpbmc6IHB4MnJlbSgxMnB4KSAwO1xuICAgIGZsb2F0OiByaWdodDtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgfVxuICB9XG5cbiAgLy8gTGluayB3aXRoIGljb25cbiAgJl9fbGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiBweDJyZW0oMzJweCk7XG4gICAgaGVpZ2h0OiBweDJyZW0oMzJweCk7XG4gICAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXM7XG4gICAgdGV4dC1hbGlnbjogY2VudGVyO1xuXG4gICAgLy8gQWRqdXN0IGxpbmUtaGVpZ2h0IHRvIG1hdGNoIGhlaWdodCBmb3IgY29ycmVjdCBhbGlnbm1lbnRcbiAgICAmOjpiZWZvcmUge1xuICAgICAgbGluZS1oZWlnaHQ6IDEuOTtcbiAgICB9XG5cbiAgICAvLyBTb2NpYWwgaWNvblxuICAgIHN2ZyB7XG4gICAgICB3aWR0aDogcHgycmVtKDE2cHgpO1xuICAgICAgdmVydGljYWwtYWxpZ246IC0yNSU7XG4gICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gTmF2aWdhdGlvbiBjb250YWluZXJcbi5tZC1uYXYge1xuICBmb250LXNpemU6IHB4MnJlbSgxNHB4KTtcbiAgbGluZS1oZWlnaHQ6IDEuMztcblxuICAvLyBMaXN0IHRpdGxlXG4gICZfX3RpdGxlIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgxMnB4KTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBIaWRlIGJ1dHRvbnMgYnkgZGVmYXVsdFxuICAgIC5tZC1uYXZfX2J1dHRvbiB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuXG4gICAgICAvLyBTdHJldGNoIGltYWdlc1xuICAgICAgaW1nIHtcbiAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIGhlaWdodDogYXV0bztcbiAgICAgIH1cblxuICAgICAgLy8gTG9nb1xuICAgICAgJi5tZC1sb2dvIHN2ZyB7XG5cbiAgICAgICAgLy8gSW1hZ2Ugb3IgaWNvblxuICAgICAgICBpbWcsXG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgd2lkdGg6IHB4MnJlbSgyNHB4KTtcbiAgICAgICAgICBoZWlnaHQ6IHB4MnJlbSgyNHB4KTtcbiAgICAgICAgICBmaWxsOiBjdXJyZW50Q29sb3I7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaXN0IG9mIGl0ZW1zXG4gICZfX2xpc3Qge1xuICAgIG1hcmdpbjogMDtcbiAgICBwYWRkaW5nOiAwO1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG4gIH1cblxuICAvLyBMaXN0IGl0ZW1cbiAgJl9faXRlbSB7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTJweCk7XG5cbiAgICAvLyBBZGQgYm90dG9tIHNwYWNpbmcgdG8gbGFzdCBpdGVtXG4gICAgJjpsYXN0LWNoaWxkIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiBweDJyZW0oMTJweCk7XG4gICAgfVxuXG4gICAgLy8gMm5kKyBsZXZlbCBpdGVtc1xuICAgICYgJiB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiAwO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTJweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogMDtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIGJvdHRvbSBzcGFjaW5nIGZvciBuZXN0ZWQgaXRlbXNcbiAgICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIExpbmsgaW5zaWRlIGl0ZW1cbiAgJl9fbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luLXRvcDogMC42MjVlbTtcbiAgICB0cmFuc2l0aW9uOiBjb2xvciAxMjVtcztcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG5cbiAgICAvLyBIaWRlIGxpbmsgdG8gdGFibGUgb2YgY29udGVudHMgYnkgZGVmYXVsdCAtIHRoaXMgd2lsbCBvbmx5IG1hdGNoIHRoZVxuICAgIC8vIHRhYmxlIG9mIGNvbnRlbnRzIGluc2lkZSB0aGUgZHJhd2VyIGJlbG93IGFuZCBpbmNsdWRpbmcgdGFibGV0IHBvcnRyYWl0XG4gICAgaHRtbCAmW2Zvcj1cIl9fdG9jXCJdIHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIC8vIEhpZGUgdGFibGUgb2YgY29udGVudHMgYnkgZGVmYXVsdFxuICAgICAgJiB+IC5tZC1uYXYge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEJsdXJyZWQgbGlua1xuICAgICZbZGF0YS1tZC1zdGF0ZT1cImJsdXJcIl0ge1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgICB9XG5cbiAgICAvLyBBY3RpdmUgbGlua1xuICAgIC5tZC1uYXZfX2l0ZW0gJi0tYWN0aXZlIHtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWZnLWNvbG9yKTtcbiAgICB9XG5cbiAgICAvLyBSZXNldCBhY3RpdmUgY29sb3IgZm9yIG5lc3RlZCBsaXN0IHRpdGxlc1xuICAgIC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCA+ICYge1xuICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgfVxuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlcmVkIGxpbmtcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gICAgfVxuICB9XG5cbiAgLy8gUmVwb3NpdG9yeSBjb250YWluaW5nIHNvdXJjZVxuICAmX19zb3VyY2Uge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBbdGFibGV0IC1dOiBMYXllcmVkIG5hdmlnYXRpb25cbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCkge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuXG4gICAgLy8gU3RyZXRjaCBwcmltYXJ5IG5hdmlnYXRpb24gdG8gZHJhd2VyXG4gICAgJi0tcHJpbWFyeSxcbiAgICAmLS1wcmltYXJ5IC5tZC1uYXYge1xuICAgICAgZGlzcGxheTogZmxleDtcbiAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgIHRvcDogMDtcbiAgICAgIHJpZ2h0OiAwO1xuICAgICAgbGVmdDogMDtcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB6LWluZGV4OiAxO1xuICAgIH1cblxuICAgIC8vIEFkanVzdCBzdHlsZXMgZm9yIHByaW1hcnkgbmF2aWdhdGlvblxuICAgICYtLXByaW1hcnkge1xuXG4gICAgICAvLyBMaXN0IHRpdGxlIGFuZCBpdGVtXG4gICAgICAubWQtbmF2X190aXRsZSxcbiAgICAgIC5tZC1uYXZfX2l0ZW0ge1xuICAgICAgICBmb250LXNpemU6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNTtcbiAgICAgIH1cblxuICAgICAgLy8gTGlzdCB0aXRsZVxuICAgICAgLm1kLW5hdl9fdGl0bGUge1xuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgIGhlaWdodDogcHgycmVtKDExMnB4KTtcbiAgICAgICAgcGFkZGluZzogcHgycmVtKDYwcHgpIHB4MnJlbSgxNnB4KSBweDJyZW0oNHB4KTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgICAgICBmb250LXdlaWdodDogNDAwO1xuICAgICAgICBsaW5lLWhlaWdodDogcHgycmVtKDQ4cHgpO1xuICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgICAgLy8gSWNvblxuICAgICAgICAubWQtbmF2X19pY29uIHtcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgdG9wOiBweDJyZW0oOHB4KTtcbiAgICAgICAgICBsZWZ0OiBweDJyZW0oOHB4KTtcbiAgICAgICAgICB3aWR0aDogcHgycmVtKDI0cHgpO1xuICAgICAgICAgIGhlaWdodDogcHgycmVtKDI0cHgpO1xuICAgICAgICAgIG1hcmdpbjogcHgycmVtKDRweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgIHJpZ2h0OiBweDJyZW0oOHB4KTtcbiAgICAgICAgICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gTWFpbiBsaXN0c1xuICAgICAgICB+IC5tZC1uYXZfX2xpc3Qge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgICAgICAgIGJveC1zaGFkb3c6XG4gICAgICAgICAgICBpbnNldCAwIHB4MnJlbSgxcHgpIDAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgICAgIG92ZXJmbG93LXk6IGF1dG87XG4gICAgICAgICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG5cbiAgICAgICAgICAvLyBSZW1vdmUgYm9yZGVyIGZvciBmaXJzdCBsaXN0IGl0ZW1cbiAgICAgICAgICA+IC5tZC1uYXZfX2l0ZW06Zmlyc3QtY2hpbGQge1xuICAgICAgICAgICAgYm9yZGVyLXRvcDogMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTaXRlIHRpdGxlIGluIG1haW4gbmF2aWdhdGlvblxuICAgICAgICAmW2Zvcj1cIl9fZHJhd2VyXCJdIHtcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gICAgICAgICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuXG4gICAgICAgICAgLy8gU2l0ZSBsb2dvXG4gICAgICAgICAgLm1kLW5hdl9fYnV0dG9uIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgICAgICAgdG9wOiBweDJyZW0oNHB4KTtcbiAgICAgICAgICAgIGxlZnQ6IHB4MnJlbSg0cHgpO1xuICAgICAgICAgICAgd2lkdGg6IHB4MnJlbSg2NHB4KTtcbiAgICAgICAgICAgIGhlaWdodDogcHgycmVtKDY0cHgpO1xuICAgICAgICAgICAgbWFyZ2luOiBweDJyZW0oNHB4KTtcbiAgICAgICAgICAgIHBhZGRpbmc6IHB4MnJlbSg4cHgpO1xuICAgICAgICAgICAgZm9udC1zaXplOiBweDJyZW0oNDhweCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIGh0bWwgW2Rpcj1cInJ0bFwiXSAmIC5tZC1uYXZfX3RpdGxlIHtcblxuICAgICAgICAvLyBTaXRlIHRpdGxlIGluIG1haW4gbmF2aWdhdGlvblxuICAgICAgICAmW2Zvcj1cIl9fZHJhd2VyXCJdIC5tZC1uYXZfX2J1dHRvbiB7XG4gICAgICAgICAgcmlnaHQ6IHB4MnJlbSg0cHgpO1xuICAgICAgICAgIGxlZnQ6IGluaXRpYWw7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGlzdCBvZiBpdGVtc1xuICAgICAgLm1kLW5hdl9fbGlzdCB7XG4gICAgICAgIGZsZXg6IDE7XG4gICAgICB9XG5cbiAgICAgIC8vIExpc3QgaXRlbVxuICAgICAgLm1kLW5hdl9faXRlbSB7XG4gICAgICAgIHBhZGRpbmc6IDA7XG4gICAgICAgIGJvcmRlci10b3A6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgcGFkZGluZzogMDtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEluY3JlYXNlIHNwYWNpbmcgdG8gYWNjb3VudCBmb3IgaWNvblxuICAgICAgICAmLS1uZXN0ZWQgPiAubWQtbmF2X19saW5rIHtcbiAgICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDhweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQ4cHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEFjdGl2ZSBwYXJlbnQgaXRlbVxuICAgICAgICAmLS1hY3RpdmUgPiAubWQtbmF2X19saW5rIHtcbiAgICAgICAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gTGluayBpbnNpZGUgaXRlbVxuICAgICAgLm1kLW5hdl9fbGluayB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgICAgcGFkZGluZzogcHgycmVtKDEycHgpIHB4MnJlbSgxNnB4KTtcblxuICAgICAgICAvLyBJY29uXG4gICAgICAgIC5tZC1uYXZfX2ljb24ge1xuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICAgICAgICB0b3A6IDUwJTtcbiAgICAgICAgICByaWdodDogcHgycmVtKDEycHgpO1xuICAgICAgICAgIG1hcmdpbi10b3A6IHB4MnJlbSgtMTJweCk7XG4gICAgICAgICAgY29sb3I6IGluaGVyaXQ7XG4gICAgICAgICAgZm9udC1zaXplOiBweDJyZW0oMjRweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgICAgbGVmdDogcHgycmVtKDEycHgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBJY29uXG4gICAgICAubWQtbmF2X19pY29uIHtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG5cbiAgICAgICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgICAgIHN2ZyB7XG4gICAgICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKC0xKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVGFibGUgb2YgY29udGVudHMgaW5zaWRlIG5hdmlnYXRpb25cbiAgICAgIC5tZC1uYXYtLXNlY29uZGFyeSB7XG5cbiAgICAgICAgLy8gU2V0IGxpbmtzIHRvIHN0YXRpYyB0byBhdm9pZCB1bm5lY2Vzc2FyeSBsYXllcmluZ1xuICAgICAgICAubWQtbmF2X19saW5rIHtcbiAgICAgICAgICBwb3NpdGlvbjogc3RhdGljO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2V0IG5lc3RlZCBuYXZpZ2F0aW9uIGZvciB0YWJsZSBvZiBjb250ZW50cyB0byBzdGF0aWNcbiAgICAgICAgLm1kLW5hdiB7XG4gICAgICAgICAgcG9zaXRpb246IHN0YXRpYztcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcblxuICAgICAgICAgIC8vIDNyZCBsZXZlbCBsaW5rXG4gICAgICAgICAgLm1kLW5hdl9fbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSgyOHB4KTtcblxuICAgICAgICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDI4cHgpO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gNHRoIGxldmVsIGxpbmtcbiAgICAgICAgICAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oNDBweCk7XG5cbiAgICAgICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSg0MHB4KTtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDV0aCBsZXZlbCBsaW5rXG4gICAgICAgICAgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXZfX2xpbmsge1xuICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oNTJweCk7XG5cbiAgICAgICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSg1MnB4KTtcbiAgICAgICAgICAgICAgcGFkZGluZy1sZWZ0OiBpbml0aWFsO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIC8vIDZ0aCBsZXZlbCBsaW5rXG4gICAgICAgICAgLm1kLW5hdiAubWQtbmF2IC5tZC1uYXYgLm1kLW5hdl9fbGluayB7XG4gICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSg2NHB4KTtcblxuICAgICAgICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDY0cHgpO1xuICAgICAgICAgICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSGlkZSBuZXN0ZWQgbmF2aWdhdGlvbiBieSBkZWZhdWx0XG4gICAgLm1kLW5hdl9fdG9nZ2xlIH4gJiB7XG4gICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKDEwMCUpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgdHJhbnNmb3JtIDI1MG1zIGN1YmljLWJlemllcigwLjgsIDAsIDAuNiwgMSksXG4gICAgICAgIG9wYWNpdHkgICAxMjVtcyA1MG1zO1xuICAgICAgb3BhY2l0eTogMDtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC0xMDAlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBFeHBhbmQgbmVzdGVkIG5hdmlnYXRpb24sIGlmIHRvZ2dsZSBpcyBjaGVja2VkXG4gICAgLm1kLW5hdl9fdG9nZ2xlOmNoZWNrZWQgfiAmIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIHRyYW5zZm9ybSAyNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgICBvcGFjaXR5ICAgMTI1bXMgMTI1bXM7XG4gICAgICBvcGFjaXR5OiAxO1xuICAgIH1cbiAgfVxuXG4gIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IFNob3cgdGFibGUgb2YgY29udGVudHMgaW4gZHJhd2VyXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcblxuICAgIC8vIFNob3cgbGluayB0byB0YWJsZSBvZiBjb250ZW50cyAtIGhpZ2hlciBzcGVjaWZpY2l0eSBpcyBuZWNlc3NhcnkgdG9cbiAgICAvLyBkaXNwbGF5IHRoZSB0YWJsZSBvZiBjb250ZW50cyBpbnNpZGUgdGhlIGRyYXdlclxuICAgIGh0bWwgJl9fbGlua1tmb3I9XCJfX3RvY1wiXSB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSg0OHB4KTtcblxuICAgICAgLy8gSGlkZSBsaW5rIHRvIGN1cnJlbnQgaXRlbVxuICAgICAgKyAubWQtbmF2X19saW5rIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cblxuICAgICAgLy8gU2hvdyB0YWJsZSBvZiBjb250ZW50c1xuICAgICAgJiB+IC5tZC1uYXYge1xuICAgICAgICBkaXNwbGF5OiBmbGV4O1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBodG1sIFtkaXI9XCJydGxcIl0gJl9fbGluayB7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTZweCk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSg0OHB4KTtcbiAgICB9XG5cbiAgICAvLyBSZXBvc2l0b3J5IGNvbnRhaW5pbmcgc291cmNlXG4gICAgJl9fc291cmNlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcGFkZGluZzogMCBweDJyZW0oNHB4KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcmspO1xuICAgICAgY29sb3I6IHZhcigtLW1kLXByaW1hcnktYmctY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBUcmVlLWxpa2UgbmF2aWdhdGlvblxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG5cbiAgICAvLyBMaXN0IHRpdGxlXG4gICAgJi0tc2Vjb25kYXJ5IC5tZC1uYXZfX3RpdGxlIHtcblxuICAgICAgLy8gU25hcCB0byB0YWJsZSBvZiBjb250ZW50cyB0aXRsZVxuICAgICAgJltmb3I9XCJfX3RvY1wiXSB7XG4gICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcbiAgICAgIH1cblxuICAgICAgLy8gSGlkZSBpY29uXG4gICAgICAubWQtbmF2X19pY29uIHtcbiAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBbc2NyZWVuICtdOiBUcmVlLWxpa2UgbmF2aWdhdGlvblxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcbiAgICB0cmFuc2l0aW9uOiBtYXgtaGVpZ2h0IDI1MG1zIGN1YmljLWJlemllcigwLjg2LCAwLCAwLjA3LCAxKTtcblxuICAgIC8vIExpc3QgdGl0bGVcbiAgICAmLS1wcmltYXJ5IC5tZC1uYXZfX3RpdGxlIHtcblxuICAgICAgLy8gU25hcCB0byBzaXRlIHRpdGxlXG4gICAgICAmW2Zvcj1cIl9fZHJhd2VyXCJdIHtcbiAgICAgICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuICAgICAgfVxuXG4gICAgICAvLyBIaWRlIGljb25cbiAgICAgIC5tZC1uYXZfX2ljb24ge1xuICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhpZGUgbmVzdGVkIG5hdmlnYXRpb24gYnkgZGVmYXVsdFxuICAgIC5tZC1uYXZfX3RvZ2dsZSB+ICYge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBTaG93IG5lc3RlZCBuYXZpZ2F0aW9uLCBpZiB0b2dnbGUgaXMgY2hlY2tlZFxuICAgIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gJiB7XG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICB9XG5cbiAgICAvLyBIaWRlIHRpdGxlcyBmb3IgbmVzdGVkIG5hdmlnYXRpb25cbiAgICAmX19pdGVtLS1uZXN0ZWQgPiAubWQtbmF2ID4gJl9fdGl0bGUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBJY29uXG4gICAgJl9faWNvbiB7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSgxOHB4KTtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRyYW5zaXRpb246IHRyYW5zZm9ybSAyNTBtcztcblxuICAgICAgLy8gSW5saW5lIGljb24gYW5kIGFkanVzdCB0byBtYXRjaCBmb250IHNpemVcbiAgICAgIHN2ZyB7XG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICAgICAgd2lkdGg6IHB4MnJlbSgxOHB4KTtcbiAgICAgICAgaGVpZ2h0OiBweDJyZW0oMThweCk7XG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBweDJyZW0oLTJweCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFJvdGF0ZSBpY29uIGZvciBleHBhbmRlZCBsaXN0c1xuICAgICAgLm1kLW5hdl9faXRlbS0tbmVzdGVkIC5tZC1uYXZfX3RvZ2dsZTpjaGVja2VkIH4gLm1kLW5hdl9fbGluayAmIHtcbiAgICAgICAgdHJhbnNmb3JtOiByb3RhdGVaKDkwZGVnKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBWYXJpYWJsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQWN0aXZlICh0b2dnbGVkKSBzZWFyY2hcbiRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZDpcbiAgXCJbZGF0YS1tZC10b2dnbGU9XFxcInNlYXJjaFxcXCJdOmNoZWNrZWQgfiAubWQtaGVhZGVyXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNlYXJjaCBjb250YWluZXJcbi5tZC1zZWFyY2gge1xuICBwb3NpdGlvbjogcmVsYXRpdmU7XG5cbiAgLy8gSGlkZSBzZWFyY2gsIGlmIEphdmFTY3JpcHQgaXMgbm90IGF2YWlsYWJsZS5cbiAgLm5vLWpzICYge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgcGFkZGluZzogcHgycmVtKDRweCkgMDtcbiAgfVxuXG4gIC8vIFNlYXJjaCBtb2RhbCBvdmVybGF5XG4gICZfX292ZXJsYXkge1xuICAgIG9wYWNpdHk6IDA7XG4gICAgei1pbmRleDogMTtcblxuICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICB0b3A6IHB4MnJlbSg0cHgpO1xuICAgICAgbGVmdDogcHgycmVtKC00NHB4KTtcbiAgICAgIHdpZHRoOiBweDJyZW0oNDBweCk7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSg0MHB4KTtcbiAgICAgIHRyYW5zZm9ybS1vcmlnaW46IGNlbnRlcjtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIHRyYW5zZm9ybSAzMDBtcyAxMDBtcyxcbiAgICAgICAgb3BhY2l0eSAgIDIwMG1zIDIwMG1zO1xuICAgICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDIwcHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiBweDJyZW0oLTQ0cHgpO1xuICAgICAgICBsZWZ0OiBpbml0aWFsO1xuICAgICAgfVxuXG4gICAgICAvLyBFeHBhbmRlZCBvdmVybGF5XG4gICAgICAjeyRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZH0gJiB7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgdHJhbnNmb3JtIDQwMG1zLFxuICAgICAgICAgIG9wYWNpdHkgICAxMDBtcztcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBTZXQgc2NhbGUgZmFjdG9yc1xuICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAmIHtcblxuICAgICAgLy8gW21vYmlsZSBwb3J0cmFpdCAtXTogU2NhbGUgdXAgNDUgdGltZXNcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUgcG9ydHJhaXQpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSg0NSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFttb2JpbGUgbGFuZHNjYXBlXTogU2NhbGUgdXAgNjAgdGltZXNcbiAgICAgIEBpbmNsdWRlIGJyZWFrLWF0LWRldmljZShtb2JpbGUgbGFuZHNjYXBlKSB7XG4gICAgICAgIHRyYW5zZm9ybTogc2NhbGUoNjApO1xuICAgICAgfVxuXG4gICAgICAvLyBbdGFibGV0IHBvcnRyYWl0XTogU2NhbGUgdXAgNzUgdGltZXNcbiAgICAgIEBpbmNsdWRlIGJyZWFrLWF0LWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZSg3NSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IE92ZXJsYXkgZm9yIGJldHRlciBmb2N1cyBvbiBzZWFyY2hcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAwO1xuICAgICAgd2lkdGg6IDA7XG4gICAgICBoZWlnaHQ6IDA7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB3aWR0aCAgICAgMG1zIDI1MG1zLFxuICAgICAgICBoZWlnaHQgICAgMG1zIDI1MG1zLFxuICAgICAgICBvcGFjaXR5IDI1MG1zO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgICAgY3Vyc29yOiBwb2ludGVyO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cblxuICAgICAgLy8gRXhwYW5kZWQgb3ZlcmxheVxuICAgICAgI3skbWQtdG9nZ2xlX19zZWFyY2gtLWNoZWNrZWR9ICYge1xuICAgICAgICB3aWR0aDogMTAwJTtcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xuICAgICAgICB0cmFuc2l0aW9uOlxuICAgICAgICAgIHdpZHRoICAgICAwbXMsXG4gICAgICAgICAgaGVpZ2h0ICAgIDBtcyxcbiAgICAgICAgICBvcGFjaXR5IDI1MG1zO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFNlYXJjaCBtb2RhbCB3cmFwcGVyXG4gICZfX2lubmVyIHtcbiAgICAvLyBIYWNrOiByZWR1Y2Ugaml0dGVyXG4gICAgYmFja2ZhY2UtdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gICAgLy8gW3RhYmxldCBwb3J0cmFpdCAtXTogUHV0IHNlYXJjaCBtb2RhbCBvZmYtY2FudmFzIGJ5IGRlZmF1bHRcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgICB0b3A6IDA7XG4gICAgICBsZWZ0OiAxMDAlO1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoNSUpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgcmlnaHQgICAgICAgMG1zIDMwMG1zLFxuICAgICAgICBsZWZ0ICAgICAgICAwbXMgMzAwbXMsXG4gICAgICAgIHRyYW5zZm9ybSAxNTBtcyAxNTBtcyBjdWJpYy1iZXppZXIoMC40LCAwLCAwLjIsIDEpLFxuICAgICAgICBvcGFjaXR5ICAgMTUwbXMgMTUwbXM7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgei1pbmRleDogMjtcblxuICAgICAgLy8gQWN0aXZlIHNlYXJjaCBtb2RhbFxuICAgICAgI3skbWQtdG9nZ2xlX19zZWFyY2gtLWNoZWNrZWR9ICYge1xuICAgICAgICBsZWZ0OiAwO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICAgIHRyYW5zaXRpb246XG4gICAgICAgICAgcmlnaHQgICAgICAgMG1zICAgMG1zLFxuICAgICAgICAgIGxlZnQgICAgICAgIDBtcyAgIDBtcyxcbiAgICAgICAgICB0cmFuc2Zvcm0gMTUwbXMgMTUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLFxuICAgICAgICAgIG9wYWNpdHkgICAxNTBtcyAxNTBtcztcbiAgICAgICAgb3BhY2l0eTogMTtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBodG1sIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiAxMDAlO1xuICAgICAgICBsZWZ0OiBpbml0aWFsO1xuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIHdpZHRoOiBweDJyZW0oMjM0cHgpO1xuICAgICAgcGFkZGluZzogcHgycmVtKDJweCkgMDtcbiAgICAgIGZsb2F0OiByaWdodDtcbiAgICAgIHRyYW5zaXRpb246IHdpZHRoIDI1MG1zIGN1YmljLWJlemllcigwLjEsIDAuNywgMC4xLCAxKTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2V0IG1heGltdW0gd2lkdGhcbiAgICAjeyRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZH0gJiB7XG5cbiAgICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlXTogRG8gbm90IG92ZXJsYXkgdGl0bGVcbiAgICAgIEBpbmNsdWRlIGJyZWFrLWF0LWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICAgIHdpZHRoOiBweDJyZW0oNDY4cHgpO1xuICAgICAgfVxuXG4gICAgICAvLyBbc2NyZWVuICtdOiBNYXRjaCBjb250ZW50IHdpZHRoXG4gICAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcbiAgICAgICAgd2lkdGg6IHB4MnJlbSg2ODhweCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2VhcmNoIGZvcm1cbiAgJl9fZm9ybSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IEhlYWRlci1lbWJlZGRlZCBzZWFyY2hcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBTZWFyY2ggaW5wdXRcbiAgJl9faW5wdXQge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSg0NHB4KSAwIHB4MnJlbSg3MnB4KTtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB6LWluZGV4OiAyO1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBwYWRkaW5nOiAwIHB4MnJlbSg3MnB4KSAwIHB4MnJlbSg0NHB4KTtcbiAgICB9XG5cbiAgICAvLyBUcmFuc2l0aW9uIG9uIHBsYWNlaG9sZGVyXG4gICAgJjo6cGxhY2Vob2xkZXIge1xuICAgICAgdHJhbnNpdGlvbjogY29sb3IgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICAgIH1cblxuICAgIC8vIFBsYWNlaG9sZGVyIGFuZCBpY29uIGNvbG9yIGluIGFjdGl2ZSBzdGF0ZVxuICAgIH4gLm1kLXNlYXJjaF9faWNvbixcbiAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSB0aGUgXCJ4XCIgcmVuZGVyZWQgYnkgSW50ZXJuZXQgRXhwbG9yZXJcbiAgICAmOjotbXMtY2xlYXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBbdGFibGV0IHBvcnRyYWl0IC1dOiBGdWxsLXNjcmVlbiBzZWFyY2ggYmFyXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSg0OHB4KTtcbiAgICAgIGZvbnQtc2l6ZTogcHgycmVtKDE4cHgpO1xuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBIZWFkZXItZW1iZWRkZWQgc2VhcmNoXG4gICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSgzNnB4KTtcbiAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQ0cHgpO1xuICAgICAgdHJhbnNpdGlvbjpcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvciAyNTBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICAgIGNvbG9yICAgICAgICAgICAgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpO1xuICAgICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcbiAgICAgIGNvbG9yOiBpbmhlcml0O1xuICAgICAgZm9udC1zaXplOiBtcygwKTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDQ0cHgpO1xuICAgICAgfVxuXG4gICAgICAvLyBJY29uIGNvbG9yXG4gICAgICArIC5tZC1zZWFyY2hfX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1iZy1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIFBsYWNlaG9sZGVyIGNvbG9yXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhvdmVyZWQgc2VhcmNoIGZpZWxkXG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgfVxuXG4gICAgICAvLyBTZXQgbGlnaHQgYmFja2dyb3VuZCBvbiBhY3RpdmUgc2VhcmNoIGZpZWxkXG4gICAgICAjeyRtZC10b2dnbGVfX3NlYXJjaC0tY2hlY2tlZH0gJiB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6IHB4MnJlbSgycHgpIHB4MnJlbSgycHgpIDAgMDtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgICAgICAgdGV4dC1vdmVyZmxvdzogY2xpcDtcblxuICAgICAgICAvLyBJY29uIGFuZCBwbGFjZWhvbGRlciBjb2xvciBpbiBhY3RpdmUgc3RhdGVcbiAgICAgICAgKyAubWQtc2VhcmNoX19pY29uLFxuICAgICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEljb25cbiAgJl9faWNvbiB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIHdpZHRoOiBweDJyZW0oMjRweCk7XG4gICAgaGVpZ2h0OiBweDJyZW0oMjRweCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIGNvbG9yICAgMjUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLFxuICAgICAgb3BhY2l0eSAyNTBtcztcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG4gICAgei1pbmRleDogMjtcblxuICAgIC8vIEhvdmVyZWQgaWNvblxuICAgICY6aG92ZXIge1xuICAgICAgb3BhY2l0eTogMC43O1xuICAgIH1cblxuICAgIC8vIFNlYXJjaCBpY29uXG4gICAgJltmb3I9XCJfX3NlYXJjaFwiXSB7XG4gICAgICB0b3A6IHB4MnJlbSg2cHgpO1xuICAgICAgbGVmdDogcHgycmVtKDEwcHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICByaWdodDogcHgycmVtKDEwcHgpO1xuICAgICAgICBsZWZ0OiBpbml0aWFsO1xuXG4gICAgICAgIC8vIEZsaXAgaWNvbiB2ZXJ0aWNhbGx5XG4gICAgICAgIHN2ZyB7XG4gICAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcbiAgICAgICAgdG9wOiBweDJyZW0oMTJweCk7XG4gICAgICAgIGxlZnQ6IHB4MnJlbSgxNnB4KTtcblxuICAgICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgICAgcmlnaHQ6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgICBsZWZ0OiBpbml0aWFsO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGlkZSB0aGUgbWFnbmlmeWluZyBnbGFzcyAoMXN0IGljb24pXG4gICAgICAgIHN2ZzpmaXJzdC1jaGlsZCB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICAgICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuXG4gICAgICAgIC8vIEhpZGUgdGhlIGFycm93ICgybmQgaWNvbilcbiAgICAgICAgc3ZnOmxhc3QtY2hpbGQge1xuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBSZXNldCBidXR0b25cbiAgICAmW3R5cGU9XCJyZXNldFwiXSB7XG4gICAgICB0b3A6IHB4MnJlbSg2cHgpO1xuICAgICAgcmlnaHQ6IHB4MnJlbSgxMHB4KTtcbiAgICAgIHRyYW5zZm9ybTogc2NhbGUoMC43NSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gMTUwbXMgY3ViaWMtYmV6aWVyKDAuMSwgMC43LCAwLjEsIDEpLFxuICAgICAgICBvcGFjaXR5ICAgMTUwbXM7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICBsZWZ0OiBweDJyZW0oMTBweCk7XG4gICAgICB9XG5cbiAgICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcbiAgICAgICAgdG9wOiBweDJyZW0oMTJweCk7XG4gICAgICAgIHJpZ2h0OiBweDJyZW0oMTZweCk7XG5cbiAgICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICAgIHJpZ2h0OiBpbml0aWFsO1xuICAgICAgICAgIGxlZnQ6IHB4MnJlbSgxNnB4KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBTaG93IHJlc2V0IGJ1dHRvbiBpZiBzZWFyY2ggaXMgYWN0aXZlIGFuZCBpbnB1dCBub24tZW1wdHlcbiAgICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAubWQtc2VhcmNoX19pbnB1dDp2YWxpZCB+ICYge1xuICAgICAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcblxuICAgICAgICAvLyBIb3ZlcmVkIGljb25cbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgb3BhY2l0eTogMC43O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2VhcmNoIG91dHB1dCBjb250YWluZXJcbiAgJl9fb3V0cHV0IHtcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgYm9yZGVyLXJhZGl1czogMCAwIHB4MnJlbSgycHgpIHB4MnJlbSgycHgpO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgei1pbmRleDogMTtcblxuICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEZ1bGwtc2NyZWVuIHNlYXJjaCBiYXJcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UodGFibGV0IHBvcnRyYWl0KSB7XG4gICAgICB0b3A6IHB4MnJlbSg0OHB4KTtcbiAgICAgIGJvdHRvbTogMDtcbiAgICB9XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHRvcDogcHgycmVtKDM4cHgpO1xuICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSA0MDBtcztcbiAgICAgIG9wYWNpdHk6IDA7XG5cbiAgICAgIC8vIFNob3cgc2VhcmNoIG91dHB1dCBpbiBhY3RpdmUgc3RhdGVcbiAgICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAmIHtcbiAgICAgICAgQGluY2x1ZGUgei1kZXB0aCg2KTtcblxuICAgICAgICBvcGFjaXR5OiAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFdyYXBwZXIgZm9yIHNjcm9sbGluZyBvbiBvdmVyZmxvd1xuICAmX19zY3JvbGx3cmFwIHtcbiAgICBoZWlnaHQ6IDEwMCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgYm94LXNoYWRvdzogaW5zZXQgMCBweDJyZW0oMXB4KSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG4gICAgc2Nyb2xsLXNuYXAtdHlwZTogeSBtYW5kYXRvcnk7XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuXG4gICAgLy8gTWl0aWdpYXRlIGV4Y2Vzc2l2ZSByZXBhaW50cyBvbiBub24tcmV0aW5hIGRldmljZXNcbiAgICBAbWVkaWEgKG1heC1yZXNvbHV0aW9uOiAxZHBweCkge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVaKDApO1xuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlXTogU2V0IGFic29sdXRlIHdpZHRoIHRvIG9taXQgdW5uZWNlc3NhcnkgcmVmbG93XG4gICAgQGluY2x1ZGUgYnJlYWstYXQtZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHdpZHRoOiBweDJyZW0oNDY4cHgpO1xuICAgIH1cblxuICAgIC8vIFtzY3JlZW4gK106IFNldCBhYnNvbHV0ZSB3aWR0aCB0byBvbWl0IHVubmVjZXNzYXJ5IHJlZmxvd1xuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHNjcmVlbikge1xuICAgICAgd2lkdGg6IHB4MnJlbSg2ODhweCk7XG4gICAgfVxuXG4gICAgLy8gW3RhYmxldCBsYW5kc2NhcGUgK106IExpbWl0IGhlaWdodCB0byB2aWV3cG9ydFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIG1heC1oZWlnaHQ6IDA7XG5cbiAgICAgIC8vIEV4cGFuZCBpbiBhY3RpdmUgc3RhdGVcbiAgICAgICN7JG1kLXRvZ2dsZV9fc2VhcmNoLS1jaGVja2VkfSAmIHtcbiAgICAgICAgbWF4LWhlaWdodDogNzV2aDtcbiAgICAgIH1cblxuICAgICAgLy8gT3ZlcnJpZGUgbmF0aXZlIHNjcm9sbGJhciBzdHlsZXNcbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyIHtcbiAgICAgICAgd2lkdGg6IHB4MnJlbSg0cHgpO1xuICAgICAgICBoZWlnaHQ6IHB4MnJlbSg0cHgpO1xuICAgICAgfVxuXG4gICAgICAvLyBTY3JvbGxiYXIgdGh1bWJcbiAgICAgICY6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG5cbiAgICAgICAgLy8gSG92ZXJlZCBzY3JvbGxiYXIgdGh1bWJcbiAgICAgICAgJjpob3ZlciB7XG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTZWFyY2ggcmVzdWx0XG4ubWQtc2VhcmNoLXJlc3VsdCB7XG4gIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgd29yZC1icmVhazogYnJlYWstd29yZDtcblxuICAvLyBTZWFyY2ggbWV0YWRhdGFcbiAgJl9fbWV0YSB7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTZweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC1zaXplOiBtcygtMSk7XG4gICAgbGluZS1oZWlnaHQ6IHB4MnJlbSgzNnB4KTtcbiAgICBzY3JvbGwtc25hcC1hbGlnbjogc3RhcnQ7XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSW5jcmVhc2UgbGVmdCBpbmRlbnRcbiAgICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSg0NHB4KTtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcGFkZGluZy1yaWdodDogcHgycmVtKDQ0cHgpO1xuICAgICAgICBwYWRkaW5nLWxlZnQ6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGlzdCBvZiBpdGVtc1xuICAmX19saXN0IHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBib3JkZXItdG9wOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgbGlzdC1zdHlsZTogbm9uZTtcbiAgfVxuXG4gIC8vIExpc3QgaXRlbVxuICAmX19pdGVtIHtcbiAgICBib3gtc2hhZG93OiAwIHB4MnJlbSgtMXB4KSAwIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgfVxuXG4gIC8vIExpbmsgaW5zaWRlIGl0ZW1cbiAgJl9fbGluayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcztcbiAgICBvdXRsaW5lOiAwO1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgc2Nyb2xsLXNuYXAtYWxpZ246IHN0YXJ0O1xuXG4gICAgLy8gRm9jdXNlZCBvciBob3ZlcmVkIGxpbmtcbiAgICAmOmZvY3VzLFxuICAgICY6aG92ZXIge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudCk7XG5cbiAgICAgIC8vIFNsaWdodGx5IHRyYW5zcGFyZW50IGljb25cbiAgICAgIC5tZC1zZWFyY2gtcmVzdWx0X19hcnRpY2xlOjpiZWZvcmUge1xuICAgICAgICBvcGFjaXR5OiAwLjc7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWRkIGEgbGl0dGxlIHNwYWNpbmcgb24gdGhlIHRlYXNlciBvZiB0aGUgbGFzdCBsaW5rXG4gICAgJjpsYXN0LWNoaWxkIC5tZC1zZWFyY2gtcmVzdWx0X190ZWFzZXIge1xuICAgICAgbWFyZ2luLWJvdHRvbTogcHgycmVtKDEycHgpO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFydGljbGUgLSBkb2N1bWVudCBvciBzZWN0aW9uXG4gICZfX2FydGljbGUge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBwYWRkaW5nOiAwIHB4MnJlbSgxNnB4KTtcbiAgICBvdmVyZmxvdzogYXV0bztcblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlICtdOiBJbmNyZWFzZSBsZWZ0IGluZGVudFxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQ0cHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDRweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDE2cHgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERvY3VtZW50XG4gICAgJi0tZG9jdW1lbnQge1xuXG4gICAgICAvLyBUaXRsZVxuICAgICAgLm1kLXNlYXJjaC1yZXN1bHRfX3RpdGxlIHtcbiAgICAgICAgbWFyZ2luOiBweDJyZW0oMTFweCkgMDtcbiAgICAgICAgZm9udC1zaXplOiBtcygwKTtcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBJY29uXG4gICZfX2ljb24ge1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICBsZWZ0OiAwO1xuICAgIG1hcmdpbjogcHgycmVtKDJweCk7XG4gICAgcGFkZGluZzogcHgycmVtKDhweCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcblxuICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgcmlnaHQ6IDA7XG4gICAgICBsZWZ0OiBpbml0aWFsO1xuXG4gICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgc3ZnIHtcbiAgICAgICAgdHJhbnNmb3JtOiBzY2FsZVgoLTEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgcG9ydHJhaXQgLV06IEhpZGUgcGFnZSBpY29uXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBUaXRsZVxuICAmX190aXRsZSB7XG4gICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgIGZvbnQtc2l6ZTogbXMoLTEpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgfVxuXG4gIC8vIHN0eWxlbGludC1kaXNhYmxlIHZhbHVlLW5vLXZlbmRvci1wcmVmaXgsIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuICAvLyBUZWFzZXJcbiAgJl9fdGVhc2VyIHtcbiAgICBkaXNwbGF5OiAtd2Via2l0LWJveDtcbiAgICBtYXgtaGVpZ2h0OiBweDJyZW0oMzNweCk7XG4gICAgbWFyZ2luOiAwLjVlbSAwO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgZm9udC1zaXplOiBtcygtMSk7XG4gICAgbGluZS1oZWlnaHQ6IDEuNDtcbiAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgIC13ZWJraXQtYm94LW9yaWVudDogdmVydGljYWw7XG4gICAgLXdlYmtpdC1saW5lLWNsYW1wOiAyO1xuXG4gICAgLy8gW21vYmlsZSAtXTogSW5jcmVhc2UgbnVtYmVyIG9mIGxpbmVzXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuICAgICAgbWF4LWhlaWdodDogcHgycmVtKDUwcHgpO1xuICAgICAgLXdlYmtpdC1saW5lLWNsYW1wOiAzO1xuICAgIH1cblxuICAgIC8vIFt0YWJsZXQgbGFuZHNjYXBlXTogSW5jcmVhc2UgbnVtYmVyIG9mIGxpbmVzXG4gICAgQGluY2x1ZGUgYnJlYWstYXQtZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIG1heC1oZWlnaHQ6IHB4MnJlbSg1MHB4KTtcbiAgICAgIC13ZWJraXQtbGluZS1jbGFtcDogMztcbiAgICB9XG4gIH1cblxuICAvLyBzdHlsZWxpbnQtZW5hYmxlIHZhbHVlLW5vLXZlbmRvci1wcmVmaXgsIHByb3BlcnR5LW5vLXZlbmRvci1wcmVmaXhcblxuICAvLyBTZWFyY2ggdGVybSBoaWdobGlnaHRpbmdcbiAgZW0ge1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIHRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lO1xuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIEFjdGl2ZSAodG9nZ2xlZCkgZHJhd2VyXG4kbWQtdG9nZ2xlX19kcmF3ZXItLWNoZWNrZWQ6XG4gIFwiW2RhdGEtbWQtdG9nZ2xlPVxcXCJkcmF3ZXJcXFwiXTpjaGVja2VkIH4gLm1kLWNvbnRhaW5lclwiO1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTaWRlYmFyIGNvbnRhaW5lclxuLm1kLXNpZGViYXIge1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiBweDJyZW0oMjQycHgpO1xuICBwYWRkaW5nOiBweDJyZW0oMjRweCkgMDtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBMb2NrIHNpZGViYXIgdG8gY29udGFpbmVyIGhlaWdodCAoYWNjb3VudCBmb3IgZml4ZWQgaGVhZGVyKVxuICAmW2RhdGEtbWQtc3RhdGU9XCJsb2NrXCJdIHtcbiAgICBwb3NpdGlvbjogZml4ZWQ7XG4gICAgdG9wOiBweDJyZW0oNDhweCk7XG4gIH1cblxuICAvLyBbdGFibGV0IC1dOiBDb252ZXJ0IG5hdmlnYXRpb24gdG8gZHJhd2VyXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgIC8vIFJlbmRlciBwcmltYXJ5IHNpZGViYXIgYXMgYSBzbGlkZW91dCBjb250YWluZXJcbiAgICAmLS1wcmltYXJ5IHtcbiAgICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICAgIHRvcDogMDtcbiAgICAgIGxlZnQ6IHB4MnJlbSgtMjQycHgpO1xuICAgICAgd2lkdGg6IHB4MnJlbSgyNDJweCk7XG4gICAgICBoZWlnaHQ6IDEwMCU7XG4gICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoMCk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICB0cmFuc2Zvcm0gIDI1MG1zIGN1YmljLWJlemllcigwLjQsIDAsIDAuMiwgMSksXG4gICAgICAgIGJveC1zaGFkb3cgMjUwbXM7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICAgIHotaW5kZXg6IDM7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHJpZ2h0OiBweDJyZW0oLTI0MnB4KTtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cblxuICAgICAgLy8gRXhwYW5kZWQgZHJhd2VyXG4gICAgICAjeyRtZC10b2dnbGVfX2RyYXdlci0tY2hlY2tlZH0gJiB7XG4gICAgICAgIEBpbmNsdWRlIHotZGVwdGgoOCk7XG5cbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKHB4MnJlbSgyNDJweCkpO1xuXG4gICAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgocHgycmVtKC0yNDJweCkpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIEhpZGUgb3ZlcmZsb3cgZm9yIG5lc3RlZCBuYXZpZ2F0aW9uXG4gICAgICAubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gU2Vjb25kYXJ5IHNpZGViYXIgd2l0aCB0YWJsZSBvZiBjb250ZW50c1xuICAmLS1zZWNvbmRhcnkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogU2hvdyB0YWJsZSBvZiBjb250ZW50cyBuZXh0IHRvIGJvZHkgY29weVxuICAgIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHRhYmxldCBsYW5kc2NhcGUpIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luLWxlZnQ6IGNhbGMoMTAwJSAtICN7cHgycmVtKDI0MnB4KX0pO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IGNhbGMoMTAwJSAtICN7cHgycmVtKDI0MnB4KX0pO1xuICAgICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cblxuICAgICAgLy8gRW5zdXJlIHNtb290aCBzY3JvbGxpbmcgb24gaU9TXG4gICAgICAubWQtc2lkZWJhcl9fc2Nyb2xsd3JhcCB7XG4gICAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBbc2NyZWVuICtdOiBMaW1pdCB0byBncmlkXG4gICAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuKSB7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKCgxMjIwIC0gMjQyKSAqIDFweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKCgxMjIwIC0gMjQyKSAqIDFweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFdyYXBwZXIgZm9yIHNjcm9sbGluZyBvbiBvdmVyZmxvd1xuICAmX19zY3JvbGx3cmFwIHtcbiAgICBtYXgtaGVpZ2h0OiAxMDAlO1xuICAgIG1hcmdpbjogMCBweDJyZW0oNHB4KTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHNjcm9sbC1zbmFwLXR5cGU6IHkgbWFuZGF0b3J5O1xuICAgIC8vIEhhY2s6IHJlZHVjZSBqaXR0ZXJcbiAgICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgICAvLyBbdGFibGV0IC1dOiBBZGp1c3QgbWFyZ2luc1xuICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgICAgLy8gU3RyZXRjaCBzY3JvbGx3cmFwIGZvciBwcmltYXJ5IHNpZGViYXJcbiAgICAgIC5tZC1zaWRlYmFyLS1wcmltYXJ5ICYge1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIHRvcDogMDtcbiAgICAgICAgcmlnaHQ6IDA7XG4gICAgICAgIGJvdHRvbTogMDtcbiAgICAgICAgbGVmdDogMDtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICBzY3JvbGwtc25hcC10eXBlOiBub25lO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIE92ZXJyaWRlIG5hdGl2ZSBzY3JvbGxiYXIgc3R5bGVzXG4gICAgJjo6LXdlYmtpdC1zY3JvbGxiYXIge1xuICAgICAgd2lkdGg6IHB4MnJlbSg0cHgpO1xuICAgICAgaGVpZ2h0OiBweDJyZW0oNHB4KTtcbiAgICB9XG5cbiAgICAvLyBTY3JvbGxiYXIgdGh1bWJcbiAgICAmOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVyKTtcblxuICAgICAgLy8gSG92ZXJlZCBzY3JvbGxiYXIgdGh1bWJcbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEtleWZyYW1lc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTaG93IHNvdXJjZSBmYWN0c1xuQGtleWZyYW1lcyBtZC1zb3VyY2VfX2ZhY3RzLS1kb25lIHtcbiAgMCUge1xuICAgIGhlaWdodDogMDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIGhlaWdodDogcHgycmVtKDEzcHgpO1xuICB9XG59XG5cbi8vIFNob3cgc291cmNlIGZhY3RcbkBrZXlmcmFtZXMgbWQtc291cmNlX19mYWN0LS1kb25lIHtcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgNTAlIHtcbiAgICBvcGFjaXR5OiAwO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDAlKTtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNvdXJjZSBjb250YWluZXJcbi5tZC1zb3VyY2Uge1xuICBkaXNwbGF5OiBibG9jaztcbiAgcGFkZGluZy1yaWdodDogcHgycmVtKDEycHgpO1xuICB0cmFuc2l0aW9uOiBvcGFjaXR5IDI1MG1zO1xuICBmb250LXNpemU6IHB4MnJlbSgxM3B4KTtcbiAgbGluZS1oZWlnaHQ6IDEuMjtcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbiAgLy8gSGFjazogcmVkdWNlIGppdHRlclxuICBiYWNrZmFjZS12aXNpYmlsaXR5OiBoaWRkZW47XG5cbiAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICBbZGlyPVwicnRsXCJdICYge1xuICAgIHBhZGRpbmctcmlnaHQ6IGluaXRpYWw7XG4gICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oMTJweCk7XG4gIH1cblxuICAvLyBIb3ZlcmVkIHNvdXJjZSBjb250YWluZXJcbiAgJjpob3ZlciB7XG4gICAgb3BhY2l0eTogMC43O1xuICB9XG5cbiAgLy8gUmVwb3NpdG9yeSBwbGF0Zm9ybSBpY29uXG4gICZfX2ljb24ge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogcHgycmVtKDQ4cHgpO1xuICAgIGhlaWdodDogcHgycmVtKDQ4cHgpO1xuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG5cbiAgICAvLyBBbGlnbiB3aXRoIG1hcmdpbiBvbmx5IChhcyBvcHBvc2VkIHRvIG5vcm1hbCBidXR0b24gYWxpZ25tZW50KVxuICAgIHN2ZyB7XG4gICAgICBtYXJnaW4tdG9wOiBweDJyZW0oMTJweCk7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKDEycHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQ29ycmVjdCBhbGlnbm1lbnQsIGlmIGljb24gaXMgcHJlc2VudFxuICAgICsgLm1kLXNvdXJjZV9fcmVwb3NpdG9yeSB7XG4gICAgICBtYXJnaW4tbGVmdDogcHgycmVtKC00MHB4KTtcbiAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQwcHgpO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICBtYXJnaW4tcmlnaHQ6IHB4MnJlbSgtNDBweCk7XG4gICAgICAgIG1hcmdpbi1sZWZ0OiBpbml0aWFsO1xuICAgICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDBweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBSZXBvc2l0b3J5IG5hbWVcbiAgJl9fcmVwb3NpdG9yeSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1heC13aWR0aDogMTAwJTtcbiAgICBtYXJnaW4tbGVmdDogcHgycmVtKDEycHgpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xuICB9XG5cbiAgLy8gU291cmNlIGZhY3RzIChzdGF0aXN0aWNzIGV0Yy4pXG4gICZfX2ZhY3RzIHtcbiAgICBtYXJnaW46IDA7XG4gICAgcGFkZGluZzogMDtcbiAgICBmb250LXNpemU6IHB4MnJlbSgxMXB4KTtcbiAgICBmb250LXdlaWdodDogNzAwO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcbiAgICBvcGFjaXR5OiAwLjc1O1xuICAgIG92ZXJmbG93OiBoaWRkZW47XG5cbiAgICAvLyBTaG93IGFmdGVyIHRoZSBkYXRhIHdhcyBsb2FkZWRcbiAgICBbZGF0YS1tZC1zdGF0ZT1cImRvbmVcIl0gJiB7XG4gICAgICBhbmltYXRpb246IG1kLXNvdXJjZV9fZmFjdHMtLWRvbmUgMjUwbXMgZWFzZS1pbjtcbiAgICB9XG4gIH1cblxuICAvLyBGYWN0XG4gICZfX2ZhY3Qge1xuICAgIGZsb2F0OiBsZWZ0O1xuXG4gICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICBmbG9hdDogcmlnaHQ7XG4gICAgfVxuXG4gICAgLy8gU2hvdyBhZnRlciB0aGUgZGF0YSB3YXMgbG9hZGVkXG4gICAgW2RhdGEtbWQtc3RhdGU9XCJkb25lXCJdICYge1xuICAgICAgYW5pbWF0aW9uOiBtZC1zb3VyY2VfX2ZhY3QtLWRvbmUgNDAwbXMgZWFzZS1vdXQ7XG4gICAgfVxuXG4gICAgLy8gTWlkZGxlIGRvdCBiZWZvcmUgZmFjdFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBtYXJnaW46IDAgcHgycmVtKDJweCk7XG4gICAgICBjb250ZW50OiBcIlxcMDBCN1wiO1xuICAgIH1cblxuICAgIC8vIFJlbW92ZSBtaWRkbGUgZG90IG9uIGZpcnN0IGZhY3RcbiAgICAmOmZpcnN0LWNoaWxkOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBUYWJzIHdpdGggb3V0bGluZVxuLm1kLXRhYnMge1xuICB3aWR0aDogMTAwJTtcbiAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAyNTBtcztcbiAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtcHJpbWFyeS1mZy1jb2xvcik7XG4gIGNvbG9yOiB2YXIoLS1tZC1wcmltYXJ5LWJnLWNvbG9yKTtcbiAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgLy8gT21pdCB0cmFuc2l0aW9ucywgaW4gY2FzZSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGVcbiAgLm5vLWpzICYge1xuICAgIHRyYW5zaXRpb246IG5vbmU7XG4gIH1cblxuICAvLyBbdGFibGV0IC1dOiBIaWRlIHRhYnMgZm9yIHRhYmxldCBhbmQgYmVsb3csIGFzIHRoZXkgZG9uJ3QgbWFrZSBhbnkgc2Vuc2VcbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCkge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBIaWRlIGZvciBwcmludFxuICBAbWVkaWEgcHJpbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gIH1cblxuICAvLyBMaXN0IG9mIGl0ZW1zXG4gICZfX2xpc3Qge1xuICAgIG1hcmdpbjogMDtcbiAgICBtYXJnaW4tbGVmdDogcHgycmVtKDRweCk7XG4gICAgcGFkZGluZzogMDtcbiAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDRweCk7XG4gICAgICBtYXJnaW4tbGVmdDogaW5pdGlhbDtcbiAgICB9XG4gIH1cblxuICAvLyBMaXN0IGl0ZW1cbiAgJl9faXRlbSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIGhlaWdodDogcHgycmVtKDQ4cHgpO1xuICAgIHBhZGRpbmctcmlnaHQ6IHB4MnJlbSgxMnB4KTtcbiAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSgxMnB4KTtcbiAgfVxuXG4gIC8vIExpbmsgaW5zaWRlIGl0ZW0gLSBjb3VsZCBiZSBkZWZpbmVkIGFzIGJsb2NrIGVsZW1lbnRzIGFuZCBhbGlnbmVkIHZpYVxuICAvLyBsaW5lIGhlaWdodCwgYnV0IHRoaXMgd291bGQgaW1wbHkgbW9yZSByZXBhaW50cyB3aGVuIHNjcm9sbGluZ1xuICAmX19saW5rIHtcbiAgICBkaXNwbGF5OiBibG9jaztcbiAgICBtYXJnaW4tdG9wOiBweDJyZW0oMTZweCk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSA0MDBtcyBjdWJpYy1iZXppZXIoMC4xLCAwLjcsIDAuMSwgMSksXG4gICAgICBvcGFjaXR5ICAgMjUwbXM7XG4gICAgZm9udC1zaXplOiBweDJyZW0oMTRweCk7XG4gICAgb3BhY2l0eTogMC43O1xuXG4gICAgLy8gT21pdCB0cmFuc2l0aW9ucywgaW4gY2FzZSBKYXZhU2NyaXB0IGlzIG5vdCBhdmFpbGFibGVcbiAgICAubm8tanMgJiB7XG4gICAgICB0cmFuc2l0aW9uOiBub25lO1xuICAgIH1cblxuICAgIC8vIEFjdGl2ZSBvciBob3ZlcmVkIGxpbmtcbiAgICAmLS1hY3RpdmUsXG4gICAgJjpob3ZlciB7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIG9wYWNpdHk6IDE7XG4gICAgfVxuXG4gICAgLy8gRGVsYXkgdHJhbnNpdGlvbnMgYnkgYSBzbWFsbCBhbW91bnRcbiAgICBAZm9yICRpIGZyb20gMiB0aHJvdWdoIDE2IHtcbiAgICAgIC5tZC10YWJzX19pdGVtOm50aC1jaGlsZCgjeyRpfSkgJiB7XG4gICAgICAgIHRyYW5zaXRpb24tZGVsYXk6IDIwbXMgKiAoJGkgLSAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGYWRlLW91dCB0YWJzIGJhY2tncm91bmQgdXBvbiBzY3JvbGxpbmdcbiAgJltkYXRhLW1kLXN0YXRlPVwiaGlkZGVuXCJdIHtcbiAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcblxuICAgIC8vIEhpZGUgdGFicyB1cG9uIHNjcm9sbGluZyAtIGRpc2FibGUgdHJhbnNpdGlvbiB0byBtaW5pbWl6ZXMgcmVwYWludHMgd2hpbHRlXG4gICAgLy8gc2Nyb2xsaW5nIGRvd24sIHdoaWxlIHNjcm9sbGluZyB1cCBzZWVtcyB0byBiZSBva2F5XG4gICAgLm1kLXRhYnNfX2xpbmsge1xuICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDUwJSk7XG4gICAgICB0cmFuc2l0aW9uOlxuICAgICAgICBjb2xvciAgICAgMjUwbXMsXG4gICAgICAgIHRyYW5zZm9ybSAgIDBtcyA0MDBtcyxcbiAgICAgICAgb3BhY2l0eSAgIDEwMG1zO1xuICAgICAgb3BhY2l0eTogMDtcbiAgICB9XG4gIH1cblxuICAvLyBbc2NyZWVuICtdOiBBZGp1c3QgbWFpbiBuYXZpZ2F0aW9uIHN0eWxlc1xuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZShzY3JlZW4pIHtcblxuICAgIC8vIEhpZGUgMXN0IGxldmVsIG5lc3RlZCBpdGVtcywgYXMgdGhleSBhcmUgbGlzdGVkIGluIHRoZSB0YWJzXG4gICAgfiAubWQtbWFpbiAubWQtbmF2LS1wcmltYXJ5ID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0tLW5lc3RlZCB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgIH1cblxuICAgIC8vIFdlJ3JlIG9uIHRoZSAybmQrIGxldmVsXG4gICAgJi0tYWN0aXZlIH4gLm1kLW1haW4ge1xuXG4gICAgICAvLyBBZGp1c3QgMXN0IGxldmVsIHN0eWxlc1xuICAgICAgLm1kLW5hdi0tcHJpbWFyeSB7XG5cbiAgICAgICAgLy8gU2hvdyB0aXRsZSBhbmQgcmVtb3ZlIHNwYWNpbmdcbiAgICAgICAgLm1kLW5hdl9fdGl0bGUge1xuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgICAgIHBhZGRpbmc6IDAgcHgycmVtKDEycHgpO1xuICAgICAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgICAgICAgIHNjcm9sbC1zbmFwLWFsaWduOiBzdGFydDtcblxuICAgICAgICAgIC8vIEhpZGUgc2l0ZSB0aXRsZVxuICAgICAgICAgICZbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIaWRlIDFzdCBsZXZlbCBub3JtYWwgaXRlbXNcbiAgICAgICAgPiAubWQtbmF2X19saXN0ID4gLm1kLW5hdl9faXRlbSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcblxuICAgICAgICAgIC8vIEhpZGUgbmVzdGVkIGl0ZW1zXG4gICAgICAgICAgJi0tbmVzdGVkIHtcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gU2hvdyAxc3QgbGV2ZWwgYWN0aXZlIG5lc3RlZCBpdGVtc1xuICAgICAgICAgICYtLWFjdGl2ZSB7XG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgICAgIHBhZGRpbmc6IDA7XG5cbiAgICAgICAgICAgIC8vIEhpZGUgbmVzdGVkIGxpbmtzXG4gICAgICAgICAgICA+IC5tZC1uYXZfX2xpbmsge1xuICAgICAgICAgICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBBbHdheXMgZXhwYW5kIG5lc3RlZCBuYXZpZ2F0aW9uIG9uIDJuZCBsZXZlbFxuICAgICAgLm1kLW5hdltkYXRhLW1kLWxldmVsPVwiMVwiXSB7XG5cbiAgICAgICAgLy8gUmVtb3ZlIHNwYWNpbmcgb24gMm5kIGxldmVsIGl0ZW1zXG4gICAgICAgID4gLm1kLW5hdl9fbGlzdCA+IC5tZC1uYXZfX2l0ZW0ge1xuICAgICAgICAgIHBhZGRpbmc6IDAgcHgycmVtKDEycHgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSGlkZSB0aXRsZXMgZnJvbSAybmQgbGV2ZWwgb25cbiAgICAgICAgLm1kLW5hdiAubWQtbmF2X190aXRsZSB7XG4gICAgICAgICAgZGlzcGxheTogbm9uZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gQWRtb25pdGlvblxuICAuYWRtb25pdGlvbiB7XG4gICAgbWFyZ2luOiAxLjU2MjVlbSAwO1xuICAgIHBhZGRpbmc6IDAgcHgycmVtKDEycHgpO1xuICAgIGJvcmRlci1sZWZ0OiBweDJyZW0oNHB4KSBzb2xpZCAkY2xyLWJsdWUtYTIwMDtcbiAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICBmb250LXNpemU6IG1zKC0xKTtcbiAgICBib3gtc2hhZG93OlxuICAgICAgMCBweDJyZW0oNHB4KSBweDJyZW0oMTBweCkgaHNsYSgwLCAwJSwgMCUsIDAuMDUpLFxuICAgICAgMCAwICAgICAgICAgICBweDJyZW0oMXB4KSAgaHNsYSgwLCAwJSwgMCUsIDAuMSk7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIGJvcmRlci1yaWdodDogcHgycmVtKDRweCkgc29saWQgJGNsci1ibHVlLWEyMDA7XG4gICAgICBib3JkZXItbGVmdDogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBBZGp1c3Qgc3BhY2luZyBvbiBsYXN0IGVsZW1lbnRcbiAgICBodG1sICYgPiA6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiBweDJyZW0oMTJweCk7XG4gICAgfVxuXG4gICAgLy8gQWRqdXN0IG1hcmdpbiBmb3IgbmVzdGVkIGFkbW9uaXRpb24gYmxvY2tzXG4gICAgLmFkbW9uaXRpb24ge1xuICAgICAgbWFyZ2luOiAxZW0gMDtcbiAgICB9XG5cbiAgICAvLyBCdWlsZCByZXByZXNlbnRhdGlvbmFsIGNsYXNzZXNcbiAgICBAZWFjaCAkbmFtZXMsICRhcHBlYXJhbmNlIGluIChcbiAgICAgIGFic3RyYWN0IHN1bW1hcnkgdGxkcjogJGNsci1saWdodC1ibHVlLWE0MDAgXCJ0ZXh0LXN1YmplY3RcIixcbiAgICAgIGluZm8gdG9kbzogJGNsci1jeWFuLWE3MDAgXCJpbmZvcm1hdGlvblwiLFxuICAgICAgdGlwIGhpbnQgaW1wb3J0YW50OiAkY2xyLXRlYWwtYTcwMCBcImZpcmVcIixcbiAgICAgIHN1Y2Nlc3MgY2hlY2sgZG9uZTogJGNsci1ncmVlbi1hNzAwIFwiY2hlY2stY2lyY2xlXCIsXG4gICAgICBxdWVzdGlvbiBoZWxwIGZhcTogJGNsci1saWdodC1ncmVlbi1hNzAwIFwiaGVscC1jaXJjbGVcIixcbiAgICAgIHdhcm5pbmcgY2F1dGlvbiBhdHRlbnRpb246ICRjbHItb3JhbmdlLWE0MDAgXCJhbGVydFwiLFxuICAgICAgZmFpbHVyZSBmYWlsIG1pc3Npbmc6ICRjbHItcmVkLWEyMDAgXCJjbG9zZS1jaXJjbGVcIixcbiAgICAgIGRhbmdlciBlcnJvcjogJGNsci1yZWQtYTQwMCBcImZsYXNoLWNpcmNsZVwiLFxuICAgICAgYnVnOiAkY2xyLXBpbmstYTQwMCBcImJ1Z1wiLFxuICAgICAgZXhhbXBsZTogJGNsci1kZWVwLXB1cnBsZS1hNDAwIFwiZm9ybWF0LWxpc3QtbnVtYmVyZWRcIixcbiAgICAgIHF1b3RlIGNpdGU6ICRjbHItZ3JleSBcImZvcm1hdC1xdW90ZS1jbG9zZVwiXG4gICAgKSB7XG4gICAgICAkdGludDogbnRoKCRhcHBlYXJhbmNlLCAxKTtcbiAgICAgICRpY29uOiBudGgoJGFwcGVhcmFuY2UsIDIpO1xuXG4gICAgICAvLyBEZWZpbmUgYmFzZSBjbGFzc1xuICAgICAgJiUje250aCgkbmFtZXMsIDEpfSxcbiAgICAgICYuI3tudGgoJG5hbWVzLCAxKX0ge1xuICAgICAgICBib3JkZXItbGVmdC1jb2xvcjogJHRpbnQ7XG5cbiAgICAgICAgLy8gVGl0bGVcbiAgICAgICAgPiA6Zmlyc3QtY2hpbGQge1xuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCR0aW50LCAwLjkpO1xuXG4gICAgICAgICAgLy8gSWNvblxuICAgICAgICAgICY6OmJlZm9yZSB7XG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkdGludDtcbiAgICAgICAgICAgIG1hc2staW1hZ2U6IHVybChcInt7ICN7JGljb259IH19XCIpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBEZWZpbmUgc3lub255bXMgZm9yIGJhc2UgY2xhc3NcbiAgICAgIEBpZiBsZW5ndGgoJG5hbWVzKSA+IDEge1xuICAgICAgICBAZm9yICRuIGZyb20gMiB0aHJvdWdoIGxlbmd0aCgkbmFtZXMpIHtcbiAgICAgICAgICAmLiN7bnRoKCRuYW1lcywgJG4pfSB7XG4gICAgICAgICAgICBAZXh0ZW5kICUje250aCgkbmFtZXMsIDEpfTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBBZG1vbml0aW9uIHRpdGxlXG4gIC5hZG1vbml0aW9uLXRpdGxlIHtcbiAgICBtYXJnaW46IDAgcHgycmVtKC0xMnB4KTtcbiAgICBwYWRkaW5nOiBweDJyZW0oOHB4KSBweDJyZW0oMTJweCkgcHgycmVtKDhweCkgcHgycmVtKDQwcHgpO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50aXplKCRjbHItYmx1ZS1hMjAwLCAwLjkpO1xuICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIHBhZGRpbmc6IHB4MnJlbSg4cHgpIHB4MnJlbSg0MHB4KSBweDJyZW0oOHB4KSBweDJyZW0oMTJweCk7XG4gICAgfVxuXG4gICAgLy8gUmVzZXQgc3BhY2luZywgaWYgdGl0bGUgaXMgdGhlIG9ubHkgZWxlbWVudFxuICAgICY6bGFzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tYm90dG9tOiAwO1xuICAgIH1cblxuICAgIC8vIEljb25cbiAgICAmOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgd2lkdGg6IHB4MnJlbSgyMHB4KTtcbiAgICAgIGhlaWdodDogcHgycmVtKDIwcHgpO1xuICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgtMjhweCk7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY2xyLWJsdWUtYTIwMDtcbiAgICAgIG1hc2staW1hZ2U6IHVybChcInt7IHBlbmNpbCB9fVwiKTtcbiAgICAgIGNvbnRlbnQ6IFwiXCI7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKC0yOHB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIE9wZXJhdG9yc1xuJGNvZGVoaWxpdGUtb3BlcmF0b3I6IGluaGVyaXQ7XG4kY29kZWhpbGl0ZS1vcGVyYXRvci13b3JkOiBpbmhlcml0O1xuXG4vLyBHZW5lcmljc1xuJGNvZGVoaWxpdGUtZ2VuZXJpYy1lbXBoOiAjMDAwMDAwO1xuJGNvZGVoaWxpdGUtZ2VuZXJpYy1lcnJvcjogI0FBMDAwMDtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtaGVhZGluZzogIzk5OTk5OTtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtb3V0cHV0OiAjODg4ODg4O1xuJGNvZGVoaWxpdGUtZ2VuZXJpYy1wcm9tcHQ6ICM1NTU1NTU7XG4kY29kZWhpbGl0ZS1nZW5lcmljLXN0cm9uZzogaW5oZXJpdDtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtc3ViaGVhZGluZzogI0FBQUFBQTtcbiRjb2RlaGlsaXRlLWdlbmVyaWMtdHJhY2ViYWNrOiAjQUEwMDAwO1xuXG4vLyBEaWZmc1xuJGNvZGVoaWxpdGUtZGlmZi1kZWxldGVkOiAjRkZEREREO1xuJGNvZGVoaWxpdGUtZGlmZi1pbnNlcnRlZDogI0RERkZERDtcblxuLy8gS2V5d29yZHNcbiRjb2RlaGlsaXRlLWtleXdvcmQ6ICMzQjc4RTc7XG4kY29kZWhpbGl0ZS1rZXl3b3JkLWNvbnN0YW50OiAjQTcxRDVEO1xuJGNvZGVoaWxpdGUta2V5d29yZC1kZWNsYXJhdGlvbjogIzNCNzhFNztcbiRjb2RlaGlsaXRlLWtleXdvcmQtbmFtZXNwYWNlOiAjM0I3OEU3O1xuJGNvZGVoaWxpdGUta2V5d29yZC1wc2V1ZG86ICNBNzFENUQ7XG4kY29kZWhpbGl0ZS1rZXl3b3JkLXJlc2VydmVkOiAjM0U2MUEyO1xuJGNvZGVoaWxpdGUta2V5d29yZC10eXBlOiAjM0U2MUEyO1xuXG4vLyBDb21tZW50c1xuJGNvZGVoaWxpdGUtY29tbWVudDogIzk5OTk5OTtcbiRjb2RlaGlsaXRlLWNvbW1lbnQtbXVsdGlsaW5lOiAjOTk5OTk5O1xuJGNvZGVoaWxpdGUtY29tbWVudC1wcmVwcm9jOiAjNjY2NjY2O1xuJGNvZGVoaWxpdGUtY29tbWVudC1zaW5nbGU6ICM5OTk5OTk7XG4kY29kZWhpbGl0ZS1jb21tZW50LXNoZWJhbmc6ICM5OTk5OTk7XG4kY29kZWhpbGl0ZS1jb21tZW50LXNwZWNpYWw6ICM5OTk5OTk7XG5cbi8vIE5hbWVzXG4kY29kZWhpbGl0ZS1uYW1lLWF0dHJpYnV0ZTogI0MyMTg1QjtcbiRjb2RlaGlsaXRlLW5hbWUtYnVpbHRpbjogI0MyMTg1QjtcbiRjb2RlaGlsaXRlLW5hbWUtYnVpbHRpbi1wc2V1ZG86ICMzRTYxQTI7XG4kY29kZWhpbGl0ZS1uYW1lLWNsYXNzOiAjQzIxODVCO1xuJGNvZGVoaWxpdGUtbmFtZS1jb25zdGFudDogIzNFNjFBMjtcbiRjb2RlaGlsaXRlLW5hbWUtZGVjb3JhdG9yOiAjNjY2NjY2O1xuJGNvZGVoaWxpdGUtbmFtZS1lbnRpdHk6ICM2NjY2NjY7XG4kY29kZWhpbGl0ZS1uYW1lLWV4Y2VwdGlvbjogI0MyMTg1QjtcbiRjb2RlaGlsaXRlLW5hbWUtZnVuY3Rpb246ICNDMjE4NUI7XG4kY29kZWhpbGl0ZS1uYW1lLWxhYmVsOiAjM0I1MTc5O1xuJGNvZGVoaWxpdGUtbmFtZS1uYW1lc3BhY2U6ICNFQzQwN0E7XG4kY29kZWhpbGl0ZS1uYW1lLXRhZzogIzNCNzhFNztcbiRjb2RlaGlsaXRlLW5hbWUtdmFyaWFibGU6ICMzRTYxQTI7XG4kY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlLWNsYXNzOiAjM0U2MUEyO1xuJGNvZGVoaWxpdGUtbmFtZS12YXJpYWJsZS1pbnN0YW5jZTogIzNFNjFBMjtcbiRjb2RlaGlsaXRlLW5hbWUtdmFyaWFibGUtZ2xvYmFsOiAjM0U2MUEyO1xuJGNvZGVoaWxpdGUtbmFtZS1leHRlbnNpb246ICNFQzQwN0E7XG5cbi8vIE51bWJlcnNcbiRjb2RlaGlsaXRlLWxpdGVyYWwtbnVtYmVyOiAjRTc0QzNDO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItZmxvYXQ6ICNFNzRDM0M7XG4kY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlci1oZXg6ICNFNzRDM0M7XG4kY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlci1pbnRlZ2VyOiAjRTc0QzNDO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItaW50ZWdlci1sb25nOiAjRTc0QzNDO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItb2N0OiAjRTc0QzNDO1xuXG4vLyBTdHJpbmdzXG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZzogIzBEOTA0RjtcbiRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLWJhY2t0aWNrczogIzBEOTA0RjtcbiRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLWNoYXI6ICMwRDkwNEY7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1kb2M6ICM5OTk5OTk7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1kb3VibGU6ICMwRDkwNEY7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1lc2NhcGU6ICMxODM2OTE7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1oZXJlZG9jOiAjMTgzNjkxO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctaW50ZXJwb2w6ICMxODM2OTE7XG4kY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1vdGhlcjogIzE4MzY5MTtcbiRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLXJlZ2V4OiAjMDA5OTI2O1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctc2luZ2xlOiAjMEQ5MDRGO1xuJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctc3ltYm9sOiAjMEQ5MDRGO1xuXG4vLyBNaXNjZWxsYW5lb3VzXG4kY29kZWhpbGl0ZS1lcnJvcjogI0E2MTcxNztcbiRjb2RlaGlsaXRlLXdoaXRlc3BhY2U6IHRyYW5zcGFyZW50O1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogc3ludGF4IGhpZ2hsaWdodGluZ1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb2RlaGlsaXRlIGV4dGVuc2lvblxuLmNvZGVoaWxpdGUge1xuXG4gIC8vIE9wZXJhdG9yc1xuICAubyAgeyBjb2xvcjogJGNvZGVoaWxpdGUtb3BlcmF0b3I7IH1cbiAgLm93IHsgY29sb3I6ICRjb2RlaGlsaXRlLW9wZXJhdG9yLXdvcmQ7IH1cblxuICAvLyBHZW5lcmljc1xuICAuZ2UgeyBjb2xvcjogJGNvZGVoaWxpdGUtZ2VuZXJpYy1lbXBoOyB9XG4gIC5nciB7IGNvbG9yOiAkY29kZWhpbGl0ZS1nZW5lcmljLWVycm9yOyB9XG4gIC5naCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1nZW5lcmljLWhlYWRpbmc7IH1cbiAgLmdvIHsgY29sb3I6ICRjb2RlaGlsaXRlLWdlbmVyaWMtb3V0cHV0OyB9XG4gIC5ncCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1nZW5lcmljLXByb21wdDsgfVxuICAuZ3MgeyBjb2xvcjogJGNvZGVoaWxpdGUtZ2VuZXJpYy1zdHJvbmc7IH1cbiAgLmd1IHsgY29sb3I6ICRjb2RlaGlsaXRlLWdlbmVyaWMtc3ViaGVhZGluZzsgfVxuICAuZ3QgeyBjb2xvcjogJGNvZGVoaWxpdGUtZ2VuZXJpYy10cmFjZWJhY2s7IH1cblxuICAvLyBEaWZmc1xuICAuZ2QgeyBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZWhpbGl0ZS1kaWZmLWRlbGV0ZWQ7IH1cbiAgLmdpIHsgYmFja2dyb3VuZC1jb2xvcjogJGNvZGVoaWxpdGUtZGlmZi1pbnNlcnRlZDsgfVxuXG4gIC8vIEtleXdvcmRzXG4gIC5rICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkOyB9XG4gIC5rYyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkLWNvbnN0YW50OyB9XG4gIC5rZCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkLWRlY2xhcmF0aW9uOyB9XG4gIC5rbiB7IGNvbG9yOiAkY29kZWhpbGl0ZS1rZXl3b3JkLW5hbWVzcGFjZTsgfVxuICAua3AgeyBjb2xvcjogJGNvZGVoaWxpdGUta2V5d29yZC1wc2V1ZG87IH1cbiAgLmtyIHsgY29sb3I6ICRjb2RlaGlsaXRlLWtleXdvcmQtcmVzZXJ2ZWQ7IH1cbiAgLmt0IHsgY29sb3I6ICRjb2RlaGlsaXRlLWtleXdvcmQtdHlwZTsgfVxuXG4gIC8vIENvbW1lbnRzXG4gIC5jICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50OyB9XG4gIC5jbSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50LW11bHRpbGluZTsgfVxuICAuY3AgeyBjb2xvcjogJGNvZGVoaWxpdGUtY29tbWVudC1wcmVwcm9jOyB9XG4gIC5jMSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50LXNpbmdsZTsgfVxuICAuY2ggeyBjb2xvcjogJGNvZGVoaWxpdGUtY29tbWVudC1zaGViYW5nOyB9XG4gIC5jcyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50LXNwZWNpYWw7IH1cblxuICAvLyBOYW1lc1xuICAubmEgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1hdHRyaWJ1dGU7IH1cbiAgLm5iIHsgY29sb3I6ICRjb2RlaGlsaXRlLW5hbWUtYnVpbHRpbjsgfVxuICAuYnAgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1idWlsdGluLXBzZXVkbzsgfVxuICAubmMgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1jbGFzczsgfVxuICAubm8geyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1jb25zdGFudDsgfVxuICAubmQgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1lbnRpdHk7IH1cbiAgLm5pIHsgY29sb3I6ICRjb2RlaGlsaXRlLW5hbWUtZW50aXR5OyB9XG4gIC5uZSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLWV4Y2VwdGlvbjsgfVxuICAubmYgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1mdW5jdGlvbjsgfVxuICAubmwgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1sYWJlbDsgfVxuICAubm4geyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1uYW1lc3BhY2U7IH1cbiAgLm50IHsgY29sb3I6ICRjb2RlaGlsaXRlLW5hbWUtdGFnOyB9XG4gIC5udiB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlOyB9XG4gIC52YyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlLWNsYXNzOyB9XG4gIC52ZyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1uYW1lLXZhcmlhYmxlLWdsb2JhbDsgfVxuICAudmkgeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS12YXJpYWJsZS1pbnN0YW5jZTsgfVxuICAubnggeyBjb2xvcjogJGNvZGVoaWxpdGUtbmFtZS1leHRlbnNpb247IH1cblxuICAvLyBOdW1iZXJzXG4gIC5tICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlcjsgfVxuICAubWYgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItZmxvYXQ7IH1cbiAgLm1oIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtbnVtYmVyLWhleDsgfVxuICAubWkgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItaW50ZWdlcjsgfVxuICAuaWwgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1udW1iZXItaW50ZWdlci1sb25nOyB9XG4gIC5tbyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLW51bWJlci1vY3Q7IH1cblxuICAvLyBTdHJpbmdzXG4gIC5zICB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZzsgfVxuICAuc2IgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctYmFja3RpY2tzOyB9XG4gIC5zYyB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1jaGFyOyB9XG4gIC5zZCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1kb2M7IH1cbiAgLnMyIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLWRvdWJsZTsgfVxuICAuc2UgeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctZXNjYXBlOyB9XG4gIC5zaCB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1oZXJlZG9jOyB9XG4gIC5zaSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1pbnRlcnBvbDsgfVxuICAuc3ggeyBjb2xvcjogJGNvZGVoaWxpdGUtbGl0ZXJhbC1zdHJpbmctb3RoZXI7IH1cbiAgLnNyIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLXJlZ2V4OyB9XG4gIC5zMSB7IGNvbG9yOiAkY29kZWhpbGl0ZS1saXRlcmFsLXN0cmluZy1zaW5nbGU7IH1cbiAgLnNzIHsgY29sb3I6ICRjb2RlaGlsaXRlLWxpdGVyYWwtc3RyaW5nLXN5bWJvbDsgfVxuXG4gIC8vIE1pc2NlbGxhbmVvdXNcbiAgLmVyciB7IGNvbG9yOiAkY29kZWhpbGl0ZS1lcnJvcjsgfVxuICAudyB7IGNvbG9yOiAkY29kZWhpbGl0ZS13aGl0ZXNwYWNlOyB9XG5cbiAgLy8gSGlnaGxpZ2h0ZWQgbGluZXNcbiAgLmhsbCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAwIHB4MnJlbSgtMTJweCk7XG4gICAgcGFkZGluZzogMCBweDJyZW0oMTJweCk7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnRpemUoJGNsci15ZWxsb3ctNTAwLCAwLjUpO1xuXG4gICAgLy8gW21vYmlsZSAtXTogU3RyZXRjaCB0byB3aG9sZSB3aWR0aFxuICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUpIHtcbiAgICAgIG1hcmdpbjogMCBweDJyZW0oLTE2cHgpO1xuICAgICAgcGFkZGluZzogMCBweDJyZW0oMTZweCk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzOiBsYXlvdXRcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQmxvY2sgd2l0aCBsaW5lIG51bWJlcnNcbi5jb2RlaGlsaXRldGFibGUge1xuICBkaXNwbGF5OiBibG9jaztcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAvLyBTZXQgdGFibGUgZWxlbWVudHMgdG8gYmxvY2sgbGF5b3V0LCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgd2hvbGUgZmxleGJveFxuICAvLyBoYWNraW5nIHdvbid0IHdvcmsgY29ycmVjdGx5XG4gIHRib2R5LFxuICB0ZCB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgcGFkZGluZzogMDtcbiAgfVxuXG4gIC8vIFdlIG5lZWQgdG8gdXNlIGZsZXhib3ggbGF5b3V0LCBiZWNhdXNlIG90aGVyd2lzZSBpdCdzIG5vdCBwb3NzaWJsZSB0b1xuICAvLyBtYWtlIHRoZSBjb2RlIGNvbnRhaW5lciBzY3JvbGwgd2hpbGUga2VlcGluZyB0aGUgbGluZSBudW1iZXJzIHN0YXRpY1xuICB0ciB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgfVxuXG4gIC8vIFRoZSBwcmUgdGFncyBhcmUgbmVzdGVkIGluc2lkZSBhIHRhYmxlLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSB0aGVcbiAgLy8gbWFyZ2luIGJlY2F1c2UgaXQgY29sbGFwc2VzIGJlbG93IGFsbCB0aGUgb3ZlcmZsb3dzXG4gIHByZSxcbiAgLmxpbmVub2RpdiB7XG4gICAgbWFyZ2luOiAwO1xuICAgIGJvcmRlci1yYWRpdXM6IDA7XG4gIH1cblxuICAvLyBBZGQgc3BhY2luZyB0byBsaW5lIG51bWJlciBjb250YWluZXJcbiAgLmxpbmVub2RpdiB7XG4gICAgcGFkZGluZzogcHgycmVtKDEwLjVweCkgcHgycmVtKDEycHgpO1xuICB9XG5cbiAgLy8gRGlzYWJsZSB1c2VyIHNlbGVjdGlvbiwgc28gY29kZSBjYW4gYmUgZWFzaWx5IGNvcGllZCB3aXRob3V0XG4gIC8vIGFjY2lkZW50YWxseSBhbHNvIGNvcHlpbmcgdGhlIGxpbmUgbnVtYmVyc1xuICAubGluZW5vcyB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgIGJveC1zaGFkb3c6IGluc2V0IDAgMCAwIHB4MnJlbSgxcHgpIHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuICAgIHVzZXItc2VsZWN0OiBub25lO1xuXG4gICAgLy8gUmVzZXQgc3BhY2luZ3NcbiAgICBwcmUge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XG4gICAgICBjb2xvcjogaW5oZXJpdDtcbiAgICAgIHRleHQtYWxpZ246IHJpZ2h0O1xuICAgIH1cbiAgfVxuXG4gIC8vIFRoZSB0YWJsZSBjZWxsIGNvbnRhaW5pbmcgdGhlIGNvZGUgY29udGFpbmVyIHdyYXBwZXIgYW5kIGNvZGUgc2hvdWxkXG4gIC8vIHN0cmV0Y2ggaG9yaXpvbnRhbGx5IHRvIHRoZSByZW1haW5pbmcgc3BhY2VcbiAgLmNvZGUge1xuICAgIGZsZXg6IDE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgfVxufVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIEJsb2NrIHdpdGggbGluZSBudW1iZXJzXG4gID4gLmNvZGVoaWxpdGV0YWJsZSB7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiAwLjJlbTtcbiAgfVxuXG4gIC8vIFttb2JpbGUgLV06IFN0cmV0Y2ggdG8gd2hvbGUgd2lkdGhcbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuXG4gICAgLy8gRnVsbC13aWR0aCBjb250YWluZXJcbiAgICA+IC5jb2RlaGlsaXRlIHtcbiAgICAgIG1hcmdpbjogMWVtIHB4MnJlbSgtMTZweCk7XG5cbiAgICAgIC8vIEFjdHVhbCBjb250YWluZXIgd2l0aCBjb2RlLCBvdmVyZmxvd2luZ1xuICAgICAgY29kZSB7XG4gICAgICAgIHBhZGRpbmc6IHB4MnJlbSgxMC41cHgpIHB4MnJlbSgxNnB4KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBGdWxsLXdpZHRoIGNvbnRhaW5lciBvbiB0b3AtbGV2ZWxcbiAgICA+IC5jb2RlaGlsaXRldGFibGUge1xuICAgICAgbWFyZ2luOiAxZW0gcHgycmVtKC0xNnB4KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgIC8vIEluY3JlYXNlIHNwYWNpbmdcbiAgICAgIC5saW5lbm9kaXYge1xuICAgICAgICBwYWRkaW5nOiBweDJyZW0oMTBweCkgcHgycmVtKDE2cHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gQWxsIGZvb3Rub3RlIHJlZmVyZW5jZXNcbiAgW2lkXj1cImZucmVmOlwiXSB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuXG4gICAgLy8gVGFyZ2V0ZWQgYW5jaG9yXG4gICAgJjp0YXJnZXQge1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiBweDJyZW0oNDhweCArIDEycHggKyAxNnB4KTtcbiAgICAgIHBhZGRpbmctdG9wOiBweDJyZW0oNDhweCArIDEycHggKyAxNnB4KTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIEFsbCBmb290bm90ZSBiYWNrIHJlZmVyZW5jZXNcbiAgW2lkXj1cImZuOlwiXSB7XG5cbiAgICAvLyBBZGQgc3BhY2luZyB0byBhbmNob3IgZm9yIG9mZnNldFxuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBub25lO1xuICAgICAgaGVpZ2h0OiAwO1xuICAgICAgY29udGVudDogXCJcIjtcbiAgICB9XG5cbiAgICAvLyBUYXJnZXRlZCBhbmNob3JcbiAgICAmOnRhcmdldDo6YmVmb3JlIHtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgbWFyZ2luLXRvcDogLTEgKiBweDJyZW0oNDhweCArIDEycHggKyAxMHB4KTtcbiAgICAgIHBhZGRpbmctdG9wOiBweDJyZW0oNDhweCArIDEycHggKyAxMHB4KTtcbiAgICAgIHBvaW50ZXItZXZlbnRzOiBub25lO1xuICAgIH1cbiAgfVxuXG4gIC8vIEZvb3Rub3RlcyBleHRlbnNpb25cbiAgLmZvb3Rub3RlIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIGZvbnQtc2l6ZTogbXMoLTEpO1xuXG4gICAgLy8gUmVtb3ZlIGFkZGl0aW9uYWwgc3BhY2luZyBvbiBmb290bm90ZXNcbiAgICBvbCB7XG4gICAgICBtYXJnaW4tbGVmdDogMDtcbiAgICB9XG5cbiAgICAvLyBGb290bm90ZVxuICAgIGxpIHtcbiAgICAgIHRyYW5zaXRpb246IGNvbG9yIDI1MG1zO1xuXG4gICAgICAvLyBEYXJrZW4gY29sb3IgZm9yIHRhcmdldGVkIGZvb3Rub3RlXG4gICAgICAmOnRhcmdldCB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgICAgIH1cblxuICAgICAgLy8gUmVtb3ZlIHNwYWNpbmcgb24gZmlyc3QgZWxlbWVudFxuICAgICAgOmZpcnN0LWNoaWxkIHtcbiAgICAgICAgbWFyZ2luLXRvcDogMDtcbiAgICAgIH1cblxuICAgICAgLy8gTWFrZSBiYWNrIHJlZmVyZW5jZXMgdmlzaWJsZSBvbiBob3ZlclxuICAgICAgJjpob3ZlciAgLmZvb3Rub3RlLWJhY2tyZWYsXG4gICAgICAmOnRhcmdldCAuZm9vdG5vdGUtYmFja3JlZiB7XG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgwKTtcbiAgICAgICAgb3BhY2l0eTogMTtcbiAgICAgIH1cblxuICAgICAgLy8gQWN0aXZlIG9yIHRhcmdldGVkIGJhY2sgcmVmZXJlbmNlXG4gICAgICAmOmhvdmVyICAuZm9vdG5vdGUtYmFja3JlZjpob3ZlcixcbiAgICAgICY6dGFyZ2V0IC5mb290bm90ZS1iYWNrcmVmIHtcbiAgICAgICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gRm9vdG5vdGUgcmVmZXJlbmNlXG4gIC5mb290bm90ZS1yZWYge1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICBwb2ludGVyLWV2ZW50czogaW5pdGlhbDtcblxuICAgIC8vIFJlbmRlciBhIHRoaW4gbGluZSBiZWZvcmUgZm9vdG5vdGVcbiAgICAmOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogaW5saW5lO1xuICAgICAgbWFyZ2luOiAwIDAuMmVtO1xuICAgICAgYm9yZGVyLWxlZnQ6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgZm9udC1zaXplOiAxLjI1ZW07XG4gICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgdmVydGljYWwtYWxpZ246IHB4MnJlbSgtNXB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBGb290bm90ZSBiYWNrIHJlZmVyZW5jZVxuICAuZm9vdG5vdGUtYmFja3JlZiB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChweDJyZW0oNXB4KSk7XG4gICAgdHJhbnNpdGlvbjpcbiAgICAgIHRyYW5zZm9ybSAyNTBtcyAyNTBtcyxcbiAgICAgIGNvbG9yICAgICAyNTBtcyxcbiAgICAgIG9wYWNpdHkgICAxMjVtcyAyNTBtcztcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gICAgLy8gSGFjazogcmVtb3ZlIFVuaWNvZGUgYXJyb3cgZm9yIGljb25cbiAgICBmb250LXNpemU6IDA7XG4gICAgb3BhY2l0eTogMDtcbiAgICB2ZXJ0aWNhbC1hbGlnbjogdGV4dC1ib3R0b207XG5cbiAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWChweDJyZW0oLTVweCkpO1xuICAgIH1cblxuICAgIC8vIEJhY2sgcmVmZXJlbmNlIGljb25cbiAgICAmOjpiZWZvcmUge1xuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgICAgd2lkdGg6IHB4MnJlbSgxNnB4KTtcbiAgICAgIGhlaWdodDogcHgycmVtKDE2cHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICAgICAgbWFzay1pbWFnZTogdXJsKFwie3sga2V5Ym9hcmQtcmV0dXJuIH19XCIpO1xuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcblxuICAgICAgICAvLyBGbGlwIGljb24gdmVydGljYWxseVxuICAgICAgICBzdmcge1xuICAgICAgICAgIHRyYW5zZm9ybTogc2NhbGVYKC0xKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gU2NvcGVkIGluIHR5cGVzZXR0ZWQgY29udGVudCB0byBtYXRjaCBzcGVjaWZpY2l0eSBvZiByZWd1bGFyIGNvbnRlbnRcbi5tZC10eXBlc2V0IHtcblxuICAvLyBQZXJtYWxpbmtzIGV4dGVuc2lvblxuICAuaGVhZGVybGluayB7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIG1hcmdpbi1sZWZ0OiBweDJyZW0oMTBweCk7XG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgcHgycmVtKDVweCkpO1xuICAgIHRyYW5zaXRpb246XG4gICAgICB0cmFuc2Zvcm0gIDI1MG1zIDI1MG1zLFxuICAgICAgY29sb3IgICAgICAyNTBtcyxcbiAgICAgIG9wYWNpdHkgICAgMTI1bXMgMjUwbXMsXG4gICAgICB2aXNpYmlsaXR5ICAgMG1zIDUwMG1zO1xuICAgIG9wYWNpdHk6IDA7XG4gICAgLy8gSGFjazogSWYgd2UgZG9uJ3Qgc2V0IHZpc2liaWxpdHkgaGlkZGVuLCB0aGUgdGV4dCBjb250ZW50IG9mIHRoZSBub2RlXG4gICAgLy8gd2lsbCBpbmNsdWRlIHRoZSBoZWFkZXJsaW5rIGNoYXJhY3Rlciwgd2hpY2ggaXMgd2h5IEdvb2dsZSBpbmRleGVzIHRoZW0uXG4gICAgdmlzaWJpbGl0eTogaGlkZGVuO1xuXG4gICAgLy8gQWRqdXN0IGZvciBSVEwgbGFuZ3VhZ2VzXG4gICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDEwcHgpO1xuICAgICAgbWFyZ2luLWxlZnQ6IGluaXRpYWw7XG4gICAgfVxuXG4gICAgLy8gSGlnaGVyIHNwZWNpZmljaXR5IGZvciBjb2xvciBkdWUgdG8gcGFsZXR0ZXMgaW50ZWdyYXRpb25cbiAgICBodG1sIGJvZHkgJiB7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlcik7XG4gICAgfVxuXG4gICAgLy8gSGlkZSBmb3IgcHJpbnRcbiAgICBAbWVkaWEgcHJpbnQge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG4gIH1cblxuICAvLyBNYWtlIHBlcm1hbGluayB2aXNpYmxlIG9uIGhvdmVyXG4gIDpob3ZlciAgLmhlYWRlcmxpbmssXG4gIDp0YXJnZXQgLmhlYWRlcmxpbmssXG4gIC5oZWFkZXJsaW5rOmZvY3VzIHtcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcbiAgICB0cmFuc2l0aW9uOlxuICAgICAgdHJhbnNmb3JtICAyNTBtcyAyNTBtcyxcbiAgICAgIGNvbG9yICAgICAgMjUwbXMsXG4gICAgICBvcGFjaXR5ICAgIDEyNW1zIDI1MG1zLFxuICAgICAgdmlzaWJpbGl0eSAgIDBtcztcbiAgICBvcGFjaXR5OiAxO1xuICAgIHZpc2liaWxpdHk6IHZpc2libGU7XG4gIH1cblxuICAvLyBBY3RpdmUgb3IgdGFyZ2V0ZWQgcGVybWFsaW5rXG4gIC5oZWFkZXJsaW5rOmZvY3VzLFxuICAuaGVhZGVybGluazpob3ZlcixcbiAgOnRhcmdldCAuaGVhZGVybGluayB7XG4gICAgY29sb3I6IHZhcigtLW1kLWFjY2VudC1mZy1jb2xvcik7XG4gIH1cblxuICAvLyBDb3JyZWN0IGFuY2hvciBvZmZzZXQgZm9yIGxpbmsgYmx1cnJpbmdcbiAgQGVhY2ggJGxldmVsLCAkZGVsdGEgaW4gKFxuICAgIGgxIGgyIGgzOiA4cHgsXG4gICAgaDQ6IDlweCxcbiAgICBoNSBoNjogMTJweCxcbiAgKSB7XG4gICAgJSN7bnRoKCRsZXZlbCwgMSl9IHtcblxuICAgICAgLy8gVW4tdGFyZ2V0ZWQgYW5jaG9yXG4gICAgICAmOjpiZWZvcmUge1xuICAgICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgICAgbWFyZ2luLXRvcDogLTEgKiBweDJyZW0oJGRlbHRhKTtcbiAgICAgICAgcGFkZGluZy10b3A6IHB4MnJlbSgkZGVsdGEpO1xuICAgICAgICBjb250ZW50OiBcIlwiO1xuICAgICAgfVxuXG4gICAgICAvLyBUYXJnZXRlZCBhbmNob3IgKDQ4cHggZnJvbSBoZWFkZXIsIDEycHggZnJvbSBzaWRlYmFyIG9mZnNldClcbiAgICAgICY6dGFyZ2V0OjpiZWZvcmUge1xuICAgICAgICBtYXJnaW4tdG9wOiAtMSAqIHB4MnJlbSg0OHB4ICsgMTJweCArICRkZWx0YSk7XG4gICAgICAgIHBhZGRpbmctdG9wOiBweDJyZW0oNDhweCArIDEycHggKyAkZGVsdGEpO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIERlZmluZSBsZXZlbHNcbiAgICBAZm9yICRuIGZyb20gMSB0aHJvdWdoIGxlbmd0aCgkbGV2ZWwpIHtcbiAgICAgICN7bnRoKCRsZXZlbCwgJG4pfVtpZF0ge1xuICAgICAgICBAZXh0ZW5kICUje250aCgkbGV2ZWwsIDEpfTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyBzdHlsZWxpbnQtZGlzYWJsZSBzZWxlY3Rvci1jbGFzcy1wYXR0ZXJuXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gTWF0aEpheCBpbnRlZ3JhdGlvbiAtIGFkZCBwYWRkaW5nIHRvIG9taXQgdmVydGljYWwgc2Nyb2xsYmFyXG4gIC5NSlhjLWRpc3BsYXkge1xuICAgIG1hcmdpbjogMC43NWVtIDA7XG4gICAgcGFkZGluZzogMC43NWVtIDA7XG4gICAgb3ZlcmZsb3c6IGF1dG87XG4gICAgLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6IHRvdWNoO1xuICB9XG5cbiAgLy8gU3RyZXRjaCB0b3AtbGV2ZWwgY29udGFpbmVyc1xuICA+IHAgPiAuTUpYYy1kaXNwbGF5IHtcblxuICAgIC8vIFttb2JpbGUgLV06IFN0cmV0Y2ggdG8gd2hvbGUgd2lkdGhcbiAgICBAaW5jbHVkZSBicmVhay10by1kZXZpY2UobW9iaWxlKSB7XG4gICAgICBtYXJnaW46IDAuNzVlbSBweDJyZW0oLTE2cHgpO1xuICAgICAgcGFkZGluZzogMC4yNWVtIHB4MnJlbSgxNnB4KTtcbiAgICB9XG4gIH1cblxuICAvLyBSZW1vdmUgb3V0bGluZSBvbiB0YWIgaW5kZXhcbiAgLk1hdGhKYXhfQ0hUTUwge1xuICAgIG91dGxpbmU6IDA7XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIERlbGV0aW9ucywgYWRkaXRpb25zIGFuZCBjb21tZW50c1xuICBkZWwuY3JpdGljLFxuICBpbnMuY3JpdGljLFxuICAuY3JpdGljLmNvbW1lbnQge1xuICAgIG1hcmdpbjogMCAwLjI1ZW07XG4gICAgcGFkZGluZzogMC4wNjI1ZW0gMDtcbiAgICBib3JkZXItcmFkaXVzOiBweDJyZW0oMnB4KTtcbiAgICBib3gtZGVjb3JhdGlvbi1icmVhazogY2xvbmU7XG4gIH1cblxuICAvLyBEZWxldGlvblxuICBkZWwuY3JpdGljIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkY29kZWhpbGl0ZS1kaWZmLWRlbGV0ZWQ7XG4gICAgYm94LXNoYWRvdzpcbiAgICAgICswLjI1ZW0gMCAwICRjb2RlaGlsaXRlLWRpZmYtZGVsZXRlZCxcbiAgICAgIC0wLjI1ZW0gMCAwICRjb2RlaGlsaXRlLWRpZmYtZGVsZXRlZDtcbiAgfVxuXG4gIC8vIEFkZGl0aW9uXG4gIGlucy5jcml0aWMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICRjb2RlaGlsaXRlLWRpZmYtaW5zZXJ0ZWQ7XG4gICAgYm94LXNoYWRvdzpcbiAgICAgICswLjI1ZW0gMCAwICRjb2RlaGlsaXRlLWRpZmYtaW5zZXJ0ZWQsXG4gICAgICAtMC4yNWVtIDAgMCAkY29kZWhpbGl0ZS1kaWZmLWluc2VydGVkO1xuICB9XG5cbiAgLy8gQ29tbWVudFxuICAuY3JpdGljLmNvbW1lbnQge1xuICAgIGNvbG9yOiAkY29kZWhpbGl0ZS1jb21tZW50O1xuXG4gICAgLy8gQ29tbWVudCBvcGVuaW5nIG1hcmtcbiAgICAmOjpiZWZvcmUge1xuICAgICAgY29udGVudDogXCIvKiBcIjtcbiAgICB9XG5cbiAgICAvLyBDb21tZW50IGNsb3NpbmcgbWFya1xuICAgICY6OmFmdGVyIHtcbiAgICAgIGNvbnRlbnQ6IFwiICovXCI7XG4gICAgfVxuICB9XG5cbiAgLy8gQmxvY2tcbiAgLmNyaXRpYy5ibG9jayB7XG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgbWFyZ2luOiAxZW0gMDtcbiAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oMTZweCk7XG4gICAgcGFkZGluZy1sZWZ0OiBweDJyZW0oMTZweCk7XG4gICAgYm94LXNoYWRvdzogbm9uZTtcblxuICAgIC8vIERlY3JlYXNlIHNwYWNpbmcgb24gZmlyc3QgZWxlbWVudFxuICAgIDpmaXJzdC1jaGlsZCB7XG4gICAgICBtYXJnaW4tdG9wOiAwLjVlbTtcbiAgICB9XG5cbiAgICAvLyBEZWNyZWFzZSBzcGFjaW5nIG9uIGxhc3QgZWxlbWVudFxuICAgIDpsYXN0LWNoaWxkIHtcbiAgICAgIG1hcmdpbi1ib3R0b206IDAuNWVtO1xuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gRGV0YWlscyBleHRlbnNpb25cbiAgZGV0YWlscyB7XG4gICAgQGV4dGVuZCAuYWRtb25pdGlvbjtcblxuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHBhZGRpbmctdG9wOiAwO1xuXG4gICAgLy8gUm90YXRlIHRpdGxlIGljb25cbiAgICAmW29wZW5dID4gc3VtbWFyeTo6YWZ0ZXIge1xuICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTgwZGVnKTtcbiAgICB9XG5cbiAgICAvLyBSZW1vdmUgYm90dG9tIHNwYWNpbmdcbiAgICAmOm5vdChbb3Blbl0pIHtcbiAgICAgIHBhZGRpbmctYm90dG9tOiAwO1xuXG4gICAgICAvLyBSZW1vdmUgYm90dG9tIGJvcmRlciBpZiBibG9jayBpcyBjbG9zZWRcbiAgICAgID4gc3VtbWFyeSB7XG4gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gSW5jcmVhc2Ugc3BhY2luZyB0byB0aGUgcmlnaHQgLSBzY29wZWQgaGVyZSBmb3IgaGlnaGVyIHNwZWNpZmljaXR5XG4gICAgc3VtbWFyeSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiBweDJyZW0oNDBweCk7XG5cbiAgICAgIC8vIEFkanVzdCBmb3IgcmlnaHQtdG8tbGVmdCBsYW5ndWFnZXNcbiAgICAgIFtkaXI9XCJydGxcIl0gJiB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDQwcHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIFRpdGxlXG4gIHN1bW1hcnkge1xuICAgIEBleHRlbmQgLmFkbW9uaXRpb24tdGl0bGU7XG5cbiAgICAvLyBIYWNrOiBzZXQgdG8gYmxvY2ssIHNvIEZpcmVmb3ggZG9lc24ndCByZW5kZXIgbWFya2VyXG4gICAgZGlzcGxheTogYmxvY2s7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAvLyBSZW1vdmUgZGVmYXVsdCBkZXRhaWxzIG1hcmtlclxuICAgICY6Oi13ZWJraXQtZGV0YWlscy1tYXJrZXIge1xuICAgICAgZGlzcGxheTogbm9uZTtcbiAgICB9XG5cbiAgICAvLyBJY29uXG4gICAgJjo6YWZ0ZXIge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgcmlnaHQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgIHdpZHRoOiBweDJyZW0oMjBweCk7XG4gICAgICBoZWlnaHQ6IHB4MnJlbSgyMHB4KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hldnJvbi1kb3duIH19XCIpO1xuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcmlnaHQ6IGluaXRpYWw7XG4gICAgICAgIGxlZnQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIENvcnJlY3QgYWxpZ25tZW50IG9mIGVtb2ppc1xuICAuZW1vamlvbmUsXG4gIC50d2Vtb2ppLFxuICAuZ2Vtb2ppIHtcbiAgICB3aWR0aDogcHgycmVtKDIwcHgpO1xuICAgIHZlcnRpY2FsLWFsaWduOiB0ZXh0LXRvcDtcbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFdoZW4gcHltZG93bnguc3VwZXJmZW5jZXMgaXMgZW5hYmxlZCBidXQgY29kZWhpbGl0ZSBpcyBkaXNhYmxlZCxcbi8vIHB5bWRvd254LmhpZ2hsaWdodCB3aWxsIGJlIHVzZWQuIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgb3V0ZXIgY29udGFpbmVyXG4vLyBhbmQgdGFibGVzIGdldCB0aGlzIGNsYXNzIG5hbWVzIGJ5IGRlZmF1bHRcbi5oaWdobGlnaHQge1xuICBAZXh0ZW5kIC5jb2RlaGlsaXRlO1xuXG4gIC8vIElubGluZSBsaW5lIG51bWJlcnNcbiAgW2RhdGEtbGluZW5vc10ge1xuICAgICY6OmJlZm9yZSB7XG4gICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICBwb3NpdGlvbjogc3RpY2t5O1xuICAgICAgbGVmdDogcHgycmVtKC0xMnB4KTtcbiAgICAgIG1hcmdpbi1yaWdodDogcHgycmVtKDEycHgpO1xuICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgtMTJweCk7XG4gICAgICBwYWRkaW5nLWxlZnQ6IHB4MnJlbSgxMnB4KTtcbiAgICAgIGJvcmRlci1yaWdodDogcHgycmVtKDFweCkgc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXIpO1xuICAgICAgY29udGVudDogYXR0cihkYXRhLWxpbmVub3MpO1xuICAgICAgdXNlci1zZWxlY3Q6IG5vbmU7XG5cbiAgICAgIC8vIFttb2JpbGUgLV06IFN0cmV0Y2ggdG8gd2hvbGUgd2lkdGhcbiAgICAgIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZShtb2JpbGUpIHtcbiAgICAgICAgbGVmdDogcHgycmVtKC0zMnB4KTtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSgtMzJweCk7XG4gICAgICAgIHBhZGRpbmctbGVmdDogcHgycmVtKDMycHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG4vLyBTYW1lIGFzIGFib3ZlLCBidXQgZm9yIGNvZGUgYmxvY2tzIHdpdGggbGluZSBudW1iZXJzIGVuYWJsZWRcbi5oaWdobGlnaHR0YWJsZSB7XG4gIEBleHRlbmQgLmNvZGVoaWxpdGV0YWJsZTtcbn1cbiIsIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBTY29wZWQgaW4gdHlwZXNldHRlZCBjb250ZW50IHRvIG1hdGNoIHNwZWNpZmljaXR5IG9mIHJlZ3VsYXIgY29udGVudFxuLm1kLXR5cGVzZXQge1xuXG4gIC8vIFF1YWxpZmllZCBjbGFzcyBzZWxlY3RvciB0byBkaXN0aW5ndWlzaCBpbmxpbmUgY29kZSBmcm9tIGNvZGUgYmxvY2tzXG4gIGNvZGUuY29kZWhpbGl0ZSB7XG4gICAgJGNvcnJlY3Q6IDEgLyAwLjg1O1xuXG4gICAgbWFyZ2luOiAwIDAuMjVlbSAqICRjb3JyZWN0O1xuICAgIHBhZGRpbmc6IDAuMDYyNWVtICogJGNvcnJlY3QgMDtcbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gVGFiYmVkIGNvZGUgYmxvY2sgY29udGVudFxuICAudGFiYmVkLWNvbnRlbnQge1xuICAgIGRpc3BsYXk6IG5vbmU7XG4gICAgb3JkZXI6IDk5O1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWNvZGUtYmctY29sb3IpO1xuXG4gICAgLy8gQWN0dWFsIGNvbnRlbnRcbiAgICBwcmUge1xuICAgICAgbWFyZ2luOiAwO1xuICAgICAgYm9yZGVyLXJhZGl1czogMFxuICAgIH1cbiAgfVxuXG4gIC8vIFRhYmJlZCBjb2RlIGJsb2NrIGNvbnRhaW5lclxuICAudGFiYmVkLXNldCB7XG4gICAgZGlzcGxheTogZmxleDtcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgZmxleC13cmFwOiB3cmFwO1xuICAgIG1hcmdpbjogMWVtIDA7XG4gICAgYm9yZGVyOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgYm9yZGVyLXJhZGl1czogcHgycmVtKDJweCk7XG5cbiAgICAvLyBIaWRlIHJhZGlvIGJ1dHRvbnNcbiAgICA+IGlucHV0IHtcbiAgICAgIGRpc3BsYXk6IG5vbmU7XG5cbiAgICAgIC8vIEFjdGl2ZSB0YWIgbGFiZWxcbiAgICAgICY6Y2hlY2tlZCArIGxhYmVsIHtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1tZC1hY2NlbnQtZmctY29sb3IpO1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcblxuICAgICAgICAvLyBTaG93IGNvZGUgdGFiIGNvbnRlbnRcbiAgICAgICAgJiArIC50YWJiZWQtY29udGVudCB7XG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgICAgICAgcGFkZGluZzogMCBweDJyZW0oMTJweCk7XG5cbiAgICAgICAgICAvLyBBZGp1c3Qgc3BhY2luZyBvbiBsYXN0IGVsZW1lbnRcbiAgICAgICAgICA+IDpsYXN0LWNoaWxkIHtcbiAgICAgICAgICAgIG1hcmdpbi1ib3R0b206IHB4MnJlbSgxMnB4KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICAvLyBFbXVsYXRlIG9yaWdpbmFsIHB5bWRvd254LnN1cGVyZmVuY2VzIGJlaGF2aW9yIGFuZCBzdHJldGNoIHRvIGZ1bGxcbiAgICAgICAgICAvLyB3aWR0aCBhbmQgaGVpZ2h0IHdoZW4gYSBjb2RlIGJsb2NrIGlzIHRoZSBvbmx5IGNoaWxkIG9mIGEgdGFiXG4gICAgICAgICAgPiB7XG4gICAgICAgICAgICBwcmUsXG4gICAgICAgICAgICAuaGlnaGxpZ2h0LFxuICAgICAgICAgICAgLmhpZ2hsaWdodHRhYmxlLFxuICAgICAgICAgICAgLmNvZGVoaWxpdGUsXG4gICAgICAgICAgICAuY29kZWhpbGl0ZXRhYmxlIHtcbiAgICAgICAgICAgICAgJjpvbmx5LWNoaWxkIHtcbiAgICAgICAgICAgICAgICBtYXJnaW46IDAgcHgycmVtKC0xMnB4KTtcblxuICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBkb3VibGUgYmFja2dyb3VuZFxuICAgICAgICAgICAgICAgIHByZSB7XG4gICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBUYWIgbGFiZWxcbiAgICA+IGxhYmVsIHtcbiAgICAgIHdpZHRoOiBhdXRvO1xuICAgICAgcGFkZGluZzogcHgycmVtKDEycHgpO1xuICAgICAgcGFkZGluZy1ib3R0b206IHB4MnJlbSgxMHB4KTtcbiAgICAgIHRyYW5zaXRpb246XG4gICAgICAgIGNvbG9yIDEyNW1zLFxuICAgICAgICBib3JkZXIgMjUwbXM7XG4gICAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMnB4KSBzb2xpZCB0cmFuc3BhcmVudDtcbiAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICBmb250LXNpemU6IG1zKC0xKTtcbiAgICAgIGZvbnQtd2VpZ2h0OiA3MDA7XG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XG5cbiAgICAgIC8vIEhvdmVyZWQgdGFiIGxhYmVsXG4gICAgICBodG1sICY6aG92ZXIge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtYWNjZW50LWZnLWNvbG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGdWxsLXdpZHRoIGNvbnRhaW5lciBvbiB0b3AtbGV2ZWxcbiAgPiAudGFiYmVkLXNldCB7XG5cbiAgICAvLyBbbW9iaWxlIC1dOiBTdHJldGNoIHRvIHdob2xlIHdpZHRoXG4gICAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKG1vYmlsZSkge1xuICAgICAgbWFyZ2luOiAxZW0gcHgycmVtKC0xNnB4KTtcbiAgICAgIGJvcmRlcjogMDtcbiAgICAgIGJvcmRlci10b3A6IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICAgIGJvcmRlci1yYWRpdXM6IDA7XG5cbiAgICAgIC8vIEFjdHVhbCBjb250YWluZXIgd2l0aCBjb2RlLCBvdmVyZmxvd2luZ1xuICAgICAgY29kZSB7XG4gICAgICAgIHBhZGRpbmc6IHB4MnJlbSgxMC41cHgpIHB4MnJlbSgxNnB4KTtcbiAgICAgIH1cblxuICAgICAgLy8gRmlyc3QgdGFiIGxhYmVsXG4gICAgICBpbnB1dDpmaXJzdC1jaGlsZCArIGxhYmVsIHtcbiAgICAgICAgbWFyZ2luLWxlZnQ6IHB4MnJlbSg0cHgpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuIiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vIFNjb3BlZCBpbiB0eXBlc2V0dGVkIGNvbnRlbnQgdG8gbWF0Y2ggc3BlY2lmaWNpdHkgb2YgcmVndWxhciBjb250ZW50XG4ubWQtdHlwZXNldCB7XG5cbiAgLy8gUmVtb3ZlIGxpc3QgaWNvbiBvbiB0YXNrIGl0ZW1zXG4gIC50YXNrLWxpc3QtaXRlbSB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGxpc3Qtc3R5bGUtdHlwZTogbm9uZTtcblxuICAgIC8vIE1ha2UgY2hlY2tib3ggaXRlbXMgYWxpZ24gd2l0aCBub3JtYWwgbGlzdCBpdGVtcywgYnV0IHBvc2l0aW9uXG4gICAgLy8gZXZlcnl0aGluZyBpbiBlbXMgZm9yIGNvcnJlY3QgbGF5b3V0IGF0IHNtYWxsZXIgZm9udCBzaXplc1xuICAgIFt0eXBlPVwiY2hlY2tib3hcIl0ge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwLjQ1ZW07XG4gICAgICBsZWZ0OiAtMmVtO1xuXG4gICAgICAvLyBBZGp1c3QgZm9yIHJpZ2h0LXRvLWxlZnQgbGFuZ3VhZ2VzXG4gICAgICBbZGlyPVwicnRsXCJdICYge1xuICAgICAgICByaWdodDogLTJlbTtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBXcmFwcGVyIGZvciBsaXN0IGNvbnRyb2xzLCBpbiBjYXNlIGN1c3RvbSBjaGVja2JveGVzIGFyZSBlbmFibGVkXG4gIC50YXNrLWxpc3QtY29udHJvbCB7XG5cbiAgICAvLyBDaGVja2JveCBpY29uIGluIHVuY2hlY2tlZCBzdGF0ZVxuICAgIC50YXNrLWxpc3QtaW5kaWNhdG9yOjpiZWZvcmUge1xuICAgICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgICAgdG9wOiAwLjE1ZW07XG4gICAgICBsZWZ0OiBweDJlbSgtMjRweCk7XG4gICAgICB3aWR0aDogcHgyZW0oMjBweCk7XG4gICAgICBoZWlnaHQ6IHB4MmVtKDIwcHgpO1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgbWFzay1pbWFnZTogdXJsKFwie3sgY2hlY2tib3gtYmxhbmstY2lyY2xlIH19XCIpO1xuICAgICAgY29udGVudDogXCJcIjtcblxuICAgICAgLy8gQWRqdXN0IGZvciByaWdodC10by1sZWZ0IGxhbmd1YWdlc1xuICAgICAgW2Rpcj1cInJ0bFwiXSAmIHtcbiAgICAgICAgcmlnaHQ6IHB4MmVtKC0yNHB4KTtcbiAgICAgICAgbGVmdDogaW5pdGlhbDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBDaGVja2JveCBpY29uIGluIGNoZWNrZWQgc3RhdGVcbiAgICBbdHlwZT1cImNoZWNrYm94XCJdOmNoZWNrZWQgKyAudGFzay1saXN0LWluZGljYXRvcjo6YmVmb3JlIHtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICRjbHItZ3JlZW4tYTQwMDtcbiAgICAgIG1hc2staW1hZ2U6IHVybChcInt7IGNoZWNrLWNpcmNsZSB9fVwiKTtcbiAgICB9XG5cbiAgICAvLyBIaWRlIG9yaWdpbmFsIGNoZWNrYm94IGJlaGluZCBpY29uXG4gICAgW3R5cGU9XCJjaGVja2JveFwiXSB7XG4gICAgICBvcGFjaXR5OiAwO1xuICAgICAgei1pbmRleDogLTE7XG4gICAgfVxuICB9XG59XG4iLCIvLy8vXG4vLy8gQ29weXJpZ2h0IChjKSAyMDE2LTIwMjAgTWFydGluIERvbmF0aCA8bWFydGluLmRvbmF0aEBzcXVpZGZ1bmsuY29tPlxuLy8vXG4vLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksXG4vLy8gdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvblxuLy8vIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLFxuLy8vIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZVxuLy8vIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vLy9cbi8vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy8vXG4vLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8vIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04tSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTFxuLy8vIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLy8gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkdcbi8vLyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSXG4vLy8gREVBTElOR1Ncbi8vLy9cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gVmFyaWFibGVzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vL1xuLy8vIERldmljZS1zcGVjaWZpYyBicmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGVcbi8vLyAgICRicmVhay1kZXZpY2VzOiAoXG4vLy8gICAgIG1vYmlsZTogKFxuLy8vICAgICAgIHBvcnRyYWl0OiAgMjIwcHggIDQ3OXB4LFxuLy8vICAgICAgIGxhbmRzY2FwZTogNDgwcHggIDcxOXB4XG4vLy8gICAgICksXG4vLy8gICAgIHRhYmxldDogKFxuLy8vICAgICAgIHBvcnRyYWl0OiAgNzIwcHggIDk1OXB4LFxuLy8vICAgICAgIGxhbmRzY2FwZTogOTYwcHggIDEyMTlweFxuLy8vICAgICApLFxuLy8vICAgICBzY3JlZW46IChcbi8vLyAgICAgICBzbWFsbDogICAgIDEyMjBweCAxNTk5cHgsXG4vLy8gICAgICAgbWVkaXVtOiAgICAxNjAwcHggMTk5OXB4LFxuLy8vICAgICAgIGxhcmdlOiAgICAgMjAwMHB4XG4vLy8gICAgIClcbi8vLyAgICk7XG4vLy9cbiRicmVhay1kZXZpY2VzOiAoKSAhZGVmYXVsdDtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gSGVscGVyc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy9cbi8vLyBDaG9vc2UgbWluaW11bSBhbmQgbWF4aW11bSBkZXZpY2Ugd2lkdGhzXG4vLy9cbkBmdW5jdGlvbiBicmVhay1zZWxlY3QtbWluLW1heCgkZGV2aWNlcykge1xuICAkbWluOiAxMDAwMDAwO1xuICAkbWF4OiAwO1xuICBAZWFjaCAka2V5LCAkdmFsdWUgaW4gJGRldmljZXMge1xuICAgIEB3aGlsZSB0eXBlLW9mKCR2YWx1ZSkgPT0gbWFwIHtcbiAgICAgICR2YWx1ZTogYnJlYWstc2VsZWN0LW1pbi1tYXgoJHZhbHVlKTtcbiAgICB9XG4gICAgQGlmIHR5cGUtb2YoJHZhbHVlKSA9PSBsaXN0IHtcbiAgICAgIEBlYWNoICRudW1iZXIgaW4gJHZhbHVlIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJG51bWJlcikgPT0gbnVtYmVyIHtcbiAgICAgICAgICAkbWluOiBtaW4oJG51bWJlciwgJG1pbik7XG4gICAgICAgICAgQGlmICRtYXggIT0gbnVsbCB7XG4gICAgICAgICAgICAkbWF4OiBtYXgoJG51bWJlciwgJG1heCk7XG4gICAgICAgICAgfVxuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICBAZXJyb3IgXCJJbnZhbGlkIG51bWJlcjogI3skbnVtYmVyfVwiO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBAZWxzZSBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbnVtYmVyIHtcbiAgICAgICRtaW46IG1pbigkdmFsdWUsICRtaW4pO1xuICAgICAgJG1heDogbnVsbDtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgdmFsdWU6ICN7JHZhbHVlfVwiO1xuICAgIH1cbiAgfVxuICBAcmV0dXJuICRtaW4sICRtYXg7XG59XG5cbi8vL1xuLy8vIFNlbGVjdCBtaW5pbXVtIGFuZCBtYXhpbXVtIHdpZHRocyBmb3IgYSBkZXZpY2UgYnJlYWtwb2ludFxuLy8vXG5AZnVuY3Rpb24gYnJlYWstc2VsZWN0LWRldmljZSgkZGV2aWNlKSB7XG4gICRjdXJyZW50OiAkYnJlYWstZGV2aWNlcztcbiAgQGZvciAkbiBmcm9tIDEgdGhyb3VnaCBsZW5ndGgoJGRldmljZSkge1xuICAgIEBpZiB0eXBlLW9mKCRjdXJyZW50KSA9PSBtYXAge1xuICAgICAgJGN1cnJlbnQ6IG1hcC1nZXQoJGN1cnJlbnQsIG50aCgkZGV2aWNlLCAkbikpO1xuICAgIH0gQGVsc2Uge1xuICAgICAgQGVycm9yIFwiSW52YWxpZCBkZXZpY2UgbWFwOiAjeyRkZXZpY2VzfVwiO1xuICAgIH1cbiAgfVxuICBAaWYgdHlwZS1vZigkY3VycmVudCkgPT0gbGlzdCBvciB0eXBlLW9mKCRjdXJyZW50KSA9PSBudW1iZXIge1xuICAgICRjdXJyZW50OiAoZGVmYXVsdDogJGN1cnJlbnQpO1xuICB9XG4gIEByZXR1cm4gYnJlYWstc2VsZWN0LW1pbi1tYXgoJGN1cnJlbnQpO1xufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBNaXhpbnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vXG4vLy8gQSBtaW5pbXVtLW1heGltdW0gbWVkaWEgcXVlcnkgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstYXQoJGJyZWFrcG9pbnQpIHtcbiAgQGlmIHR5cGUtb2YoJGJyZWFrcG9pbnQpID09IG51bWJlciB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJGJyZWFrcG9pbnQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSBpZiB0eXBlLW9mKCRicmVha3BvaW50KSA9PSBsaXN0IHtcbiAgICAkbWluOiBudGgoJGJyZWFrcG9pbnQsIDEpO1xuICAgICRtYXg6IG50aCgkYnJlYWtwb2ludCwgMik7XG4gICAgQGlmIHR5cGUtb2YoJG1pbikgPT0gbnVtYmVyIGFuZCB0eXBlLW9mKCRtYXgpID09IG51bWJlciB7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIjtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIjtcbiAgfVxufVxuXG4vLy9cbi8vLyBBbiBvcmllbnRhdGlvbiBtZWRpYSBxdWVyeSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1hdC1vcmllbnRhdGlvbigkYnJlYWtwb2ludCkge1xuICBAaWYgdHlwZS1vZigkYnJlYWtwb2ludCkgPT0gc3RyaW5nIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAob3JpZW50YXRpb246ICRicmVha3BvaW50KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgYnJlYWtwb2ludDogI3skYnJlYWtwb2ludH1cIjtcbiAgfVxufVxuXG4vLy9cbi8vLyBBIG1heGltdW0tYXNwZWN0LXJhdGlvIG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRcbi8vL1xuQG1peGluIGJyZWFrLWF0LXJhdGlvKCRicmVha3BvaW50KSB7XG4gIEBpZiB0eXBlLW9mKCRicmVha3BvaW50KSA9PSBudW1iZXIge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtYXNwZWN0LXJhdGlvOiAkYnJlYWtwb2ludCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtaW5pbXVtLW1heGltdW0gbWVkaWEgcXVlcnkgZGV2aWNlIGJyZWFrcG9pbnRcbi8vL1xuQG1peGluIGJyZWFrLWF0LWRldmljZSgkZGV2aWNlKSB7XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IHN0cmluZyB7XG4gICAgJGRldmljZTogJGRldmljZSw7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGRldmljZSkgPT0gbGlzdCB7XG4gICAgJGJyZWFrcG9pbnQ6IGJyZWFrLXNlbGVjdC1kZXZpY2UoJGRldmljZSk7XG4gICAgQGlmIG50aCgkYnJlYWtwb2ludCwgMikgIT0gbnVsbCB7XG4gICAgICAkbWluOiBudGgoJGJyZWFrcG9pbnQsIDEpO1xuICAgICAgJG1heDogbnRoKCRicmVha3BvaW50LCAyKTtcbiAgICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRtaW4pIGFuZCAobWF4LXdpZHRoOiAkbWF4KSB7XG4gICAgICAgIEBjb250ZW50O1xuICAgICAgfVxuICAgIH0gQGVsc2Uge1xuICAgICAgQGVycm9yIFwiSW52YWxpZCBkZXZpY2U6ICN7JGRldmljZX1cIjtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlOiAjeyRkZXZpY2V9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtaW5pbXVtIG1lZGlhIHF1ZXJ5IGRldmljZSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1mcm9tLWRldmljZSgkZGV2aWNlKSB7XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IHN0cmluZyB7XG4gICAgJGRldmljZTogJGRldmljZSw7XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGRldmljZSkgPT0gbGlzdCB7XG4gICAgJGJyZWFrcG9pbnQ6IGJyZWFrLXNlbGVjdC1kZXZpY2UoJGRldmljZSk7XG4gICAgJG1pbjogbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2Uge1xuICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlOiAjeyRkZXZpY2V9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtYXhpbXVtIG1lZGlhIHF1ZXJ5IGRldmljZSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay10by1kZXZpY2UoJGRldmljZSkge1xuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBzdHJpbmcge1xuICAgICRkZXZpY2U6ICRkZXZpY2UsO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IGxpc3Qge1xuICAgICRicmVha3BvaW50OiBicmVhay1zZWxlY3QtZGV2aWNlKCRkZXZpY2UpO1xuICAgICRtYXg6IG50aCgkYnJlYWtwb2ludCwgMik7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGRldmljZTogI3skZGV2aWNlfVwiO1xuICB9XG59XG4iXX0= */ \ No newline at end of file diff --git a/material/assets/stylesheets/palette.css b/material/assets/stylesheets/palette.css new file mode 100644 index 000000000..59d6558b4 --- /dev/null +++ b/material/assets/stylesheets/palette.css @@ -0,0 +1,290 @@ +[data-md-color-primary=red] { + --md-primary-fg-color: hsla(1deg, 83%, 63%, 1); + --md-primary-fg-color--light: hsla(0deg, 73%, 77%, 1); + --md-primary-fg-color--dark: hsla(1deg, 77%, 55%, 1); +} + +[data-md-color-primary=pink] { + --md-primary-fg-color: hsla(340deg, 82%, 52%, 1); + --md-primary-fg-color--light: hsla(340deg, 82%, 76%, 1); + --md-primary-fg-color--dark: hsla(336deg, 78%, 43%, 1); +} + +[data-md-color-primary=purple] { + --md-primary-fg-color: hsla(291deg, 47%, 51%, 1); + --md-primary-fg-color--light: hsla(291deg, 47%, 71%, 1); + --md-primary-fg-color--dark: hsla(287deg, 65%, 40%, 1); +} + +[data-md-color-primary=deep-purple] { + --md-primary-fg-color: hsla(262deg, 47%, 55%, 1); + --md-primary-fg-color--light: hsla(261deg, 46%, 74%, 1); + --md-primary-fg-color--dark: hsla(262deg, 52%, 47%, 1); +} + +[data-md-color-primary=indigo] { + --md-primary-fg-color: hsla(231deg, 48%, 48%, 1); + --md-primary-fg-color--light: hsla(231deg, 44%, 74%, 1); + --md-primary-fg-color--dark: hsla(232deg, 54%, 41%, 1); +} + +[data-md-color-primary=blue] { + --md-primary-fg-color: hsla(207deg, 90%, 54%, 1); + --md-primary-fg-color--light: hsla(207deg, 90%, 77%, 1); + --md-primary-fg-color--dark: hsla(210deg, 79%, 46%, 1); +} + +[data-md-color-primary=light-blue] { + --md-primary-fg-color: hsla(199deg, 98%, 48%, 1); + --md-primary-fg-color--light: hsla(199deg, 92%, 74%, 1); + --md-primary-fg-color--dark: hsla(201deg, 98%, 41%, 1); +} + +[data-md-color-primary=cyan] { + --md-primary-fg-color: hsla(187deg, 100%, 42%, 1); + --md-primary-fg-color--light: hsla(187deg, 72%, 71%, 1); + --md-primary-fg-color--dark: hsla(186deg, 100%, 33%, 1); +} + +[data-md-color-primary=teal] { + --md-primary-fg-color: hsla(174deg, 100%, 29%, 1); + --md-primary-fg-color--light: hsla(174deg, 42%, 65%, 1); + --md-primary-fg-color--dark: hsla(173deg, 100%, 24%, 1); +} + +[data-md-color-primary=green] { + --md-primary-fg-color: hsla(122deg, 39%, 49%, 1); + --md-primary-fg-color--light: hsla(122deg, 37%, 74%, 1); + --md-primary-fg-color--dark: hsla(123deg, 43%, 39%, 1); +} + +[data-md-color-primary=light-green] { + --md-primary-fg-color: hsla(88deg, 50%, 53%, 1); + --md-primary-fg-color--light: hsla(88deg, 50%, 76%, 1); + --md-primary-fg-color--dark: hsla(92deg, 48%, 42%, 1); +} + +[data-md-color-primary=lime] { + --md-primary-fg-color: hsla(66deg, 70%, 54%, 1); + --md-primary-fg-color--light: hsla(66deg, 71%, 77%, 1); + --md-primary-fg-color--dark: hsla(62deg, 61%, 44%, 1); + --md-primary-bg-color: var(--md-default-fg-color); + --md-primary-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-primary=yellow] { + --md-primary-fg-color: hsla(54deg, 100%, 67%, 1); + --md-primary-fg-color--light: hsla(54deg, 100%, 81%, 1); + --md-primary-fg-color--dark: hsla(49deg, 98%, 60%, 1); + --md-primary-bg-color: var(--md-default-fg-color); + --md-primary-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-primary=amber] { + --md-primary-fg-color: hsla(45deg, 100%, 51%, 1); + --md-primary-fg-color--light: hsla(45deg, 100%, 75%, 1); + --md-primary-fg-color--dark: hsla(38deg, 100%, 50%, 1); + --md-primary-bg-color: var(--md-default-fg-color); + --md-primary-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-primary=orange] { + --md-primary-fg-color: hsla(36deg, 100%, 57%, 1); + --md-primary-fg-color--light: hsla(36deg, 100%, 75%, 1); + --md-primary-fg-color--dark: hsla(33deg, 100%, 49%, 1); + --md-primary-bg-color: var(--md-default-fg-color); + --md-primary-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-primary=deep-orange] { + --md-primary-fg-color: hsla(14deg, 100%, 63%, 1); + --md-primary-fg-color--light: hsla(14deg, 100%, 78%, 1); + --md-primary-fg-color--dark: hsla(14deg, 91%, 54%, 1); +} + +[data-md-color-primary=brown] { + --md-primary-fg-color: hsla(16deg, 25%, 38%, 1); + --md-primary-fg-color--light: hsla(15deg, 15%, 69%, 1); + --md-primary-fg-color--dark: hsla(14deg, 26%, 29%, 1); +} + +[data-md-color-primary=grey] { + --md-primary-fg-color: hsla(0deg, 0%, 46%, 1); + --md-primary-fg-color--light: hsla(0deg, 0%, 93%, 1); + --md-primary-fg-color--dark: hsla(0deg, 0%, 38%, 1); +} + +[data-md-color-primary=blue-grey] { + --md-primary-fg-color: hsla(199deg, 18%, 40%, 1); + --md-primary-fg-color--light: hsla(200deg, 15%, 73%, 1); + --md-primary-fg-color--dark: hsla(199deg, 18%, 33%, 1); +} + +[data-md-color-primary=white] .md-header { + background-color: var(--md-default-bg-color); + color: var(--md-default-fg-color); +} +[data-md-color-primary=white] .md-hero { + background-color: var(--md-default-bg-color); + color: var(--md-default-fg-color); +} +[data-md-color-primary=white] .md-hero--expand { + border-bottom: 0.05rem solid var(--md-default-fg-color--lightest); +} + +[data-md-color-primary=black] .md-header { + background-color: black; +} +[data-md-color-primary=black] .md-hero { + background-color: black; +} + +[data-md-color-accent=red] { + --md-accent-fg-color: hsla(348deg, 100%, 55%, 1); + --md-accent-fg-color--transparent: hsla(348deg, 100%, 55%, 0.1); +} + +[data-md-color-accent=pink] { + --md-accent-fg-color: hsla(339deg, 100%, 48%, 1); + --md-accent-fg-color--transparent: hsla(339deg, 100%, 48%, 0.1); +} + +[data-md-color-accent=purple] { + --md-accent-fg-color: hsla(291deg, 96%, 62%, 1); + --md-accent-fg-color--transparent: hsla(291deg, 96%, 62%, 0.1); +} + +[data-md-color-accent=deep-purple] { + --md-accent-fg-color: hsla(256deg, 100%, 65%, 1); + --md-accent-fg-color--transparent: hsla(256deg, 100%, 65%, 0.1); +} + +[data-md-color-accent=indigo] { + --md-accent-fg-color: hsla(231deg, 99%, 66%, 1); + --md-accent-fg-color--transparent: hsla(231deg, 99%, 66%, 0.1); +} + +[data-md-color-accent=blue] { + --md-accent-fg-color: hsla(218deg, 100%, 63%, 1); + --md-accent-fg-color--transparent: hsla(218deg, 100%, 63%, 0.1); +} + +[data-md-color-accent=light-blue] { + --md-accent-fg-color: hsla(203deg, 100%, 46%, 1); + --md-accent-fg-color--transparent: hsla(203deg, 100%, 46%, 0.1); +} + +[data-md-color-accent=cyan] { + --md-accent-fg-color: hsla(188deg, 100%, 42%, 1); + --md-accent-fg-color--transparent: hsla(188deg, 100%, 42%, 0.1); +} + +[data-md-color-accent=teal] { + --md-accent-fg-color: hsla(172deg, 100%, 37%, 1); + --md-accent-fg-color--transparent: hsla(172deg, 100%, 37%, 0.1); +} + +[data-md-color-accent=green] { + --md-accent-fg-color: hsla(145deg, 100%, 39%, 1); + --md-accent-fg-color--transparent: hsla(145deg, 100%, 39%, 0.1); +} + +[data-md-color-accent=light-green] { + --md-accent-fg-color: hsla(97deg, 81%, 48%, 1); + --md-accent-fg-color--transparent: hsla(97deg, 81%, 48%, 0.1); +} + +[data-md-color-accent=lime] { + --md-accent-fg-color: hsla(75deg, 100%, 46%, 1); + --md-accent-fg-color--transparent: hsla(75deg, 100%, 46%, 0.1); + --md-accent-bg-color: var(--md-default-fg-color); + --md-accent-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-accent=yellow] { + --md-accent-fg-color: hsla(50deg, 100%, 50%, 1); + --md-accent-fg-color--transparent: hsla(50deg, 100%, 50%, 0.1); + --md-accent-bg-color: var(--md-default-fg-color); + --md-accent-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-accent=amber] { + --md-accent-fg-color: hsla(40deg, 100%, 50%, 1); + --md-accent-fg-color--transparent: hsla(40deg, 100%, 50%, 0.1); + --md-accent-bg-color: var(--md-default-fg-color); + --md-accent-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-accent=orange] { + --md-accent-fg-color: hsla(34deg, 100%, 50%, 1); + --md-accent-fg-color--transparent: hsla(34deg, 100%, 50%, 0.1); + --md-accent-bg-color: var(--md-default-fg-color); + --md-accent-bg-color--light: var(--md-default-fg-color--light); +} + +[data-md-color-accent=deep-orange] { + --md-accent-fg-color: hsla(14deg, 100%, 63%, 1); + --md-accent-fg-color--transparent: hsla(14deg, 100%, 63%, 0.1); +} + +@media screen and (max-width: 59.9375em) { + [data-md-color-primary=white] .md-nav__source { + background-color: var(--md-default-fg-color--lightest); + color: var(--md-default-fg-color); + } + [data-md-color-primary=black] .md-nav__source { + background-color: var(--md-default-fg-color); + } +} + +@media screen and (min-width: 60em) { + [data-md-color-primary=white] .md-search__input { + background-color: var(--md-default-fg-color--lightest); + } + [data-md-color-primary=white] .md-search__input + .md-search__icon { + color: var(--md-default-fg-color); + } + [data-md-color-primary=white] .md-search__input::-webkit-input-placeholder { + color: var(--md-default-fg-color--light); + } + [data-md-color-primary=white] .md-search__input::-moz-placeholder { + color: var(--md-default-fg-color--light); + } + [data-md-color-primary=white] .md-search__input::-ms-input-placeholder { + color: var(--md-default-fg-color--light); + } + [data-md-color-primary=white] .md-search__input::placeholder { + color: var(--md-default-fg-color--light); + } + [data-md-color-primary=black] .md-search__input { + background-color: var(--md-default-bg-color--lightest); + } +} + +@media screen and (max-width: 76.1875em) { + html [data-md-color-primary=white] .md-nav--primary .md-nav__title[for=__drawer] { + background-color: var(--md-default-bg-color); + color: var(--md-default-fg-color); + } + [data-md-color-primary=white] .md-hero { + border-bottom: 0.05rem solid var(--md-default-fg-color--lightest); + } + html [data-md-color-primary=black] .md-nav--primary .md-nav__title[for=__drawer] { + background-color: black; + } +} + +@media screen and (min-width: 76.25em) { + [data-md-color-primary=white] .md-tabs { + border-bottom: 0.05rem solid var(--md-default-fg-color--lightest); + background-color: var(--md-default-bg-color); + color: var(--md-default-fg-color); + } + [data-md-color-primary=black] .md-tabs { + background-color: black; + } +} +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/palette.scss */ +/*# sourceURL=palette.scss */ +/*# sourceURL=/Users/squidfunk/Desktop/General/Sources/mkdocs-material-typescript/src/assets/stylesheets/utilities/_break.scss */ +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9Vc2Vycy9zcXVpZGZ1bmsvRGVza3RvcC9HZW5lcmFsL1NvdXJjZXMvbWtkb2NzLW1hdGVyaWFsLXR5cGVzY3JpcHQvc3JjL2Fzc2V0cy9zdHlsZXNoZWV0cy9wYWxldHRlLnNjc3MiLCJwYWxldHRlLnNjc3MiLCIvVXNlcnMvc3F1aWRmdW5rL0Rlc2t0b3AvR2VuZXJhbC9Tb3VyY2VzL21rZG9jcy1tYXRlcmlhbC10eXBlc2NyaXB0L3NyYy9hc3NldHMvc3R5bGVzaGVldHMvdXRpbGl0aWVzL19icmVhay5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWlFRTtFQUNFLDhDQUFBO0VBQ0EscURBQUE7RUFDQSxvREFBQTtBQ2hFSjs7QUQ2REU7RUFDRSxnREFBQTtFQUNBLHVEQUFBO0VBQ0Esc0RBQUE7QUMxREo7O0FEdURFO0VBQ0UsZ0RBQUE7RUFDQSx1REFBQTtFQUNBLHNEQUFBO0FDcERKOztBRGlERTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtBQzlDSjs7QUQyQ0U7RUFDRSxnREFBQTtFQUNBLHVEQUFBO0VBQ0Esc0RBQUE7QUN4Q0o7O0FEcUNFO0VBQ0UsZ0RBQUE7RUFDQSx1REFBQTtFQUNBLHNEQUFBO0FDbENKOztBRCtCRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtBQzVCSjs7QUR5QkU7RUFDRSxpREFBQTtFQUNBLHVEQUFBO0VBQ0EsdURBQUE7QUN0Qko7O0FEbUJFO0VBQ0UsaURBQUE7RUFDQSx1REFBQTtFQUNBLHVEQUFBO0FDaEJKOztBRGFFO0VBQ0UsZ0RBQUE7RUFDQSx1REFBQTtFQUNBLHNEQUFBO0FDVko7O0FET0U7RUFDRSwrQ0FBQTtFQUNBLHNEQUFBO0VBQ0EscURBQUE7QUNKSjs7QURDRTtFQUNFLCtDQUFBO0VBQ0Esc0RBQUE7RUFDQSxxREFBQTtFQUlFLGlEQUFBO0VBQ0EsK0RBQUE7QUNETjs7QURQRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxxREFBQTtFQUlFLGlEQUFBO0VBQ0EsK0RBQUE7QUNPTjs7QURmRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtFQUlFLGlEQUFBO0VBQ0EsK0RBQUE7QUNlTjs7QUR2QkU7RUFDRSxnREFBQTtFQUNBLHVEQUFBO0VBQ0Esc0RBQUE7RUFJRSxpREFBQTtFQUNBLCtEQUFBO0FDdUJOOztBRC9CRTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxxREFBQTtBQ2tDSjs7QURyQ0U7RUFDRSwrQ0FBQTtFQUNBLHNEQUFBO0VBQ0EscURBQUE7QUN3Q0o7O0FEM0NFO0VBQ0UsNkNBQUE7RUFDQSxvREFBQTtFQUNBLG1EQUFBO0FDOENKOztBRGpERTtFQUNFLGdEQUFBO0VBQ0EsdURBQUE7RUFDQSxzREFBQTtBQ29ESjs7QURsQ0U7RUFDRSw0Q0FBQTtFQUNBLGlDQUFBO0FDcUNKO0FEakNFO0VBQ0UsNENBQUE7RUFDQSxpQ0FBQTtBQ21DSjtBRGhDSTtFQUNFLGlFQUFBO0FDa0NOOztBRGtDRTtFQUNFLHVCQUFBO0FDL0JKO0FEbUNFO0VBQ0UsdUJBQUE7QUNqQ0o7O0FEaUdFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQzlGSjs7QUQ0RkU7RUFDRSxnREFBQTtFQUNBLCtEQUFBO0FDekZKOztBRHVGRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7QUNwRko7O0FEa0ZFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQy9FSjs7QUQ2RUU7RUFDRSwrQ0FBQTtFQUNBLDhEQUFBO0FDMUVKOztBRHdFRTtFQUNFLGdEQUFBO0VBQ0EsK0RBQUE7QUNyRUo7O0FEbUVFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQ2hFSjs7QUQ4REU7RUFDRSxnREFBQTtFQUNBLCtEQUFBO0FDM0RKOztBRHlERTtFQUNFLGdEQUFBO0VBQ0EsK0RBQUE7QUN0REo7O0FEb0RFO0VBQ0UsZ0RBQUE7RUFDQSwrREFBQTtBQ2pESjs7QUQrQ0U7RUFDRSw4Q0FBQTtFQUNBLDZEQUFBO0FDNUNKOztBRDBDRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDMUNOOztBRG1DRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDbkNOOztBRDRCRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDNUJOOztBRHFCRTtFQUNFLCtDQUFBO0VBQ0EsOERBQUE7RUFJRSxnREFBQTtFQUNBLDhEQUFBO0FDckJOOztBRGNFO0VBQ0UsK0NBQUE7RUFDQSw4REFBQTtBQ1hKOztBQ3RCSTtFRm5HQTtJQUNFLHNEQUFBO0lBQ0EsaUNBQUE7RUM2SEo7RUR0REU7SUFDRSw0Q0FBQTtFQ3dESjtBQUNGOztBQ2xESTtFRnZFQTtJQUNFLHNEQUFBO0VDNkhKO0VEMUhJO0lBQ0UsaUNBQUE7RUM0SE47RUR4SEk7SUFDRSx3Q0FBQTtFQzBITjtFRDNISTtJQUNFLHdDQUFBO0VDNkhOO0VEOUhJO0lBQ0Usd0NBQUE7RUNnSU47RURqSUk7SUFDRSx3Q0FBQTtFQ21JTjtFRHJFRTtJQUNFLHNEQUFBO0VDdUVKO0FBQ0Y7O0FDeERJO0VGdEVBO0lBQ0UsNENBQUE7SUFDQSxpQ0FBQTtFQ2tJSjtFRDlIRTtJQUNFLGlFQUFBO0VDZ0lKO0VEekVFO0lBQ0UsdUJBQUE7RUMyRUo7QUFDRjs7QUN2Rkk7RUZyQ0E7SUFDRSxpRUFBQTtJQUNBLDRDQUFBO0lBQ0EsaUNBQUE7RUNnSUo7RUQzRUU7SUFDRSx1QkFBQTtFQzZFSjtBQUNGIiwiZmlsZSI6InBhbGV0dGUuc2NzcyIsInNvdXJjZXNDb250ZW50IjpbIi8vLy9cbi8vLyBDb3B5cmlnaHQgKGMpIDIwMTYtMjAyMCBNYXJ0aW4gRG9uYXRoIDxtYXJ0aW4uZG9uYXRoQHNxdWlkZnVuay5jb20+XG4vLy9cbi8vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgXCJTb2Z0d2FyZVwiKSxcbi8vLyB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uXG4vLy8gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsXG4vLy8gYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20gdGhlXG4vLy8gU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vL1xuLy8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkIGluXG4vLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vLy9cbi8vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SXG4vLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTi1JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMXG4vLy8gVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lOR1xuLy8vIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVJcbi8vLyBERUFMSU5HU1xuLy8vL1xuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBEZXBlbmRlbmNpZXNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGltcG9ydCBcIm1vZHVsYXJzY2FsZVwiO1xuQGltcG9ydCBcIm1hdGVyaWFsLWNvbG9yXCI7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIExvY2FsIGltcG9ydHNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuQGltcG9ydCBcInV0aWxpdGllcy9icmVha1wiO1xuQGltcG9ydCBcInV0aWxpdGllcy9jb252ZXJ0XCI7XG5cbkBpbXBvcnQgXCJjb25maWdcIjtcblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gUnVsZXM6IHByaW1hcnkgY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBlYWNoICRuYW1lLCAkY29sb3JzIGluIChcbiAgXCJyZWRcIjogICAgICAgICAkY2xyLXJlZC00MDAgICAgICAgICAkY2xyLXJlZC0yMDAgICAgICAgICAkY2xyLXJlZC02MDAsXG4gIFwicGlua1wiOiAgICAgICAgJGNsci1waW5rLTUwMCAgICAgICAgJGNsci1waW5rLTIwMCAgICAgICAgJGNsci1waW5rLTcwMCxcbiAgXCJwdXJwbGVcIjogICAgICAkY2xyLXB1cnBsZS00MDAgICAgICAkY2xyLXB1cnBsZS0yMDAgICAgICAkY2xyLXB1cnBsZS02MDAsXG4gIFwiZGVlcC1wdXJwbGVcIjogJGNsci1kZWVwLXB1cnBsZS00MDAgJGNsci1kZWVwLXB1cnBsZS0yMDAgJGNsci1kZWVwLXB1cnBsZS01MDAsXG4gIFwiaW5kaWdvXCI6ICAgICAgJGNsci1pbmRpZ28tNTAwICAgICAgJGNsci1pbmRpZ28tMjAwICAgICAgJGNsci1pbmRpZ28tNzAwLFxuICBcImJsdWVcIjogICAgICAgICRjbHItYmx1ZS01MDAgICAgICAgICRjbHItYmx1ZS0yMDAgICAgICAgICRjbHItYmx1ZS03MDAsXG4gIFwibGlnaHQtYmx1ZVwiOiAgJGNsci1saWdodC1ibHVlLTUwMCAgJGNsci1saWdodC1ibHVlLTIwMCAgJGNsci1saWdodC1ibHVlLTcwMCxcbiAgXCJjeWFuXCI6ICAgICAgICAkY2xyLWN5YW4tNTAwICAgICAgICAkY2xyLWN5YW4tMjAwICAgICAgICAkY2xyLWN5YW4tNzAwLFxuICBcInRlYWxcIjogICAgICAgICRjbHItdGVhbC01MDAgICAgICAgICRjbHItdGVhbC0yMDAgICAgICAgICRjbHItdGVhbC03MDAsXG4gIFwiZ3JlZW5cIjogICAgICAgJGNsci1ncmVlbi01MDAgICAgICAgJGNsci1ncmVlbi0yMDAgICAgICAgJGNsci1ncmVlbi03MDAsXG4gIFwibGlnaHQtZ3JlZW5cIjogJGNsci1saWdodC1ncmVlbi01MDAgJGNsci1saWdodC1ncmVlbi0yMDAgJGNsci1saWdodC1ncmVlbi03MDAsXG4gIFwibGltZVwiOiAgICAgICAgJGNsci1saW1lLTUwMCAgICAgICAgJGNsci1saW1lLTIwMCAgICAgICAgJGNsci1saW1lLTcwMCxcbiAgXCJ5ZWxsb3dcIjogICAgICAkY2xyLXllbGxvdy00MDAgICAgICAkY2xyLXllbGxvdy0yMDAgICAgICAkY2xyLXllbGxvdy02MDAsXG4gIFwiYW1iZXJcIjogICAgICAgJGNsci1hbWJlci01MDAgICAgICAgJGNsci1hbWJlci0yMDAgICAgICAgJGNsci1hbWJlci03MDAsXG4gIFwib3JhbmdlXCI6ICAgICAgJGNsci1vcmFuZ2UtNDAwICAgICAgJGNsci1vcmFuZ2UtMjAwICAgICAgJGNsci1vcmFuZ2UtNjAwLFxuICBcImRlZXAtb3JhbmdlXCI6ICRjbHItZGVlcC1vcmFuZ2UtNDAwICRjbHItZGVlcC1vcmFuZ2UtMjAwICRjbHItZGVlcC1vcmFuZ2UtNjAwLFxuICBcImJyb3duXCI6ICAgICAgICRjbHItYnJvd24tNTAwICAgICAgICRjbHItYnJvd24tMjAwICAgICAgICRjbHItYnJvd24tNzAwLFxuICBcImdyZXlcIjogICAgICAgICRjbHItZ3JleS02MDAgICAgICAgICRjbHItZ3JleS0yMDAgICAgICAgICRjbHItZ3JleS03MDAsXG4gIFwiYmx1ZS1ncmV5XCI6ICAgJGNsci1ibHVlLWdyZXktNjAwICAgJGNsci1ibHVlLWdyZXktMjAwICAgJGNsci1ibHVlLWdyZXktNzAwXG4pIHtcblxuICAvLyBDb2xvciBwYWxldHRlXG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9XCIjeyRuYW1lfVwiXSB7XG4gICAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiAgICAgICAgICAgICBoc2xhKCN7aGV4MmhzbChudGgoJGNvbG9ycywgMSkpfSwgMSk7XG4gICAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogICAgICBoc2xhKCN7aGV4MmhzbChudGgoJGNvbG9ycywgMikpfSwgMSk7XG4gICAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiAgICAgICBoc2xhKCN7aGV4MmhzbChudGgoJGNvbG9ycywgMykpfSwgMSk7XG5cbiAgICAvLyBJbnZlcnRlZCB0ZXh0IGZvciBsaWdodGVyIHNoYWRlc1xuICAgIEBpZiBpbmRleChcImxpbWVcIiBcInllbGxvd1wiIFwiYW1iZXJcIiBcIm9yYW5nZVwiLCAkbmFtZSkge1xuICAgICAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yOiAgICAgICAgICAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgICAtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0OiAgICB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzOiB3aGl0ZVxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLyBDb2xvciBwYWxldHRlXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PVwid2hpdGVcIl0ge1xuXG4gIC8vIEFwcGxpY2F0aW9uIGhlYWRlciAoc3RheXMgYWx3YXlzIG9uIHRvcClcbiAgLm1kLWhlYWRlciB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICB9XG5cbiAgLy8gSGVybyB0ZWFzZXJcbiAgLm1kLWhlcm8ge1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcblxuICAgIC8vIEFkZCBhIGJvcmRlciBpZiB0aGVyZSBhcmUgbm8gdGFic1xuICAgICYtLWV4cGFuZCB7XG4gICAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gW3RhYmxldCBwb3J0cmFpdCAtXTogTGF5ZXJlZCBuYXZpZ2F0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQgcG9ydHJhaXQpIHtcblxuICAgIC8vIFJlcG9zaXRvcnkgY29udGFpbmluZyBzb3VyY2VcbiAgICAubWQtbmF2X19zb3VyY2Uge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFt0YWJsZXQgcG9ydHJhaXQgK106IENoYW5nZSBjb2xvciBvZiBzZWFyY2ggaW5wdXRcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2UodGFibGV0IGxhbmRzY2FwZSkge1xuXG4gICAgLy8gU2VhcmNoIGlucHV0XG4gICAgLm1kLXNlYXJjaF9faW5wdXQge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuXG4gICAgICAvLyBJY29uIGNvbG9yXG4gICAgICArIC5tZC1zZWFyY2hfX2ljb24ge1xuICAgICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgICB9XG5cbiAgICAgIC8vIFBsYWNlaG9sZGVyIGNvbG9yXG4gICAgICAmOjpwbGFjZWhvbGRlciB7XG4gICAgICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gW3RhYmxldCAtXTogTGF5ZXJlZCBuYXZpZ2F0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgIC8vIFNpdGUgdGl0bGUgaW4gbWFpbiBuYXZpZ2F0aW9uXG4gICAgaHRtbCAmIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1iZy1jb2xvcik7XG4gICAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gICAgfVxuXG4gICAgLy8gSGVybyB0ZWFzZXJcbiAgICAubWQtaGVybyB7XG4gICAgICBib3JkZXItYm90dG9tOiBweDJyZW0oMXB4KSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gW3NjcmVlbiArXTogU2V0IGJhY2tncm91bmQgY29sb3IgZm9yIHRhYnNcbiAgQGluY2x1ZGUgYnJlYWstZnJvbS1kZXZpY2Uoc2NyZWVuKSB7XG5cbiAgICAvLyBUYWJzIHdpdGggb3V0bGluZVxuICAgIC5tZC10YWJzIHtcbiAgICAgIGJvcmRlci1ib3R0b206IHB4MnJlbSgxcHgpIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICAgICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAgIH1cbiAgfVxufVxuXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4vLyBSdWxlczogYmxhY2tcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8gQ29sb3IgcGFsZXR0ZVxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1cImJsYWNrXCJdIHtcblxuICAvLyBBcHBsaWNhdGlvbiBoZWFkZXIgKHN0YXlzIGFsd2F5cyBvbiB0b3ApXG4gIC5tZC1oZWFkZXIge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGhzbGEoMCwgMCUsIDAlLCAxKTtcbiAgfVxuXG4gIC8vIEhlcm8gdGVhc2VyXG4gIC5tZC1oZXJvIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMSk7XG4gIH1cblxuICAvLyBbdGFibGV0IHBvcnRyYWl0IC1dOiBMYXllcmVkIG5hdmlnYXRpb25cbiAgQGluY2x1ZGUgYnJlYWstdG8tZGV2aWNlKHRhYmxldCBwb3J0cmFpdCkge1xuXG4gICAgLy8gUmVwb3NpdG9yeSBjb250YWluaW5nIHNvdXJjZVxuICAgIC5tZC1uYXZfX3NvdXJjZSB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgICB9XG4gIH1cblxuICAvLyBbdGFibGV0IGxhbmRzY2FwZSArXTogSGVhZGVyLWVtYmVkZGVkIHNlYXJjaFxuICBAaW5jbHVkZSBicmVhay1mcm9tLWRldmljZSh0YWJsZXQgbGFuZHNjYXBlKSB7XG5cbiAgICAvLyBTZWFyY2ggaW5wdXRcbiAgICAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgfVxuICB9XG5cbiAgLy8gW3RhYmxldCAtXTogTGF5ZXJlZCBuYXZpZ2F0aW9uXG4gIEBpbmNsdWRlIGJyZWFrLXRvLWRldmljZSh0YWJsZXQpIHtcblxuICAgIC8vIFNpdGUgdGl0bGUgaW4gbWFpbiBuYXZpZ2F0aW9uXG4gICAgaHRtbCAmIC5tZC1uYXYtLXByaW1hcnkgLm1kLW5hdl9fdGl0bGVbZm9yPVwiX19kcmF3ZXJcIl0ge1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogaHNsYSgwLCAwJSwgMCUsIDEpO1xuICAgIH1cbiAgfVxuXG4gIC8vIFtzY3JlZW4gK106IFNldCBiYWNrZ3JvdW5kIGNvbG9yIGZvciB0YWJzXG4gIEBpbmNsdWRlIGJyZWFrLWZyb20tZGV2aWNlKHNjcmVlbikge1xuXG4gICAgLy8gVGFicyB3aXRoIG91dGxpbmVcbiAgICAubWQtdGFicyB7XG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBoc2xhKDAsIDAlLCAwJSwgMSk7XG4gICAgfVxuICB9XG59XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFJ1bGVzOiBhY2NlbnQgY29sb3JzXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkBlYWNoICRuYW1lLCAkY29sb3IgaW4gKFxuICBcInJlZFwiOiAgICAgICAgICRjbHItcmVkLWE0MDAsXG4gIFwicGlua1wiOiAgICAgICAgJGNsci1waW5rLWE0MDAsXG4gIFwicHVycGxlXCI6ICAgICAgJGNsci1wdXJwbGUtYTIwMCxcbiAgXCJkZWVwLXB1cnBsZVwiOiAkY2xyLWRlZXAtcHVycGxlLWEyMDAsXG4gIFwiaW5kaWdvXCI6ICAgICAgJGNsci1pbmRpZ28tYTIwMCxcbiAgXCJibHVlXCI6ICAgICAgICAkY2xyLWJsdWUtYTIwMCxcbiAgXCJsaWdodC1ibHVlXCI6ICAkY2xyLWxpZ2h0LWJsdWUtYTcwMCxcbiAgXCJjeWFuXCI6ICAgICAgICAkY2xyLWN5YW4tYTcwMCxcbiAgXCJ0ZWFsXCI6ICAgICAgICAkY2xyLXRlYWwtYTcwMCxcbiAgXCJncmVlblwiOiAgICAgICAkY2xyLWdyZWVuLWE3MDAsXG4gIFwibGlnaHQtZ3JlZW5cIjogJGNsci1saWdodC1ncmVlbi1hNzAwLFxuICBcImxpbWVcIjogICAgICAgICRjbHItbGltZS1hNzAwLFxuICBcInllbGxvd1wiOiAgICAgICRjbHIteWVsbG93LWE3MDAsXG4gIFwiYW1iZXJcIjogICAgICAgJGNsci1hbWJlci1hNzAwLFxuICBcIm9yYW5nZVwiOiAgICAgICRjbHItb3JhbmdlLWE0MDAsXG4gIFwiZGVlcC1vcmFuZ2VcIjogJGNsci1kZWVwLW9yYW5nZS1hMjAwXG4pIHtcblxuICAvLyBDb2xvciBwYWxldHRlXG4gIFtkYXRhLW1kLWNvbG9yLWFjY2VudD1cIiN7JG5hbWV9XCJdIHtcbiAgICAtLW1kLWFjY2VudC1mZy1jb2xvcjogICAgICAgICAgICAgIGhzbGEoI3toZXgyaHNsKCRjb2xvcil9LCAxKTtcbiAgICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoI3toZXgyaHNsKCRjb2xvcil9LCAwLjEpO1xuXG4gICAgLy8gSW52ZXJ0ZWQgdGV4dCBmb3IgbGlnaHRlciBzaGFkZXNcbiAgICBAaWYgaW5kZXgoXCJsaW1lXCIgXCJ5ZWxsb3dcIiBcImFtYmVyXCIgXCJvcmFuZ2VcIiwgJG5hbWUpIHtcbiAgICAgIC0tbWQtYWNjZW50LWJnLWNvbG9yOiAgICAgICAgICAgIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAgICAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiAgICAgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICAgIH1cbiAgfVxufVxuIiwiW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1yZWRdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDFkZWcsIDgzJSwgNjMlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgwZGVnLCA3MyUsIDc3JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgxZGVnLCA3NyUsIDU1JSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9cGlua10ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMzQwZGVnLCA4MiUsIDUyJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMzQwZGVnLCA4MiUsIDc2JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgzMzZkZWcsIDc4JSwgNDMlLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1wdXJwbGVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDI5MWRlZywgNDclLCA1MSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDI5MWRlZywgNDclLCA3MSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjg3ZGVnLCA2NSUsIDQwJSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9ZGVlcC1wdXJwbGVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDI2MmRlZywgNDclLCA1NSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDI2MWRlZywgNDYlLCA3NCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjYyZGVnLCA1MiUsIDQ3JSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9aW5kaWdvXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgyMzFkZWcsIDQ4JSwgNDglLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgyMzFkZWcsIDQ0JSwgNzQlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDIzMmRlZywgNTQlLCA0MSUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWJsdWVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDIwN2RlZywgOTAlLCA1NCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDIwN2RlZywgOTAlLCA3NyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMjEwZGVnLCA3OSUsIDQ2JSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9bGlnaHQtYmx1ZV0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTk5ZGVnLCA5OCUsIDQ4JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMTk5ZGVnLCA5MiUsIDc0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgyMDFkZWcsIDk4JSwgNDElLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1jeWFuXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgxODdkZWcsIDEwMCUsIDQyJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMTg3ZGVnLCA3MiUsIDcxJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgxODZkZWcsIDEwMCUsIDMzJSwgMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9dGVhbF0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTc0ZGVnLCAxMDAlLCAyOSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDE3NGRlZywgNDIlLCA2NSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMTczZGVnLCAxMDAlLCAyNCUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWdyZWVuXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgxMjJkZWcsIDM5JSwgNDklLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgxMjJkZWcsIDM3JSwgNzQlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDEyM2RlZywgNDMlLCAzOSUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWxpZ2h0LWdyZWVuXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSg4OGRlZywgNTAlLCA1MyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDg4ZGVnLCA1MCUsIDc2JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSg5MmRlZywgNDglLCA0MiUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWxpbWVdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDY2ZGVnLCA3MCUsIDU0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoNjZkZWcsIDcxJSwgNzclLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDYyZGVnLCA2MSUsIDQ0JSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIC0tbWQtcHJpbWFyeS1iZy1jb2xvci0tbGlnaHQ6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT15ZWxsb3ddIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDU0ZGVnLCAxMDAlLCA2NyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDU0ZGVnLCAxMDAlLCA4MSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoNDlkZWcsIDk4JSwgNjAlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLS1tZC1wcmltYXJ5LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWFtYmVyXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSg0NWRlZywgMTAwJSwgNTElLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSg0NWRlZywgMTAwJSwgNzUlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDM4ZGVnLCAxMDAlLCA1MCUsIDEpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9b3JhbmdlXSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgzNmRlZywgMTAwJSwgNTclLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgzNmRlZywgMTAwJSwgNzUlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDMzZGVnLCAxMDAlLCA0OSUsIDEpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAtLW1kLXByaW1hcnktYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9ZGVlcC1vcmFuZ2VdIHtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yOiBoc2xhKDE0ZGVnLCAxMDAlLCA2MyUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWxpZ2h0OiBoc2xhKDE0ZGVnLCAxMDAlLCA3OCUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMTRkZWcsIDkxJSwgNTQlLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1icm93bl0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTZkZWcsIDI1JSwgMzglLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgxNWRlZywgMTUlLCA2OSUsIDEpO1xuICAtLW1kLXByaW1hcnktZmctY29sb3ItLWRhcms6IGhzbGEoMTRkZWcsIDI2JSwgMjklLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1ncmV5XSB7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvcjogaHNsYSgwZGVnLCAwJSwgNDYlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1saWdodDogaHNsYSgwZGVnLCAwJSwgOTMlLCAxKTtcbiAgLS1tZC1wcmltYXJ5LWZnLWNvbG9yLS1kYXJrOiBoc2xhKDBkZWcsIDAlLCAzOCUsIDEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PWJsdWUtZ3JleV0ge1xuICAtLW1kLXByaW1hcnktZmctY29sb3I6IGhzbGEoMTk5ZGVnLCAxOCUsIDQwJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tbGlnaHQ6IGhzbGEoMjAwZGVnLCAxNSUsIDczJSwgMSk7XG4gIC0tbWQtcHJpbWFyeS1mZy1jb2xvci0tZGFyazogaHNsYSgxOTlkZWcsIDE4JSwgMzMlLCAxKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLWhlYWRlciB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PXdoaXRlXSAubWQtaGVybyB7XG4gIGJhY2tncm91bmQtY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtYmctY29sb3IpO1xuICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG59XG5bZGF0YS1tZC1jb2xvci1wcmltYXJ5PXdoaXRlXSAubWQtaGVyby0tZXhwYW5kIHtcbiAgYm9yZGVyLWJvdHRvbTogMC4wNXJlbSBzb2xpZCB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1oZWFkZXIge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbn1cbltkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1oZXJvIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1yZWRdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMzQ4ZGVnLCAxMDAlLCA1NSUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMzQ4ZGVnLCAxMDAlLCA1NSUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1waW5rXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDMzOWRlZywgMTAwJSwgNDglLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDMzOWRlZywgMTAwJSwgNDglLCAwLjEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9cHVycGxlXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDI5MWRlZywgOTYlLCA2MiUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMjkxZGVnLCA5NiUsIDYyJSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PWRlZXAtcHVycGxlXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDI1NmRlZywgMTAwJSwgNjUlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDI1NmRlZywgMTAwJSwgNjUlLCAwLjEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9aW5kaWdvXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDIzMWRlZywgOTklLCA2NiUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMjMxZGVnLCA5OSUsIDY2JSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PWJsdWVdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMjE4ZGVnLCAxMDAlLCA2MyUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMjE4ZGVnLCAxMDAlLCA2MyUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1saWdodC1ibHVlXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDIwM2RlZywgMTAwJSwgNDYlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDIwM2RlZywgMTAwJSwgNDYlLCAwLjEpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9Y3lhbl0ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSgxODhkZWcsIDEwMCUsIDQyJSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgxODhkZWcsIDEwMCUsIDQyJSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PXRlYWxdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMTcyZGVnLCAxMDAlLCAzNyUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoMTcyZGVnLCAxMDAlLCAzNyUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1ncmVlbl0ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSgxNDVkZWcsIDEwMCUsIDM5JSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgxNDVkZWcsIDEwMCUsIDM5JSwgMC4xKTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PWxpZ2h0LWdyZWVuXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDk3ZGVnLCA4MSUsIDQ4JSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSg5N2RlZywgODElLCA0OCUsIDAuMSk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1saW1lXSB7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yOiBoc2xhKDc1ZGVnLCAxMDAlLCA0NiUsIDEpO1xuICAtLW1kLWFjY2VudC1mZy1jb2xvci0tdHJhbnNwYXJlbnQ6IGhzbGEoNzVkZWcsIDEwMCUsIDQ2JSwgMC4xKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvci0tbGlnaHQ6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0KTtcbn1cblxuW2RhdGEtbWQtY29sb3ItYWNjZW50PXllbGxvd10ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSg1MGRlZywgMTAwJSwgNTAlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDUwZGVnLCAxMDAlLCA1MCUsIDAuMSk7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1hbWJlcl0ge1xuICAtLW1kLWFjY2VudC1mZy1jb2xvcjogaHNsYSg0MGRlZywgMTAwJSwgNTAlLCAxKTtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3ItLXRyYW5zcGFyZW50OiBoc2xhKDQwZGVnLCAxMDAlLCA1MCUsIDAuMSk7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yKTtcbiAgLS1tZC1hY2NlbnQtYmctY29sb3ItLWxpZ2h0OiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG59XG5cbltkYXRhLW1kLWNvbG9yLWFjY2VudD1vcmFuZ2VdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMzRkZWcsIDEwMCUsIDUwJSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgzNGRlZywgMTAwJSwgNTAlLCAwLjEpO1xuICAtLW1kLWFjY2VudC1iZy1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIC0tbWQtYWNjZW50LWJnLWNvbG9yLS1saWdodDogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xufVxuXG5bZGF0YS1tZC1jb2xvci1hY2NlbnQ9ZGVlcC1vcmFuZ2VdIHtcbiAgLS1tZC1hY2NlbnQtZmctY29sb3I6IGhzbGEoMTRkZWcsIDEwMCUsIDYzJSwgMSk7XG4gIC0tbWQtYWNjZW50LWZnLWNvbG9yLS10cmFuc3BhcmVudDogaHNsYSgxNGRlZywgMTAwJSwgNjMlLCAwLjEpO1xufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA1OS45Mzc1ZW0pIHtcbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLW5hdl9fc291cmNlIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodGVzdCk7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1uYXZfX3NvdXJjZSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogNjBlbSkge1xuICBbZGF0YS1tZC1jb2xvci1wcmltYXJ5PXdoaXRlXSAubWQtc2VhcmNoX19pbnB1dCB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0ICsgLm1kLXNlYXJjaF9faWNvbiB7XG4gICAgY29sb3I6IHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3IpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0OjotbW96LXBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC1zZWFyY2hfX2lucHV0OjotbXMtaW5wdXQtcGxhY2Vob2xkZXIge1xuICAgIGNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWZnLWNvbG9yLS1saWdodCk7XG4gIH1cbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLXNlYXJjaF9faW5wdXQ6OnBsYWNlaG9sZGVyIHtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHQpO1xuICB9XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9YmxhY2tdIC5tZC1zZWFyY2hfX2lucHV0IHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yLS1saWdodGVzdCk7XG4gIH1cbn1cblxuQG1lZGlhIHNjcmVlbiBhbmQgKG1heC13aWR0aDogNzYuMTg3NWVtKSB7XG4gIGh0bWwgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZVtmb3I9X19kcmF3ZXJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIH1cbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT13aGl0ZV0gLm1kLWhlcm8ge1xuICAgIGJvcmRlci1ib3R0b206IDAuMDVyZW0gc29saWQgdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvci0tbGlnaHRlc3QpO1xuICB9XG4gIGh0bWwgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1ibGFja10gLm1kLW5hdi0tcHJpbWFyeSAubWQtbmF2X190aXRsZVtmb3I9X19kcmF3ZXJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBibGFjaztcbiAgfVxufVxuXG5AbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiA3Ni4yNWVtKSB7XG4gIFtkYXRhLW1kLWNvbG9yLXByaW1hcnk9d2hpdGVdIC5tZC10YWJzIHtcbiAgICBib3JkZXItYm90dG9tOiAwLjA1cmVtIHNvbGlkIHZhcigtLW1kLWRlZmF1bHQtZmctY29sb3ItLWxpZ2h0ZXN0KTtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1tZC1kZWZhdWx0LWJnLWNvbG9yKTtcbiAgICBjb2xvcjogdmFyKC0tbWQtZGVmYXVsdC1mZy1jb2xvcik7XG4gIH1cbiAgW2RhdGEtbWQtY29sb3ItcHJpbWFyeT1ibGFja10gLm1kLXRhYnMge1xuICAgIGJhY2tncm91bmQtY29sb3I6IGJsYWNrO1xuICB9XG59IiwiLy8vL1xuLy8vIENvcHlyaWdodCAoYykgMjAxNi0yMDIwIE1hcnRpbiBEb25hdGggPG1hcnRpbi5kb25hdGhAc3F1aWRmdW5rLmNvbT5cbi8vL1xuLy8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLFxuLy8vIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb25cbi8vLyB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSxcbi8vLyBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGVcbi8vLyBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy8vXG4vLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vLyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vL1xuLy8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vLyBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSxcbi8vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OLUlORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTExcbi8vLyBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUlxuLy8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HXG4vLy8gRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUlxuLy8vIERFQUxJTkdTXG4vLy8vXG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIFZhcmlhYmxlc1xuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4vLy9cbi8vLyBEZXZpY2Utc3BlY2lmaWMgYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlXG4vLy8gICAkYnJlYWstZGV2aWNlczogKFxuLy8vICAgICBtb2JpbGU6IChcbi8vLyAgICAgICBwb3J0cmFpdDogIDIyMHB4ICA0NzlweCxcbi8vLyAgICAgICBsYW5kc2NhcGU6IDQ4MHB4ICA3MTlweFxuLy8vICAgICApLFxuLy8vICAgICB0YWJsZXQ6IChcbi8vLyAgICAgICBwb3J0cmFpdDogIDcyMHB4ICA5NTlweCxcbi8vLyAgICAgICBsYW5kc2NhcGU6IDk2MHB4ICAxMjE5cHhcbi8vLyAgICAgKSxcbi8vLyAgICAgc2NyZWVuOiAoXG4vLy8gICAgICAgc21hbGw6ICAgICAxMjIwcHggMTU5OXB4LFxuLy8vICAgICAgIG1lZGl1bTogICAgMTYwMHB4IDE5OTlweCxcbi8vLyAgICAgICBsYXJnZTogICAgIDIwMDBweFxuLy8vICAgICApXG4vLy8gICApO1xuLy8vXG4kYnJlYWstZGV2aWNlczogKCkgIWRlZmF1bHQ7XG5cbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbi8vIEhlbHBlcnNcbi8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuLy8vXG4vLy8gQ2hvb3NlIG1pbmltdW0gYW5kIG1heGltdW0gZGV2aWNlIHdpZHRoc1xuLy8vXG5AZnVuY3Rpb24gYnJlYWstc2VsZWN0LW1pbi1tYXgoJGRldmljZXMpIHtcbiAgJG1pbjogMTAwMDAwMDtcbiAgJG1heDogMDtcbiAgQGVhY2ggJGtleSwgJHZhbHVlIGluICRkZXZpY2VzIHtcbiAgICBAd2hpbGUgdHlwZS1vZigkdmFsdWUpID09IG1hcCB7XG4gICAgICAkdmFsdWU6IGJyZWFrLXNlbGVjdC1taW4tbWF4KCR2YWx1ZSk7XG4gICAgfVxuICAgIEBpZiB0eXBlLW9mKCR2YWx1ZSkgPT0gbGlzdCB7XG4gICAgICBAZWFjaCAkbnVtYmVyIGluICR2YWx1ZSB7XG4gICAgICAgIEBpZiB0eXBlLW9mKCRudW1iZXIpID09IG51bWJlciB7XG4gICAgICAgICAgJG1pbjogbWluKCRudW1iZXIsICRtaW4pO1xuICAgICAgICAgIEBpZiAkbWF4ICE9IG51bGwge1xuICAgICAgICAgICAgJG1heDogbWF4KCRudW1iZXIsICRtYXgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBAZWxzZSB7XG4gICAgICAgICAgQGVycm9yIFwiSW52YWxpZCBudW1iZXI6ICN7JG51bWJlcn1cIjtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gQGVsc2UgaWYgdHlwZS1vZigkdmFsdWUpID09IG51bWJlciB7XG4gICAgICAkbWluOiBtaW4oJHZhbHVlLCAkbWluKTtcbiAgICAgICRtYXg6IG51bGw7XG4gICAgfSBAZWxzZSB7XG4gICAgICBAZXJyb3IgXCJJbnZhbGlkIHZhbHVlOiAjeyR2YWx1ZX1cIjtcbiAgICB9XG4gIH1cbiAgQHJldHVybiAkbWluLCAkbWF4O1xufVxuXG4vLy9cbi8vLyBTZWxlY3QgbWluaW11bSBhbmQgbWF4aW11bSB3aWR0aHMgZm9yIGEgZGV2aWNlIGJyZWFrcG9pbnRcbi8vL1xuQGZ1bmN0aW9uIGJyZWFrLXNlbGVjdC1kZXZpY2UoJGRldmljZSkge1xuICAkY3VycmVudDogJGJyZWFrLWRldmljZXM7XG4gIEBmb3IgJG4gZnJvbSAxIHRocm91Z2ggbGVuZ3RoKCRkZXZpY2UpIHtcbiAgICBAaWYgdHlwZS1vZigkY3VycmVudCkgPT0gbWFwIHtcbiAgICAgICRjdXJyZW50OiBtYXAtZ2V0KCRjdXJyZW50LCBudGgoJGRldmljZSwgJG4pKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlIG1hcDogI3skZGV2aWNlc31cIjtcbiAgICB9XG4gIH1cbiAgQGlmIHR5cGUtb2YoJGN1cnJlbnQpID09IGxpc3Qgb3IgdHlwZS1vZigkY3VycmVudCkgPT0gbnVtYmVyIHtcbiAgICAkY3VycmVudDogKGRlZmF1bHQ6ICRjdXJyZW50KTtcbiAgfVxuICBAcmV0dXJuIGJyZWFrLXNlbGVjdC1taW4tbWF4KCRjdXJyZW50KTtcbn1cblxuLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuLy8gTWl4aW5zXG4vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbi8vL1xuLy8vIEEgbWluaW11bS1tYXhpbXVtIG1lZGlhIHF1ZXJ5IGJyZWFrcG9pbnRcbi8vL1xuQG1peGluIGJyZWFrLWF0KCRicmVha3BvaW50KSB7XG4gIEBpZiB0eXBlLW9mKCRicmVha3BvaW50KSA9PSBudW1iZXIge1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6ICRicmVha3BvaW50KSB7XG4gICAgICBAY29udGVudDtcbiAgICB9XG4gIH0gQGVsc2UgaWYgdHlwZS1vZigkYnJlYWtwb2ludCkgPT0gbGlzdCB7XG4gICAgJG1pbjogbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICAkbWF4OiBudGgoJGJyZWFrcG9pbnQsIDIpO1xuICAgIEBpZiB0eXBlLW9mKCRtaW4pID09IG51bWJlciBhbmQgdHlwZS1vZigkbWF4KSA9PSBudW1iZXIge1xuICAgICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikgYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgICAgQGNvbnRlbnQ7XG4gICAgICB9XG4gICAgfSBAZWxzZSB7XG4gICAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQW4gb3JpZW50YXRpb24gbWVkaWEgcXVlcnkgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstYXQtb3JpZW50YXRpb24oJGJyZWFrcG9pbnQpIHtcbiAgQGlmIHR5cGUtb2YoJGJyZWFrcG9pbnQpID09IHN0cmluZyB7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG9yaWVudGF0aW9uOiAkYnJlYWtwb2ludCkge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGJyZWFrcG9pbnQ6ICN7JGJyZWFrcG9pbnR9XCI7XG4gIH1cbn1cblxuLy8vXG4vLy8gQSBtYXhpbXVtLWFzcGVjdC1yYXRpbyBtZWRpYSBxdWVyeSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1hdC1yYXRpbygkYnJlYWtwb2ludCkge1xuICBAaWYgdHlwZS1vZigkYnJlYWtwb2ludCkgPT0gbnVtYmVyIHtcbiAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWF4LWFzcGVjdC1yYXRpbzogJGJyZWFrcG9pbnQpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiSW52YWxpZCBicmVha3BvaW50OiAjeyRicmVha3BvaW50fVwiO1xuICB9XG59XG5cbi8vL1xuLy8vIEEgbWluaW11bS1tYXhpbXVtIG1lZGlhIHF1ZXJ5IGRldmljZSBicmVha3BvaW50XG4vLy9cbkBtaXhpbiBicmVhay1hdC1kZXZpY2UoJGRldmljZSkge1xuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBzdHJpbmcge1xuICAgICRkZXZpY2U6ICRkZXZpY2UsO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IGxpc3Qge1xuICAgICRicmVha3BvaW50OiBicmVhay1zZWxlY3QtZGV2aWNlKCRkZXZpY2UpO1xuICAgIEBpZiBudGgoJGJyZWFrcG9pbnQsIDIpICE9IG51bGwge1xuICAgICAgJG1pbjogbnRoKCRicmVha3BvaW50LCAxKTtcbiAgICAgICRtYXg6IG50aCgkYnJlYWtwb2ludCwgMik7XG4gICAgICBAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAkbWluKSBhbmQgKG1heC13aWR0aDogJG1heCkge1xuICAgICAgICBAY29udGVudDtcbiAgICAgIH1cbiAgICB9IEBlbHNlIHtcbiAgICAgIEBlcnJvciBcIkludmFsaWQgZGV2aWNlOiAjeyRkZXZpY2V9XCI7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGRldmljZTogI3skZGV2aWNlfVwiO1xuICB9XG59XG5cbi8vL1xuLy8vIEEgbWluaW11bSBtZWRpYSBxdWVyeSBkZXZpY2UgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstZnJvbS1kZXZpY2UoJGRldmljZSkge1xuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBzdHJpbmcge1xuICAgICRkZXZpY2U6ICRkZXZpY2UsO1xuICB9XG4gIEBpZiB0eXBlLW9mKCRkZXZpY2UpID09IGxpc3Qge1xuICAgICRicmVha3BvaW50OiBicmVhay1zZWxlY3QtZGV2aWNlKCRkZXZpY2UpO1xuICAgICRtaW46IG50aCgkYnJlYWtwb2ludCwgMSk7XG4gICAgQG1lZGlhIHNjcmVlbiBhbmQgKG1pbi13aWR0aDogJG1pbikge1xuICAgICAgQGNvbnRlbnQ7XG4gICAgfVxuICB9IEBlbHNlIHtcbiAgICBAZXJyb3IgXCJJbnZhbGlkIGRldmljZTogI3skZGV2aWNlfVwiO1xuICB9XG59XG5cbi8vL1xuLy8vIEEgbWF4aW11bSBtZWRpYSBxdWVyeSBkZXZpY2UgYnJlYWtwb2ludFxuLy8vXG5AbWl4aW4gYnJlYWstdG8tZGV2aWNlKCRkZXZpY2UpIHtcbiAgQGlmIHR5cGUtb2YoJGRldmljZSkgPT0gc3RyaW5nIHtcbiAgICAkZGV2aWNlOiAkZGV2aWNlLDtcbiAgfVxuICBAaWYgdHlwZS1vZigkZGV2aWNlKSA9PSBsaXN0IHtcbiAgICAkYnJlYWtwb2ludDogYnJlYWstc2VsZWN0LWRldmljZSgkZGV2aWNlKTtcbiAgICAkbWF4OiBudGgoJGJyZWFrcG9pbnQsIDIpO1xuICAgIEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6ICRtYXgpIHtcbiAgICAgIEBjb250ZW50O1xuICAgIH1cbiAgfSBAZWxzZSB7XG4gICAgQGVycm9yIFwiSW52YWxpZCBkZXZpY2U6ICN7JGRldmljZX1cIjtcbiAgfVxufVxuIl19 */ \ No newline at end of file diff --git a/material/base.html b/material/base.html index 31ecafbfb..6306f6555 100644 --- a/material/base.html +++ b/material/base.html @@ -43,9 +43,9 @@ {% endif %} {% endblock %} {% block styles %} - + {% if palette.primary or palette.accent %} - + {% endif %} {% if palette.primary %} {% import "partials/palette.html" as map %} @@ -195,7 +195,7 @@ {% endblock %} {% block scripts %} - + {%- set translations = {} -%} {%- for key in [ "clipboard.copy", @@ -218,7 +218,7 @@ app = initialize({ base: "{{ base_url }}", worker: { - search: "{{ 'assets/javascripts/worker/search.926ffd9e.min.js' | url }}" + search: "{{ 'assets/javascripts/worker/search.js' | url }}" }, feature: { instant: {{ "true" if feature and feature.instant else "false" }} diff --git a/src/assets/javascripts/components/_/index.ts b/src/assets/javascripts/components/_/index.ts index 5ef7ea2e5..3893b653c 100644 --- a/src/assets/javascripts/components/_/index.ts +++ b/src/assets/javascripts/components/_/index.ts @@ -149,6 +149,12 @@ export function setupComponents( * * @return Element observable */ +export function useComponent( + name: "search-query" +): Observable +export function useComponent( + name: Component +): Observable export function useComponent( name: Component ): Observable { diff --git a/src/assets/javascripts/index.ts b/src/assets/javascripts/index.ts index b07e2f0cb..e656f6fb7 100644 --- a/src/assets/javascripts/index.ts +++ b/src/assets/javascripts/index.ts @@ -181,7 +181,7 @@ export function initialize(config: unknown) { /* ----------------------------------------------------------------------- */ /* Mount search query */ - const query$ = useComponent("search-query") + const query$ = useComponent("search-query") .pipe( mountSearchQuery(worker), shareReplay(1) // TODO: this must be put onto EVERY component! diff --git a/src/assets/javascripts/integrations/keyboard/index.ts b/src/assets/javascripts/integrations/keyboard/index.ts index c590b28f1..768180474 100644 --- a/src/assets/javascripts/integrations/keyboard/index.ts +++ b/src/assets/javascripts/integrations/keyboard/index.ts @@ -173,10 +173,11 @@ export function setupKeyboard(): Observable { .subscribe(([key, query]) => { switch (key.type) { - /* Open search */ + /* Open search and select query */ case "f": case "s": setElementFocus(query) + query.select() key.claim() break diff --git a/src/assets/stylesheets/layout/_nav.scss b/src/assets/stylesheets/layout/_nav.scss index 301333283..741be1f25 100644 --- a/src/assets/stylesheets/layout/_nav.scss +++ b/src/assets/stylesheets/layout/_nav.scss @@ -208,7 +208,7 @@ scroll-snap-type: y mandatory; // Remove border for first list item - & > .md-nav__item:first-child { + > .md-nav__item:first-child { border-top: 0; } } diff --git a/src/assets/stylesheets/layout/_source.scss b/src/assets/stylesheets/layout/_source.scss index e62704c41..bbb05fd14 100644 --- a/src/assets/stylesheets/layout/_source.scss +++ b/src/assets/stylesheets/layout/_source.scss @@ -64,6 +64,8 @@ font-size: px2rem(13px); line-height: 1.2; white-space: nowrap; + // Hack: reduce jitter + backface-visibility: hidden; // Adjust for right-to-left languages [dir="rtl"] & { diff --git a/src/assets/stylesheets/layout/_tabs.scss b/src/assets/stylesheets/layout/_tabs.scss index 7ad87450e..051e79301 100644 --- a/src/assets/stylesheets/layout/_tabs.scss +++ b/src/assets/stylesheets/layout/_tabs.scss @@ -120,12 +120,9 @@ // [screen +]: Adjust main navigation styles @include break-from-device(screen) { - // Hide 1st level nested items, as they are listed in the tabs by setting - // font-size to zero, as we need to preserve bottom padding + // Hide 1st level nested items, as they are listed in the tabs ~ .md-main .md-nav--primary > .md-nav__list > .md-nav__item--nested { - max-height: 0; - font-size: 0; - visibility: hidden; + display: none; } // We're on the 2nd+ level @@ -137,54 +134,44 @@ // Show title and remove spacing .md-nav__title { display: block; - padding: 0; + padding: 0 px2rem(12px); pointer-events: none; - } + scroll-snap-align: start; - // Hide site title - .md-nav__title[for="__drawer"] { - display: none; - } - - // Show 1st level navigation always expanded - .no-js & > .md-nav { - display: block; + // Hide site title + &[for="__drawer"] { + display: none; + } } // Hide 1st level normal items - & > .md-nav__list > .md-nav__item { - font-size: 0; - visibility: hidden; + > .md-nav__list > .md-nav__item { + display: none; - // Reset font-size for nested items and induce margin collapse + // Hide nested items &--nested { display: none; - max-height: none; - font-size: px2rem(14px); - overflow: auto; - visibility: visible; + } + + // Show 1st level active nested items + &--active { + display: block; + padding: 0; // Hide nested links > .md-nav__link { display: none; } } - - // Show 1st level active nested items - &--active { - display: block; - } } } // Always expand nested navigation on 2nd level .md-nav[data-md-level="1"] { - max-height: initial; - overflow: visible; // Remove spacing on 2nd level items > .md-nav__list > .md-nav__item { - padding: 0; + padding: 0 px2rem(12px); } // Hide titles from 2nd level on