{"version":3,"file":"app.roll.js","sources":["../../node_modules/handlebars/dist/cjs/handlebars/utils.js","../../node_modules/handlebars/dist/cjs/handlebars/exception.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers/block-helper-missing.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers/each.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers/helper-missing.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers/if.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers/log.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers/lookup.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers/with.js","../../node_modules/handlebars/dist/cjs/handlebars/helpers.js","../../node_modules/handlebars/dist/cjs/handlebars/decorators/inline.js","../../node_modules/handlebars/dist/cjs/handlebars/decorators.js","../../node_modules/handlebars/dist/cjs/handlebars/logger.js","../../node_modules/handlebars/dist/cjs/handlebars/internal/create-new-lookup-object.js","../../node_modules/handlebars/dist/cjs/handlebars/internal/proto-access.js","../../node_modules/handlebars/dist/cjs/handlebars/base.js","../../node_modules/handlebars/dist/cjs/handlebars/safe-string.js","../../node_modules/handlebars/dist/cjs/handlebars/internal/wrapHelper.js","../../node_modules/handlebars/dist/cjs/handlebars/runtime.js","../../node_modules/handlebars/dist/cjs/handlebars/no-conflict.js","../../node_modules/handlebars/dist/cjs/handlebars.runtime.js","../../node_modules/handlebars/runtime.js","../../node_modules/moment/moment.js","../../node_modules/js-cookie/src/js.cookie.js","../../src/js/session.ts","../../src/js/utils.ts","../../src/js/service.ts","../../node_modules/@babel/runtime/helpers/esm/typeof.js","../../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../node_modules/@babel/runtime/helpers/esm/objectSpread.js","../../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../../node_modules/@babel/runtime/helpers/esm/createClass.js","../../node_modules/@babel/runtime/helpers/typeof.js","../../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../../node_modules/@babel/runtime/helpers/esm/inherits.js","../../node_modules/i18next/dist/esm/i18next.js","../../src/js/helper/handlebars.ts","../../src/js/router.ts","../../node_modules/tslib/tslib.es6.js","../../src/js/view/view.ts","../../src/js/spinner.ts","../../src/templates/shopping_cart.hbs","../../src/js/Holidays.ts","../../src/js/shoppingcart.ts","../../src/templates/retoure.hbs","../../src/templates/retoure_list.hbs","../../src/js/retoure.ts","../../src/templates/accept_conditions_dialog.hbs","../../src/js/view/login.ts","../../src/js/view/recover.ts","../../src/js/message.ts","../../src/js/view/register.ts","../../src/js/view/sub_view.ts","../../src/js/download_helper.ts","../../src/templates/empty_preview_item.hbs","../../src/templates/document_preview_item.hbs","../../src/templates/userfile_preview_item.hbs","../../src/templates/product_preview_item.hbs","../../src/templates/productinfo_preview_item.hbs","../../src/js/view/home_sub_view.ts","../../src/js/pager.ts","../../src/templates/document_item.hbs","../../src/js/view/documents_sub_view.ts","../../src/templates/empty_cleaning_preview_item.hbs","../../src/js/view/cleaningplans_sub_view.ts","../../src/js/view/labreports_sub_view.ts","../../src/templates/product_item.hbs","../../src/templates/product_distinct_item.hbs","../../src/js/view/products_sub_view.ts","../../src/js/view/contact_sub_view.ts","../../src/js/view/settings_sub_view.ts","../../src/templates/userfile_item.hbs","../../src/templates/upload_dialog.hbs","../../src/templates/userfile_detail_dialog.hbs","../../src/js/view/file_exchange_sub_view.ts","../../src/templates/menu_item_clients.hbs","../../src/js/view/main.ts","../../src/js/view/file_not_found.ts","../../src/js/view/view_manager.ts","../../src/js/polyfill.ts","../../src/js/errors.ts","../../node_modules/i18next-xhr-backend/dist/esm/i18nextXHRBackend.js","../../node_modules/jquery-i18next/dist/commonjs/index.js","../../node_modules/jquery-i18next/index.js","../../node_modules/moment/locale/de.js","../../node_modules/moment/locale/fr.js","../../node_modules/moment/locale/it.js","../../src/js/app.ts"],"sourcesContent":["'use strict';\n\nexports.__esModule = true;\nexports.extend = extend;\nexports.indexOf = indexOf;\nexports.escapeExpression = escapeExpression;\nexports.isEmpty = isEmpty;\nexports.createFrame = createFrame;\nexports.blockParams = blockParams;\nexports.appendContextPath = appendContextPath;\nvar escape = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n '=': '='\n};\n\nvar badChars = /[&<>\"'`=]/g,\n possible = /[&<>\"'`=]/;\n\nfunction escapeChar(chr) {\n return escape[chr];\n}\n\nfunction extend(obj /* , ...source */) {\n for (var i = 1; i < arguments.length; i++) {\n for (var key in arguments[i]) {\n if (Object.prototype.hasOwnProperty.call(arguments[i], key)) {\n obj[key] = arguments[i][key];\n }\n }\n }\n\n return obj;\n}\n\nvar toString = Object.prototype.toString;\n\nexports.toString = toString;\n// Sourced from lodash\n// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt\n/* eslint-disable func-style */\nvar isFunction = function isFunction(value) {\n return typeof value === 'function';\n};\n// fallback for older versions of Chrome and Safari\n/* istanbul ignore next */\nif (isFunction(/x/)) {\n exports.isFunction = isFunction = function (value) {\n return typeof value === 'function' && toString.call(value) === '[object Function]';\n };\n}\nexports.isFunction = isFunction;\n\n/* eslint-enable func-style */\n\n/* istanbul ignore next */\nvar isArray = Array.isArray || function (value) {\n return value && typeof value === 'object' ? toString.call(value) === '[object Array]' : false;\n};\n\nexports.isArray = isArray;\n// Older IE versions do not directly support indexOf so we must implement our own, sadly.\n\nfunction indexOf(array, value) {\n for (var i = 0, len = array.length; i < len; i++) {\n if (array[i] === value) {\n return i;\n }\n }\n return -1;\n}\n\nfunction escapeExpression(string) {\n if (typeof string !== 'string') {\n // don't escape SafeStrings, since they're already safe\n if (string && string.toHTML) {\n return string.toHTML();\n } else if (string == null) {\n return '';\n } else if (!string) {\n return string + '';\n }\n\n // Force a string conversion as this will be done by the append regardless and\n // the regex test will do this transparently behind the scenes, causing issues if\n // an object's to string has escaped characters in it.\n string = '' + string;\n }\n\n if (!possible.test(string)) {\n return string;\n }\n return string.replace(badChars, escapeChar);\n}\n\nfunction isEmpty(value) {\n if (!value && value !== 0) {\n return true;\n } else if (isArray(value) && value.length === 0) {\n return true;\n } else {\n return false;\n }\n}\n\nfunction createFrame(object) {\n var frame = extend({}, object);\n frame._parent = object;\n return frame;\n}\n\nfunction blockParams(params, ids) {\n params.path = ids;\n return params;\n}\n\nfunction appendContextPath(contextPath, id) {\n return (contextPath ? contextPath + '.' : '') + id;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3V0aWxzLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxJQUFNLE1BQU0sR0FBRztBQUNiLEtBQUcsRUFBRSxPQUFPO0FBQ1osS0FBRyxFQUFFLE1BQU07QUFDWCxLQUFHLEVBQUUsTUFBTTtBQUNYLEtBQUcsRUFBRSxRQUFRO0FBQ2IsS0FBRyxFQUFFLFFBQVE7QUFDYixLQUFHLEVBQUUsUUFBUTtBQUNiLEtBQUcsRUFBRSxRQUFRO0NBQ2QsQ0FBQzs7QUFFRixJQUFNLFFBQVEsR0FBRyxZQUFZO0lBQzNCLFFBQVEsR0FBRyxXQUFXLENBQUM7O0FBRXpCLFNBQVMsVUFBVSxDQUFDLEdBQUcsRUFBRTtBQUN2QixTQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztDQUNwQjs7QUFFTSxTQUFTLE1BQU0sQ0FBQyxHQUFHLG9CQUFvQjtBQUM1QyxPQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN6QyxTQUFLLElBQUksR0FBRyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRTtBQUM1QixVQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUU7QUFDM0QsV0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztPQUM5QjtLQUNGO0dBQ0Y7O0FBRUQsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQzs7Ozs7O0FBS2hELElBQUksVUFBVSxHQUFHLG9CQUFTLEtBQUssRUFBRTtBQUMvQixTQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsQ0FBQztDQUNwQyxDQUFDOzs7QUFHRixJQUFJLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRTtBQUNuQixVQU9PLFVBQVUsR0FQakIsVUFBVSxHQUFHLFVBQVMsS0FBSyxFQUFFO0FBQzNCLFdBQ0UsT0FBTyxLQUFLLEtBQUssVUFBVSxJQUMzQixRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLG1CQUFtQixDQUM1QztHQUNILENBQUM7Q0FDSDtRQUNRLFVBQVUsR0FBVixVQUFVOzs7OztBQUlaLElBQU0sT0FBTyxHQUNsQixLQUFLLENBQUMsT0FBTyxJQUNiLFVBQVMsS0FBSyxFQUFFO0FBQ2QsU0FBTyxLQUFLLElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxHQUNyQyxRQUFRLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLGdCQUFnQixHQUN6QyxLQUFLLENBQUM7Q0FDWCxDQUFDOzs7OztBQUdHLFNBQVMsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUU7QUFDcEMsT0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUNoRCxRQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxLQUFLLEVBQUU7QUFDdEIsYUFBTyxDQUFDLENBQUM7S0FDVjtHQUNGO0FBQ0QsU0FBTyxDQUFDLENBQUMsQ0FBQztDQUNYOztBQUVNLFNBQVMsZ0JBQWdCLENBQUMsTUFBTSxFQUFFO0FBQ3ZDLE1BQUksT0FBTyxNQUFNLEtBQUssUUFBUSxFQUFFOztBQUU5QixRQUFJLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxFQUFFO0FBQzNCLGFBQU8sTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO0tBQ3hCLE1BQU0sSUFBSSxNQUFNLElBQUksSUFBSSxFQUFFO0FBQ3pCLGFBQU8sRUFBRSxDQUFDO0tBQ1gsTUFBTSxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ2xCLGFBQU8sTUFBTSxHQUFHLEVBQUUsQ0FBQztLQUNwQjs7Ozs7QUFLRCxVQUFNLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQztHQUN0Qjs7QUFFRCxNQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRTtBQUMxQixXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsU0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztDQUM3Qzs7QUFFTSxTQUFTLE9BQU8sQ0FBQyxLQUFLLEVBQUU7QUFDN0IsTUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLEtBQUssQ0FBQyxFQUFFO0FBQ3pCLFdBQU8sSUFBSSxDQUFDO0dBQ2IsTUFBTSxJQUFJLE9BQU8sQ0FBQyxLQUFLLENBQUMsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtBQUMvQyxXQUFPLElBQUksQ0FBQztHQUNiLE1BQU07QUFDTCxXQUFPLEtBQUssQ0FBQztHQUNkO0NBQ0Y7O0FBRU0sU0FBUyxXQUFXLENBQUMsTUFBTSxFQUFFO0FBQ2xDLE1BQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDL0IsT0FBSyxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7QUFDdkIsU0FBTyxLQUFLLENBQUM7Q0FDZDs7QUFFTSxTQUFTLFdBQVcsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFO0FBQ3ZDLFFBQU0sQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUFDO0FBQ2xCLFNBQU8sTUFBTSxDQUFDO0NBQ2Y7O0FBRU0sU0FBUyxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsRUFBRSxFQUFFO0FBQ2pELFNBQU8sQ0FBQyxXQUFXLEdBQUcsV0FBVyxHQUFHLEdBQUcsR0FBRyxFQUFFLENBQUEsR0FBSSxFQUFFLENBQUM7Q0FDcEQiLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBlc2NhcGUgPSB7XG4gICcmJzogJyZhbXA7JyxcbiAgJzwnOiAnJmx0OycsXG4gICc+JzogJyZndDsnLFxuICAnXCInOiAnJnF1b3Q7JyxcbiAgXCInXCI6ICcmI3gyNzsnLFxuICAnYCc6ICcmI3g2MDsnLFxuICAnPSc6ICcmI3gzRDsnXG59O1xuXG5jb25zdCBiYWRDaGFycyA9IC9bJjw+XCInYD1dL2csXG4gIHBvc3NpYmxlID0gL1smPD5cIidgPV0vO1xuXG5mdW5jdGlvbiBlc2NhcGVDaGFyKGNocikge1xuICByZXR1cm4gZXNjYXBlW2Nocl07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBleHRlbmQob2JqIC8qICwgLi4uc291cmNlICovKSB7XG4gIGZvciAobGV0IGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgZm9yIChsZXQga2V5IGluIGFyZ3VtZW50c1tpXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChhcmd1bWVudHNbaV0sIGtleSkpIHtcbiAgICAgICAgb2JqW2tleV0gPSBhcmd1bWVudHNbaV1ba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gb2JqO1xufVxuXG5leHBvcnQgbGV0IHRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuLy8gU291cmNlZCBmcm9tIGxvZGFzaFxuLy8gaHR0cHM6Ly9naXRodWIuY29tL2Jlc3RpZWpzL2xvZGFzaC9ibG9iL21hc3Rlci9MSUNFTlNFLnR4dFxuLyogZXNsaW50LWRpc2FibGUgZnVuYy1zdHlsZSAqL1xubGV0IGlzRnVuY3Rpb24gPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nO1xufTtcbi8vIGZhbGxiYWNrIGZvciBvbGRlciB2ZXJzaW9ucyBvZiBDaHJvbWUgYW5kIFNhZmFyaVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbmlmIChpc0Z1bmN0aW9uKC94LykpIHtcbiAgaXNGdW5jdGlvbiA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJlxuICAgICAgdG9TdHJpbmcuY2FsbCh2YWx1ZSkgPT09ICdbb2JqZWN0IEZ1bmN0aW9uXSdcbiAgICApO1xuICB9O1xufVxuZXhwb3J0IHsgaXNGdW5jdGlvbiB9O1xuLyogZXNsaW50LWVuYWJsZSBmdW5jLXN0eWxlICovXG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG5leHBvcnQgY29uc3QgaXNBcnJheSA9XG4gIEFycmF5LmlzQXJyYXkgfHxcbiAgZnVuY3Rpb24odmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0J1xuICAgICAgPyB0b1N0cmluZy5jYWxsKHZhbHVlKSA9PT0gJ1tvYmplY3QgQXJyYXldJ1xuICAgICAgOiBmYWxzZTtcbiAgfTtcblxuLy8gT2xkZXIgSUUgdmVyc2lvbnMgZG8gbm90IGRpcmVjdGx5IHN1cHBvcnQgaW5kZXhPZiBzbyB3ZSBtdXN0IGltcGxlbWVudCBvdXIgb3duLCBzYWRseS5cbmV4cG9ydCBmdW5jdGlvbiBpbmRleE9mKGFycmF5LCB2YWx1ZSkge1xuICBmb3IgKGxldCBpID0gMCwgbGVuID0gYXJyYXkubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcbiAgICBpZiAoYXJyYXlbaV0gPT09IHZhbHVlKSB7XG4gICAgICByZXR1cm4gaTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIC0xO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXNjYXBlRXhwcmVzc2lvbihzdHJpbmcpIHtcbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgLy8gZG9uJ3QgZXNjYXBlIFNhZmVTdHJpbmdzLCBzaW5jZSB0aGV5J3JlIGFscmVhZHkgc2FmZVxuICAgIGlmIChzdHJpbmcgJiYgc3RyaW5nLnRvSFRNTCkge1xuICAgICAgcmV0dXJuIHN0cmluZy50b0hUTUwoKTtcbiAgICB9IGVsc2UgaWYgKHN0cmluZyA9PSBudWxsKSB7XG4gICAgICByZXR1cm4gJyc7XG4gICAgfSBlbHNlIGlmICghc3RyaW5nKSB7XG4gICAgICByZXR1cm4gc3RyaW5nICsgJyc7XG4gICAgfVxuXG4gICAgLy8gRm9yY2UgYSBzdHJpbmcgY29udmVyc2lvbiBhcyB0aGlzIHdpbGwgYmUgZG9uZSBieSB0aGUgYXBwZW5kIHJlZ2FyZGxlc3MgYW5kXG4gICAgLy8gdGhlIHJlZ2V4IHRlc3Qgd2lsbCBkbyB0aGlzIHRyYW5zcGFyZW50bHkgYmVoaW5kIHRoZSBzY2VuZXMsIGNhdXNpbmcgaXNzdWVzIGlmXG4gICAgLy8gYW4gb2JqZWN0J3MgdG8gc3RyaW5nIGhhcyBlc2NhcGVkIGNoYXJhY3RlcnMgaW4gaXQuXG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmc7XG4gIH1cblxuICBpZiAoIXBvc3NpYmxlLnRlc3Qoc3RyaW5nKSkge1xuICAgIHJldHVybiBzdHJpbmc7XG4gIH1cbiAgcmV0dXJuIHN0cmluZy5yZXBsYWNlKGJhZENoYXJzLCBlc2NhcGVDaGFyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRW1wdHkodmFsdWUpIHtcbiAgaWYgKCF2YWx1ZSAmJiB2YWx1ZSAhPT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2UgaWYgKGlzQXJyYXkodmFsdWUpICYmIHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRnJhbWUob2JqZWN0KSB7XG4gIGxldCBmcmFtZSA9IGV4dGVuZCh7fSwgb2JqZWN0KTtcbiAgZnJhbWUuX3BhcmVudCA9IG9iamVjdDtcbiAgcmV0dXJuIGZyYW1lO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYmxvY2tQYXJhbXMocGFyYW1zLCBpZHMpIHtcbiAgcGFyYW1zLnBhdGggPSBpZHM7XG4gIHJldHVybiBwYXJhbXM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBhcHBlbmRDb250ZXh0UGF0aChjb250ZXh0UGF0aCwgaWQpIHtcbiAgcmV0dXJuIChjb250ZXh0UGF0aCA/IGNvbnRleHRQYXRoICsgJy4nIDogJycpICsgaWQ7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nvar errorProps = ['description', 'fileName', 'lineNumber', 'endLineNumber', 'message', 'name', 'number', 'stack'];\n\nfunction Exception(message, node) {\n var loc = node && node.loc,\n line = undefined,\n endLineNumber = undefined,\n column = undefined,\n endColumn = undefined;\n\n if (loc) {\n line = loc.start.line;\n endLineNumber = loc.end.line;\n column = loc.start.column;\n endColumn = loc.end.column;\n\n message += ' - ' + line + ':' + column;\n }\n\n var tmp = Error.prototype.constructor.call(this, message);\n\n // Unfortunately errors are not enumerable in Chrome (at least), so `for prop in tmp` doesn't work.\n for (var idx = 0; idx < errorProps.length; idx++) {\n this[errorProps[idx]] = tmp[errorProps[idx]];\n }\n\n /* istanbul ignore else */\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, Exception);\n }\n\n try {\n if (loc) {\n this.lineNumber = line;\n this.endLineNumber = endLineNumber;\n\n // Work around issue under safari where we can't directly set the column value\n /* istanbul ignore next */\n if (Object.defineProperty) {\n Object.defineProperty(this, 'column', {\n value: column,\n enumerable: true\n });\n Object.defineProperty(this, 'endColumn', {\n value: endColumn,\n enumerable: true\n });\n } else {\n this.column = column;\n this.endColumn = endColumn;\n }\n }\n } catch (nop) {\n /* Ignore if the browser is very particular */\n }\n}\n\nException.prototype = new Error();\n\nexports['default'] = Exception;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2V4Y2VwdGlvbi5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxJQUFNLFVBQVUsR0FBRyxDQUNqQixhQUFhLEVBQ2IsVUFBVSxFQUNWLFlBQVksRUFDWixlQUFlLEVBQ2YsU0FBUyxFQUNULE1BQU0sRUFDTixRQUFRLEVBQ1IsT0FBTyxDQUNSLENBQUM7O0FBRUYsU0FBUyxTQUFTLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUNoQyxNQUFJLEdBQUcsR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEdBQUc7TUFDeEIsSUFBSSxZQUFBO01BQ0osYUFBYSxZQUFBO01BQ2IsTUFBTSxZQUFBO01BQ04sU0FBUyxZQUFBLENBQUM7O0FBRVosTUFBSSxHQUFHLEVBQUU7QUFDUCxRQUFJLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7QUFDdEIsaUJBQWEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQztBQUM3QixVQUFNLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUM7QUFDMUIsYUFBUyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDOztBQUUzQixXQUFPLElBQUksS0FBSyxHQUFHLElBQUksR0FBRyxHQUFHLEdBQUcsTUFBTSxDQUFDO0dBQ3hDOztBQUVELE1BQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7OztBQUcxRCxPQUFLLElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxHQUFHLEdBQUcsVUFBVSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsRUFBRTtBQUNoRCxRQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO0dBQzlDOzs7QUFHRCxNQUFJLEtBQUssQ0FBQyxpQkFBaUIsRUFBRTtBQUMzQixTQUFLLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQzFDOztBQUVELE1BQUk7QUFDRixRQUFJLEdBQUcsRUFBRTtBQUNQLFVBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0FBQ3ZCLFVBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDOzs7O0FBSW5DLFVBQUksTUFBTSxDQUFDLGNBQWMsRUFBRTtBQUN6QixjQUFNLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUU7QUFDcEMsZUFBSyxFQUFFLE1BQU07QUFDYixvQkFBVSxFQUFFLElBQUk7U0FDakIsQ0FBQyxDQUFDO0FBQ0gsY0FBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3ZDLGVBQUssRUFBRSxTQUFTO0FBQ2hCLG9CQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7T0FDSixNQUFNO0FBQ0wsWUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7QUFDckIsWUFBSSxDQUFDLFNBQVMsR0FBRyxTQUFTLENBQUM7T0FDNUI7S0FDRjtHQUNGLENBQUMsT0FBTyxHQUFHLEVBQUU7O0dBRWI7Q0FDRjs7QUFFRCxTQUFTLENBQUMsU0FBUyxHQUFHLElBQUksS0FBSyxFQUFFLENBQUM7O3FCQUVuQixTQUFTIiwiZmlsZSI6ImV4Y2VwdGlvbi5qcyIsInNvdXJjZXNDb250ZW50IjpbImNvbnN0IGVycm9yUHJvcHMgPSBbXG4gICdkZXNjcmlwdGlvbicsXG4gICdmaWxlTmFtZScsXG4gICdsaW5lTnVtYmVyJyxcbiAgJ2VuZExpbmVOdW1iZXInLFxuICAnbWVzc2FnZScsXG4gICduYW1lJyxcbiAgJ251bWJlcicsXG4gICdzdGFjaydcbl07XG5cbmZ1bmN0aW9uIEV4Y2VwdGlvbihtZXNzYWdlLCBub2RlKSB7XG4gIGxldCBsb2MgPSBub2RlICYmIG5vZGUubG9jLFxuICAgIGxpbmUsXG4gICAgZW5kTGluZU51bWJlcixcbiAgICBjb2x1bW4sXG4gICAgZW5kQ29sdW1uO1xuXG4gIGlmIChsb2MpIHtcbiAgICBsaW5lID0gbG9jLnN0YXJ0LmxpbmU7XG4gICAgZW5kTGluZU51bWJlciA9IGxvYy5lbmQubGluZTtcbiAgICBjb2x1bW4gPSBsb2Muc3RhcnQuY29sdW1uO1xuICAgIGVuZENvbHVtbiA9IGxvYy5lbmQuY29sdW1uO1xuXG4gICAgbWVzc2FnZSArPSAnIC0gJyArIGxpbmUgKyAnOicgKyBjb2x1bW47XG4gIH1cblxuICBsZXQgdG1wID0gRXJyb3IucHJvdG90eXBlLmNvbnN0cnVjdG9yLmNhbGwodGhpcywgbWVzc2FnZSk7XG5cbiAgLy8gVW5mb3J0dW5hdGVseSBlcnJvcnMgYXJlIG5vdCBlbnVtZXJhYmxlIGluIENocm9tZSAoYXQgbGVhc3QpLCBzbyBgZm9yIHByb3AgaW4gdG1wYCBkb2Vzbid0IHdvcmsuXG4gIGZvciAobGV0IGlkeCA9IDA7IGlkeCA8IGVycm9yUHJvcHMubGVuZ3RoOyBpZHgrKykge1xuICAgIHRoaXNbZXJyb3JQcm9wc1tpZHhdXSA9IHRtcFtlcnJvclByb3BzW2lkeF1dO1xuICB9XG5cbiAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgaWYgKEVycm9yLmNhcHR1cmVTdGFja1RyYWNlKSB7XG4gICAgRXJyb3IuY2FwdHVyZVN0YWNrVHJhY2UodGhpcywgRXhjZXB0aW9uKTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgaWYgKGxvYykge1xuICAgICAgdGhpcy5saW5lTnVtYmVyID0gbGluZTtcbiAgICAgIHRoaXMuZW5kTGluZU51bWJlciA9IGVuZExpbmVOdW1iZXI7XG5cbiAgICAgIC8vIFdvcmsgYXJvdW5kIGlzc3VlIHVuZGVyIHNhZmFyaSB3aGVyZSB3ZSBjYW4ndCBkaXJlY3RseSBzZXQgdGhlIGNvbHVtbiB2YWx1ZVxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHtcbiAgICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsICdjb2x1bW4nLCB7XG4gICAgICAgICAgdmFsdWU6IGNvbHVtbixcbiAgICAgICAgICBlbnVtZXJhYmxlOiB0cnVlXG4gICAgICAgIH0pO1xuICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgJ2VuZENvbHVtbicsIHtcbiAgICAgICAgICB2YWx1ZTogZW5kQ29sdW1uLFxuICAgICAgICAgIGVudW1lcmFibGU6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmNvbHVtbiA9IGNvbHVtbjtcbiAgICAgICAgdGhpcy5lbmRDb2x1bW4gPSBlbmRDb2x1bW47XG4gICAgICB9XG4gICAgfVxuICB9IGNhdGNoIChub3ApIHtcbiAgICAvKiBJZ25vcmUgaWYgdGhlIGJyb3dzZXIgaXMgdmVyeSBwYXJ0aWN1bGFyICovXG4gIH1cbn1cblxuRXhjZXB0aW9uLnByb3RvdHlwZSA9IG5ldyBFcnJvcigpO1xuXG5leHBvcnQgZGVmYXVsdCBFeGNlcHRpb247XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerHelper('blockHelperMissing', function (context, options) {\n var inverse = options.inverse,\n fn = options.fn;\n\n if (context === true) {\n return fn(this);\n } else if (context === false || context == null) {\n return inverse(this);\n } else if (_utils.isArray(context)) {\n if (context.length > 0) {\n if (options.ids) {\n options.ids = [options.name];\n }\n\n return instance.helpers.each(context, options);\n } else {\n return inverse(this);\n }\n } else {\n if (options.data && options.ids) {\n var data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.name);\n options = { data: data };\n }\n\n return fn(context, options);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvYmxvY2staGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztxQkFBd0QsVUFBVTs7cUJBRW5ELFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsb0JBQW9CLEVBQUUsVUFBUyxPQUFPLEVBQUUsT0FBTyxFQUFFO0FBQ3ZFLFFBQUksT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPO1FBQzNCLEVBQUUsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUVsQixRQUFJLE9BQU8sS0FBSyxJQUFJLEVBQUU7QUFDcEIsYUFBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDakIsTUFBTSxJQUFJLE9BQU8sS0FBSyxLQUFLLElBQUksT0FBTyxJQUFJLElBQUksRUFBRTtBQUMvQyxhQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztLQUN0QixNQUFNLElBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUMzQixVQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0FBQ3RCLFlBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGlCQUFPLENBQUMsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1NBQzlCOztBQUVELGVBQU8sUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQ2hELE1BQU07QUFDTCxlQUFPLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztPQUN0QjtLQUNGLE1BQU07QUFDTCxVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLElBQUksR0FBRyxtQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckMsWUFBSSxDQUFDLFdBQVcsR0FBRyx5QkFDakIsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQ3hCLE9BQU8sQ0FBQyxJQUFJLENBQ2IsQ0FBQztBQUNGLGVBQU8sR0FBRyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQztPQUMxQjs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUM7S0FDN0I7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJibG9jay1oZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFwcGVuZENvbnRleHRQYXRoLCBjcmVhdGVGcmFtZSwgaXNBcnJheSB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2Jsb2NrSGVscGVyTWlzc2luZycsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBsZXQgaW52ZXJzZSA9IG9wdGlvbnMuaW52ZXJzZSxcbiAgICAgIGZuID0gb3B0aW9ucy5mbjtcblxuICAgIGlmIChjb250ZXh0ID09PSB0cnVlKSB7XG4gICAgICByZXR1cm4gZm4odGhpcyk7XG4gICAgfSBlbHNlIGlmIChjb250ZXh0ID09PSBmYWxzZSB8fCBjb250ZXh0ID09IG51bGwpIHtcbiAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgIH0gZWxzZSBpZiAoaXNBcnJheShjb250ZXh0KSkge1xuICAgICAgaWYgKGNvbnRleHQubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAob3B0aW9ucy5pZHMpIHtcbiAgICAgICAgICBvcHRpb25zLmlkcyA9IFtvcHRpb25zLm5hbWVdO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGluc3RhbmNlLmhlbHBlcnMuZWFjaChjb250ZXh0LCBvcHRpb25zKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBpbnZlcnNlKHRoaXMpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAob3B0aW9ucy5kYXRhICYmIG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIGxldCBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLm5hbWVcbiAgICAgICAgKTtcbiAgICAgICAgb3B0aW9ucyA9IHsgZGF0YTogZGF0YSB9O1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('each', function (context, options) {\n if (!options) {\n throw new _exception2['default']('Must pass iterator to #each');\n }\n\n var fn = options.fn,\n inverse = options.inverse,\n i = 0,\n ret = '',\n data = undefined,\n contextPath = undefined;\n\n if (options.data && options.ids) {\n contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]) + '.';\n }\n\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n if (options.data) {\n data = _utils.createFrame(options.data);\n }\n\n function execIteration(field, index, last) {\n if (data) {\n data.key = field;\n data.index = index;\n data.first = index === 0;\n data.last = !!last;\n\n if (contextPath) {\n data.contextPath = contextPath + field;\n }\n }\n\n ret = ret + fn(context[field], {\n data: data,\n blockParams: _utils.blockParams([context[field], field], [contextPath + field, null])\n });\n }\n\n if (context && typeof context === 'object') {\n if (_utils.isArray(context)) {\n for (var j = context.length; i < j; i++) {\n if (i in context) {\n execIteration(i, i, i === context.length - 1);\n }\n }\n } else if (global.Symbol && context[global.Symbol.iterator]) {\n var newContext = [];\n var iterator = context[global.Symbol.iterator]();\n for (var it = iterator.next(); !it.done; it = iterator.next()) {\n newContext.push(it.value);\n }\n context = newContext;\n for (var j = context.length; i < j; i++) {\n execIteration(i, i, i === context.length - 1);\n }\n } else {\n (function () {\n var priorKey = undefined;\n\n Object.keys(context).forEach(function (key) {\n // We're running the iterations one step out of sync so we can detect\n // the last iteration without have to scan the object twice and create\n // an itermediate keys array.\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1);\n }\n priorKey = key;\n i++;\n });\n if (priorKey !== undefined) {\n execIteration(priorKey, i - 1, true);\n }\n })();\n }\n }\n\n if (i === 0) {\n ret = inverse(this);\n }\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvZWFjaC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osWUFBTSwyQkFBYyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ3BEOztBQUVELFFBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTztRQUN6QixDQUFDLEdBQUcsQ0FBQztRQUNMLEdBQUcsR0FBRyxFQUFFO1FBQ1IsSUFBSSxZQUFBO1FBQ0osV0FBVyxZQUFBLENBQUM7O0FBRWQsUUFBSSxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUU7QUFDL0IsaUJBQVcsR0FDVCx5QkFBa0IsT0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQztLQUNyRTs7QUFFRCxRQUFJLGtCQUFXLE9BQU8sQ0FBQyxFQUFFO0FBQ3ZCLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCOztBQUVELFFBQUksT0FBTyxDQUFDLElBQUksRUFBRTtBQUNoQixVQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ2xDOztBQUVELGFBQVMsYUFBYSxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFO0FBQ3pDLFVBQUksSUFBSSxFQUFFO0FBQ1IsWUFBSSxDQUFDLEdBQUcsR0FBRyxLQUFLLENBQUM7QUFDakIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7QUFDbkIsWUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLEtBQUssQ0FBQyxDQUFDO0FBQ3pCLFlBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFbkIsWUFBSSxXQUFXLEVBQUU7QUFDZixjQUFJLENBQUMsV0FBVyxHQUFHLFdBQVcsR0FBRyxLQUFLLENBQUM7U0FDeEM7T0FDRjs7QUFFRCxTQUFHLEdBQ0QsR0FBRyxHQUNILEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUNYLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLEtBQUssQ0FBQyxFQUN2QixDQUFDLFdBQVcsR0FBRyxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQzVCO09BQ0YsQ0FBQyxDQUFDO0tBQ047O0FBRUQsUUFBSSxPQUFPLElBQUksT0FBTyxPQUFPLEtBQUssUUFBUSxFQUFFO0FBQzFDLFVBQUksZUFBUSxPQUFPLENBQUMsRUFBRTtBQUNwQixhQUFLLElBQUksQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUN2QyxjQUFJLENBQUMsSUFBSSxPQUFPLEVBQUU7QUFDaEIseUJBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsS0FBSyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1dBQy9DO1NBQ0Y7T0FDRixNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxPQUFPLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRTtBQUMzRCxZQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7QUFDdEIsWUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztBQUNuRCxhQUFLLElBQUksRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxHQUFHLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRTtBQUM3RCxvQkFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDM0I7QUFDRCxlQUFPLEdBQUcsVUFBVSxDQUFDO0FBQ3JCLGFBQUssSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZDLHVCQUFhLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEtBQUssT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztTQUMvQztPQUNGLE1BQU07O0FBQ0wsY0FBSSxRQUFRLFlBQUEsQ0FBQzs7QUFFYixnQkFBTSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHLEVBQUk7Ozs7QUFJbEMsZ0JBQUksUUFBUSxLQUFLLFNBQVMsRUFBRTtBQUMxQiwyQkFBYSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7YUFDaEM7QUFDRCxvQkFBUSxHQUFHLEdBQUcsQ0FBQztBQUNmLGFBQUMsRUFBRSxDQUFDO1dBQ0wsQ0FBQyxDQUFDO0FBQ0gsY0FBSSxRQUFRLEtBQUssU0FBUyxFQUFFO0FBQzFCLHlCQUFhLENBQUMsUUFBUSxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7V0FDdEM7O09BQ0Y7S0FDRjs7QUFFRCxRQUFJLENBQUMsS0FBSyxDQUFDLEVBQUU7QUFDWCxTQUFHLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3JCOztBQUVELFdBQU8sR0FBRyxDQUFDO0dBQ1osQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoiZWFjaC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGFwcGVuZENvbnRleHRQYXRoLFxuICBibG9ja1BhcmFtcyxcbiAgY3JlYXRlRnJhbWUsXG4gIGlzQXJyYXksXG4gIGlzRnVuY3Rpb25cbn0gZnJvbSAnLi4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuLi9leGNlcHRpb24nO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbihpbnN0YW5jZSkge1xuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcignZWFjaCcsIGZ1bmN0aW9uKGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ011c3QgcGFzcyBpdGVyYXRvciB0byAjZWFjaCcpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm4sXG4gICAgICBpbnZlcnNlID0gb3B0aW9ucy5pbnZlcnNlLFxuICAgICAgaSA9IDAsXG4gICAgICByZXQgPSAnJyxcbiAgICAgIGRhdGEsXG4gICAgICBjb250ZXh0UGF0aDtcblxuICAgIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5pZHMpIHtcbiAgICAgIGNvbnRleHRQYXRoID1cbiAgICAgICAgYXBwZW5kQ29udGV4dFBhdGgob3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoLCBvcHRpb25zLmlkc1swXSkgKyAnLic7XG4gICAgfVxuXG4gICAgaWYgKGlzRnVuY3Rpb24oY29udGV4dCkpIHtcbiAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuZGF0YSkge1xuICAgICAgZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gZXhlY0l0ZXJhdGlvbihmaWVsZCwgaW5kZXgsIGxhc3QpIHtcbiAgICAgIGlmIChkYXRhKSB7XG4gICAgICAgIGRhdGEua2V5ID0gZmllbGQ7XG4gICAgICAgIGRhdGEuaW5kZXggPSBpbmRleDtcbiAgICAgICAgZGF0YS5maXJzdCA9IGluZGV4ID09PSAwO1xuICAgICAgICBkYXRhLmxhc3QgPSAhIWxhc3Q7XG5cbiAgICAgICAgaWYgKGNvbnRleHRQYXRoKSB7XG4gICAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGNvbnRleHRQYXRoICsgZmllbGQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgcmV0ID1cbiAgICAgICAgcmV0ICtcbiAgICAgICAgZm4oY29udGV4dFtmaWVsZF0sIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIGJsb2NrUGFyYW1zOiBibG9ja1BhcmFtcyhcbiAgICAgICAgICAgIFtjb250ZXh0W2ZpZWxkXSwgZmllbGRdLFxuICAgICAgICAgICAgW2NvbnRleHRQYXRoICsgZmllbGQsIG51bGxdXG4gICAgICAgICAgKVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAoY29udGV4dCAmJiB0eXBlb2YgY29udGV4dCA9PT0gJ29iamVjdCcpIHtcbiAgICAgIGlmIChpc0FycmF5KGNvbnRleHQpKSB7XG4gICAgICAgIGZvciAobGV0IGogPSBjb250ZXh0Lmxlbmd0aDsgaSA8IGo7IGkrKykge1xuICAgICAgICAgIGlmIChpIGluIGNvbnRleHQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24oaSwgaSwgaSA9PT0gY29udGV4dC5sZW5ndGggLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoZ2xvYmFsLlN5bWJvbCAmJiBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKSB7XG4gICAgICAgIGNvbnN0IG5ld0NvbnRleHQgPSBbXTtcbiAgICAgICAgY29uc3QgaXRlcmF0b3IgPSBjb250ZXh0W2dsb2JhbC5TeW1ib2wuaXRlcmF0b3JdKCk7XG4gICAgICAgIGZvciAobGV0IGl0ID0gaXRlcmF0b3IubmV4dCgpOyAhaXQuZG9uZTsgaXQgPSBpdGVyYXRvci5uZXh0KCkpIHtcbiAgICAgICAgICBuZXdDb250ZXh0LnB1c2goaXQudmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRleHQgPSBuZXdDb250ZXh0O1xuICAgICAgICBmb3IgKGxldCBqID0gY29udGV4dC5sZW5ndGg7IGkgPCBqOyBpKyspIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKGksIGksIGkgPT09IGNvbnRleHQubGVuZ3RoIC0gMSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBwcmlvcktleTtcblxuICAgICAgICBPYmplY3Qua2V5cyhjb250ZXh0KS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgLy8gV2UncmUgcnVubmluZyB0aGUgaXRlcmF0aW9ucyBvbmUgc3RlcCBvdXQgb2Ygc3luYyBzbyB3ZSBjYW4gZGV0ZWN0XG4gICAgICAgICAgLy8gdGhlIGxhc3QgaXRlcmF0aW9uIHdpdGhvdXQgaGF2ZSB0byBzY2FuIHRoZSBvYmplY3QgdHdpY2UgYW5kIGNyZWF0ZVxuICAgICAgICAgIC8vIGFuIGl0ZXJtZWRpYXRlIGtleXMgYXJyYXkuXG4gICAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGV4ZWNJdGVyYXRpb24ocHJpb3JLZXksIGkgLSAxKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcHJpb3JLZXkgPSBrZXk7XG4gICAgICAgICAgaSsrO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKHByaW9yS2V5ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICBleGVjSXRlcmF0aW9uKHByaW9yS2V5LCBpIC0gMSwgdHJ1ZSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaSA9PT0gMCkge1xuICAgICAgcmV0ID0gaW52ZXJzZSh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('helperMissing', function () /* [args, ]options */{\n if (arguments.length === 1) {\n // A missing field in a {{foo}} construct.\n return undefined;\n } else {\n // Someone is actually trying to call something, blow up.\n throw new _exception2['default']('Missing helper: \"' + arguments[arguments.length - 1].name + '\"');\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaGVscGVyLW1pc3NpbmcuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozt5QkFBc0IsY0FBYzs7OztxQkFFckIsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxlQUFlLEVBQUUsaUNBQWdDO0FBQ3ZFLFFBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7O0FBRTFCLGFBQU8sU0FBUyxDQUFDO0tBQ2xCLE1BQU07O0FBRUwsWUFBTSwyQkFDSixtQkFBbUIsR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsR0FBRyxDQUNqRSxDQUFDO0tBQ0g7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJoZWxwZXItbWlzc2luZy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2hlbHBlck1pc3NpbmcnLCBmdW5jdGlvbigvKiBbYXJncywgXW9wdGlvbnMgKi8pIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgLy8gQSBtaXNzaW5nIGZpZWxkIGluIGEge3tmb299fSBjb25zdHJ1Y3QuXG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTb21lb25lIGlzIGFjdHVhbGx5IHRyeWluZyB0byBjYWxsIHNvbWV0aGluZywgYmxvdyB1cC5cbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oXG4gICAgICAgICdNaXNzaW5nIGhlbHBlcjogXCInICsgYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXS5uYW1lICsgJ1wiJ1xuICAgICAgKTtcbiAgICB9XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('if', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#if requires exactly one argument');\n }\n if (_utils.isFunction(conditional)) {\n conditional = conditional.call(this);\n }\n\n // Default behavior is to render the positive path if the value is truthy and not empty.\n // The `includeZero` option may be set to treat the condtional as purely not empty based on the\n // behavior of isEmpty. Effectively this determines if 0 is handled by the positive path or negative.\n if (!options.hash.includeZero && !conditional || _utils.isEmpty(conditional)) {\n return options.inverse(this);\n } else {\n return options.fn(this);\n }\n });\n\n instance.registerHelper('unless', function (conditional, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#unless requires exactly one argument');\n }\n return instance.helpers['if'].call(this, conditional, {\n fn: options.inverse,\n inverse: options.fn,\n hash: options.hash\n });\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvaWYuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztxQkFBb0MsVUFBVTs7eUJBQ3hCLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVMsV0FBVyxFQUFFLE9BQU8sRUFBRTtBQUMzRCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztLQUMxRDtBQUNELFFBQUksa0JBQVcsV0FBVyxDQUFDLEVBQUU7QUFDM0IsaUJBQVcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQ3RDOzs7OztBQUtELFFBQUksQUFBQyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxJQUFLLGVBQVEsV0FBVyxDQUFDLEVBQUU7QUFDdkUsYUFBTyxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0tBQzlCLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDekI7R0FDRixDQUFDLENBQUM7O0FBRUgsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxXQUFXLEVBQUUsT0FBTyxFQUFFO0FBQy9ELFFBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUU7QUFDekIsWUFBTSwyQkFBYyx1Q0FBdUMsQ0FBQyxDQUFDO0tBQzlEO0FBQ0QsV0FBTyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsV0FBVyxFQUFFO0FBQ3BELFFBQUUsRUFBRSxPQUFPLENBQUMsT0FBTztBQUNuQixhQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUU7QUFDbkIsVUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO0tBQ25CLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlmLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNFbXB0eSwgaXNGdW5jdGlvbiB9IGZyb20gJy4uL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi4vZXhjZXB0aW9uJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2lmJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjaWYgcmVxdWlyZXMgZXhhY3RseSBvbmUgYXJndW1lbnQnKTtcbiAgICB9XG4gICAgaWYgKGlzRnVuY3Rpb24oY29uZGl0aW9uYWwpKSB7XG4gICAgICBjb25kaXRpb25hbCA9IGNvbmRpdGlvbmFsLmNhbGwodGhpcyk7XG4gICAgfVxuXG4gICAgLy8gRGVmYXVsdCBiZWhhdmlvciBpcyB0byByZW5kZXIgdGhlIHBvc2l0aXZlIHBhdGggaWYgdGhlIHZhbHVlIGlzIHRydXRoeSBhbmQgbm90IGVtcHR5LlxuICAgIC8vIFRoZSBgaW5jbHVkZVplcm9gIG9wdGlvbiBtYXkgYmUgc2V0IHRvIHRyZWF0IHRoZSBjb25kdGlvbmFsIGFzIHB1cmVseSBub3QgZW1wdHkgYmFzZWQgb24gdGhlXG4gICAgLy8gYmVoYXZpb3Igb2YgaXNFbXB0eS4gRWZmZWN0aXZlbHkgdGhpcyBkZXRlcm1pbmVzIGlmIDAgaXMgaGFuZGxlZCBieSB0aGUgcG9zaXRpdmUgcGF0aCBvciBuZWdhdGl2ZS5cbiAgICBpZiAoKCFvcHRpb25zLmhhc2guaW5jbHVkZVplcm8gJiYgIWNvbmRpdGlvbmFsKSB8fCBpc0VtcHR5KGNvbmRpdGlvbmFsKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XG4gICAgfVxuICB9KTtcblxuICBpbnN0YW5jZS5yZWdpc3RlckhlbHBlcigndW5sZXNzJywgZnVuY3Rpb24oY29uZGl0aW9uYWwsIG9wdGlvbnMpIHtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCAhPSAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCcjdW5sZXNzIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIHJldHVybiBpbnN0YW5jZS5oZWxwZXJzWydpZiddLmNhbGwodGhpcywgY29uZGl0aW9uYWwsIHtcbiAgICAgIGZuOiBvcHRpb25zLmludmVyc2UsXG4gICAgICBpbnZlcnNlOiBvcHRpb25zLmZuLFxuICAgICAgaGFzaDogb3B0aW9ucy5oYXNoXG4gICAgfSk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('log', function () /* message, options */{\n var args = [undefined],\n options = arguments[arguments.length - 1];\n for (var i = 0; i < arguments.length - 1; i++) {\n args.push(arguments[i]);\n }\n\n var level = 1;\n if (options.hash.level != null) {\n level = options.hash.level;\n } else if (options.data && options.data.level != null) {\n level = options.data.level;\n }\n args[0] = level;\n\n instance.log.apply(instance, args);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLEVBQUUsa0NBQWlDO0FBQzlELFFBQUksSUFBSSxHQUFHLENBQUMsU0FBUyxDQUFDO1FBQ3BCLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUM1QyxTQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDN0MsVUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztLQUN6Qjs7QUFFRCxRQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7QUFDZCxRQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksRUFBRTtBQUM5QixXQUFLLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7S0FDNUIsTUFBTSxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxFQUFFO0FBQ3JELFdBQUssR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQztLQUM1QjtBQUNELFFBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRWhCLFlBQVEsQ0FBQyxHQUFHLE1BQUEsQ0FBWixRQUFRLEVBQVEsSUFBSSxDQUFDLENBQUM7R0FDdkIsQ0FBQyxDQUFDO0NBQ0oiLCJmaWxlIjoibG9nLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJIZWxwZXIoJ2xvZycsIGZ1bmN0aW9uKC8qIG1lc3NhZ2UsIG9wdGlvbnMgKi8pIHtcbiAgICBsZXQgYXJncyA9IFt1bmRlZmluZWRdLFxuICAgICAgb3B0aW9ucyA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoIC0gMTsgaSsrKSB7XG4gICAgICBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgICB9XG5cbiAgICBsZXQgbGV2ZWwgPSAxO1xuICAgIGlmIChvcHRpb25zLmhhc2gubGV2ZWwgIT0gbnVsbCkge1xuICAgICAgbGV2ZWwgPSBvcHRpb25zLmhhc2gubGV2ZWw7XG4gICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgJiYgb3B0aW9ucy5kYXRhLmxldmVsICE9IG51bGwpIHtcbiAgICAgIGxldmVsID0gb3B0aW9ucy5kYXRhLmxldmVsO1xuICAgIH1cbiAgICBhcmdzWzBdID0gbGV2ZWw7XG5cbiAgICBpbnN0YW5jZS5sb2coLi4uYXJncyk7XG4gIH0pO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (instance) {\n instance.registerHelper('lookup', function (obj, field, options) {\n if (!obj) {\n // Note for 5.0: Change to \"obj == null\" in 5.0\n return obj;\n }\n return options.lookupProperty(obj, field);\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvbG9va3VwLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxRQUFRLEVBQUU7QUFDaEMsVUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLEVBQUUsVUFBUyxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBRTtBQUM5RCxRQUFJLENBQUMsR0FBRyxFQUFFOztBQUVSLGFBQU8sR0FBRyxDQUFDO0tBQ1o7QUFDRCxXQUFPLE9BQU8sQ0FBQyxjQUFjLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0dBQzNDLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6Imxvb2t1cC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCdsb29rdXAnLCBmdW5jdGlvbihvYmosIGZpZWxkLCBvcHRpb25zKSB7XG4gICAgaWYgKCFvYmopIHtcbiAgICAgIC8vIE5vdGUgZm9yIDUuMDogQ2hhbmdlIHRvIFwib2JqID09IG51bGxcIiBpbiA1LjBcbiAgICAgIHJldHVybiBvYmo7XG4gICAgfVxuICAgIHJldHVybiBvcHRpb25zLmxvb2t1cFByb3BlcnR5KG9iaiwgZmllbGQpO1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('../utils');\n\nvar _exception = require('../exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nexports['default'] = function (instance) {\n instance.registerHelper('with', function (context, options) {\n if (arguments.length != 2) {\n throw new _exception2['default']('#with requires exactly one argument');\n }\n if (_utils.isFunction(context)) {\n context = context.call(this);\n }\n\n var fn = options.fn;\n\n if (!_utils.isEmpty(context)) {\n var data = options.data;\n if (options.data && options.ids) {\n data = _utils.createFrame(options.data);\n data.contextPath = _utils.appendContextPath(options.data.contextPath, options.ids[0]);\n }\n\n return fn(context, {\n data: data,\n blockParams: _utils.blockParams([context], [data && data.contextPath])\n });\n } else {\n return options.inverse(this);\n }\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMvd2l0aC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O3FCQU1PLFVBQVU7O3lCQUNLLGNBQWM7Ozs7cUJBRXJCLFVBQVMsUUFBUSxFQUFFO0FBQ2hDLFVBQVEsQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLFVBQVMsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN6RCxRQUFJLFNBQVMsQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO0FBQ3pCLFlBQU0sMkJBQWMscUNBQXFDLENBQUMsQ0FBQztLQUM1RDtBQUNELFFBQUksa0JBQVcsT0FBTyxDQUFDLEVBQUU7QUFDdkIsYUFBTyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7O0FBRUQsUUFBSSxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsQ0FBQzs7QUFFcEIsUUFBSSxDQUFDLGVBQVEsT0FBTyxDQUFDLEVBQUU7QUFDckIsVUFBSSxJQUFJLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztBQUN4QixVQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUMvQixZQUFJLEdBQUcsbUJBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2pDLFlBQUksQ0FBQyxXQUFXLEdBQUcseUJBQ2pCLE9BQU8sQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUNmLENBQUM7T0FDSDs7QUFFRCxhQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUU7QUFDakIsWUFBSSxFQUFFLElBQUk7QUFDVixtQkFBVyxFQUFFLG1CQUFZLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO09BQ2hFLENBQUMsQ0FBQztLQUNKLE1BQU07QUFDTCxhQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDOUI7R0FDRixDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJ3aXRoLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgYXBwZW5kQ29udGV4dFBhdGgsXG4gIGJsb2NrUGFyYW1zLFxuICBjcmVhdGVGcmFtZSxcbiAgaXNFbXB0eSxcbiAgaXNGdW5jdGlvblxufSBmcm9tICcuLi91dGlscyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4uL2V4Y2VwdGlvbic7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKGluc3RhbmNlKSB7XG4gIGluc3RhbmNlLnJlZ2lzdGVySGVscGVyKCd3aXRoJywgZnVuY3Rpb24oY29udGV4dCwgb3B0aW9ucykge1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoICE9IDIpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJyN3aXRoIHJlcXVpcmVzIGV4YWN0bHkgb25lIGFyZ3VtZW50Jyk7XG4gICAgfVxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnRleHQpKSB7XG4gICAgICBjb250ZXh0ID0gY29udGV4dC5jYWxsKHRoaXMpO1xuICAgIH1cblxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG5cbiAgICBpZiAoIWlzRW1wdHkoY29udGV4dCkpIHtcbiAgICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuICAgICAgaWYgKG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmlkcykge1xuICAgICAgICBkYXRhID0gY3JlYXRlRnJhbWUob3B0aW9ucy5kYXRhKTtcbiAgICAgICAgZGF0YS5jb250ZXh0UGF0aCA9IGFwcGVuZENvbnRleHRQYXRoKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YS5jb250ZXh0UGF0aCxcbiAgICAgICAgICBvcHRpb25zLmlkc1swXVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZm4oY29udGV4dCwge1xuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBibG9ja1BhcmFtczogYmxvY2tQYXJhbXMoW2NvbnRleHRdLCBbZGF0YSAmJiBkYXRhLmNvbnRleHRQYXRoXSlcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xuICAgIH1cbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultHelpers = registerDefaultHelpers;\nexports.moveHelperToHooks = moveHelperToHooks;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _helpersBlockHelperMissing = require('./helpers/block-helper-missing');\n\nvar _helpersBlockHelperMissing2 = _interopRequireDefault(_helpersBlockHelperMissing);\n\nvar _helpersEach = require('./helpers/each');\n\nvar _helpersEach2 = _interopRequireDefault(_helpersEach);\n\nvar _helpersHelperMissing = require('./helpers/helper-missing');\n\nvar _helpersHelperMissing2 = _interopRequireDefault(_helpersHelperMissing);\n\nvar _helpersIf = require('./helpers/if');\n\nvar _helpersIf2 = _interopRequireDefault(_helpersIf);\n\nvar _helpersLog = require('./helpers/log');\n\nvar _helpersLog2 = _interopRequireDefault(_helpersLog);\n\nvar _helpersLookup = require('./helpers/lookup');\n\nvar _helpersLookup2 = _interopRequireDefault(_helpersLookup);\n\nvar _helpersWith = require('./helpers/with');\n\nvar _helpersWith2 = _interopRequireDefault(_helpersWith);\n\nfunction registerDefaultHelpers(instance) {\n _helpersBlockHelperMissing2['default'](instance);\n _helpersEach2['default'](instance);\n _helpersHelperMissing2['default'](instance);\n _helpersIf2['default'](instance);\n _helpersLog2['default'](instance);\n _helpersLookup2['default'](instance);\n _helpersWith2['default'](instance);\n}\n\nfunction moveHelperToHooks(instance, helperName, keepHelper) {\n if (instance.helpers[helperName]) {\n instance.hooks[helperName] = instance.helpers[helperName];\n if (!keepHelper) {\n delete instance.helpers[helperName];\n }\n }\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2hlbHBlcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O3lDQUF1QyxnQ0FBZ0M7Ozs7MkJBQzlDLGdCQUFnQjs7OztvQ0FDUCwwQkFBMEI7Ozs7eUJBQ3JDLGNBQWM7Ozs7MEJBQ2IsZUFBZTs7Ozs2QkFDWixrQkFBa0I7Ozs7MkJBQ3BCLGdCQUFnQjs7OztBQUVsQyxTQUFTLHNCQUFzQixDQUFDLFFBQVEsRUFBRTtBQUMvQyx5Q0FBMkIsUUFBUSxDQUFDLENBQUM7QUFDckMsMkJBQWEsUUFBUSxDQUFDLENBQUM7QUFDdkIsb0NBQXNCLFFBQVEsQ0FBQyxDQUFDO0FBQ2hDLHlCQUFXLFFBQVEsQ0FBQyxDQUFDO0FBQ3JCLDBCQUFZLFFBQVEsQ0FBQyxDQUFDO0FBQ3RCLDZCQUFlLFFBQVEsQ0FBQyxDQUFDO0FBQ3pCLDJCQUFhLFFBQVEsQ0FBQyxDQUFDO0NBQ3hCOztBQUVNLFNBQVMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUU7QUFDbEUsTUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxFQUFFO0FBQ2hDLFlBQVEsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUMxRCxRQUFJLENBQUMsVUFBVSxFQUFFO0FBQ2YsYUFBTyxRQUFRLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0tBQ3JDO0dBQ0Y7Q0FDRiIsImZpbGUiOiJoZWxwZXJzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVyQmxvY2tIZWxwZXJNaXNzaW5nIGZyb20gJy4vaGVscGVycy9ibG9jay1oZWxwZXItbWlzc2luZyc7XG5pbXBvcnQgcmVnaXN0ZXJFYWNoIGZyb20gJy4vaGVscGVycy9lYWNoJztcbmltcG9ydCByZWdpc3RlckhlbHBlck1pc3NpbmcgZnJvbSAnLi9oZWxwZXJzL2hlbHBlci1taXNzaW5nJztcbmltcG9ydCByZWdpc3RlcklmIGZyb20gJy4vaGVscGVycy9pZic7XG5pbXBvcnQgcmVnaXN0ZXJMb2cgZnJvbSAnLi9oZWxwZXJzL2xvZyc7XG5pbXBvcnQgcmVnaXN0ZXJMb29rdXAgZnJvbSAnLi9oZWxwZXJzL2xvb2t1cCc7XG5pbXBvcnQgcmVnaXN0ZXJXaXRoIGZyb20gJy4vaGVscGVycy93aXRoJztcblxuZXhwb3J0IGZ1bmN0aW9uIHJlZ2lzdGVyRGVmYXVsdEhlbHBlcnMoaW5zdGFuY2UpIHtcbiAgcmVnaXN0ZXJCbG9ja0hlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlckVhY2goaW5zdGFuY2UpO1xuICByZWdpc3RlckhlbHBlck1pc3NpbmcoaW5zdGFuY2UpO1xuICByZWdpc3RlcklmKGluc3RhbmNlKTtcbiAgcmVnaXN0ZXJMb2coaW5zdGFuY2UpO1xuICByZWdpc3Rlckxvb2t1cChpbnN0YW5jZSk7XG4gIHJlZ2lzdGVyV2l0aChpbnN0YW5jZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtb3ZlSGVscGVyVG9Ib29rcyhpbnN0YW5jZSwgaGVscGVyTmFtZSwga2VlcEhlbHBlcikge1xuICBpZiAoaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXSkge1xuICAgIGluc3RhbmNlLmhvb2tzW2hlbHBlck5hbWVdID0gaW5zdGFuY2UuaGVscGVyc1toZWxwZXJOYW1lXTtcbiAgICBpZiAoIWtlZXBIZWxwZXIpIHtcbiAgICAgIGRlbGV0ZSBpbnN0YW5jZS5oZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIH1cbiAgfVxufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('../utils');\n\nexports['default'] = function (instance) {\n instance.registerDecorator('inline', function (fn, props, container, options) {\n var ret = fn;\n if (!props.partials) {\n props.partials = {};\n ret = function (context, options) {\n // Create a new partials stack frame prior to exec.\n var original = container.partials;\n container.partials = _utils.extend({}, original, props.partials);\n var ret = fn(context, options);\n container.partials = original;\n return ret;\n };\n }\n\n props.partials[options.args[0]] = options.fn;\n\n return ret;\n });\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMvaW5saW5lLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQXVCLFVBQVU7O3FCQUVsQixVQUFTLFFBQVEsRUFBRTtBQUNoQyxVQUFRLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLFVBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFO0FBQzNFLFFBQUksR0FBRyxHQUFHLEVBQUUsQ0FBQztBQUNiLFFBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFO0FBQ25CLFdBQUssQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0FBQ3BCLFNBQUcsR0FBRyxVQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7O0FBRS9CLFlBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxRQUFRLENBQUM7QUFDbEMsaUJBQVMsQ0FBQyxRQUFRLEdBQUcsY0FBTyxFQUFFLEVBQUUsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUMxRCxZQUFJLEdBQUcsR0FBRyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQy9CLGlCQUFTLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztBQUM5QixlQUFPLEdBQUcsQ0FBQztPQUNaLENBQUM7S0FDSDs7QUFFRCxTQUFLLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUMsRUFBRSxDQUFDOztBQUU3QyxXQUFPLEdBQUcsQ0FBQztHQUNaLENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6ImlubGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGV4dGVuZCB9IGZyb20gJy4uL3V0aWxzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24oaW5zdGFuY2UpIHtcbiAgaW5zdGFuY2UucmVnaXN0ZXJEZWNvcmF0b3IoJ2lubGluZScsIGZ1bmN0aW9uKGZuLCBwcm9wcywgY29udGFpbmVyLCBvcHRpb25zKSB7XG4gICAgbGV0IHJldCA9IGZuO1xuICAgIGlmICghcHJvcHMucGFydGlhbHMpIHtcbiAgICAgIHByb3BzLnBhcnRpYWxzID0ge307XG4gICAgICByZXQgPSBmdW5jdGlvbihjb250ZXh0LCBvcHRpb25zKSB7XG4gICAgICAgIC8vIENyZWF0ZSBhIG5ldyBwYXJ0aWFscyBzdGFjayBmcmFtZSBwcmlvciB0byBleGVjLlxuICAgICAgICBsZXQgb3JpZ2luYWwgPSBjb250YWluZXIucGFydGlhbHM7XG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGV4dGVuZCh7fSwgb3JpZ2luYWwsIHByb3BzLnBhcnRpYWxzKTtcbiAgICAgICAgbGV0IHJldCA9IGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgICAgICBjb250YWluZXIucGFydGlhbHMgPSBvcmlnaW5hbDtcbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcHJvcHMucGFydGlhbHNbb3B0aW9ucy5hcmdzWzBdXSA9IG9wdGlvbnMuZm47XG5cbiAgICByZXR1cm4gcmV0O1xuICB9KTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.registerDefaultDecorators = registerDefaultDecorators;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _decoratorsInline = require('./decorators/inline');\n\nvar _decoratorsInline2 = _interopRequireDefault(_decoratorsInline);\n\nfunction registerDefaultDecorators(instance) {\n _decoratorsInline2['default'](instance);\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2RlY29yYXRvcnMuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Z0NBQTJCLHFCQUFxQjs7OztBQUV6QyxTQUFTLHlCQUF5QixDQUFDLFFBQVEsRUFBRTtBQUNsRCxnQ0FBZSxRQUFRLENBQUMsQ0FBQztDQUMxQiIsImZpbGUiOiJkZWNvcmF0b3JzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHJlZ2lzdGVySW5saW5lIGZyb20gJy4vZGVjb3JhdG9ycy9pbmxpbmUnO1xuXG5leHBvcnQgZnVuY3Rpb24gcmVnaXN0ZXJEZWZhdWx0RGVjb3JhdG9ycyhpbnN0YW5jZSkge1xuICByZWdpc3RlcklubGluZShpbnN0YW5jZSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nvar _utils = require('./utils');\n\nvar logger = {\n methodMap: ['debug', 'info', 'warn', 'error'],\n level: 'info',\n\n // Maps a given level value to the `methodMap` indexes above.\n lookupLevel: function lookupLevel(level) {\n if (typeof level === 'string') {\n var levelMap = _utils.indexOf(logger.methodMap, level.toLowerCase());\n if (levelMap >= 0) {\n level = levelMap;\n } else {\n level = parseInt(level, 10);\n }\n }\n\n return level;\n },\n\n // Can be overridden in the host environment\n log: function log(level) {\n level = logger.lookupLevel(level);\n\n if (typeof console !== 'undefined' && logger.lookupLevel(logger.level) <= level) {\n var method = logger.methodMap[level];\n // eslint-disable-next-line no-console\n if (!console[method]) {\n method = 'log';\n }\n\n for (var _len = arguments.length, message = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n message[_key - 1] = arguments[_key];\n }\n\n console[method].apply(console, message); // eslint-disable-line no-console\n }\n }\n};\n\nexports['default'] = logger;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2xvZ2dlci5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O3FCQUF3QixTQUFTOztBQUVqQyxJQUFJLE1BQU0sR0FBRztBQUNYLFdBQVMsRUFBRSxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQztBQUM3QyxPQUFLLEVBQUUsTUFBTTs7O0FBR2IsYUFBVyxFQUFFLHFCQUFTLEtBQUssRUFBRTtBQUMzQixRQUFJLE9BQU8sS0FBSyxLQUFLLFFBQVEsRUFBRTtBQUM3QixVQUFJLFFBQVEsR0FBRyxlQUFRLE1BQU0sQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7QUFDOUQsVUFBSSxRQUFRLElBQUksQ0FBQyxFQUFFO0FBQ2pCLGFBQUssR0FBRyxRQUFRLENBQUM7T0FDbEIsTUFBTTtBQUNMLGFBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO09BQzdCO0tBQ0Y7O0FBRUQsV0FBTyxLQUFLLENBQUM7R0FDZDs7O0FBR0QsS0FBRyxFQUFFLGFBQVMsS0FBSyxFQUFjO0FBQy9CLFNBQUssR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDOztBQUVsQyxRQUNFLE9BQU8sT0FBTyxLQUFLLFdBQVcsSUFDOUIsTUFBTSxDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLElBQUksS0FBSyxFQUN6QztBQUNBLFVBQUksTUFBTSxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRXJDLFVBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7QUFDcEIsY0FBTSxHQUFHLEtBQUssQ0FBQztPQUNoQjs7d0NBWG1CLE9BQU87QUFBUCxlQUFPOzs7QUFZM0IsYUFBTyxDQUFDLE1BQU0sT0FBQyxDQUFmLE9BQU8sRUFBWSxPQUFPLENBQUMsQ0FBQztLQUM3QjtHQUNGO0NBQ0YsQ0FBQzs7cUJBRWEsTUFBTSIsImZpbGUiOiJsb2dnZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBpbmRleE9mIH0gZnJvbSAnLi91dGlscyc7XG5cbmxldCBsb2dnZXIgPSB7XG4gIG1ldGhvZE1hcDogWydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InXSxcbiAgbGV2ZWw6ICdpbmZvJyxcblxuICAvLyBNYXBzIGEgZ2l2ZW4gbGV2ZWwgdmFsdWUgdG8gdGhlIGBtZXRob2RNYXBgIGluZGV4ZXMgYWJvdmUuXG4gIGxvb2t1cExldmVsOiBmdW5jdGlvbihsZXZlbCkge1xuICAgIGlmICh0eXBlb2YgbGV2ZWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBsZXQgbGV2ZWxNYXAgPSBpbmRleE9mKGxvZ2dlci5tZXRob2RNYXAsIGxldmVsLnRvTG93ZXJDYXNlKCkpO1xuICAgICAgaWYgKGxldmVsTWFwID49IDApIHtcbiAgICAgICAgbGV2ZWwgPSBsZXZlbE1hcDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldmVsID0gcGFyc2VJbnQobGV2ZWwsIDEwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbGV2ZWw7XG4gIH0sXG5cbiAgLy8gQ2FuIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGhvc3QgZW52aXJvbm1lbnRcbiAgbG9nOiBmdW5jdGlvbihsZXZlbCwgLi4ubWVzc2FnZSkge1xuICAgIGxldmVsID0gbG9nZ2VyLmxvb2t1cExldmVsKGxldmVsKTtcblxuICAgIGlmIChcbiAgICAgIHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgbG9nZ2VyLmxvb2t1cExldmVsKGxvZ2dlci5sZXZlbCkgPD0gbGV2ZWxcbiAgICApIHtcbiAgICAgIGxldCBtZXRob2QgPSBsb2dnZXIubWV0aG9kTWFwW2xldmVsXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBpZiAoIWNvbnNvbGVbbWV0aG9kXSkge1xuICAgICAgICBtZXRob2QgPSAnbG9nJztcbiAgICAgIH1cbiAgICAgIGNvbnNvbGVbbWV0aG9kXSguLi5tZXNzYWdlKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zb2xlXG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.createNewLookupObject = createNewLookupObject;\n\nvar _utils = require('../utils');\n\n/**\n * Create a new object with \"null\"-prototype to avoid truthy results on prototype properties.\n * The resulting object can be used with \"object[property]\" to check if a property exists\n * @param {...object} sources a varargs parameter of source objects that will be merged\n * @returns {object}\n */\n\nfunction createNewLookupObject() {\n for (var _len = arguments.length, sources = Array(_len), _key = 0; _key < _len; _key++) {\n sources[_key] = arguments[_key];\n }\n\n return _utils.extend.apply(undefined, [Object.create(null)].concat(sources));\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdC5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztxQkFBdUIsVUFBVTs7Ozs7Ozs7O0FBUTFCLFNBQVMscUJBQXFCLEdBQWE7b0NBQVQsT0FBTztBQUFQLFdBQU87OztBQUM5QyxTQUFPLGdDQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQUssT0FBTyxFQUFDLENBQUM7Q0FDaEQiLCJmaWxlIjoiY3JlYXRlLW5ldy1sb29rdXAtb2JqZWN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXh0ZW5kIH0gZnJvbSAnLi4vdXRpbHMnO1xuXG4vKipcbiAqIENyZWF0ZSBhIG5ldyBvYmplY3Qgd2l0aCBcIm51bGxcIi1wcm90b3R5cGUgdG8gYXZvaWQgdHJ1dGh5IHJlc3VsdHMgb24gcHJvdG90eXBlIHByb3BlcnRpZXMuXG4gKiBUaGUgcmVzdWx0aW5nIG9iamVjdCBjYW4gYmUgdXNlZCB3aXRoIFwib2JqZWN0W3Byb3BlcnR5XVwiIHRvIGNoZWNrIGlmIGEgcHJvcGVydHkgZXhpc3RzXG4gKiBAcGFyYW0gey4uLm9iamVjdH0gc291cmNlcyBhIHZhcmFyZ3MgcGFyYW1ldGVyIG9mIHNvdXJjZSBvYmplY3RzIHRoYXQgd2lsbCBiZSBtZXJnZWRcbiAqIEByZXR1cm5zIHtvYmplY3R9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVOZXdMb29rdXBPYmplY3QoLi4uc291cmNlcykge1xuICByZXR1cm4gZXh0ZW5kKE9iamVjdC5jcmVhdGUobnVsbCksIC4uLnNvdXJjZXMpO1xufVxuIl19\n","'use strict';\n\nexports.__esModule = true;\nexports.createProtoAccessControl = createProtoAccessControl;\nexports.resultIsAllowed = resultIsAllowed;\nexports.resetLoggedProperties = resetLoggedProperties;\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _createNewLookupObject = require('./create-new-lookup-object');\n\nvar _logger = require('../logger');\n\nvar logger = _interopRequireWildcard(_logger);\n\nvar loggedProperties = Object.create(null);\n\nfunction createProtoAccessControl(runtimeOptions) {\n var defaultMethodWhiteList = Object.create(null);\n defaultMethodWhiteList['constructor'] = false;\n defaultMethodWhiteList['__defineGetter__'] = false;\n defaultMethodWhiteList['__defineSetter__'] = false;\n defaultMethodWhiteList['__lookupGetter__'] = false;\n\n var defaultPropertyWhiteList = Object.create(null);\n // eslint-disable-next-line no-proto\n defaultPropertyWhiteList['__proto__'] = false;\n\n return {\n properties: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultPropertyWhiteList, runtimeOptions.allowedProtoProperties),\n defaultValue: runtimeOptions.allowProtoPropertiesByDefault\n },\n methods: {\n whitelist: _createNewLookupObject.createNewLookupObject(defaultMethodWhiteList, runtimeOptions.allowedProtoMethods),\n defaultValue: runtimeOptions.allowProtoMethodsByDefault\n }\n };\n}\n\nfunction resultIsAllowed(result, protoAccessControl, propertyName) {\n if (typeof result === 'function') {\n return checkWhiteList(protoAccessControl.methods, propertyName);\n } else {\n return checkWhiteList(protoAccessControl.properties, propertyName);\n }\n}\n\nfunction checkWhiteList(protoAccessControlForType, propertyName) {\n if (protoAccessControlForType.whitelist[propertyName] !== undefined) {\n return protoAccessControlForType.whitelist[propertyName] === true;\n }\n if (protoAccessControlForType.defaultValue !== undefined) {\n return protoAccessControlForType.defaultValue;\n }\n logUnexpecedPropertyAccessOnce(propertyName);\n return false;\n}\n\nfunction logUnexpecedPropertyAccessOnce(propertyName) {\n if (loggedProperties[propertyName] !== true) {\n loggedProperties[propertyName] = true;\n logger.log('error', 'Handlebars: Access has been denied to resolve the property \"' + propertyName + '\" because it is not an \"own property\" of its parent.\\n' + 'You can add a runtime option to disable the check or this warning:\\n' + 'See https://handlebarsjs.com/api-reference/runtime-options.html#options-to-control-prototype-access for details');\n }\n}\n\nfunction resetLoggedProperties() {\n Object.keys(loggedProperties).forEach(function (propertyName) {\n delete loggedProperties[propertyName];\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3Byb3RvLWFjY2Vzcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O3FDQUFzQyw0QkFBNEI7O3NCQUMxQyxXQUFXOztJQUF2QixNQUFNOztBQUVsQixJQUFNLGdCQUFnQixHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXRDLFNBQVMsd0JBQXdCLENBQUMsY0FBYyxFQUFFO0FBQ3ZELE1BQUksc0JBQXNCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUNqRCx3QkFBc0IsQ0FBQyxhQUFhLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDOUMsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7QUFDbkQsd0JBQXNCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxLQUFLLENBQUM7O0FBRW5ELE1BQUksd0JBQXdCLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQzs7QUFFbkQsMEJBQXdCLENBQUMsV0FBVyxDQUFDLEdBQUcsS0FBSyxDQUFDOztBQUU5QyxTQUFPO0FBQ0wsY0FBVSxFQUFFO0FBQ1YsZUFBUyxFQUFFLDZDQUNULHdCQUF3QixFQUN4QixjQUFjLENBQUMsc0JBQXNCLENBQ3RDO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsNkJBQTZCO0tBQzNEO0FBQ0QsV0FBTyxFQUFFO0FBQ1AsZUFBUyxFQUFFLDZDQUNULHNCQUFzQixFQUN0QixjQUFjLENBQUMsbUJBQW1CLENBQ25DO0FBQ0Qsa0JBQVksRUFBRSxjQUFjLENBQUMsMEJBQTBCO0tBQ3hEO0dBQ0YsQ0FBQztDQUNIOztBQUVNLFNBQVMsZUFBZSxDQUFDLE1BQU0sRUFBRSxrQkFBa0IsRUFBRSxZQUFZLEVBQUU7QUFDeEUsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7QUFDaEMsV0FBTyxjQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxDQUFDO0dBQ2pFLE1BQU07QUFDTCxXQUFPLGNBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7R0FDcEU7Q0FDRjs7QUFFRCxTQUFTLGNBQWMsQ0FBQyx5QkFBeUIsRUFBRSxZQUFZLEVBQUU7QUFDL0QsTUFBSSx5QkFBeUIsQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxFQUFFO0FBQ25FLFdBQU8seUJBQXlCLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxLQUFLLElBQUksQ0FBQztHQUNuRTtBQUNELE1BQUkseUJBQXlCLENBQUMsWUFBWSxLQUFLLFNBQVMsRUFBRTtBQUN4RCxXQUFPLHlCQUF5QixDQUFDLFlBQVksQ0FBQztHQUMvQztBQUNELGdDQUE4QixDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQzdDLFNBQU8sS0FBSyxDQUFDO0NBQ2Q7O0FBRUQsU0FBUyw4QkFBOEIsQ0FBQyxZQUFZLEVBQUU7QUFDcEQsTUFBSSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsS0FBSyxJQUFJLEVBQUU7QUFDM0Msb0JBQWdCLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDO0FBQ3RDLFVBQU0sQ0FBQyxHQUFHLENBQ1IsT0FBTyxFQUNQLGlFQUErRCxZQUFZLG9JQUNILG9IQUMyQyxDQUNwSCxDQUFDO0dBQ0g7Q0FDRjs7QUFFTSxTQUFTLHFCQUFxQixHQUFHO0FBQ3RDLFFBQU0sQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxPQUFPLENBQUMsVUFBQSxZQUFZLEVBQUk7QUFDcEQsV0FBTyxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztHQUN2QyxDQUFDLENBQUM7Q0FDSiIsImZpbGUiOiJwcm90by1hY2Nlc3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVOZXdMb29rdXBPYmplY3QgfSBmcm9tICcuL2NyZWF0ZS1uZXctbG9va3VwLW9iamVjdCc7XG5pbXBvcnQgKiBhcyBsb2dnZXIgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgbG9nZ2VkUHJvcGVydGllcyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVQcm90b0FjY2Vzc0NvbnRyb2wocnVudGltZU9wdGlvbnMpIHtcbiAgbGV0IGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0Wydjb25zdHJ1Y3RvciddID0gZmFsc2U7XG4gIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3RbJ19fZGVmaW5lR2V0dGVyX18nXSA9IGZhbHNlO1xuICBkZWZhdWx0TWV0aG9kV2hpdGVMaXN0WydfX2RlZmluZVNldHRlcl9fJ10gPSBmYWxzZTtcbiAgZGVmYXVsdE1ldGhvZFdoaXRlTGlzdFsnX19sb29rdXBHZXR0ZXJfXyddID0gZmFsc2U7XG5cbiAgbGV0IGRlZmF1bHRQcm9wZXJ0eVdoaXRlTGlzdCA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b1xuICBkZWZhdWx0UHJvcGVydHlXaGl0ZUxpc3RbJ19fcHJvdG9fXyddID0gZmFsc2U7XG5cbiAgcmV0dXJuIHtcbiAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICB3aGl0ZWxpc3Q6IGNyZWF0ZU5ld0xvb2t1cE9iamVjdChcbiAgICAgICAgZGVmYXVsdFByb3BlcnR5V2hpdGVMaXN0LFxuICAgICAgICBydW50aW1lT3B0aW9ucy5hbGxvd2VkUHJvdG9Qcm9wZXJ0aWVzXG4gICAgICApLFxuICAgICAgZGVmYXVsdFZhbHVlOiBydW50aW1lT3B0aW9ucy5hbGxvd1Byb3RvUHJvcGVydGllc0J5RGVmYXVsdFxuICAgIH0sXG4gICAgbWV0aG9kczoge1xuICAgICAgd2hpdGVsaXN0OiBjcmVhdGVOZXdMb29rdXBPYmplY3QoXG4gICAgICAgIGRlZmF1bHRNZXRob2RXaGl0ZUxpc3QsXG4gICAgICAgIHJ1bnRpbWVPcHRpb25zLmFsbG93ZWRQcm90b01ldGhvZHNcbiAgICAgICksXG4gICAgICBkZWZhdWx0VmFsdWU6IHJ1bnRpbWVPcHRpb25zLmFsbG93UHJvdG9NZXRob2RzQnlEZWZhdWx0XG4gICAgfVxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzdWx0SXNBbGxvd2VkKHJlc3VsdCwgcHJvdG9BY2Nlc3NDb250cm9sLCBwcm9wZXJ0eU5hbWUpIHtcbiAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gY2hlY2tXaGl0ZUxpc3QocHJvdG9BY2Nlc3NDb250cm9sLm1ldGhvZHMsIHByb3BlcnR5TmFtZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbC5wcm9wZXJ0aWVzLCBwcm9wZXJ0eU5hbWUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNoZWNrV2hpdGVMaXN0KHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUsIHByb3BlcnR5TmFtZSkge1xuICBpZiAocHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS53aGl0ZWxpc3RbcHJvcGVydHlOYW1lXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUud2hpdGVsaXN0W3Byb3BlcnR5TmFtZV0gPT09IHRydWU7XG4gIH1cbiAgaWYgKHByb3RvQWNjZXNzQ29udHJvbEZvclR5cGUuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gcHJvdG9BY2Nlc3NDb250cm9sRm9yVHlwZS5kZWZhdWx0VmFsdWU7XG4gIH1cbiAgbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSk7XG4gIHJldHVybiBmYWxzZTtcbn1cblxuZnVuY3Rpb24gbG9nVW5leHBlY2VkUHJvcGVydHlBY2Nlc3NPbmNlKHByb3BlcnR5TmFtZSkge1xuICBpZiAobG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdICE9PSB0cnVlKSB7XG4gICAgbG9nZ2VkUHJvcGVydGllc1twcm9wZXJ0eU5hbWVdID0gdHJ1ZTtcbiAgICBsb2dnZXIubG9nKFxuICAgICAgJ2Vycm9yJyxcbiAgICAgIGBIYW5kbGViYXJzOiBBY2Nlc3MgaGFzIGJlZW4gZGVuaWVkIHRvIHJlc29sdmUgdGhlIHByb3BlcnR5IFwiJHtwcm9wZXJ0eU5hbWV9XCIgYmVjYXVzZSBpdCBpcyBub3QgYW4gXCJvd24gcHJvcGVydHlcIiBvZiBpdHMgcGFyZW50LlxcbmAgK1xuICAgICAgICBgWW91IGNhbiBhZGQgYSBydW50aW1lIG9wdGlvbiB0byBkaXNhYmxlIHRoZSBjaGVjayBvciB0aGlzIHdhcm5pbmc6XFxuYCArXG4gICAgICAgIGBTZWUgaHR0cHM6Ly9oYW5kbGViYXJzanMuY29tL2FwaS1yZWZlcmVuY2UvcnVudGltZS1vcHRpb25zLmh0bWwjb3B0aW9ucy10by1jb250cm9sLXByb3RvdHlwZS1hY2Nlc3MgZm9yIGRldGFpbHNgXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCkge1xuICBPYmplY3Qua2V5cyhsb2dnZWRQcm9wZXJ0aWVzKS5mb3JFYWNoKHByb3BlcnR5TmFtZSA9PiB7XG4gICAgZGVsZXRlIGxvZ2dlZFByb3BlcnRpZXNbcHJvcGVydHlOYW1lXTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.HandlebarsEnvironment = HandlebarsEnvironment;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\nvar _utils = require('./utils');\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _helpers = require('./helpers');\n\nvar _decorators = require('./decorators');\n\nvar _logger = require('./logger');\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nvar VERSION = '4.7.7';\nexports.VERSION = VERSION;\nvar COMPILER_REVISION = 8;\nexports.COMPILER_REVISION = COMPILER_REVISION;\nvar LAST_COMPATIBLE_COMPILER_REVISION = 7;\n\nexports.LAST_COMPATIBLE_COMPILER_REVISION = LAST_COMPATIBLE_COMPILER_REVISION;\nvar REVISION_CHANGES = {\n 1: '<= 1.0.rc.2', // 1.0.rc.2 is actually rev2 but doesn't report it\n 2: '== 1.0.0-rc.3',\n 3: '== 1.0.0-rc.4',\n 4: '== 1.x.x',\n 5: '== 2.0.0-alpha.x',\n 6: '>= 2.0.0-beta.1',\n 7: '>= 4.0.0 <4.3.0',\n 8: '>= 4.3.0'\n};\n\nexports.REVISION_CHANGES = REVISION_CHANGES;\nvar objectType = '[object Object]';\n\nfunction HandlebarsEnvironment(helpers, partials, decorators) {\n this.helpers = helpers || {};\n this.partials = partials || {};\n this.decorators = decorators || {};\n\n _helpers.registerDefaultHelpers(this);\n _decorators.registerDefaultDecorators(this);\n}\n\nHandlebarsEnvironment.prototype = {\n constructor: HandlebarsEnvironment,\n\n logger: _logger2['default'],\n log: _logger2['default'].log,\n\n registerHelper: function registerHelper(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple helpers');\n }\n _utils.extend(this.helpers, name);\n } else {\n this.helpers[name] = fn;\n }\n },\n unregisterHelper: function unregisterHelper(name) {\n delete this.helpers[name];\n },\n\n registerPartial: function registerPartial(name, partial) {\n if (_utils.toString.call(name) === objectType) {\n _utils.extend(this.partials, name);\n } else {\n if (typeof partial === 'undefined') {\n throw new _exception2['default']('Attempting to register a partial called \"' + name + '\" as undefined');\n }\n this.partials[name] = partial;\n }\n },\n unregisterPartial: function unregisterPartial(name) {\n delete this.partials[name];\n },\n\n registerDecorator: function registerDecorator(name, fn) {\n if (_utils.toString.call(name) === objectType) {\n if (fn) {\n throw new _exception2['default']('Arg not supported with multiple decorators');\n }\n _utils.extend(this.decorators, name);\n } else {\n this.decorators[name] = fn;\n }\n },\n unregisterDecorator: function unregisterDecorator(name) {\n delete this.decorators[name];\n },\n /**\n * Reset the memory of illegal property accesses that have already been logged.\n * @deprecated should only be used in handlebars test-cases\n */\n resetLoggedPropertyAccesses: function resetLoggedPropertyAccesses() {\n _internalProtoAccess.resetLoggedProperties();\n }\n};\n\nvar log = _logger2['default'].log;\n\nexports.log = log;\nexports.createFrame = _utils.createFrame;\nexports.logger = _logger2['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2Jhc2UuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7cUJBQThDLFNBQVM7O3lCQUNqQyxhQUFhOzs7O3VCQUNJLFdBQVc7OzBCQUNSLGNBQWM7O3NCQUNyQyxVQUFVOzs7O21DQUNTLHlCQUF5Qjs7QUFFeEQsSUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDOztBQUN4QixJQUFNLGlCQUFpQixHQUFHLENBQUMsQ0FBQzs7QUFDNUIsSUFBTSxpQ0FBaUMsR0FBRyxDQUFDLENBQUM7OztBQUU1QyxJQUFNLGdCQUFnQixHQUFHO0FBQzlCLEdBQUMsRUFBRSxhQUFhO0FBQ2hCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxlQUFlO0FBQ2xCLEdBQUMsRUFBRSxVQUFVO0FBQ2IsR0FBQyxFQUFFLGtCQUFrQjtBQUNyQixHQUFDLEVBQUUsaUJBQWlCO0FBQ3BCLEdBQUMsRUFBRSxpQkFBaUI7QUFDcEIsR0FBQyxFQUFFLFVBQVU7Q0FDZCxDQUFDOzs7QUFFRixJQUFNLFVBQVUsR0FBRyxpQkFBaUIsQ0FBQzs7QUFFOUIsU0FBUyxxQkFBcUIsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRTtBQUNuRSxNQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxFQUFFLENBQUM7QUFDN0IsTUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksRUFBRSxDQUFDO0FBQy9CLE1BQUksQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLEVBQUUsQ0FBQzs7QUFFbkMsa0NBQXVCLElBQUksQ0FBQyxDQUFDO0FBQzdCLHdDQUEwQixJQUFJLENBQUMsQ0FBQztDQUNqQzs7QUFFRCxxQkFBcUIsQ0FBQyxTQUFTLEdBQUc7QUFDaEMsYUFBVyxFQUFFLHFCQUFxQjs7QUFFbEMsUUFBTSxxQkFBUTtBQUNkLEtBQUcsRUFBRSxvQkFBTyxHQUFHOztBQUVmLGdCQUFjLEVBQUUsd0JBQVMsSUFBSSxFQUFFLEVBQUUsRUFBRTtBQUNqQyxRQUFJLGdCQUFTLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxVQUFVLEVBQUU7QUFDdEMsVUFBSSxFQUFFLEVBQUU7QUFDTixjQUFNLDJCQUFjLHlDQUF5QyxDQUFDLENBQUM7T0FDaEU7QUFDRCxvQkFBTyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO0tBQzVCLE1BQU07QUFDTCxVQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztLQUN6QjtHQUNGO0FBQ0Qsa0JBQWdCLEVBQUUsMEJBQVMsSUFBSSxFQUFFO0FBQy9CLFdBQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztHQUMzQjs7QUFFRCxpQkFBZSxFQUFFLHlCQUFTLElBQUksRUFBRSxPQUFPLEVBQUU7QUFDdkMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLG9CQUFPLElBQUksQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDN0IsTUFBTTtBQUNMLFVBQUksT0FBTyxPQUFPLEtBQUssV0FBVyxFQUFFO0FBQ2xDLGNBQU0seUVBQ3dDLElBQUksb0JBQ2pELENBQUM7T0FDSDtBQUNELFVBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDO0tBQy9CO0dBQ0Y7QUFDRCxtQkFBaUIsRUFBRSwyQkFBUyxJQUFJLEVBQUU7QUFDaEMsV0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDO0dBQzVCOztBQUVELG1CQUFpQixFQUFFLDJCQUFTLElBQUksRUFBRSxFQUFFLEVBQUU7QUFDcEMsUUFBSSxnQkFBUyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssVUFBVSxFQUFFO0FBQ3RDLFVBQUksRUFBRSxFQUFFO0FBQ04sY0FBTSwyQkFBYyw0Q0FBNEMsQ0FBQyxDQUFDO09BQ25FO0FBQ0Qsb0JBQU8sSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztLQUMvQixNQUFNO0FBQ0wsVUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7S0FDNUI7R0FDRjtBQUNELHFCQUFtQixFQUFFLDZCQUFTLElBQUksRUFBRTtBQUNsQyxXQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7R0FDOUI7Ozs7O0FBS0QsNkJBQTJCLEVBQUEsdUNBQUc7QUFDNUIsZ0RBQXVCLENBQUM7R0FDekI7Q0FDRixDQUFDOztBQUVLLElBQUksR0FBRyxHQUFHLG9CQUFPLEdBQUcsQ0FBQzs7O1FBRW5CLFdBQVc7UUFBRSxNQUFNIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVGcmFtZSwgZXh0ZW5kLCB0b1N0cmluZyB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IEV4Y2VwdGlvbiBmcm9tICcuL2V4Y2VwdGlvbic7XG5pbXBvcnQgeyByZWdpc3RlckRlZmF1bHRIZWxwZXJzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHJlZ2lzdGVyRGVmYXVsdERlY29yYXRvcnMgfSBmcm9tICcuL2RlY29yYXRvcnMnO1xuaW1wb3J0IGxvZ2dlciBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyByZXNldExvZ2dlZFByb3BlcnRpZXMgfSBmcm9tICcuL2ludGVybmFsL3Byb3RvLWFjY2Vzcyc7XG5cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gJzQuNy43JztcbmV4cG9ydCBjb25zdCBDT01QSUxFUl9SRVZJU0lPTiA9IDg7XG5leHBvcnQgY29uc3QgTEFTVF9DT01QQVRJQkxFX0NPTVBJTEVSX1JFVklTSU9OID0gNztcblxuZXhwb3J0IGNvbnN0IFJFVklTSU9OX0NIQU5HRVMgPSB7XG4gIDE6ICc8PSAxLjAucmMuMicsIC8vIDEuMC5yYy4yIGlzIGFjdHVhbGx5IHJldjIgYnV0IGRvZXNuJ3QgcmVwb3J0IGl0XG4gIDI6ICc9PSAxLjAuMC1yYy4zJyxcbiAgMzogJz09IDEuMC4wLXJjLjQnLFxuICA0OiAnPT0gMS54LngnLFxuICA1OiAnPT0gMi4wLjAtYWxwaGEueCcsXG4gIDY6ICc+PSAyLjAuMC1iZXRhLjEnLFxuICA3OiAnPj0gNC4wLjAgPDQuMy4wJyxcbiAgODogJz49IDQuMy4wJ1xufTtcblxuY29uc3Qgb2JqZWN0VHlwZSA9ICdbb2JqZWN0IE9iamVjdF0nO1xuXG5leHBvcnQgZnVuY3Rpb24gSGFuZGxlYmFyc0Vudmlyb25tZW50KGhlbHBlcnMsIHBhcnRpYWxzLCBkZWNvcmF0b3JzKSB7XG4gIHRoaXMuaGVscGVycyA9IGhlbHBlcnMgfHwge307XG4gIHRoaXMucGFydGlhbHMgPSBwYXJ0aWFscyB8fCB7fTtcbiAgdGhpcy5kZWNvcmF0b3JzID0gZGVjb3JhdG9ycyB8fCB7fTtcblxuICByZWdpc3RlckRlZmF1bHRIZWxwZXJzKHRoaXMpO1xuICByZWdpc3RlckRlZmF1bHREZWNvcmF0b3JzKHRoaXMpO1xufVxuXG5IYW5kbGViYXJzRW52aXJvbm1lbnQucHJvdG90eXBlID0ge1xuICBjb25zdHJ1Y3RvcjogSGFuZGxlYmFyc0Vudmlyb25tZW50LFxuXG4gIGxvZ2dlcjogbG9nZ2VyLFxuICBsb2c6IGxvZ2dlci5sb2csXG5cbiAgcmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUsIGZuKSB7XG4gICAgaWYgKHRvU3RyaW5nLmNhbGwobmFtZSkgPT09IG9iamVjdFR5cGUpIHtcbiAgICAgIGlmIChmbikge1xuICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdBcmcgbm90IHN1cHBvcnRlZCB3aXRoIG11bHRpcGxlIGhlbHBlcnMnKTtcbiAgICAgIH1cbiAgICAgIGV4dGVuZCh0aGlzLmhlbHBlcnMsIG5hbWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmhlbHBlcnNbbmFtZV0gPSBmbjtcbiAgICB9XG4gIH0sXG4gIHVucmVnaXN0ZXJIZWxwZXI6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5oZWxwZXJzW25hbWVdO1xuICB9LFxuXG4gIHJlZ2lzdGVyUGFydGlhbDogZnVuY3Rpb24obmFtZSwgcGFydGlhbCkge1xuICAgIGlmICh0b1N0cmluZy5jYWxsKG5hbWUpID09PSBvYmplY3RUeXBlKSB7XG4gICAgICBleHRlbmQodGhpcy5wYXJ0aWFscywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmICh0eXBlb2YgcGFydGlhbCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbihcbiAgICAgICAgICBgQXR0ZW1wdGluZyB0byByZWdpc3RlciBhIHBhcnRpYWwgY2FsbGVkIFwiJHtuYW1lfVwiIGFzIHVuZGVmaW5lZGBcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRoaXMucGFydGlhbHNbbmFtZV0gPSBwYXJ0aWFsO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlclBhcnRpYWw6IGZ1bmN0aW9uKG5hbWUpIHtcbiAgICBkZWxldGUgdGhpcy5wYXJ0aWFsc1tuYW1lXTtcbiAgfSxcblxuICByZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSwgZm4pIHtcbiAgICBpZiAodG9TdHJpbmcuY2FsbChuYW1lKSA9PT0gb2JqZWN0VHlwZSkge1xuICAgICAgaWYgKGZuKSB7XG4gICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ0FyZyBub3Qgc3VwcG9ydGVkIHdpdGggbXVsdGlwbGUgZGVjb3JhdG9ycycpO1xuICAgICAgfVxuICAgICAgZXh0ZW5kKHRoaXMuZGVjb3JhdG9ycywgbmFtZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGVjb3JhdG9yc1tuYW1lXSA9IGZuO1xuICAgIH1cbiAgfSxcbiAgdW5yZWdpc3RlckRlY29yYXRvcjogZnVuY3Rpb24obmFtZSkge1xuICAgIGRlbGV0ZSB0aGlzLmRlY29yYXRvcnNbbmFtZV07XG4gIH0sXG4gIC8qKlxuICAgKiBSZXNldCB0aGUgbWVtb3J5IG9mIGlsbGVnYWwgcHJvcGVydHkgYWNjZXNzZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBsb2dnZWQuXG4gICAqIEBkZXByZWNhdGVkIHNob3VsZCBvbmx5IGJlIHVzZWQgaW4gaGFuZGxlYmFycyB0ZXN0LWNhc2VzXG4gICAqL1xuICByZXNldExvZ2dlZFByb3BlcnR5QWNjZXNzZXMoKSB7XG4gICAgcmVzZXRMb2dnZWRQcm9wZXJ0aWVzKCk7XG4gIH1cbn07XG5cbmV4cG9ydCBsZXQgbG9nID0gbG9nZ2VyLmxvZztcblxuZXhwb3J0IHsgY3JlYXRlRnJhbWUsIGxvZ2dlciB9O1xuIl19\n","// Build out our basic SafeString type\n'use strict';\n\nexports.__esModule = true;\nfunction SafeString(string) {\n this.string = string;\n}\n\nSafeString.prototype.toString = SafeString.prototype.toHTML = function () {\n return '' + this.string;\n};\n\nexports['default'] = SafeString;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3NhZmUtc3RyaW5nLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFDQSxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUU7QUFDMUIsTUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7Q0FDdEI7O0FBRUQsVUFBVSxDQUFDLFNBQVMsQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsWUFBVztBQUN2RSxTQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0NBQ3pCLENBQUM7O3FCQUVhLFVBQVUiLCJmaWxlIjoic2FmZS1zdHJpbmcuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBCdWlsZCBvdXQgb3VyIGJhc2ljIFNhZmVTdHJpbmcgdHlwZVxuZnVuY3Rpb24gU2FmZVN0cmluZyhzdHJpbmcpIHtcbiAgdGhpcy5zdHJpbmcgPSBzdHJpbmc7XG59XG5cblNhZmVTdHJpbmcucHJvdG90eXBlLnRvU3RyaW5nID0gU2FmZVN0cmluZy5wcm90b3R5cGUudG9IVE1MID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiAnJyArIHRoaXMuc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgU2FmZVN0cmluZztcbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\nexports.wrapHelper = wrapHelper;\n\nfunction wrapHelper(helper, transformOptionsFn) {\n if (typeof helper !== 'function') {\n // This should not happen, but apparently it does in https://github.com/wycats/handlebars.js/issues/1639\n // We try to make the wrapper least-invasive by not wrapping it, if the helper is not a function.\n return helper;\n }\n var wrapper = function wrapper() /* dynamic arguments */{\n var options = arguments[arguments.length - 1];\n arguments[arguments.length - 1] = transformOptionsFn(options);\n return helper.apply(this, arguments);\n };\n return wrapper;\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL2ludGVybmFsL3dyYXBIZWxwZXIuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBTyxTQUFTLFVBQVUsQ0FBQyxNQUFNLEVBQUUsa0JBQWtCLEVBQUU7QUFDckQsTUFBSSxPQUFPLE1BQU0sS0FBSyxVQUFVLEVBQUU7OztBQUdoQyxXQUFPLE1BQU0sQ0FBQztHQUNmO0FBQ0QsTUFBSSxPQUFPLEdBQUcsU0FBVixPQUFPLDBCQUFxQztBQUM5QyxRQUFNLE9BQU8sR0FBRyxTQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQztBQUNoRCxhQUFTLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUM5RCxXQUFPLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0dBQ3RDLENBQUM7QUFDRixTQUFPLE9BQU8sQ0FBQztDQUNoQiIsImZpbGUiOiJ3cmFwSGVscGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIHdyYXBIZWxwZXIoaGVscGVyLCB0cmFuc2Zvcm1PcHRpb25zRm4pIHtcbiAgaWYgKHR5cGVvZiBoZWxwZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICAvLyBUaGlzIHNob3VsZCBub3QgaGFwcGVuLCBidXQgYXBwYXJlbnRseSBpdCBkb2VzIGluIGh0dHBzOi8vZ2l0aHViLmNvbS93eWNhdHMvaGFuZGxlYmFycy5qcy9pc3N1ZXMvMTYzOVxuICAgIC8vIFdlIHRyeSB0byBtYWtlIHRoZSB3cmFwcGVyIGxlYXN0LWludmFzaXZlIGJ5IG5vdCB3cmFwcGluZyBpdCwgaWYgdGhlIGhlbHBlciBpcyBub3QgYSBmdW5jdGlvbi5cbiAgICByZXR1cm4gaGVscGVyO1xuICB9XG4gIGxldCB3cmFwcGVyID0gZnVuY3Rpb24oLyogZHluYW1pYyBhcmd1bWVudHMgKi8pIHtcbiAgICBjb25zdCBvcHRpb25zID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTtcbiAgICBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdID0gdHJhbnNmb3JtT3B0aW9uc0ZuKG9wdGlvbnMpO1xuICAgIHJldHVybiBoZWxwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgfTtcbiAgcmV0dXJuIHdyYXBwZXI7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\nexports.checkRevision = checkRevision;\nexports.template = template;\nexports.wrapProgram = wrapProgram;\nexports.resolvePartial = resolvePartial;\nexports.invokePartial = invokePartial;\nexports.noop = noop;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _utils = require('./utils');\n\nvar Utils = _interopRequireWildcard(_utils);\n\nvar _exception = require('./exception');\n\nvar _exception2 = _interopRequireDefault(_exception);\n\nvar _base = require('./base');\n\nvar _helpers = require('./helpers');\n\nvar _internalWrapHelper = require('./internal/wrapHelper');\n\nvar _internalProtoAccess = require('./internal/proto-access');\n\nfunction checkRevision(compilerInfo) {\n var compilerRevision = compilerInfo && compilerInfo[0] || 1,\n currentRevision = _base.COMPILER_REVISION;\n\n if (compilerRevision >= _base.LAST_COMPATIBLE_COMPILER_REVISION && compilerRevision <= _base.COMPILER_REVISION) {\n return;\n }\n\n if (compilerRevision < _base.LAST_COMPATIBLE_COMPILER_REVISION) {\n var runtimeVersions = _base.REVISION_CHANGES[currentRevision],\n compilerVersions = _base.REVISION_CHANGES[compilerRevision];\n throw new _exception2['default']('Template was precompiled with an older version of Handlebars than the current runtime. ' + 'Please update your precompiler to a newer version (' + runtimeVersions + ') or downgrade your runtime to an older version (' + compilerVersions + ').');\n } else {\n // Use the embedded version info since the runtime doesn't know about this revision yet\n throw new _exception2['default']('Template was precompiled with a newer version of Handlebars than the current runtime. ' + 'Please update your runtime to a newer version (' + compilerInfo[1] + ').');\n }\n}\n\nfunction template(templateSpec, env) {\n /* istanbul ignore next */\n if (!env) {\n throw new _exception2['default']('No environment passed to template');\n }\n if (!templateSpec || !templateSpec.main) {\n throw new _exception2['default']('Unknown template object: ' + typeof templateSpec);\n }\n\n templateSpec.main.decorator = templateSpec.main_d;\n\n // Note: Using env.VM references rather than local var references throughout this section to allow\n // for external users to override these as pseudo-supported APIs.\n env.VM.checkRevision(templateSpec.compiler);\n\n // backwards compatibility for precompiled templates with compiler-version 7 (<4.3.0)\n var templateWasPrecompiledWithCompilerV7 = templateSpec.compiler && templateSpec.compiler[0] === 7;\n\n function invokePartialWrapper(partial, context, options) {\n if (options.hash) {\n context = Utils.extend({}, context, options.hash);\n if (options.ids) {\n options.ids[0] = true;\n }\n }\n partial = env.VM.resolvePartial.call(this, partial, context, options);\n\n var extendedOptions = Utils.extend({}, options, {\n hooks: this.hooks,\n protoAccessControl: this.protoAccessControl\n });\n\n var result = env.VM.invokePartial.call(this, partial, context, extendedOptions);\n\n if (result == null && env.compile) {\n options.partials[options.name] = env.compile(partial, templateSpec.compilerOptions, env);\n result = options.partials[options.name](context, extendedOptions);\n }\n if (result != null) {\n if (options.indent) {\n var lines = result.split('\\n');\n for (var i = 0, l = lines.length; i < l; i++) {\n if (!lines[i] && i + 1 === l) {\n break;\n }\n\n lines[i] = options.indent + lines[i];\n }\n result = lines.join('\\n');\n }\n return result;\n } else {\n throw new _exception2['default']('The partial ' + options.name + ' could not be compiled when running in runtime-only mode');\n }\n }\n\n // Just add water\n var container = {\n strict: function strict(obj, name, loc) {\n if (!obj || !(name in obj)) {\n throw new _exception2['default']('\"' + name + '\" not defined in ' + obj, {\n loc: loc\n });\n }\n return container.lookupProperty(obj, name);\n },\n lookupProperty: function lookupProperty(parent, propertyName) {\n var result = parent[propertyName];\n if (result == null) {\n return result;\n }\n if (Object.prototype.hasOwnProperty.call(parent, propertyName)) {\n return result;\n }\n\n if (_internalProtoAccess.resultIsAllowed(result, container.protoAccessControl, propertyName)) {\n return result;\n }\n return undefined;\n },\n lookup: function lookup(depths, name) {\n var len = depths.length;\n for (var i = 0; i < len; i++) {\n var result = depths[i] && container.lookupProperty(depths[i], name);\n if (result != null) {\n return depths[i][name];\n }\n }\n },\n lambda: function lambda(current, context) {\n return typeof current === 'function' ? current.call(context) : current;\n },\n\n escapeExpression: Utils.escapeExpression,\n invokePartial: invokePartialWrapper,\n\n fn: function fn(i) {\n var ret = templateSpec[i];\n ret.decorator = templateSpec[i + '_d'];\n return ret;\n },\n\n programs: [],\n program: function program(i, data, declaredBlockParams, blockParams, depths) {\n var programWrapper = this.programs[i],\n fn = this.fn(i);\n if (data || depths || blockParams || declaredBlockParams) {\n programWrapper = wrapProgram(this, i, fn, data, declaredBlockParams, blockParams, depths);\n } else if (!programWrapper) {\n programWrapper = this.programs[i] = wrapProgram(this, i, fn);\n }\n return programWrapper;\n },\n\n data: function data(value, depth) {\n while (value && depth--) {\n value = value._parent;\n }\n return value;\n },\n mergeIfNeeded: function mergeIfNeeded(param, common) {\n var obj = param || common;\n\n if (param && common && param !== common) {\n obj = Utils.extend({}, common, param);\n }\n\n return obj;\n },\n // An empty object to use as replacement for null-contexts\n nullContext: Object.seal({}),\n\n noop: env.VM.noop,\n compilerInfo: templateSpec.compiler\n };\n\n function ret(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var data = options.data;\n\n ret._setup(options);\n if (!options.partial && templateSpec.useData) {\n data = initData(context, data);\n }\n var depths = undefined,\n blockParams = templateSpec.useBlockParams ? [] : undefined;\n if (templateSpec.useDepths) {\n if (options.depths) {\n depths = context != options.depths[0] ? [context].concat(options.depths) : options.depths;\n } else {\n depths = [context];\n }\n }\n\n function main(context /*, options*/) {\n return '' + templateSpec.main(container, context, container.helpers, container.partials, data, blockParams, depths);\n }\n\n main = executeDecorators(templateSpec.main, main, container, options.depths || [], data, blockParams);\n return main(context, options);\n }\n\n ret.isTop = true;\n\n ret._setup = function (options) {\n if (!options.partial) {\n var mergedHelpers = Utils.extend({}, env.helpers, options.helpers);\n wrapHelpersToPassLookupProperty(mergedHelpers, container);\n container.helpers = mergedHelpers;\n\n if (templateSpec.usePartial) {\n // Use mergeIfNeeded here to prevent compiling global partials multiple times\n container.partials = container.mergeIfNeeded(options.partials, env.partials);\n }\n if (templateSpec.usePartial || templateSpec.useDecorators) {\n container.decorators = Utils.extend({}, env.decorators, options.decorators);\n }\n\n container.hooks = {};\n container.protoAccessControl = _internalProtoAccess.createProtoAccessControl(options);\n\n var keepHelperInHelpers = options.allowCallsToHelperMissing || templateWasPrecompiledWithCompilerV7;\n _helpers.moveHelperToHooks(container, 'helperMissing', keepHelperInHelpers);\n _helpers.moveHelperToHooks(container, 'blockHelperMissing', keepHelperInHelpers);\n } else {\n container.protoAccessControl = options.protoAccessControl; // internal option\n container.helpers = options.helpers;\n container.partials = options.partials;\n container.decorators = options.decorators;\n container.hooks = options.hooks;\n }\n };\n\n ret._child = function (i, data, blockParams, depths) {\n if (templateSpec.useBlockParams && !blockParams) {\n throw new _exception2['default']('must pass block params');\n }\n if (templateSpec.useDepths && !depths) {\n throw new _exception2['default']('must pass parent depths');\n }\n\n return wrapProgram(container, i, templateSpec[i], data, 0, blockParams, depths);\n };\n return ret;\n}\n\nfunction wrapProgram(container, i, fn, data, declaredBlockParams, blockParams, depths) {\n function prog(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n var currentDepths = depths;\n if (depths && context != depths[0] && !(context === container.nullContext && depths[0] === null)) {\n currentDepths = [context].concat(depths);\n }\n\n return fn(container, context, container.helpers, container.partials, options.data || data, blockParams && [options.blockParams].concat(blockParams), currentDepths);\n }\n\n prog = executeDecorators(fn, prog, container, depths, data, blockParams);\n\n prog.program = i;\n prog.depth = depths ? depths.length : 0;\n prog.blockParams = declaredBlockParams || 0;\n return prog;\n}\n\n/**\n * This is currently part of the official API, therefore implementation details should not be changed.\n */\n\nfunction resolvePartial(partial, context, options) {\n if (!partial) {\n if (options.name === '@partial-block') {\n partial = options.data['partial-block'];\n } else {\n partial = options.partials[options.name];\n }\n } else if (!partial.call && !options.name) {\n // This is a dynamic partial that returned a string\n options.name = partial;\n partial = options.partials[partial];\n }\n return partial;\n}\n\nfunction invokePartial(partial, context, options) {\n // Use the current closure context to save the partial-block if this partial\n var currentPartialBlock = options.data && options.data['partial-block'];\n options.partial = true;\n if (options.ids) {\n options.data.contextPath = options.ids[0] || options.data.contextPath;\n }\n\n var partialBlock = undefined;\n if (options.fn && options.fn !== noop) {\n (function () {\n options.data = _base.createFrame(options.data);\n // Wrapper function to get access to currentPartialBlock from the closure\n var fn = options.fn;\n partialBlock = options.data['partial-block'] = function partialBlockWrapper(context) {\n var options = arguments.length <= 1 || arguments[1] === undefined ? {} : arguments[1];\n\n // Restore the partial-block from the closure for the execution of the block\n // i.e. the part inside the block of the partial call.\n options.data = _base.createFrame(options.data);\n options.data['partial-block'] = currentPartialBlock;\n return fn(context, options);\n };\n if (fn.partials) {\n options.partials = Utils.extend({}, options.partials, fn.partials);\n }\n })();\n }\n\n if (partial === undefined && partialBlock) {\n partial = partialBlock;\n }\n\n if (partial === undefined) {\n throw new _exception2['default']('The partial ' + options.name + ' could not be found');\n } else if (partial instanceof Function) {\n return partial(context, options);\n }\n}\n\nfunction noop() {\n return '';\n}\n\nfunction initData(context, data) {\n if (!data || !('root' in data)) {\n data = data ? _base.createFrame(data) : {};\n data.root = context;\n }\n return data;\n}\n\nfunction executeDecorators(fn, prog, container, depths, data, blockParams) {\n if (fn.decorator) {\n var props = {};\n prog = fn.decorator(prog, props, container, depths && depths[0], data, blockParams, depths);\n Utils.extend(prog, props);\n }\n return prog;\n}\n\nfunction wrapHelpersToPassLookupProperty(mergedHelpers, container) {\n Object.keys(mergedHelpers).forEach(function (helperName) {\n var helper = mergedHelpers[helperName];\n mergedHelpers[helperName] = passLookupPropertyOption(helper, container);\n });\n}\n\nfunction passLookupPropertyOption(helper, container) {\n var lookupProperty = container.lookupProperty;\n return _internalWrapHelper.wrapHelper(helper, function (options) {\n return Utils.extend({ lookupProperty: lookupProperty }, options);\n });\n}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL3J1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7cUJBQXVCLFNBQVM7O0lBQXBCLEtBQUs7O3lCQUNLLGFBQWE7Ozs7b0JBTTVCLFFBQVE7O3VCQUNtQixXQUFXOztrQ0FDbEIsdUJBQXVCOzttQ0FJM0MseUJBQXlCOztBQUV6QixTQUFTLGFBQWEsQ0FBQyxZQUFZLEVBQUU7QUFDMUMsTUFBTSxnQkFBZ0IsR0FBRyxBQUFDLFlBQVksSUFBSSxZQUFZLENBQUMsQ0FBQyxDQUFDLElBQUssQ0FBQztNQUM3RCxlQUFlLDBCQUFvQixDQUFDOztBQUV0QyxNQUNFLGdCQUFnQiwyQ0FBcUMsSUFDckQsZ0JBQWdCLDJCQUFxQixFQUNyQztBQUNBLFdBQU87R0FDUjs7QUFFRCxNQUFJLGdCQUFnQiwwQ0FBb0MsRUFBRTtBQUN4RCxRQUFNLGVBQWUsR0FBRyx1QkFBaUIsZUFBZSxDQUFDO1FBQ3ZELGdCQUFnQixHQUFHLHVCQUFpQixnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3hELFVBQU0sMkJBQ0oseUZBQXlGLEdBQ3ZGLHFEQUFxRCxHQUNyRCxlQUFlLEdBQ2YsbURBQW1ELEdBQ25ELGdCQUFnQixHQUNoQixJQUFJLENBQ1AsQ0FBQztHQUNILE1BQU07O0FBRUwsVUFBTSwyQkFDSix3RkFBd0YsR0FDdEYsaURBQWlELEdBQ2pELFlBQVksQ0FBQyxDQUFDLENBQUMsR0FDZixJQUFJLENBQ1AsQ0FBQztHQUNIO0NBQ0Y7O0FBRU0sU0FBUyxRQUFRLENBQUMsWUFBWSxFQUFFLEdBQUcsRUFBRTs7QUFFMUMsTUFBSSxDQUFDLEdBQUcsRUFBRTtBQUNSLFVBQU0sMkJBQWMsbUNBQW1DLENBQUMsQ0FBQztHQUMxRDtBQUNELE1BQUksQ0FBQyxZQUFZLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFO0FBQ3ZDLFVBQU0sMkJBQWMsMkJBQTJCLEdBQUcsT0FBTyxZQUFZLENBQUMsQ0FBQztHQUN4RTs7QUFFRCxjQUFZLENBQUMsSUFBSSxDQUFDLFNBQVMsR0FBRyxZQUFZLENBQUMsTUFBTSxDQUFDOzs7O0FBSWxELEtBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsQ0FBQzs7O0FBRzVDLE1BQU0sb0NBQW9DLEdBQ3hDLFlBQVksQ0FBQyxRQUFRLElBQUksWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7O0FBRTFELFdBQVMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDdkQsUUFBSSxPQUFPLENBQUMsSUFBSSxFQUFFO0FBQ2hCLGFBQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ2xELFVBQUksT0FBTyxDQUFDLEdBQUcsRUFBRTtBQUNmLGVBQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDO09BQ3ZCO0tBQ0Y7QUFDRCxXQUFPLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDOztBQUV0RSxRQUFJLGVBQWUsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxPQUFPLEVBQUU7QUFDOUMsV0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO0FBQ2pCLHdCQUFrQixFQUFFLElBQUksQ0FBQyxrQkFBa0I7S0FDNUMsQ0FBQyxDQUFDOztBQUVILFFBQUksTUFBTSxHQUFHLEdBQUcsQ0FBQyxFQUFFLENBQUMsYUFBYSxDQUFDLElBQUksQ0FDcEMsSUFBSSxFQUNKLE9BQU8sRUFDUCxPQUFPLEVBQ1AsZUFBZSxDQUNoQixDQUFDOztBQUVGLFFBQUksTUFBTSxJQUFJLElBQUksSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFO0FBQ2pDLGFBQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQzFDLE9BQU8sRUFDUCxZQUFZLENBQUMsZUFBZSxFQUM1QixHQUFHLENBQ0osQ0FBQztBQUNGLFlBQU0sR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUM7S0FDbkU7QUFDRCxRQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUU7QUFDbEIsVUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO0FBQ2xCLFlBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDL0IsYUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtBQUM1QyxjQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLGtCQUFNO1dBQ1A7O0FBRUQsZUFBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxNQUFNLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3RDO0FBQ0QsY0FBTSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7T0FDM0I7QUFDRCxhQUFPLE1BQU0sQ0FBQztLQUNmLE1BQU07QUFDTCxZQUFNLDJCQUNKLGNBQWMsR0FDWixPQUFPLENBQUMsSUFBSSxHQUNaLDBEQUEwRCxDQUM3RCxDQUFDO0tBQ0g7R0FDRjs7O0FBR0QsTUFBSSxTQUFTLEdBQUc7QUFDZCxVQUFNLEVBQUUsZ0JBQVMsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLEVBQUU7QUFDL0IsVUFBSSxDQUFDLEdBQUcsSUFBSSxFQUFFLElBQUksSUFBSSxHQUFHLENBQUEsQUFBQyxFQUFFO0FBQzFCLGNBQU0sMkJBQWMsR0FBRyxHQUFHLElBQUksR0FBRyxtQkFBbUIsR0FBRyxHQUFHLEVBQUU7QUFDMUQsYUFBRyxFQUFFLEdBQUc7U0FDVCxDQUFDLENBQUM7T0FDSjtBQUNELGFBQU8sU0FBUyxDQUFDLGNBQWMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDNUM7QUFDRCxrQkFBYyxFQUFFLHdCQUFTLE1BQU0sRUFBRSxZQUFZLEVBQUU7QUFDN0MsVUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDO0FBQ2xDLFVBQUksTUFBTSxJQUFJLElBQUksRUFBRTtBQUNsQixlQUFPLE1BQU0sQ0FBQztPQUNmO0FBQ0QsVUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxFQUFFO0FBQzlELGVBQU8sTUFBTSxDQUFDO09BQ2Y7O0FBRUQsVUFBSSxxQ0FBZ0IsTUFBTSxFQUFFLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZLENBQUMsRUFBRTtBQUN2RSxlQUFPLE1BQU0sQ0FBQztPQUNmO0FBQ0QsYUFBTyxTQUFTLENBQUM7S0FDbEI7QUFDRCxVQUFNLEVBQUUsZ0JBQVMsTUFBTSxFQUFFLElBQUksRUFBRTtBQUM3QixVQUFNLEdBQUcsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDO0FBQzFCLFdBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUU7QUFDNUIsWUFBSSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3BFLFlBQUksTUFBTSxJQUFJLElBQUksRUFBRTtBQUNsQixpQkFBTyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7T0FDRjtLQUNGO0FBQ0QsVUFBTSxFQUFFLGdCQUFTLE9BQU8sRUFBRSxPQUFPLEVBQUU7QUFDakMsYUFBTyxPQUFPLE9BQU8sS0FBSyxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxPQUFPLENBQUM7S0FDeEU7O0FBRUQsb0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtBQUN4QyxpQkFBYSxFQUFFLG9CQUFvQjs7QUFFbkMsTUFBRSxFQUFFLFlBQVMsQ0FBQyxFQUFFO0FBQ2QsVUFBSSxHQUFHLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFCLFNBQUcsQ0FBQyxTQUFTLEdBQUcsWUFBWSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztBQUN2QyxhQUFPLEdBQUcsQ0FBQztLQUNaOztBQUVELFlBQVEsRUFBRSxFQUFFO0FBQ1osV0FBTyxFQUFFLGlCQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtBQUNuRSxVQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztVQUNuQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNsQixVQUFJLElBQUksSUFBSSxNQUFNLElBQUksV0FBVyxJQUFJLG1CQUFtQixFQUFFO0FBQ3hELHNCQUFjLEdBQUcsV0FBVyxDQUMxQixJQUFJLEVBQ0osQ0FBQyxFQUNELEVBQUUsRUFDRixJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FBQztPQUNILE1BQU0sSUFBSSxDQUFDLGNBQWMsRUFBRTtBQUMxQixzQkFBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLEdBQUcsV0FBVyxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7T0FDOUQ7QUFDRCxhQUFPLGNBQWMsQ0FBQztLQUN2Qjs7QUFFRCxRQUFJLEVBQUUsY0FBUyxLQUFLLEVBQUUsS0FBSyxFQUFFO0FBQzNCLGFBQU8sS0FBSyxJQUFJLEtBQUssRUFBRSxFQUFFO0FBQ3ZCLGFBQUssR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO09BQ3ZCO0FBQ0QsYUFBTyxLQUFLLENBQUM7S0FDZDtBQUNELGlCQUFhLEVBQUUsdUJBQVMsS0FBSyxFQUFFLE1BQU0sRUFBRTtBQUNyQyxVQUFJLEdBQUcsR0FBRyxLQUFLLElBQUksTUFBTSxDQUFDOztBQUUxQixVQUFJLEtBQUssSUFBSSxNQUFNLElBQUksS0FBSyxLQUFLLE1BQU0sRUFBRTtBQUN2QyxXQUFHLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssQ0FBQyxDQUFDO09BQ3ZDOztBQUVELGFBQU8sR0FBRyxDQUFDO0tBQ1o7O0FBRUQsZUFBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDOztBQUU1QixRQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJO0FBQ2pCLGdCQUFZLEVBQUUsWUFBWSxDQUFDLFFBQVE7R0FDcEMsQ0FBQzs7QUFFRixXQUFTLEdBQUcsQ0FBQyxPQUFPLEVBQWdCO1FBQWQsT0FBTyx5REFBRyxFQUFFOztBQUNoQyxRQUFJLElBQUksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDOztBQUV4QixPQUFHLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ3BCLFFBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUU7QUFDNUMsVUFBSSxHQUFHLFFBQVEsQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7S0FDaEM7QUFDRCxRQUFJLE1BQU0sWUFBQTtRQUNSLFdBQVcsR0FBRyxZQUFZLENBQUMsY0FBYyxHQUFHLEVBQUUsR0FBRyxTQUFTLENBQUM7QUFDN0QsUUFBSSxZQUFZLENBQUMsU0FBUyxFQUFFO0FBQzFCLFVBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtBQUNsQixjQUFNLEdBQ0osT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQ3hCLENBQUMsT0FBTyxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FDaEMsT0FBTyxDQUFDLE1BQU0sQ0FBQztPQUN0QixNQUFNO0FBQ0wsY0FBTSxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7T0FDcEI7S0FDRjs7QUFFRCxhQUFTLElBQUksQ0FBQyxPQUFPLGdCQUFnQjtBQUNuQyxhQUNFLEVBQUUsR0FDRixZQUFZLENBQUMsSUFBSSxDQUNmLFNBQVMsRUFDVCxPQUFPLEVBQ1AsU0FBUyxDQUFDLE9BQU8sRUFDakIsU0FBUyxDQUFDLFFBQVEsRUFDbEIsSUFBSSxFQUNKLFdBQVcsRUFDWCxNQUFNLENBQ1AsQ0FDRDtLQUNIOztBQUVELFFBQUksR0FBRyxpQkFBaUIsQ0FDdEIsWUFBWSxDQUFDLElBQUksRUFDakIsSUFBSSxFQUNKLFNBQVMsRUFDVCxPQUFPLENBQUMsTUFBTSxJQUFJLEVBQUUsRUFDcEIsSUFBSSxFQUNKLFdBQVcsQ0FDWixDQUFDO0FBQ0YsV0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQy9COztBQUVELEtBQUcsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDOztBQUVqQixLQUFHLENBQUMsTUFBTSxHQUFHLFVBQVMsT0FBTyxFQUFFO0FBQzdCLFFBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFO0FBQ3BCLFVBQUksYUFBYSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLEdBQUcsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQ25FLHFDQUErQixDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FBQztBQUMxRCxlQUFTLENBQUMsT0FBTyxHQUFHLGFBQWEsQ0FBQzs7QUFFbEMsVUFBSSxZQUFZLENBQUMsVUFBVSxFQUFFOztBQUUzQixpQkFBUyxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUMsYUFBYSxDQUMxQyxPQUFPLENBQUMsUUFBUSxFQUNoQixHQUFHLENBQUMsUUFBUSxDQUNiLENBQUM7T0FDSDtBQUNELFVBQUksWUFBWSxDQUFDLFVBQVUsSUFBSSxZQUFZLENBQUMsYUFBYSxFQUFFO0FBQ3pELGlCQUFTLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQ2pDLEVBQUUsRUFDRixHQUFHLENBQUMsVUFBVSxFQUNkLE9BQU8sQ0FBQyxVQUFVLENBQ25CLENBQUM7T0FDSDs7QUFFRCxlQUFTLENBQUMsS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNyQixlQUFTLENBQUMsa0JBQWtCLEdBQUcsOENBQXlCLE9BQU8sQ0FBQyxDQUFDOztBQUVqRSxVQUFJLG1CQUFtQixHQUNyQixPQUFPLENBQUMseUJBQXlCLElBQ2pDLG9DQUFvQyxDQUFDO0FBQ3ZDLGlDQUFrQixTQUFTLEVBQUUsZUFBZSxFQUFFLG1CQUFtQixDQUFDLENBQUM7QUFDbkUsaUNBQWtCLFNBQVMsRUFBRSxvQkFBb0IsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDO0tBQ3pFLE1BQU07QUFDTCxlQUFTLENBQUMsa0JBQWtCLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDO0FBQzFELGVBQVMsQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQztBQUNwQyxlQUFTLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUM7QUFDdEMsZUFBUyxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQzFDLGVBQVMsQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQztLQUNqQztHQUNGLENBQUM7O0FBRUYsS0FBRyxDQUFDLE1BQU0sR0FBRyxVQUFTLENBQUMsRUFBRSxJQUFJLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRTtBQUNsRCxRQUFJLFlBQVksQ0FBQyxjQUFjLElBQUksQ0FBQyxXQUFXLEVBQUU7QUFDL0MsWUFBTSwyQkFBYyx3QkFBd0IsQ0FBQyxDQUFDO0tBQy9DO0FBQ0QsUUFBSSxZQUFZLENBQUMsU0FBUyxJQUFJLENBQUMsTUFBTSxFQUFFO0FBQ3JDLFlBQU0sMkJBQWMseUJBQXlCLENBQUMsQ0FBQztLQUNoRDs7QUFFRCxXQUFPLFdBQVcsQ0FDaEIsU0FBUyxFQUNULENBQUMsRUFDRCxZQUFZLENBQUMsQ0FBQyxDQUFDLEVBQ2YsSUFBSSxFQUNKLENBQUMsRUFDRCxXQUFXLEVBQ1gsTUFBTSxDQUNQLENBQUM7R0FDSCxDQUFDO0FBQ0YsU0FBTyxHQUFHLENBQUM7Q0FDWjs7QUFFTSxTQUFTLFdBQVcsQ0FDekIsU0FBUyxFQUNULENBQUMsRUFDRCxFQUFFLEVBQ0YsSUFBSSxFQUNKLG1CQUFtQixFQUNuQixXQUFXLEVBQ1gsTUFBTSxFQUNOO0FBQ0EsV0FBUyxJQUFJLENBQUMsT0FBTyxFQUFnQjtRQUFkLE9BQU8seURBQUcsRUFBRTs7QUFDakMsUUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDO0FBQzNCLFFBQ0UsTUFBTSxJQUNOLE9BQU8sSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQ3BCLEVBQUUsT0FBTyxLQUFLLFNBQVMsQ0FBQyxXQUFXLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksQ0FBQSxBQUFDLEVBQzFEO0FBQ0EsbUJBQWEsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztLQUMxQzs7QUFFRCxXQUFPLEVBQUUsQ0FDUCxTQUFTLEVBQ1QsT0FBTyxFQUNQLFNBQVMsQ0FBQyxPQUFPLEVBQ2pCLFNBQVMsQ0FBQyxRQUFRLEVBQ2xCLE9BQU8sQ0FBQyxJQUFJLElBQUksSUFBSSxFQUNwQixXQUFXLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxFQUN4RCxhQUFhLENBQ2QsQ0FBQztHQUNIOztBQUVELE1BQUksR0FBRyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDOztBQUV6RSxNQUFJLENBQUMsT0FBTyxHQUFHLENBQUMsQ0FBQztBQUNqQixNQUFJLENBQUMsS0FBSyxHQUFHLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztBQUN4QyxNQUFJLENBQUMsV0FBVyxHQUFHLG1CQUFtQixJQUFJLENBQUMsQ0FBQztBQUM1QyxTQUFPLElBQUksQ0FBQztDQUNiOzs7Ozs7QUFLTSxTQUFTLGNBQWMsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTtBQUN4RCxNQUFJLENBQUMsT0FBTyxFQUFFO0FBQ1osUUFBSSxPQUFPLENBQUMsSUFBSSxLQUFLLGdCQUFnQixFQUFFO0FBQ3JDLGFBQU8sR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0tBQ3pDLE1BQU07QUFDTCxhQUFPLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7S0FDMUM7R0FDRixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRTs7QUFFekMsV0FBTyxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7QUFDdkIsV0FBTyxHQUFHLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7R0FDckM7QUFDRCxTQUFPLE9BQU8sQ0FBQztDQUNoQjs7QUFFTSxTQUFTLGFBQWEsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRTs7QUFFdkQsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsSUFBSSxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7QUFDMUUsU0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7QUFDdkIsTUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO0FBQ2YsV0FBTyxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztHQUN2RTs7QUFFRCxNQUFJLFlBQVksWUFBQSxDQUFDO0FBQ2pCLE1BQUksT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxLQUFLLElBQUksRUFBRTs7QUFDckMsYUFBTyxDQUFDLElBQUksR0FBRyxrQkFBWSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7O0FBRXpDLFVBQUksRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLENBQUM7QUFDcEIsa0JBQVksR0FBRyxPQUFPLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLFNBQVMsbUJBQW1CLENBQ3pFLE9BQU8sRUFFUDtZQURBLE9BQU8seURBQUcsRUFBRTs7OztBQUlaLGVBQU8sQ0FBQyxJQUFJLEdBQUcsa0JBQVksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3pDLGVBQU8sQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsbUJBQW1CLENBQUM7QUFDcEQsZUFBTyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDO09BQzdCLENBQUM7QUFDRixVQUFJLEVBQUUsQ0FBQyxRQUFRLEVBQUU7QUFDZixlQUFPLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDO09BQ3BFOztHQUNGOztBQUVELE1BQUksT0FBTyxLQUFLLFNBQVMsSUFBSSxZQUFZLEVBQUU7QUFDekMsV0FBTyxHQUFHLFlBQVksQ0FBQztHQUN4Qjs7QUFFRCxNQUFJLE9BQU8sS0FBSyxTQUFTLEVBQUU7QUFDekIsVUFBTSwyQkFBYyxjQUFjLEdBQUcsT0FBTyxDQUFDLElBQUksR0FBRyxxQkFBcUIsQ0FBQyxDQUFDO0dBQzVFLE1BQU0sSUFBSSxPQUFPLFlBQVksUUFBUSxFQUFFO0FBQ3RDLFdBQU8sT0FBTyxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztHQUNsQztDQUNGOztBQUVNLFNBQVMsSUFBSSxHQUFHO0FBQ3JCLFNBQU8sRUFBRSxDQUFDO0NBQ1g7O0FBRUQsU0FBUyxRQUFRLENBQUMsT0FBTyxFQUFFLElBQUksRUFBRTtBQUMvQixNQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsTUFBTSxJQUFJLElBQUksQ0FBQSxBQUFDLEVBQUU7QUFDOUIsUUFBSSxHQUFHLElBQUksR0FBRyxrQkFBWSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDckMsUUFBSSxDQUFDLElBQUksR0FBRyxPQUFPLENBQUM7R0FDckI7QUFDRCxTQUFPLElBQUksQ0FBQztDQUNiOztBQUVELFNBQVMsaUJBQWlCLENBQUMsRUFBRSxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxXQUFXLEVBQUU7QUFDekUsTUFBSSxFQUFFLENBQUMsU0FBUyxFQUFFO0FBQ2hCLFFBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztBQUNmLFFBQUksR0FBRyxFQUFFLENBQUMsU0FBUyxDQUNqQixJQUFJLEVBQ0osS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUNuQixJQUFJLEVBQ0osV0FBVyxFQUNYLE1BQU0sQ0FDUCxDQUFDO0FBQ0YsU0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7R0FDM0I7QUFDRCxTQUFPLElBQUksQ0FBQztDQUNiOztBQUVELFNBQVMsK0JBQStCLENBQUMsYUFBYSxFQUFFLFNBQVMsRUFBRTtBQUNqRSxRQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFBLFVBQVUsRUFBSTtBQUMvQyxRQUFJLE1BQU0sR0FBRyxhQUFhLENBQUMsVUFBVSxDQUFDLENBQUM7QUFDdkMsaUJBQWEsQ0FBQyxVQUFVLENBQUMsR0FBRyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUM7R0FDekUsQ0FBQyxDQUFDO0NBQ0o7O0FBRUQsU0FBUyx3QkFBd0IsQ0FBQyxNQUFNLEVBQUUsU0FBUyxFQUFFO0FBQ25ELE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxjQUFjLENBQUM7QUFDaEQsU0FBTywrQkFBVyxNQUFNLEVBQUUsVUFBQSxPQUFPLEVBQUk7QUFDbkMsV0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEVBQUUsY0FBYyxFQUFkLGNBQWMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0dBQ2xELENBQUMsQ0FBQztDQUNKIiwiZmlsZSI6InJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBVdGlscyBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBFeGNlcHRpb24gZnJvbSAnLi9leGNlcHRpb24nO1xuaW1wb3J0IHtcbiAgQ09NUElMRVJfUkVWSVNJT04sXG4gIGNyZWF0ZUZyYW1lLFxuICBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04sXG4gIFJFVklTSU9OX0NIQU5HRVNcbn0gZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7IG1vdmVIZWxwZXJUb0hvb2tzIH0gZnJvbSAnLi9oZWxwZXJzJztcbmltcG9ydCB7IHdyYXBIZWxwZXIgfSBmcm9tICcuL2ludGVybmFsL3dyYXBIZWxwZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlUHJvdG9BY2Nlc3NDb250cm9sLFxuICByZXN1bHRJc0FsbG93ZWRcbn0gZnJvbSAnLi9pbnRlcm5hbC9wcm90by1hY2Nlc3MnO1xuXG5leHBvcnQgZnVuY3Rpb24gY2hlY2tSZXZpc2lvbihjb21waWxlckluZm8pIHtcbiAgY29uc3QgY29tcGlsZXJSZXZpc2lvbiA9IChjb21waWxlckluZm8gJiYgY29tcGlsZXJJbmZvWzBdKSB8fCAxLFxuICAgIGN1cnJlbnRSZXZpc2lvbiA9IENPTVBJTEVSX1JFVklTSU9OO1xuXG4gIGlmIChcbiAgICBjb21waWxlclJldmlzaW9uID49IExBU1RfQ09NUEFUSUJMRV9DT01QSUxFUl9SRVZJU0lPTiAmJlxuICAgIGNvbXBpbGVyUmV2aXNpb24gPD0gQ09NUElMRVJfUkVWSVNJT05cbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNvbXBpbGVyUmV2aXNpb24gPCBMQVNUX0NPTVBBVElCTEVfQ09NUElMRVJfUkVWSVNJT04pIHtcbiAgICBjb25zdCBydW50aW1lVmVyc2lvbnMgPSBSRVZJU0lPTl9DSEFOR0VTW2N1cnJlbnRSZXZpc2lvbl0sXG4gICAgICBjb21waWxlclZlcnNpb25zID0gUkVWSVNJT05fQ0hBTkdFU1tjb21waWxlclJldmlzaW9uXTtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGFuIG9sZGVyIHZlcnNpb24gb2YgSGFuZGxlYmFycyB0aGFuIHRoZSBjdXJyZW50IHJ1bnRpbWUuICcgK1xuICAgICAgICAnUGxlYXNlIHVwZGF0ZSB5b3VyIHByZWNvbXBpbGVyIHRvIGEgbmV3ZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIHJ1bnRpbWVWZXJzaW9ucyArXG4gICAgICAgICcpIG9yIGRvd25ncmFkZSB5b3VyIHJ1bnRpbWUgdG8gYW4gb2xkZXIgdmVyc2lvbiAoJyArXG4gICAgICAgIGNvbXBpbGVyVmVyc2lvbnMgK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBVc2UgdGhlIGVtYmVkZGVkIHZlcnNpb24gaW5mbyBzaW5jZSB0aGUgcnVudGltZSBkb2Vzbid0IGtub3cgYWJvdXQgdGhpcyByZXZpc2lvbiB5ZXRcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgJ1RlbXBsYXRlIHdhcyBwcmVjb21waWxlZCB3aXRoIGEgbmV3ZXIgdmVyc2lvbiBvZiBIYW5kbGViYXJzIHRoYW4gdGhlIGN1cnJlbnQgcnVudGltZS4gJyArXG4gICAgICAgICdQbGVhc2UgdXBkYXRlIHlvdXIgcnVudGltZSB0byBhIG5ld2VyIHZlcnNpb24gKCcgK1xuICAgICAgICBjb21waWxlckluZm9bMV0gK1xuICAgICAgICAnKS4nXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVtcGxhdGUodGVtcGxhdGVTcGVjLCBlbnYpIHtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKCFlbnYpIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdObyBlbnZpcm9ubWVudCBwYXNzZWQgdG8gdGVtcGxhdGUnKTtcbiAgfVxuICBpZiAoIXRlbXBsYXRlU3BlYyB8fCAhdGVtcGxhdGVTcGVjLm1haW4pIHtcbiAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCdVbmtub3duIHRlbXBsYXRlIG9iamVjdDogJyArIHR5cGVvZiB0ZW1wbGF0ZVNwZWMpO1xuICB9XG5cbiAgdGVtcGxhdGVTcGVjLm1haW4uZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjLm1haW5fZDtcblxuICAvLyBOb3RlOiBVc2luZyBlbnYuVk0gcmVmZXJlbmNlcyByYXRoZXIgdGhhbiBsb2NhbCB2YXIgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoaXMgc2VjdGlvbiB0byBhbGxvd1xuICAvLyBmb3IgZXh0ZXJuYWwgdXNlcnMgdG8gb3ZlcnJpZGUgdGhlc2UgYXMgcHNldWRvLXN1cHBvcnRlZCBBUElzLlxuICBlbnYuVk0uY2hlY2tSZXZpc2lvbih0ZW1wbGF0ZVNwZWMuY29tcGlsZXIpO1xuXG4gIC8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IGZvciBwcmVjb21waWxlZCB0ZW1wbGF0ZXMgd2l0aCBjb21waWxlci12ZXJzaW9uIDcgKDw0LjMuMClcbiAgY29uc3QgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3ID1cbiAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXIgJiYgdGVtcGxhdGVTcGVjLmNvbXBpbGVyWzBdID09PSA3O1xuXG4gIGZ1bmN0aW9uIGludm9rZVBhcnRpYWxXcmFwcGVyKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5oYXNoKSB7XG4gICAgICBjb250ZXh0ID0gVXRpbHMuZXh0ZW5kKHt9LCBjb250ZXh0LCBvcHRpb25zLmhhc2gpO1xuICAgICAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgICAgIG9wdGlvbnMuaWRzWzBdID0gdHJ1ZTtcbiAgICAgIH1cbiAgICB9XG4gICAgcGFydGlhbCA9IGVudi5WTS5yZXNvbHZlUGFydGlhbC5jYWxsKHRoaXMsIHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGV4dGVuZGVkT3B0aW9ucyA9IFV0aWxzLmV4dGVuZCh7fSwgb3B0aW9ucywge1xuICAgICAgaG9va3M6IHRoaXMuaG9va3MsXG4gICAgICBwcm90b0FjY2Vzc0NvbnRyb2w6IHRoaXMucHJvdG9BY2Nlc3NDb250cm9sXG4gICAgfSk7XG5cbiAgICBsZXQgcmVzdWx0ID0gZW52LlZNLmludm9rZVBhcnRpYWwuY2FsbChcbiAgICAgIHRoaXMsXG4gICAgICBwYXJ0aWFsLFxuICAgICAgY29udGV4dCxcbiAgICAgIGV4dGVuZGVkT3B0aW9uc1xuICAgICk7XG5cbiAgICBpZiAocmVzdWx0ID09IG51bGwgJiYgZW52LmNvbXBpbGUpIHtcbiAgICAgIG9wdGlvbnMucGFydGlhbHNbb3B0aW9ucy5uYW1lXSA9IGVudi5jb21waWxlKFxuICAgICAgICBwYXJ0aWFsLFxuICAgICAgICB0ZW1wbGF0ZVNwZWMuY29tcGlsZXJPcHRpb25zLFxuICAgICAgICBlbnZcbiAgICAgICk7XG4gICAgICByZXN1bHQgPSBvcHRpb25zLnBhcnRpYWxzW29wdGlvbnMubmFtZV0oY29udGV4dCwgZXh0ZW5kZWRPcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5pbmRlbnQpIHtcbiAgICAgICAgbGV0IGxpbmVzID0gcmVzdWx0LnNwbGl0KCdcXG4nKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDAsIGwgPSBsaW5lcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgICBpZiAoIWxpbmVzW2ldICYmIGkgKyAxID09PSBsKSB7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBsaW5lc1tpXSA9IG9wdGlvbnMuaW5kZW50ICsgbGluZXNbaV07XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0ID0gbGluZXMuam9pbignXFxuJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKFxuICAgICAgICAnVGhlIHBhcnRpYWwgJyArXG4gICAgICAgICAgb3B0aW9ucy5uYW1lICtcbiAgICAgICAgICAnIGNvdWxkIG5vdCBiZSBjb21waWxlZCB3aGVuIHJ1bm5pbmcgaW4gcnVudGltZS1vbmx5IG1vZGUnXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8vIEp1c3QgYWRkIHdhdGVyXG4gIGxldCBjb250YWluZXIgPSB7XG4gICAgc3RyaWN0OiBmdW5jdGlvbihvYmosIG5hbWUsIGxvYykge1xuICAgICAgaWYgKCFvYmogfHwgIShuYW1lIGluIG9iaikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignXCInICsgbmFtZSArICdcIiBub3QgZGVmaW5lZCBpbiAnICsgb2JqLCB7XG4gICAgICAgICAgbG9jOiBsb2NcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5KG9iaiwgbmFtZSk7XG4gICAgfSxcbiAgICBsb29rdXBQcm9wZXJ0eTogZnVuY3Rpb24ocGFyZW50LCBwcm9wZXJ0eU5hbWUpIHtcbiAgICAgIGxldCByZXN1bHQgPSBwYXJlbnRbcHJvcGVydHlOYW1lXTtcbiAgICAgIGlmIChyZXN1bHQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJlbnQsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc3VsdElzQWxsb3dlZChyZXN1bHQsIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wsIHByb3BlcnR5TmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBsb29rdXA6IGZ1bmN0aW9uKGRlcHRocywgbmFtZSkge1xuICAgICAgY29uc3QgbGVuID0gZGVwdGhzLmxlbmd0aDtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgICAgbGV0IHJlc3VsdCA9IGRlcHRoc1tpXSAmJiBjb250YWluZXIubG9va3VwUHJvcGVydHkoZGVwdGhzW2ldLCBuYW1lKTtcbiAgICAgICAgaWYgKHJlc3VsdCAhPSBudWxsKSB7XG4gICAgICAgICAgcmV0dXJuIGRlcHRoc1tpXVtuYW1lXTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICAgbGFtYmRhOiBmdW5jdGlvbihjdXJyZW50LCBjb250ZXh0KSB7XG4gICAgICByZXR1cm4gdHlwZW9mIGN1cnJlbnQgPT09ICdmdW5jdGlvbicgPyBjdXJyZW50LmNhbGwoY29udGV4dCkgOiBjdXJyZW50O1xuICAgIH0sXG5cbiAgICBlc2NhcGVFeHByZXNzaW9uOiBVdGlscy5lc2NhcGVFeHByZXNzaW9uLFxuICAgIGludm9rZVBhcnRpYWw6IGludm9rZVBhcnRpYWxXcmFwcGVyLFxuXG4gICAgZm46IGZ1bmN0aW9uKGkpIHtcbiAgICAgIGxldCByZXQgPSB0ZW1wbGF0ZVNwZWNbaV07XG4gICAgICByZXQuZGVjb3JhdG9yID0gdGVtcGxhdGVTcGVjW2kgKyAnX2QnXTtcbiAgICAgIHJldHVybiByZXQ7XG4gICAgfSxcblxuICAgIHByb2dyYW1zOiBbXSxcbiAgICBwcm9ncmFtOiBmdW5jdGlvbihpLCBkYXRhLCBkZWNsYXJlZEJsb2NrUGFyYW1zLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgICBsZXQgcHJvZ3JhbVdyYXBwZXIgPSB0aGlzLnByb2dyYW1zW2ldLFxuICAgICAgICBmbiA9IHRoaXMuZm4oaSk7XG4gICAgICBpZiAoZGF0YSB8fCBkZXB0aHMgfHwgYmxvY2tQYXJhbXMgfHwgZGVjbGFyZWRCbG9ja1BhcmFtcykge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHdyYXBQcm9ncmFtKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgaSxcbiAgICAgICAgICBmbixcbiAgICAgICAgICBkYXRhLFxuICAgICAgICAgIGRlY2xhcmVkQmxvY2tQYXJhbXMsXG4gICAgICAgICAgYmxvY2tQYXJhbXMsXG4gICAgICAgICAgZGVwdGhzXG4gICAgICAgICk7XG4gICAgICB9IGVsc2UgaWYgKCFwcm9ncmFtV3JhcHBlcikge1xuICAgICAgICBwcm9ncmFtV3JhcHBlciA9IHRoaXMucHJvZ3JhbXNbaV0gPSB3cmFwUHJvZ3JhbSh0aGlzLCBpLCBmbik7XG4gICAgICB9XG4gICAgICByZXR1cm4gcHJvZ3JhbVdyYXBwZXI7XG4gICAgfSxcblxuICAgIGRhdGE6IGZ1bmN0aW9uKHZhbHVlLCBkZXB0aCkge1xuICAgICAgd2hpbGUgKHZhbHVlICYmIGRlcHRoLS0pIHtcbiAgICAgICAgdmFsdWUgPSB2YWx1ZS5fcGFyZW50O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIH0sXG4gICAgbWVyZ2VJZk5lZWRlZDogZnVuY3Rpb24ocGFyYW0sIGNvbW1vbikge1xuICAgICAgbGV0IG9iaiA9IHBhcmFtIHx8IGNvbW1vbjtcblxuICAgICAgaWYgKHBhcmFtICYmIGNvbW1vbiAmJiBwYXJhbSAhPT0gY29tbW9uKSB7XG4gICAgICAgIG9iaiA9IFV0aWxzLmV4dGVuZCh7fSwgY29tbW9uLCBwYXJhbSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICAvLyBBbiBlbXB0eSBvYmplY3QgdG8gdXNlIGFzIHJlcGxhY2VtZW50IGZvciBudWxsLWNvbnRleHRzXG4gICAgbnVsbENvbnRleHQ6IE9iamVjdC5zZWFsKHt9KSxcblxuICAgIG5vb3A6IGVudi5WTS5ub29wLFxuICAgIGNvbXBpbGVySW5mbzogdGVtcGxhdGVTcGVjLmNvbXBpbGVyXG4gIH07XG5cbiAgZnVuY3Rpb24gcmV0KGNvbnRleHQsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBkYXRhID0gb3B0aW9ucy5kYXRhO1xuXG4gICAgcmV0Ll9zZXR1cChvcHRpb25zKTtcbiAgICBpZiAoIW9wdGlvbnMucGFydGlhbCAmJiB0ZW1wbGF0ZVNwZWMudXNlRGF0YSkge1xuICAgICAgZGF0YSA9IGluaXREYXRhKGNvbnRleHQsIGRhdGEpO1xuICAgIH1cbiAgICBsZXQgZGVwdGhzLFxuICAgICAgYmxvY2tQYXJhbXMgPSB0ZW1wbGF0ZVNwZWMudXNlQmxvY2tQYXJhbXMgPyBbXSA6IHVuZGVmaW5lZDtcbiAgICBpZiAodGVtcGxhdGVTcGVjLnVzZURlcHRocykge1xuICAgICAgaWYgKG9wdGlvbnMuZGVwdGhzKSB7XG4gICAgICAgIGRlcHRocyA9XG4gICAgICAgICAgY29udGV4dCAhPSBvcHRpb25zLmRlcHRoc1swXVxuICAgICAgICAgICAgPyBbY29udGV4dF0uY29uY2F0KG9wdGlvbnMuZGVwdGhzKVxuICAgICAgICAgICAgOiBvcHRpb25zLmRlcHRocztcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlcHRocyA9IFtjb250ZXh0XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWluKGNvbnRleHQgLyosIG9wdGlvbnMqLykge1xuICAgICAgcmV0dXJuIChcbiAgICAgICAgJycgK1xuICAgICAgICB0ZW1wbGF0ZVNwZWMubWFpbihcbiAgICAgICAgICBjb250YWluZXIsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBjb250YWluZXIuaGVscGVycyxcbiAgICAgICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBibG9ja1BhcmFtcyxcbiAgICAgICAgICBkZXB0aHNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICB9XG5cbiAgICBtYWluID0gZXhlY3V0ZURlY29yYXRvcnMoXG4gICAgICB0ZW1wbGF0ZVNwZWMubWFpbixcbiAgICAgIG1haW4sXG4gICAgICBjb250YWluZXIsXG4gICAgICBvcHRpb25zLmRlcHRocyB8fCBbXSxcbiAgICAgIGRhdGEsXG4gICAgICBibG9ja1BhcmFtc1xuICAgICk7XG4gICAgcmV0dXJuIG1haW4oY29udGV4dCwgb3B0aW9ucyk7XG4gIH1cblxuICByZXQuaXNUb3AgPSB0cnVlO1xuXG4gIHJldC5fc2V0dXAgPSBmdW5jdGlvbihvcHRpb25zKSB7XG4gICAgaWYgKCFvcHRpb25zLnBhcnRpYWwpIHtcbiAgICAgIGxldCBtZXJnZWRIZWxwZXJzID0gVXRpbHMuZXh0ZW5kKHt9LCBlbnYuaGVscGVycywgb3B0aW9ucy5oZWxwZXJzKTtcbiAgICAgIHdyYXBIZWxwZXJzVG9QYXNzTG9va3VwUHJvcGVydHkobWVyZ2VkSGVscGVycywgY29udGFpbmVyKTtcbiAgICAgIGNvbnRhaW5lci5oZWxwZXJzID0gbWVyZ2VkSGVscGVycztcblxuICAgICAgaWYgKHRlbXBsYXRlU3BlYy51c2VQYXJ0aWFsKSB7XG4gICAgICAgIC8vIFVzZSBtZXJnZUlmTmVlZGVkIGhlcmUgdG8gcHJldmVudCBjb21waWxpbmcgZ2xvYmFsIHBhcnRpYWxzIG11bHRpcGxlIHRpbWVzXG4gICAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IGNvbnRhaW5lci5tZXJnZUlmTmVlZGVkKFxuICAgICAgICAgIG9wdGlvbnMucGFydGlhbHMsXG4gICAgICAgICAgZW52LnBhcnRpYWxzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodGVtcGxhdGVTcGVjLnVzZVBhcnRpYWwgfHwgdGVtcGxhdGVTcGVjLnVzZURlY29yYXRvcnMpIHtcbiAgICAgICAgY29udGFpbmVyLmRlY29yYXRvcnMgPSBVdGlscy5leHRlbmQoXG4gICAgICAgICAge30sXG4gICAgICAgICAgZW52LmRlY29yYXRvcnMsXG4gICAgICAgICAgb3B0aW9ucy5kZWNvcmF0b3JzXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IHt9O1xuICAgICAgY29udGFpbmVyLnByb3RvQWNjZXNzQ29udHJvbCA9IGNyZWF0ZVByb3RvQWNjZXNzQ29udHJvbChvcHRpb25zKTtcblxuICAgICAgbGV0IGtlZXBIZWxwZXJJbkhlbHBlcnMgPVxuICAgICAgICBvcHRpb25zLmFsbG93Q2FsbHNUb0hlbHBlck1pc3NpbmcgfHxcbiAgICAgICAgdGVtcGxhdGVXYXNQcmVjb21waWxlZFdpdGhDb21waWxlclY3O1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnaGVscGVyTWlzc2luZycsIGtlZXBIZWxwZXJJbkhlbHBlcnMpO1xuICAgICAgbW92ZUhlbHBlclRvSG9va3MoY29udGFpbmVyLCAnYmxvY2tIZWxwZXJNaXNzaW5nJywga2VlcEhlbHBlckluSGVscGVycyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnRhaW5lci5wcm90b0FjY2Vzc0NvbnRyb2wgPSBvcHRpb25zLnByb3RvQWNjZXNzQ29udHJvbDsgLy8gaW50ZXJuYWwgb3B0aW9uXG4gICAgICBjb250YWluZXIuaGVscGVycyA9IG9wdGlvbnMuaGVscGVycztcbiAgICAgIGNvbnRhaW5lci5wYXJ0aWFscyA9IG9wdGlvbnMucGFydGlhbHM7XG4gICAgICBjb250YWluZXIuZGVjb3JhdG9ycyA9IG9wdGlvbnMuZGVjb3JhdG9ycztcbiAgICAgIGNvbnRhaW5lci5ob29rcyA9IG9wdGlvbnMuaG9va3M7XG4gICAgfVxuICB9O1xuXG4gIHJldC5fY2hpbGQgPSBmdW5jdGlvbihpLCBkYXRhLCBibG9ja1BhcmFtcywgZGVwdGhzKSB7XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VCbG9ja1BhcmFtcyAmJiAhYmxvY2tQYXJhbXMpIHtcbiAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ211c3QgcGFzcyBibG9jayBwYXJhbXMnKTtcbiAgICB9XG4gICAgaWYgKHRlbXBsYXRlU3BlYy51c2VEZXB0aHMgJiYgIWRlcHRocykge1xuICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbignbXVzdCBwYXNzIHBhcmVudCBkZXB0aHMnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gd3JhcFByb2dyYW0oXG4gICAgICBjb250YWluZXIsXG4gICAgICBpLFxuICAgICAgdGVtcGxhdGVTcGVjW2ldLFxuICAgICAgZGF0YSxcbiAgICAgIDAsXG4gICAgICBibG9ja1BhcmFtcyxcbiAgICAgIGRlcHRoc1xuICAgICk7XG4gIH07XG4gIHJldHVybiByZXQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB3cmFwUHJvZ3JhbShcbiAgY29udGFpbmVyLFxuICBpLFxuICBmbixcbiAgZGF0YSxcbiAgZGVjbGFyZWRCbG9ja1BhcmFtcyxcbiAgYmxvY2tQYXJhbXMsXG4gIGRlcHRoc1xuKSB7XG4gIGZ1bmN0aW9uIHByb2coY29udGV4dCwgb3B0aW9ucyA9IHt9KSB7XG4gICAgbGV0IGN1cnJlbnREZXB0aHMgPSBkZXB0aHM7XG4gICAgaWYgKFxuICAgICAgZGVwdGhzICYmXG4gICAgICBjb250ZXh0ICE9IGRlcHRoc1swXSAmJlxuICAgICAgIShjb250ZXh0ID09PSBjb250YWluZXIubnVsbENvbnRleHQgJiYgZGVwdGhzWzBdID09PSBudWxsKVxuICAgICkge1xuICAgICAgY3VycmVudERlcHRocyA9IFtjb250ZXh0XS5jb25jYXQoZGVwdGhzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZm4oXG4gICAgICBjb250YWluZXIsXG4gICAgICBjb250ZXh0LFxuICAgICAgY29udGFpbmVyLmhlbHBlcnMsXG4gICAgICBjb250YWluZXIucGFydGlhbHMsXG4gICAgICBvcHRpb25zLmRhdGEgfHwgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zICYmIFtvcHRpb25zLmJsb2NrUGFyYW1zXS5jb25jYXQoYmxvY2tQYXJhbXMpLFxuICAgICAgY3VycmVudERlcHRoc1xuICAgICk7XG4gIH1cblxuICBwcm9nID0gZXhlY3V0ZURlY29yYXRvcnMoZm4sIHByb2csIGNvbnRhaW5lciwgZGVwdGhzLCBkYXRhLCBibG9ja1BhcmFtcyk7XG5cbiAgcHJvZy5wcm9ncmFtID0gaTtcbiAgcHJvZy5kZXB0aCA9IGRlcHRocyA/IGRlcHRocy5sZW5ndGggOiAwO1xuICBwcm9nLmJsb2NrUGFyYW1zID0gZGVjbGFyZWRCbG9ja1BhcmFtcyB8fCAwO1xuICByZXR1cm4gcHJvZztcbn1cblxuLyoqXG4gKiBUaGlzIGlzIGN1cnJlbnRseSBwYXJ0IG9mIHRoZSBvZmZpY2lhbCBBUEksIHRoZXJlZm9yZSBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzIHNob3VsZCBub3QgYmUgY2hhbmdlZC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVQYXJ0aWFsKHBhcnRpYWwsIGNvbnRleHQsIG9wdGlvbnMpIHtcbiAgaWYgKCFwYXJ0aWFsKSB7XG4gICAgaWYgKG9wdGlvbnMubmFtZSA9PT0gJ0BwYXJ0aWFsLWJsb2NrJykge1xuICAgICAgcGFydGlhbCA9IG9wdGlvbnMuZGF0YVsncGFydGlhbC1ibG9jayddO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0aWFsID0gb3B0aW9ucy5wYXJ0aWFsc1tvcHRpb25zLm5hbWVdO1xuICAgIH1cbiAgfSBlbHNlIGlmICghcGFydGlhbC5jYWxsICYmICFvcHRpb25zLm5hbWUpIHtcbiAgICAvLyBUaGlzIGlzIGEgZHluYW1pYyBwYXJ0aWFsIHRoYXQgcmV0dXJuZWQgYSBzdHJpbmdcbiAgICBvcHRpb25zLm5hbWUgPSBwYXJ0aWFsO1xuICAgIHBhcnRpYWwgPSBvcHRpb25zLnBhcnRpYWxzW3BhcnRpYWxdO1xuICB9XG4gIHJldHVybiBwYXJ0aWFsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaW52b2tlUGFydGlhbChwYXJ0aWFsLCBjb250ZXh0LCBvcHRpb25zKSB7XG4gIC8vIFVzZSB0aGUgY3VycmVudCBjbG9zdXJlIGNvbnRleHQgdG8gc2F2ZSB0aGUgcGFydGlhbC1ibG9jayBpZiB0aGlzIHBhcnRpYWxcbiAgY29uc3QgY3VycmVudFBhcnRpYWxCbG9jayA9IG9wdGlvbnMuZGF0YSAmJiBvcHRpb25zLmRhdGFbJ3BhcnRpYWwtYmxvY2snXTtcbiAgb3B0aW9ucy5wYXJ0aWFsID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMuaWRzKSB7XG4gICAgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoID0gb3B0aW9ucy5pZHNbMF0gfHwgb3B0aW9ucy5kYXRhLmNvbnRleHRQYXRoO1xuICB9XG5cbiAgbGV0IHBhcnRpYWxCbG9jaztcbiAgaWYgKG9wdGlvbnMuZm4gJiYgb3B0aW9ucy5mbiAhPT0gbm9vcCkge1xuICAgIG9wdGlvbnMuZGF0YSA9IGNyZWF0ZUZyYW1lKG9wdGlvbnMuZGF0YSk7XG4gICAgLy8gV3JhcHBlciBmdW5jdGlvbiB0byBnZXQgYWNjZXNzIHRvIGN1cnJlbnRQYXJ0aWFsQmxvY2sgZnJvbSB0aGUgY2xvc3VyZVxuICAgIGxldCBmbiA9IG9wdGlvbnMuZm47XG4gICAgcGFydGlhbEJsb2NrID0gb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBmdW5jdGlvbiBwYXJ0aWFsQmxvY2tXcmFwcGVyKFxuICAgICAgY29udGV4dCxcbiAgICAgIG9wdGlvbnMgPSB7fVxuICAgICkge1xuICAgICAgLy8gUmVzdG9yZSB0aGUgcGFydGlhbC1ibG9jayBmcm9tIHRoZSBjbG9zdXJlIGZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9ja1xuICAgICAgLy8gaS5lLiB0aGUgcGFydCBpbnNpZGUgdGhlIGJsb2NrIG9mIHRoZSBwYXJ0aWFsIGNhbGwuXG4gICAgICBvcHRpb25zLmRhdGEgPSBjcmVhdGVGcmFtZShvcHRpb25zLmRhdGEpO1xuICAgICAgb3B0aW9ucy5kYXRhWydwYXJ0aWFsLWJsb2NrJ10gPSBjdXJyZW50UGFydGlhbEJsb2NrO1xuICAgICAgcmV0dXJuIGZuKGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH07XG4gICAgaWYgKGZuLnBhcnRpYWxzKSB7XG4gICAgICBvcHRpb25zLnBhcnRpYWxzID0gVXRpbHMuZXh0ZW5kKHt9LCBvcHRpb25zLnBhcnRpYWxzLCBmbi5wYXJ0aWFscyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCAmJiBwYXJ0aWFsQmxvY2spIHtcbiAgICBwYXJ0aWFsID0gcGFydGlhbEJsb2NrO1xuICB9XG5cbiAgaWYgKHBhcnRpYWwgPT09IHVuZGVmaW5lZCkge1xuICAgIHRocm93IG5ldyBFeGNlcHRpb24oJ1RoZSBwYXJ0aWFsICcgKyBvcHRpb25zLm5hbWUgKyAnIGNvdWxkIG5vdCBiZSBmb3VuZCcpO1xuICB9IGVsc2UgaWYgKHBhcnRpYWwgaW5zdGFuY2VvZiBGdW5jdGlvbikge1xuICAgIHJldHVybiBwYXJ0aWFsKGNvbnRleHQsIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBub29wKCkge1xuICByZXR1cm4gJyc7XG59XG5cbmZ1bmN0aW9uIGluaXREYXRhKGNvbnRleHQsIGRhdGEpIHtcbiAgaWYgKCFkYXRhIHx8ICEoJ3Jvb3QnIGluIGRhdGEpKSB7XG4gICAgZGF0YSA9IGRhdGEgPyBjcmVhdGVGcmFtZShkYXRhKSA6IHt9O1xuICAgIGRhdGEucm9vdCA9IGNvbnRleHQ7XG4gIH1cbiAgcmV0dXJuIGRhdGE7XG59XG5cbmZ1bmN0aW9uIGV4ZWN1dGVEZWNvcmF0b3JzKGZuLCBwcm9nLCBjb250YWluZXIsIGRlcHRocywgZGF0YSwgYmxvY2tQYXJhbXMpIHtcbiAgaWYgKGZuLmRlY29yYXRvcikge1xuICAgIGxldCBwcm9wcyA9IHt9O1xuICAgIHByb2cgPSBmbi5kZWNvcmF0b3IoXG4gICAgICBwcm9nLFxuICAgICAgcHJvcHMsXG4gICAgICBjb250YWluZXIsXG4gICAgICBkZXB0aHMgJiYgZGVwdGhzWzBdLFxuICAgICAgZGF0YSxcbiAgICAgIGJsb2NrUGFyYW1zLFxuICAgICAgZGVwdGhzXG4gICAgKTtcbiAgICBVdGlscy5leHRlbmQocHJvZywgcHJvcHMpO1xuICB9XG4gIHJldHVybiBwcm9nO1xufVxuXG5mdW5jdGlvbiB3cmFwSGVscGVyc1RvUGFzc0xvb2t1cFByb3BlcnR5KG1lcmdlZEhlbHBlcnMsIGNvbnRhaW5lcikge1xuICBPYmplY3Qua2V5cyhtZXJnZWRIZWxwZXJzKS5mb3JFYWNoKGhlbHBlck5hbWUgPT4ge1xuICAgIGxldCBoZWxwZXIgPSBtZXJnZWRIZWxwZXJzW2hlbHBlck5hbWVdO1xuICAgIG1lcmdlZEhlbHBlcnNbaGVscGVyTmFtZV0gPSBwYXNzTG9va3VwUHJvcGVydHlPcHRpb24oaGVscGVyLCBjb250YWluZXIpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gcGFzc0xvb2t1cFByb3BlcnR5T3B0aW9uKGhlbHBlciwgY29udGFpbmVyKSB7XG4gIGNvbnN0IGxvb2t1cFByb3BlcnR5ID0gY29udGFpbmVyLmxvb2t1cFByb3BlcnR5O1xuICByZXR1cm4gd3JhcEhlbHBlcihoZWxwZXIsIG9wdGlvbnMgPT4ge1xuICAgIHJldHVybiBVdGlscy5leHRlbmQoeyBsb29rdXBQcm9wZXJ0eSB9LCBvcHRpb25zKTtcbiAgfSk7XG59XG4iXX0=\n","'use strict';\n\nexports.__esModule = true;\n\nexports['default'] = function (Handlebars) {\n /* istanbul ignore next */\n var root = typeof global !== 'undefined' ? global : window,\n $Handlebars = root.Handlebars;\n /* istanbul ignore next */\n Handlebars.noConflict = function () {\n if (root.Handlebars === Handlebars) {\n root.Handlebars = $Handlebars;\n }\n return Handlebars;\n };\n};\n\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2xpYi9oYW5kbGViYXJzL25vLWNvbmZsaWN0LmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7cUJBQWUsVUFBUyxVQUFVLEVBQUU7O0FBRWxDLE1BQUksSUFBSSxHQUFHLE9BQU8sTUFBTSxLQUFLLFdBQVcsR0FBRyxNQUFNLEdBQUcsTUFBTTtNQUN4RCxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQzs7QUFFaEMsWUFBVSxDQUFDLFVBQVUsR0FBRyxZQUFXO0FBQ2pDLFFBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7QUFDbEMsVUFBSSxDQUFDLFVBQVUsR0FBRyxXQUFXLENBQUM7S0FDL0I7QUFDRCxXQUFPLFVBQVUsQ0FBQztHQUNuQixDQUFDO0NBQ0giLCJmaWxlIjoibm8tY29uZmxpY3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbihIYW5kbGViYXJzKSB7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIGxldCByb290ID0gdHlwZW9mIGdsb2JhbCAhPT0gJ3VuZGVmaW5lZCcgPyBnbG9iYWwgOiB3aW5kb3csXG4gICAgJEhhbmRsZWJhcnMgPSByb290LkhhbmRsZWJhcnM7XG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIEhhbmRsZWJhcnMubm9Db25mbGljdCA9IGZ1bmN0aW9uKCkge1xuICAgIGlmIChyb290LkhhbmRsZWJhcnMgPT09IEhhbmRsZWJhcnMpIHtcbiAgICAgIHJvb3QuSGFuZGxlYmFycyA9ICRIYW5kbGViYXJzO1xuICAgIH1cbiAgICByZXR1cm4gSGFuZGxlYmFycztcbiAgfTtcbn1cbiJdfQ==\n","'use strict';\n\nexports.__esModule = true;\n// istanbul ignore next\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }\n\n// istanbul ignore next\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj['default'] = obj; return newObj; } }\n\nvar _handlebarsBase = require('./handlebars/base');\n\nvar base = _interopRequireWildcard(_handlebarsBase);\n\n// Each of these augment the Handlebars object. No need to setup here.\n// (This is done to easily share code between commonjs and browse envs)\n\nvar _handlebarsSafeString = require('./handlebars/safe-string');\n\nvar _handlebarsSafeString2 = _interopRequireDefault(_handlebarsSafeString);\n\nvar _handlebarsException = require('./handlebars/exception');\n\nvar _handlebarsException2 = _interopRequireDefault(_handlebarsException);\n\nvar _handlebarsUtils = require('./handlebars/utils');\n\nvar Utils = _interopRequireWildcard(_handlebarsUtils);\n\nvar _handlebarsRuntime = require('./handlebars/runtime');\n\nvar runtime = _interopRequireWildcard(_handlebarsRuntime);\n\nvar _handlebarsNoConflict = require('./handlebars/no-conflict');\n\nvar _handlebarsNoConflict2 = _interopRequireDefault(_handlebarsNoConflict);\n\n// For compatibility and usage outside of module systems, make the Handlebars object a namespace\nfunction create() {\n var hb = new base.HandlebarsEnvironment();\n\n Utils.extend(hb, base);\n hb.SafeString = _handlebarsSafeString2['default'];\n hb.Exception = _handlebarsException2['default'];\n hb.Utils = Utils;\n hb.escapeExpression = Utils.escapeExpression;\n\n hb.VM = runtime;\n hb.template = function (spec) {\n return runtime.template(spec, hb);\n };\n\n return hb;\n}\n\nvar inst = create();\ninst.create = create;\n\n_handlebarsNoConflict2['default'](inst);\n\ninst['default'] = inst;\n\nexports['default'] = inst;\nmodule.exports = exports['default'];\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi9oYW5kbGViYXJzLnJ1bnRpbWUuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OEJBQXNCLG1CQUFtQjs7SUFBN0IsSUFBSTs7Ozs7b0NBSU8sMEJBQTBCOzs7O21DQUMzQix3QkFBd0I7Ozs7K0JBQ3ZCLG9CQUFvQjs7SUFBL0IsS0FBSzs7aUNBQ1Esc0JBQXNCOztJQUFuQyxPQUFPOztvQ0FFSSwwQkFBMEI7Ozs7O0FBR2pELFNBQVMsTUFBTSxHQUFHO0FBQ2hCLE1BQUksRUFBRSxHQUFHLElBQUksSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7O0FBRTFDLE9BQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDO0FBQ3ZCLElBQUUsQ0FBQyxVQUFVLG9DQUFhLENBQUM7QUFDM0IsSUFBRSxDQUFDLFNBQVMsbUNBQVksQ0FBQztBQUN6QixJQUFFLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztBQUNqQixJQUFFLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixDQUFDOztBQUU3QyxJQUFFLENBQUMsRUFBRSxHQUFHLE9BQU8sQ0FBQztBQUNoQixJQUFFLENBQUMsUUFBUSxHQUFHLFVBQVMsSUFBSSxFQUFFO0FBQzNCLFdBQU8sT0FBTyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7R0FDbkMsQ0FBQzs7QUFFRixTQUFPLEVBQUUsQ0FBQztDQUNYOztBQUVELElBQUksSUFBSSxHQUFHLE1BQU0sRUFBRSxDQUFDO0FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDOztBQUVyQixrQ0FBVyxJQUFJLENBQUMsQ0FBQzs7QUFFakIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQzs7cUJBRVIsSUFBSSIsImZpbGUiOiJoYW5kbGViYXJzLnJ1bnRpbWUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBiYXNlIGZyb20gJy4vaGFuZGxlYmFycy9iYXNlJztcblxuLy8gRWFjaCBvZiB0aGVzZSBhdWdtZW50IHRoZSBIYW5kbGViYXJzIG9iamVjdC4gTm8gbmVlZCB0byBzZXR1cCBoZXJlLlxuLy8gKFRoaXMgaXMgZG9uZSB0byBlYXNpbHkgc2hhcmUgY29kZSBiZXR3ZWVuIGNvbW1vbmpzIGFuZCBicm93c2UgZW52cylcbmltcG9ydCBTYWZlU3RyaW5nIGZyb20gJy4vaGFuZGxlYmFycy9zYWZlLXN0cmluZyc7XG5pbXBvcnQgRXhjZXB0aW9uIGZyb20gJy4vaGFuZGxlYmFycy9leGNlcHRpb24nO1xuaW1wb3J0ICogYXMgVXRpbHMgZnJvbSAnLi9oYW5kbGViYXJzL3V0aWxzJztcbmltcG9ydCAqIGFzIHJ1bnRpbWUgZnJvbSAnLi9oYW5kbGViYXJzL3J1bnRpbWUnO1xuXG5pbXBvcnQgbm9Db25mbGljdCBmcm9tICcuL2hhbmRsZWJhcnMvbm8tY29uZmxpY3QnO1xuXG4vLyBGb3IgY29tcGF0aWJpbGl0eSBhbmQgdXNhZ2Ugb3V0c2lkZSBvZiBtb2R1bGUgc3lzdGVtcywgbWFrZSB0aGUgSGFuZGxlYmFycyBvYmplY3QgYSBuYW1lc3BhY2VcbmZ1bmN0aW9uIGNyZWF0ZSgpIHtcbiAgbGV0IGhiID0gbmV3IGJhc2UuSGFuZGxlYmFyc0Vudmlyb25tZW50KCk7XG5cbiAgVXRpbHMuZXh0ZW5kKGhiLCBiYXNlKTtcbiAgaGIuU2FmZVN0cmluZyA9IFNhZmVTdHJpbmc7XG4gIGhiLkV4Y2VwdGlvbiA9IEV4Y2VwdGlvbjtcbiAgaGIuVXRpbHMgPSBVdGlscztcbiAgaGIuZXNjYXBlRXhwcmVzc2lvbiA9IFV0aWxzLmVzY2FwZUV4cHJlc3Npb247XG5cbiAgaGIuVk0gPSBydW50aW1lO1xuICBoYi50ZW1wbGF0ZSA9IGZ1bmN0aW9uKHNwZWMpIHtcbiAgICByZXR1cm4gcnVudGltZS50ZW1wbGF0ZShzcGVjLCBoYik7XG4gIH07XG5cbiAgcmV0dXJuIGhiO1xufVxuXG5sZXQgaW5zdCA9IGNyZWF0ZSgpO1xuaW5zdC5jcmVhdGUgPSBjcmVhdGU7XG5cbm5vQ29uZmxpY3QoaW5zdCk7XG5cbmluc3RbJ2RlZmF1bHQnXSA9IGluc3Q7XG5cbmV4cG9ydCBkZWZhdWx0IGluc3Q7XG4iXX0=\n","// Create a simple path alias to allow browserify to resolve\n// the runtime on a supported path.\nmodule.exports = require('./dist/cjs/handlebars.runtime')['default'];\n","//! moment.js\n//! version : 2.30.1\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n global.moment = factory()\n}(this, (function () { 'use strict';\n\n var hookCallback;\n\n function hooks() {\n return hookCallback.apply(null, arguments);\n }\n\n // This is done to register the method called with moment()\n // without creating circular dependencies.\n function setHookCallback(callback) {\n hookCallback = callback;\n }\n\n function isArray(input) {\n return (\n input instanceof Array ||\n Object.prototype.toString.call(input) === '[object Array]'\n );\n }\n\n function isObject(input) {\n // IE8 will treat undefined and null as object if it wasn't for\n // input != null\n return (\n input != null &&\n Object.prototype.toString.call(input) === '[object Object]'\n );\n }\n\n function hasOwnProp(a, b) {\n return Object.prototype.hasOwnProperty.call(a, b);\n }\n\n function isObjectEmpty(obj) {\n if (Object.getOwnPropertyNames) {\n return Object.getOwnPropertyNames(obj).length === 0;\n } else {\n var k;\n for (k in obj) {\n if (hasOwnProp(obj, k)) {\n return false;\n }\n }\n return true;\n }\n }\n\n function isUndefined(input) {\n return input === void 0;\n }\n\n function isNumber(input) {\n return (\n typeof input === 'number' ||\n Object.prototype.toString.call(input) === '[object Number]'\n );\n }\n\n function isDate(input) {\n return (\n input instanceof Date ||\n Object.prototype.toString.call(input) === '[object Date]'\n );\n }\n\n function map(arr, fn) {\n var res = [],\n i,\n arrLen = arr.length;\n for (i = 0; i < arrLen; ++i) {\n res.push(fn(arr[i], i));\n }\n return res;\n }\n\n function extend(a, b) {\n for (var i in b) {\n if (hasOwnProp(b, i)) {\n a[i] = b[i];\n }\n }\n\n if (hasOwnProp(b, 'toString')) {\n a.toString = b.toString;\n }\n\n if (hasOwnProp(b, 'valueOf')) {\n a.valueOf = b.valueOf;\n }\n\n return a;\n }\n\n function createUTC(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, true).utc();\n }\n\n function defaultParsingFlags() {\n // We need to deep clone this object.\n return {\n empty: false,\n unusedTokens: [],\n unusedInput: [],\n overflow: -2,\n charsLeftOver: 0,\n nullInput: false,\n invalidEra: null,\n invalidMonth: null,\n invalidFormat: false,\n userInvalidated: false,\n iso: false,\n parsedDateParts: [],\n era: null,\n meridiem: null,\n rfc2822: false,\n weekdayMismatch: false,\n };\n }\n\n function getParsingFlags(m) {\n if (m._pf == null) {\n m._pf = defaultParsingFlags();\n }\n return m._pf;\n }\n\n var some;\n if (Array.prototype.some) {\n some = Array.prototype.some;\n } else {\n some = function (fun) {\n var t = Object(this),\n len = t.length >>> 0,\n i;\n\n for (i = 0; i < len; i++) {\n if (i in t && fun.call(this, t[i], i, t)) {\n return true;\n }\n }\n\n return false;\n };\n }\n\n function isValid(m) {\n var flags = null,\n parsedParts = false,\n isNowValid = m._d && !isNaN(m._d.getTime());\n if (isNowValid) {\n flags = getParsingFlags(m);\n parsedParts = some.call(flags.parsedDateParts, function (i) {\n return i != null;\n });\n isNowValid =\n flags.overflow < 0 &&\n !flags.empty &&\n !flags.invalidEra &&\n !flags.invalidMonth &&\n !flags.invalidWeekday &&\n !flags.weekdayMismatch &&\n !flags.nullInput &&\n !flags.invalidFormat &&\n !flags.userInvalidated &&\n (!flags.meridiem || (flags.meridiem && parsedParts));\n if (m._strict) {\n isNowValid =\n isNowValid &&\n flags.charsLeftOver === 0 &&\n flags.unusedTokens.length === 0 &&\n flags.bigHour === undefined;\n }\n }\n if (Object.isFrozen == null || !Object.isFrozen(m)) {\n m._isValid = isNowValid;\n } else {\n return isNowValid;\n }\n return m._isValid;\n }\n\n function createInvalid(flags) {\n var m = createUTC(NaN);\n if (flags != null) {\n extend(getParsingFlags(m), flags);\n } else {\n getParsingFlags(m).userInvalidated = true;\n }\n\n return m;\n }\n\n // Plugins that add properties should also add the key here (null value),\n // so we can properly clone ourselves.\n var momentProperties = (hooks.momentProperties = []),\n updateInProgress = false;\n\n function copyConfig(to, from) {\n var i,\n prop,\n val,\n momentPropertiesLen = momentProperties.length;\n\n if (!isUndefined(from._isAMomentObject)) {\n to._isAMomentObject = from._isAMomentObject;\n }\n if (!isUndefined(from._i)) {\n to._i = from._i;\n }\n if (!isUndefined(from._f)) {\n to._f = from._f;\n }\n if (!isUndefined(from._l)) {\n to._l = from._l;\n }\n if (!isUndefined(from._strict)) {\n to._strict = from._strict;\n }\n if (!isUndefined(from._tzm)) {\n to._tzm = from._tzm;\n }\n if (!isUndefined(from._isUTC)) {\n to._isUTC = from._isUTC;\n }\n if (!isUndefined(from._offset)) {\n to._offset = from._offset;\n }\n if (!isUndefined(from._pf)) {\n to._pf = getParsingFlags(from);\n }\n if (!isUndefined(from._locale)) {\n to._locale = from._locale;\n }\n\n if (momentPropertiesLen > 0) {\n for (i = 0; i < momentPropertiesLen; i++) {\n prop = momentProperties[i];\n val = from[prop];\n if (!isUndefined(val)) {\n to[prop] = val;\n }\n }\n }\n\n return to;\n }\n\n // Moment prototype object\n function Moment(config) {\n copyConfig(this, config);\n this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n if (!this.isValid()) {\n this._d = new Date(NaN);\n }\n // Prevent infinite loop in case updateOffset creates new moment\n // objects.\n if (updateInProgress === false) {\n updateInProgress = true;\n hooks.updateOffset(this);\n updateInProgress = false;\n }\n }\n\n function isMoment(obj) {\n return (\n obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n );\n }\n\n function warn(msg) {\n if (\n hooks.suppressDeprecationWarnings === false &&\n typeof console !== 'undefined' &&\n console.warn\n ) {\n console.warn('Deprecation warning: ' + msg);\n }\n }\n\n function deprecate(msg, fn) {\n var firstTime = true;\n\n return extend(function () {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(null, msg);\n }\n if (firstTime) {\n var args = [],\n arg,\n i,\n key,\n argLen = arguments.length;\n for (i = 0; i < argLen; i++) {\n arg = '';\n if (typeof arguments[i] === 'object') {\n arg += '\\n[' + i + '] ';\n for (key in arguments[0]) {\n if (hasOwnProp(arguments[0], key)) {\n arg += key + ': ' + arguments[0][key] + ', ';\n }\n }\n arg = arg.slice(0, -2); // Remove trailing comma and space\n } else {\n arg = arguments[i];\n }\n args.push(arg);\n }\n warn(\n msg +\n '\\nArguments: ' +\n Array.prototype.slice.call(args).join('') +\n '\\n' +\n new Error().stack\n );\n firstTime = false;\n }\n return fn.apply(this, arguments);\n }, fn);\n }\n\n var deprecations = {};\n\n function deprecateSimple(name, msg) {\n if (hooks.deprecationHandler != null) {\n hooks.deprecationHandler(name, msg);\n }\n if (!deprecations[name]) {\n warn(msg);\n deprecations[name] = true;\n }\n }\n\n hooks.suppressDeprecationWarnings = false;\n hooks.deprecationHandler = null;\n\n function isFunction(input) {\n return (\n (typeof Function !== 'undefined' && input instanceof Function) ||\n Object.prototype.toString.call(input) === '[object Function]'\n );\n }\n\n function set(config) {\n var prop, i;\n for (i in config) {\n if (hasOwnProp(config, i)) {\n prop = config[i];\n if (isFunction(prop)) {\n this[i] = prop;\n } else {\n this['_' + i] = prop;\n }\n }\n }\n this._config = config;\n // Lenient ordinal parsing accepts just a number in addition to\n // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n this._dayOfMonthOrdinalParseLenient = new RegExp(\n (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n '|' +\n /\\d{1,2}/.source\n );\n }\n\n function mergeConfigs(parentConfig, childConfig) {\n var res = extend({}, parentConfig),\n prop;\n for (prop in childConfig) {\n if (hasOwnProp(childConfig, prop)) {\n if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n res[prop] = {};\n extend(res[prop], parentConfig[prop]);\n extend(res[prop], childConfig[prop]);\n } else if (childConfig[prop] != null) {\n res[prop] = childConfig[prop];\n } else {\n delete res[prop];\n }\n }\n }\n for (prop in parentConfig) {\n if (\n hasOwnProp(parentConfig, prop) &&\n !hasOwnProp(childConfig, prop) &&\n isObject(parentConfig[prop])\n ) {\n // make sure changes to properties don't modify parent config\n res[prop] = extend({}, res[prop]);\n }\n }\n return res;\n }\n\n function Locale(config) {\n if (config != null) {\n this.set(config);\n }\n }\n\n var keys;\n\n if (Object.keys) {\n keys = Object.keys;\n } else {\n keys = function (obj) {\n var i,\n res = [];\n for (i in obj) {\n if (hasOwnProp(obj, i)) {\n res.push(i);\n }\n }\n return res;\n };\n }\n\n var defaultCalendar = {\n sameDay: '[Today at] LT',\n nextDay: '[Tomorrow at] LT',\n nextWeek: 'dddd [at] LT',\n lastDay: '[Yesterday at] LT',\n lastWeek: '[Last] dddd [at] LT',\n sameElse: 'L',\n };\n\n function calendar(key, mom, now) {\n var output = this._calendar[key] || this._calendar['sameElse'];\n return isFunction(output) ? output.call(mom, now) : output;\n }\n\n function zeroFill(number, targetLength, forceSign) {\n var absNumber = '' + Math.abs(number),\n zerosToFill = targetLength - absNumber.length,\n sign = number >= 0;\n return (\n (sign ? (forceSign ? '+' : '') : '-') +\n Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n absNumber\n );\n }\n\n var formattingTokens =\n /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n formatFunctions = {},\n formatTokenFunctions = {};\n\n // token: 'M'\n // padded: ['MM', 2]\n // ordinal: 'Mo'\n // callback: function () { this.month() + 1 }\n function addFormatToken(token, padded, ordinal, callback) {\n var func = callback;\n if (typeof callback === 'string') {\n func = function () {\n return this[callback]();\n };\n }\n if (token) {\n formatTokenFunctions[token] = func;\n }\n if (padded) {\n formatTokenFunctions[padded[0]] = function () {\n return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n };\n }\n if (ordinal) {\n formatTokenFunctions[ordinal] = function () {\n return this.localeData().ordinal(\n func.apply(this, arguments),\n token\n );\n };\n }\n }\n\n function removeFormattingTokens(input) {\n if (input.match(/\\[[\\s\\S]/)) {\n return input.replace(/^\\[|\\]$/g, '');\n }\n return input.replace(/\\\\/g, '');\n }\n\n function makeFormatFunction(format) {\n var array = format.match(formattingTokens),\n i,\n length;\n\n for (i = 0, length = array.length; i < length; i++) {\n if (formatTokenFunctions[array[i]]) {\n array[i] = formatTokenFunctions[array[i]];\n } else {\n array[i] = removeFormattingTokens(array[i]);\n }\n }\n\n return function (mom) {\n var output = '',\n i;\n for (i = 0; i < length; i++) {\n output += isFunction(array[i])\n ? array[i].call(mom, format)\n : array[i];\n }\n return output;\n };\n }\n\n // format date using native date object\n function formatMoment(m, format) {\n if (!m.isValid()) {\n return m.localeData().invalidDate();\n }\n\n format = expandFormat(format, m.localeData());\n formatFunctions[format] =\n formatFunctions[format] || makeFormatFunction(format);\n\n return formatFunctions[format](m);\n }\n\n function expandFormat(format, locale) {\n var i = 5;\n\n function replaceLongDateFormatTokens(input) {\n return locale.longDateFormat(input) || input;\n }\n\n localFormattingTokens.lastIndex = 0;\n while (i >= 0 && localFormattingTokens.test(format)) {\n format = format.replace(\n localFormattingTokens,\n replaceLongDateFormatTokens\n );\n localFormattingTokens.lastIndex = 0;\n i -= 1;\n }\n\n return format;\n }\n\n var defaultLongDateFormat = {\n LTS: 'h:mm:ss A',\n LT: 'h:mm A',\n L: 'MM/DD/YYYY',\n LL: 'MMMM D, YYYY',\n LLL: 'MMMM D, YYYY h:mm A',\n LLLL: 'dddd, MMMM D, YYYY h:mm A',\n };\n\n function longDateFormat(key) {\n var format = this._longDateFormat[key],\n formatUpper = this._longDateFormat[key.toUpperCase()];\n\n if (format || !formatUpper) {\n return format;\n }\n\n this._longDateFormat[key] = formatUpper\n .match(formattingTokens)\n .map(function (tok) {\n if (\n tok === 'MMMM' ||\n tok === 'MM' ||\n tok === 'DD' ||\n tok === 'dddd'\n ) {\n return tok.slice(1);\n }\n return tok;\n })\n .join('');\n\n return this._longDateFormat[key];\n }\n\n var defaultInvalidDate = 'Invalid date';\n\n function invalidDate() {\n return this._invalidDate;\n }\n\n var defaultOrdinal = '%d',\n defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n function ordinal(number) {\n return this._ordinal.replace('%d', number);\n }\n\n var defaultRelativeTime = {\n future: 'in %s',\n past: '%s ago',\n s: 'a few seconds',\n ss: '%d seconds',\n m: 'a minute',\n mm: '%d minutes',\n h: 'an hour',\n hh: '%d hours',\n d: 'a day',\n dd: '%d days',\n w: 'a week',\n ww: '%d weeks',\n M: 'a month',\n MM: '%d months',\n y: 'a year',\n yy: '%d years',\n };\n\n function relativeTime(number, withoutSuffix, string, isFuture) {\n var output = this._relativeTime[string];\n return isFunction(output)\n ? output(number, withoutSuffix, string, isFuture)\n : output.replace(/%d/i, number);\n }\n\n function pastFuture(diff, output) {\n var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n }\n\n var aliases = {\n D: 'date',\n dates: 'date',\n date: 'date',\n d: 'day',\n days: 'day',\n day: 'day',\n e: 'weekday',\n weekdays: 'weekday',\n weekday: 'weekday',\n E: 'isoWeekday',\n isoweekdays: 'isoWeekday',\n isoweekday: 'isoWeekday',\n DDD: 'dayOfYear',\n dayofyears: 'dayOfYear',\n dayofyear: 'dayOfYear',\n h: 'hour',\n hours: 'hour',\n hour: 'hour',\n ms: 'millisecond',\n milliseconds: 'millisecond',\n millisecond: 'millisecond',\n m: 'minute',\n minutes: 'minute',\n minute: 'minute',\n M: 'month',\n months: 'month',\n month: 'month',\n Q: 'quarter',\n quarters: 'quarter',\n quarter: 'quarter',\n s: 'second',\n seconds: 'second',\n second: 'second',\n gg: 'weekYear',\n weekyears: 'weekYear',\n weekyear: 'weekYear',\n GG: 'isoWeekYear',\n isoweekyears: 'isoWeekYear',\n isoweekyear: 'isoWeekYear',\n w: 'week',\n weeks: 'week',\n week: 'week',\n W: 'isoWeek',\n isoweeks: 'isoWeek',\n isoweek: 'isoWeek',\n y: 'year',\n years: 'year',\n year: 'year',\n };\n\n function normalizeUnits(units) {\n return typeof units === 'string'\n ? aliases[units] || aliases[units.toLowerCase()]\n : undefined;\n }\n\n function normalizeObjectUnits(inputObject) {\n var normalizedInput = {},\n normalizedProp,\n prop;\n\n for (prop in inputObject) {\n if (hasOwnProp(inputObject, prop)) {\n normalizedProp = normalizeUnits(prop);\n if (normalizedProp) {\n normalizedInput[normalizedProp] = inputObject[prop];\n }\n }\n }\n\n return normalizedInput;\n }\n\n var priorities = {\n date: 9,\n day: 11,\n weekday: 11,\n isoWeekday: 11,\n dayOfYear: 4,\n hour: 13,\n millisecond: 16,\n minute: 14,\n month: 8,\n quarter: 7,\n second: 15,\n weekYear: 1,\n isoWeekYear: 1,\n week: 5,\n isoWeek: 5,\n year: 1,\n };\n\n function getPrioritizedUnits(unitsObj) {\n var units = [],\n u;\n for (u in unitsObj) {\n if (hasOwnProp(unitsObj, u)) {\n units.push({ unit: u, priority: priorities[u] });\n }\n }\n units.sort(function (a, b) {\n return a.priority - b.priority;\n });\n return units;\n }\n\n var match1 = /\\d/, // 0 - 9\n match2 = /\\d\\d/, // 00 - 99\n match3 = /\\d{3}/, // 000 - 999\n match4 = /\\d{4}/, // 0000 - 9999\n match6 = /[+-]?\\d{6}/, // -999999 - 999999\n match1to2 = /\\d\\d?/, // 0 - 99\n match3to4 = /\\d\\d\\d\\d?/, // 999 - 9999\n match5to6 = /\\d\\d\\d\\d\\d\\d?/, // 99999 - 999999\n match1to3 = /\\d{1,3}/, // 0 - 999\n match1to4 = /\\d{1,4}/, // 0 - 9999\n match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n matchUnsigned = /\\d+/, // 0 - inf\n matchSigned = /[+-]?\\d+/, // -inf - inf\n matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n // any word (or two) characters or numbers including two/three word month in arabic.\n // includes scottish gaelic two word and hyphenated months\n matchWord =\n /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n match1to2NoLeadingZero = /^[1-9]\\d?/, // 1-99\n match1to2HasZero = /^([1-9]\\d|\\d)/, // 0-99\n regexes;\n\n regexes = {};\n\n function addRegexToken(token, regex, strictRegex) {\n regexes[token] = isFunction(regex)\n ? regex\n : function (isStrict, localeData) {\n return isStrict && strictRegex ? strictRegex : regex;\n };\n }\n\n function getParseRegexForToken(token, config) {\n if (!hasOwnProp(regexes, token)) {\n return new RegExp(unescapeFormat(token));\n }\n\n return regexes[token](config._strict, config._locale);\n }\n\n // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n function unescapeFormat(s) {\n return regexEscape(\n s\n .replace('\\\\', '')\n .replace(\n /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n function (matched, p1, p2, p3, p4) {\n return p1 || p2 || p3 || p4;\n }\n )\n );\n }\n\n function regexEscape(s) {\n return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n }\n\n function absFloor(number) {\n if (number < 0) {\n // -0 -> 0\n return Math.ceil(number) || 0;\n } else {\n return Math.floor(number);\n }\n }\n\n function toInt(argumentForCoercion) {\n var coercedNumber = +argumentForCoercion,\n value = 0;\n\n if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n value = absFloor(coercedNumber);\n }\n\n return value;\n }\n\n var tokens = {};\n\n function addParseToken(token, callback) {\n var i,\n func = callback,\n tokenLen;\n if (typeof token === 'string') {\n token = [token];\n }\n if (isNumber(callback)) {\n func = function (input, array) {\n array[callback] = toInt(input);\n };\n }\n tokenLen = token.length;\n for (i = 0; i < tokenLen; i++) {\n tokens[token[i]] = func;\n }\n }\n\n function addWeekParseToken(token, callback) {\n addParseToken(token, function (input, array, config, token) {\n config._w = config._w || {};\n callback(input, config._w, config, token);\n });\n }\n\n function addTimeToArrayFromToken(token, input, config) {\n if (input != null && hasOwnProp(tokens, token)) {\n tokens[token](input, config._a, config, token);\n }\n }\n\n function isLeapYear(year) {\n return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n }\n\n var YEAR = 0,\n MONTH = 1,\n DATE = 2,\n HOUR = 3,\n MINUTE = 4,\n SECOND = 5,\n MILLISECOND = 6,\n WEEK = 7,\n WEEKDAY = 8;\n\n // FORMATTING\n\n addFormatToken('Y', 0, 0, function () {\n var y = this.year();\n return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n });\n\n addFormatToken(0, ['YY', 2], 0, function () {\n return this.year() % 100;\n });\n\n addFormatToken(0, ['YYYY', 4], 0, 'year');\n addFormatToken(0, ['YYYYY', 5], 0, 'year');\n addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n // PARSING\n\n addRegexToken('Y', matchSigned);\n addRegexToken('YY', match1to2, match2);\n addRegexToken('YYYY', match1to4, match4);\n addRegexToken('YYYYY', match1to6, match6);\n addRegexToken('YYYYYY', match1to6, match6);\n\n addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n addParseToken('YYYY', function (input, array) {\n array[YEAR] =\n input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n });\n addParseToken('YY', function (input, array) {\n array[YEAR] = hooks.parseTwoDigitYear(input);\n });\n addParseToken('Y', function (input, array) {\n array[YEAR] = parseInt(input, 10);\n });\n\n // HELPERS\n\n function daysInYear(year) {\n return isLeapYear(year) ? 366 : 365;\n }\n\n // HOOKS\n\n hooks.parseTwoDigitYear = function (input) {\n return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n };\n\n // MOMENTS\n\n var getSetYear = makeGetSet('FullYear', true);\n\n function getIsLeapYear() {\n return isLeapYear(this.year());\n }\n\n function makeGetSet(unit, keepTime) {\n return function (value) {\n if (value != null) {\n set$1(this, unit, value);\n hooks.updateOffset(this, keepTime);\n return this;\n } else {\n return get(this, unit);\n }\n };\n }\n\n function get(mom, unit) {\n if (!mom.isValid()) {\n return NaN;\n }\n\n var d = mom._d,\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return isUTC ? d.getUTCMilliseconds() : d.getMilliseconds();\n case 'Seconds':\n return isUTC ? d.getUTCSeconds() : d.getSeconds();\n case 'Minutes':\n return isUTC ? d.getUTCMinutes() : d.getMinutes();\n case 'Hours':\n return isUTC ? d.getUTCHours() : d.getHours();\n case 'Date':\n return isUTC ? d.getUTCDate() : d.getDate();\n case 'Day':\n return isUTC ? d.getUTCDay() : d.getDay();\n case 'Month':\n return isUTC ? d.getUTCMonth() : d.getMonth();\n case 'FullYear':\n return isUTC ? d.getUTCFullYear() : d.getFullYear();\n default:\n return NaN; // Just in case\n }\n }\n\n function set$1(mom, unit, value) {\n var d, isUTC, year, month, date;\n\n if (!mom.isValid() || isNaN(value)) {\n return;\n }\n\n d = mom._d;\n isUTC = mom._isUTC;\n\n switch (unit) {\n case 'Milliseconds':\n return void (isUTC\n ? d.setUTCMilliseconds(value)\n : d.setMilliseconds(value));\n case 'Seconds':\n return void (isUTC ? d.setUTCSeconds(value) : d.setSeconds(value));\n case 'Minutes':\n return void (isUTC ? d.setUTCMinutes(value) : d.setMinutes(value));\n case 'Hours':\n return void (isUTC ? d.setUTCHours(value) : d.setHours(value));\n case 'Date':\n return void (isUTC ? d.setUTCDate(value) : d.setDate(value));\n // case 'Day': // Not real\n // return void (isUTC ? d.setUTCDay(value) : d.setDay(value));\n // case 'Month': // Not used because we need to pass two variables\n // return void (isUTC ? d.setUTCMonth(value) : d.setMonth(value));\n case 'FullYear':\n break; // See below ...\n default:\n return; // Just in case\n }\n\n year = value;\n month = mom.month();\n date = mom.date();\n date = date === 29 && month === 1 && !isLeapYear(year) ? 28 : date;\n void (isUTC\n ? d.setUTCFullYear(year, month, date)\n : d.setFullYear(year, month, date));\n }\n\n // MOMENTS\n\n function stringGet(units) {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units]();\n }\n return this;\n }\n\n function stringSet(units, value) {\n if (typeof units === 'object') {\n units = normalizeObjectUnits(units);\n var prioritized = getPrioritizedUnits(units),\n i,\n prioritizedLen = prioritized.length;\n for (i = 0; i < prioritizedLen; i++) {\n this[prioritized[i].unit](units[prioritized[i].unit]);\n }\n } else {\n units = normalizeUnits(units);\n if (isFunction(this[units])) {\n return this[units](value);\n }\n }\n return this;\n }\n\n function mod(n, x) {\n return ((n % x) + x) % x;\n }\n\n var indexOf;\n\n if (Array.prototype.indexOf) {\n indexOf = Array.prototype.indexOf;\n } else {\n indexOf = function (o) {\n // I know\n var i;\n for (i = 0; i < this.length; ++i) {\n if (this[i] === o) {\n return i;\n }\n }\n return -1;\n };\n }\n\n function daysInMonth(year, month) {\n if (isNaN(year) || isNaN(month)) {\n return NaN;\n }\n var modMonth = mod(month, 12);\n year += (month - modMonth) / 12;\n return modMonth === 1\n ? isLeapYear(year)\n ? 29\n : 28\n : 31 - ((modMonth % 7) % 2);\n }\n\n // FORMATTING\n\n addFormatToken('M', ['MM', 2], 'Mo', function () {\n return this.month() + 1;\n });\n\n addFormatToken('MMM', 0, 0, function (format) {\n return this.localeData().monthsShort(this, format);\n });\n\n addFormatToken('MMMM', 0, 0, function (format) {\n return this.localeData().months(this, format);\n });\n\n // PARSING\n\n addRegexToken('M', match1to2, match1to2NoLeadingZero);\n addRegexToken('MM', match1to2, match2);\n addRegexToken('MMM', function (isStrict, locale) {\n return locale.monthsShortRegex(isStrict);\n });\n addRegexToken('MMMM', function (isStrict, locale) {\n return locale.monthsRegex(isStrict);\n });\n\n addParseToken(['M', 'MM'], function (input, array) {\n array[MONTH] = toInt(input) - 1;\n });\n\n addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n var month = config._locale.monthsParse(input, token, config._strict);\n // if we didn't find a month name, mark the date as invalid.\n if (month != null) {\n array[MONTH] = month;\n } else {\n getParsingFlags(config).invalidMonth = input;\n }\n });\n\n // LOCALES\n\n var defaultLocaleMonths =\n 'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n '_'\n ),\n defaultLocaleMonthsShort =\n 'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n defaultMonthsShortRegex = matchWord,\n defaultMonthsRegex = matchWord;\n\n function localeMonths(m, format) {\n if (!m) {\n return isArray(this._months)\n ? this._months\n : this._months['standalone'];\n }\n return isArray(this._months)\n ? this._months[m.month()]\n : this._months[\n (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n ? 'format'\n : 'standalone'\n ][m.month()];\n }\n\n function localeMonthsShort(m, format) {\n if (!m) {\n return isArray(this._monthsShort)\n ? this._monthsShort\n : this._monthsShort['standalone'];\n }\n return isArray(this._monthsShort)\n ? this._monthsShort[m.month()]\n : this._monthsShort[\n MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n ][m.month()];\n }\n\n function handleStrictParse(monthName, format, strict) {\n var i,\n ii,\n mom,\n llc = monthName.toLocaleLowerCase();\n if (!this._monthsParse) {\n // this is not used\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n for (i = 0; i < 12; ++i) {\n mom = createUTC([2000, i]);\n this._shortMonthsParse[i] = this.monthsShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'MMM') {\n ii = indexOf.call(this._shortMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._longMonthsParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._longMonthsParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortMonthsParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeMonthsParse(monthName, format, strict) {\n var i, mom, regex;\n\n if (this._monthsParseExact) {\n return handleStrictParse.call(this, monthName, format, strict);\n }\n\n if (!this._monthsParse) {\n this._monthsParse = [];\n this._longMonthsParse = [];\n this._shortMonthsParse = [];\n }\n\n // TODO: add sorting\n // Sorting makes sure if one month (or abbr) is a prefix of another\n // see sorting in computeMonthsParse\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n if (strict && !this._longMonthsParse[i]) {\n this._longMonthsParse[i] = new RegExp(\n '^' + this.months(mom, '').replace('.', '') + '$',\n 'i'\n );\n this._shortMonthsParse[i] = new RegExp(\n '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n 'i'\n );\n }\n if (!strict && !this._monthsParse[i]) {\n regex =\n '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'MMMM' &&\n this._longMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'MMM' &&\n this._shortMonthsParse[i].test(monthName)\n ) {\n return i;\n } else if (!strict && this._monthsParse[i].test(monthName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function setMonth(mom, value) {\n if (!mom.isValid()) {\n // No op\n return mom;\n }\n\n if (typeof value === 'string') {\n if (/^\\d+$/.test(value)) {\n value = toInt(value);\n } else {\n value = mom.localeData().monthsParse(value);\n // TODO: Another silent failure?\n if (!isNumber(value)) {\n return mom;\n }\n }\n }\n\n var month = value,\n date = mom.date();\n\n date = date < 29 ? date : Math.min(date, daysInMonth(mom.year(), month));\n void (mom._isUTC\n ? mom._d.setUTCMonth(month, date)\n : mom._d.setMonth(month, date));\n return mom;\n }\n\n function getSetMonth(value) {\n if (value != null) {\n setMonth(this, value);\n hooks.updateOffset(this, true);\n return this;\n } else {\n return get(this, 'Month');\n }\n }\n\n function getDaysInMonth() {\n return daysInMonth(this.year(), this.month());\n }\n\n function monthsShortRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsShortStrictRegex;\n } else {\n return this._monthsShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsShortRegex')) {\n this._monthsShortRegex = defaultMonthsShortRegex;\n }\n return this._monthsShortStrictRegex && isStrict\n ? this._monthsShortStrictRegex\n : this._monthsShortRegex;\n }\n }\n\n function monthsRegex(isStrict) {\n if (this._monthsParseExact) {\n if (!hasOwnProp(this, '_monthsRegex')) {\n computeMonthsParse.call(this);\n }\n if (isStrict) {\n return this._monthsStrictRegex;\n } else {\n return this._monthsRegex;\n }\n } else {\n if (!hasOwnProp(this, '_monthsRegex')) {\n this._monthsRegex = defaultMonthsRegex;\n }\n return this._monthsStrictRegex && isStrict\n ? this._monthsStrictRegex\n : this._monthsRegex;\n }\n }\n\n function computeMonthsParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n shortP,\n longP;\n for (i = 0; i < 12; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, i]);\n shortP = regexEscape(this.monthsShort(mom, ''));\n longP = regexEscape(this.months(mom, ''));\n shortPieces.push(shortP);\n longPieces.push(longP);\n mixedPieces.push(longP);\n mixedPieces.push(shortP);\n }\n // Sorting makes sure if one month (or abbr) is a prefix of another it\n // will match the longer piece.\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._monthsShortRegex = this._monthsRegex;\n this._monthsStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._monthsShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n }\n\n function createDate(y, m, d, h, M, s, ms) {\n // can't just apply() to create a date:\n // https://stackoverflow.com/q/181348\n var date;\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n date = new Date(y + 400, m, d, h, M, s, ms);\n if (isFinite(date.getFullYear())) {\n date.setFullYear(y);\n }\n } else {\n date = new Date(y, m, d, h, M, s, ms);\n }\n\n return date;\n }\n\n function createUTCDate(y) {\n var date, args;\n // the Date.UTC function remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n args = Array.prototype.slice.call(arguments);\n // preserve leap years using a full 400 year cycle, then reset\n args[0] = y + 400;\n date = new Date(Date.UTC.apply(null, args));\n if (isFinite(date.getUTCFullYear())) {\n date.setUTCFullYear(y);\n }\n } else {\n date = new Date(Date.UTC.apply(null, arguments));\n }\n\n return date;\n }\n\n // start-of-first-week - start-of-year\n function firstWeekOffset(year, dow, doy) {\n var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n fwd = 7 + dow - doy,\n // first-week day local weekday -- which local weekday is fwd\n fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n return -fwdlw + fwd - 1;\n }\n\n // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n var localWeekday = (7 + weekday - dow) % 7,\n weekOffset = firstWeekOffset(year, dow, doy),\n dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n resYear,\n resDayOfYear;\n\n if (dayOfYear <= 0) {\n resYear = year - 1;\n resDayOfYear = daysInYear(resYear) + dayOfYear;\n } else if (dayOfYear > daysInYear(year)) {\n resYear = year + 1;\n resDayOfYear = dayOfYear - daysInYear(year);\n } else {\n resYear = year;\n resDayOfYear = dayOfYear;\n }\n\n return {\n year: resYear,\n dayOfYear: resDayOfYear,\n };\n }\n\n function weekOfYear(mom, dow, doy) {\n var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n resWeek,\n resYear;\n\n if (week < 1) {\n resYear = mom.year() - 1;\n resWeek = week + weeksInYear(resYear, dow, doy);\n } else if (week > weeksInYear(mom.year(), dow, doy)) {\n resWeek = week - weeksInYear(mom.year(), dow, doy);\n resYear = mom.year() + 1;\n } else {\n resYear = mom.year();\n resWeek = week;\n }\n\n return {\n week: resWeek,\n year: resYear,\n };\n }\n\n function weeksInYear(year, dow, doy) {\n var weekOffset = firstWeekOffset(year, dow, doy),\n weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n }\n\n // FORMATTING\n\n addFormatToken('w', ['ww', 2], 'wo', 'week');\n addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n // PARSING\n\n addRegexToken('w', match1to2, match1to2NoLeadingZero);\n addRegexToken('ww', match1to2, match2);\n addRegexToken('W', match1to2, match1to2NoLeadingZero);\n addRegexToken('WW', match1to2, match2);\n\n addWeekParseToken(\n ['w', 'ww', 'W', 'WW'],\n function (input, week, config, token) {\n week[token.substr(0, 1)] = toInt(input);\n }\n );\n\n // HELPERS\n\n // LOCALES\n\n function localeWeek(mom) {\n return weekOfYear(mom, this._week.dow, this._week.doy).week;\n }\n\n var defaultLocaleWeek = {\n dow: 0, // Sunday is the first day of the week.\n doy: 6, // The week that contains Jan 6th is the first week of the year.\n };\n\n function localeFirstDayOfWeek() {\n return this._week.dow;\n }\n\n function localeFirstDayOfYear() {\n return this._week.doy;\n }\n\n // MOMENTS\n\n function getSetWeek(input) {\n var week = this.localeData().week(this);\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n function getSetISOWeek(input) {\n var week = weekOfYear(this, 1, 4).week;\n return input == null ? week : this.add((input - week) * 7, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('d', 0, 'do', 'day');\n\n addFormatToken('dd', 0, 0, function (format) {\n return this.localeData().weekdaysMin(this, format);\n });\n\n addFormatToken('ddd', 0, 0, function (format) {\n return this.localeData().weekdaysShort(this, format);\n });\n\n addFormatToken('dddd', 0, 0, function (format) {\n return this.localeData().weekdays(this, format);\n });\n\n addFormatToken('e', 0, 0, 'weekday');\n addFormatToken('E', 0, 0, 'isoWeekday');\n\n // PARSING\n\n addRegexToken('d', match1to2);\n addRegexToken('e', match1to2);\n addRegexToken('E', match1to2);\n addRegexToken('dd', function (isStrict, locale) {\n return locale.weekdaysMinRegex(isStrict);\n });\n addRegexToken('ddd', function (isStrict, locale) {\n return locale.weekdaysShortRegex(isStrict);\n });\n addRegexToken('dddd', function (isStrict, locale) {\n return locale.weekdaysRegex(isStrict);\n });\n\n addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n var weekday = config._locale.weekdaysParse(input, token, config._strict);\n // if we didn't get a weekday name, mark the date as invalid\n if (weekday != null) {\n week.d = weekday;\n } else {\n getParsingFlags(config).invalidWeekday = input;\n }\n });\n\n addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n week[token] = toInt(input);\n });\n\n // HELPERS\n\n function parseWeekday(input, locale) {\n if (typeof input !== 'string') {\n return input;\n }\n\n if (!isNaN(input)) {\n return parseInt(input, 10);\n }\n\n input = locale.weekdaysParse(input);\n if (typeof input === 'number') {\n return input;\n }\n\n return null;\n }\n\n function parseIsoWeekday(input, locale) {\n if (typeof input === 'string') {\n return locale.weekdaysParse(input) % 7 || 7;\n }\n return isNaN(input) ? null : input;\n }\n\n // LOCALES\n function shiftWeekdays(ws, n) {\n return ws.slice(n, 7).concat(ws.slice(0, n));\n }\n\n var defaultLocaleWeekdays =\n 'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n defaultWeekdaysRegex = matchWord,\n defaultWeekdaysShortRegex = matchWord,\n defaultWeekdaysMinRegex = matchWord;\n\n function localeWeekdays(m, format) {\n var weekdays = isArray(this._weekdays)\n ? this._weekdays\n : this._weekdays[\n m && m !== true && this._weekdays.isFormat.test(format)\n ? 'format'\n : 'standalone'\n ];\n return m === true\n ? shiftWeekdays(weekdays, this._week.dow)\n : m\n ? weekdays[m.day()]\n : weekdays;\n }\n\n function localeWeekdaysShort(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n : m\n ? this._weekdaysShort[m.day()]\n : this._weekdaysShort;\n }\n\n function localeWeekdaysMin(m) {\n return m === true\n ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n : m\n ? this._weekdaysMin[m.day()]\n : this._weekdaysMin;\n }\n\n function handleStrictParse$1(weekdayName, format, strict) {\n var i,\n ii,\n mom,\n llc = weekdayName.toLocaleLowerCase();\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._minWeekdaysParse = [];\n\n for (i = 0; i < 7; ++i) {\n mom = createUTC([2000, 1]).day(i);\n this._minWeekdaysParse[i] = this.weekdaysMin(\n mom,\n ''\n ).toLocaleLowerCase();\n this._shortWeekdaysParse[i] = this.weekdaysShort(\n mom,\n ''\n ).toLocaleLowerCase();\n this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n }\n }\n\n if (strict) {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n } else {\n if (format === 'dddd') {\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else if (format === 'ddd') {\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._minWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n } else {\n ii = indexOf.call(this._minWeekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._weekdaysParse, llc);\n if (ii !== -1) {\n return ii;\n }\n ii = indexOf.call(this._shortWeekdaysParse, llc);\n return ii !== -1 ? ii : null;\n }\n }\n }\n\n function localeWeekdaysParse(weekdayName, format, strict) {\n var i, mom, regex;\n\n if (this._weekdaysParseExact) {\n return handleStrictParse$1.call(this, weekdayName, format, strict);\n }\n\n if (!this._weekdaysParse) {\n this._weekdaysParse = [];\n this._minWeekdaysParse = [];\n this._shortWeekdaysParse = [];\n this._fullWeekdaysParse = [];\n }\n\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n\n mom = createUTC([2000, 1]).day(i);\n if (strict && !this._fullWeekdaysParse[i]) {\n this._fullWeekdaysParse[i] = new RegExp(\n '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._shortWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n this._minWeekdaysParse[i] = new RegExp(\n '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n 'i'\n );\n }\n if (!this._weekdaysParse[i]) {\n regex =\n '^' +\n this.weekdays(mom, '') +\n '|^' +\n this.weekdaysShort(mom, '') +\n '|^' +\n this.weekdaysMin(mom, '');\n this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n }\n // test the regex\n if (\n strict &&\n format === 'dddd' &&\n this._fullWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'ddd' &&\n this._shortWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (\n strict &&\n format === 'dd' &&\n this._minWeekdaysParse[i].test(weekdayName)\n ) {\n return i;\n } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n return i;\n }\n }\n }\n\n // MOMENTS\n\n function getSetDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n var day = get(this, 'Day');\n if (input != null) {\n input = parseWeekday(input, this.localeData());\n return this.add(input - day, 'd');\n } else {\n return day;\n }\n }\n\n function getSetLocaleDayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n return input == null ? weekday : this.add(input - weekday, 'd');\n }\n\n function getSetISODayOfWeek(input) {\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n\n // behaves the same as moment#day except\n // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n // as a setter, sunday should belong to the previous week.\n\n if (input != null) {\n var weekday = parseIsoWeekday(input, this.localeData());\n return this.day(this.day() % 7 ? weekday : weekday - 7);\n } else {\n return this.day() || 7;\n }\n }\n\n function weekdaysRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysStrictRegex;\n } else {\n return this._weekdaysRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n this._weekdaysRegex = defaultWeekdaysRegex;\n }\n return this._weekdaysStrictRegex && isStrict\n ? this._weekdaysStrictRegex\n : this._weekdaysRegex;\n }\n }\n\n function weekdaysShortRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysShortStrictRegex;\n } else {\n return this._weekdaysShortRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n }\n return this._weekdaysShortStrictRegex && isStrict\n ? this._weekdaysShortStrictRegex\n : this._weekdaysShortRegex;\n }\n }\n\n function weekdaysMinRegex(isStrict) {\n if (this._weekdaysParseExact) {\n if (!hasOwnProp(this, '_weekdaysRegex')) {\n computeWeekdaysParse.call(this);\n }\n if (isStrict) {\n return this._weekdaysMinStrictRegex;\n } else {\n return this._weekdaysMinRegex;\n }\n } else {\n if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n }\n return this._weekdaysMinStrictRegex && isStrict\n ? this._weekdaysMinStrictRegex\n : this._weekdaysMinRegex;\n }\n }\n\n function computeWeekdaysParse() {\n function cmpLenRev(a, b) {\n return b.length - a.length;\n }\n\n var minPieces = [],\n shortPieces = [],\n longPieces = [],\n mixedPieces = [],\n i,\n mom,\n minp,\n shortp,\n longp;\n for (i = 0; i < 7; i++) {\n // make the regex if we don't have it already\n mom = createUTC([2000, 1]).day(i);\n minp = regexEscape(this.weekdaysMin(mom, ''));\n shortp = regexEscape(this.weekdaysShort(mom, ''));\n longp = regexEscape(this.weekdays(mom, ''));\n minPieces.push(minp);\n shortPieces.push(shortp);\n longPieces.push(longp);\n mixedPieces.push(minp);\n mixedPieces.push(shortp);\n mixedPieces.push(longp);\n }\n // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n // will match the longer piece.\n minPieces.sort(cmpLenRev);\n shortPieces.sort(cmpLenRev);\n longPieces.sort(cmpLenRev);\n mixedPieces.sort(cmpLenRev);\n\n this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._weekdaysShortRegex = this._weekdaysRegex;\n this._weekdaysMinRegex = this._weekdaysRegex;\n\n this._weekdaysStrictRegex = new RegExp(\n '^(' + longPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysShortStrictRegex = new RegExp(\n '^(' + shortPieces.join('|') + ')',\n 'i'\n );\n this._weekdaysMinStrictRegex = new RegExp(\n '^(' + minPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n function hFormat() {\n return this.hours() % 12 || 12;\n }\n\n function kFormat() {\n return this.hours() || 24;\n }\n\n addFormatToken('H', ['HH', 2], 0, 'hour');\n addFormatToken('h', ['hh', 2], 0, hFormat);\n addFormatToken('k', ['kk', 2], 0, kFormat);\n\n addFormatToken('hmm', 0, 0, function () {\n return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('hmmss', 0, 0, function () {\n return (\n '' +\n hFormat.apply(this) +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n addFormatToken('Hmm', 0, 0, function () {\n return '' + this.hours() + zeroFill(this.minutes(), 2);\n });\n\n addFormatToken('Hmmss', 0, 0, function () {\n return (\n '' +\n this.hours() +\n zeroFill(this.minutes(), 2) +\n zeroFill(this.seconds(), 2)\n );\n });\n\n function meridiem(token, lowercase) {\n addFormatToken(token, 0, 0, function () {\n return this.localeData().meridiem(\n this.hours(),\n this.minutes(),\n lowercase\n );\n });\n }\n\n meridiem('a', true);\n meridiem('A', false);\n\n // PARSING\n\n function matchMeridiem(isStrict, locale) {\n return locale._meridiemParse;\n }\n\n addRegexToken('a', matchMeridiem);\n addRegexToken('A', matchMeridiem);\n addRegexToken('H', match1to2, match1to2HasZero);\n addRegexToken('h', match1to2, match1to2NoLeadingZero);\n addRegexToken('k', match1to2, match1to2NoLeadingZero);\n addRegexToken('HH', match1to2, match2);\n addRegexToken('hh', match1to2, match2);\n addRegexToken('kk', match1to2, match2);\n\n addRegexToken('hmm', match3to4);\n addRegexToken('hmmss', match5to6);\n addRegexToken('Hmm', match3to4);\n addRegexToken('Hmmss', match5to6);\n\n addParseToken(['H', 'HH'], HOUR);\n addParseToken(['k', 'kk'], function (input, array, config) {\n var kInput = toInt(input);\n array[HOUR] = kInput === 24 ? 0 : kInput;\n });\n addParseToken(['a', 'A'], function (input, array, config) {\n config._isPm = config._locale.isPM(input);\n config._meridiem = input;\n });\n addParseToken(['h', 'hh'], function (input, array, config) {\n array[HOUR] = toInt(input);\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n getParsingFlags(config).bigHour = true;\n });\n addParseToken('Hmm', function (input, array, config) {\n var pos = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos));\n array[MINUTE] = toInt(input.substr(pos));\n });\n addParseToken('Hmmss', function (input, array, config) {\n var pos1 = input.length - 4,\n pos2 = input.length - 2;\n array[HOUR] = toInt(input.substr(0, pos1));\n array[MINUTE] = toInt(input.substr(pos1, 2));\n array[SECOND] = toInt(input.substr(pos2));\n });\n\n // LOCALES\n\n function localeIsPM(input) {\n // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n // Using charAt should be more compatible.\n return (input + '').toLowerCase().charAt(0) === 'p';\n }\n\n var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n // Setting the hour should keep the time, because the user explicitly\n // specified which hour they want. So trying to maintain the same hour (in\n // a new timezone) makes sense. Adding/subtracting hours does not follow\n // this rule.\n getSetHour = makeGetSet('Hours', true);\n\n function localeMeridiem(hours, minutes, isLower) {\n if (hours > 11) {\n return isLower ? 'pm' : 'PM';\n } else {\n return isLower ? 'am' : 'AM';\n }\n }\n\n var baseConfig = {\n calendar: defaultCalendar,\n longDateFormat: defaultLongDateFormat,\n invalidDate: defaultInvalidDate,\n ordinal: defaultOrdinal,\n dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n relativeTime: defaultRelativeTime,\n\n months: defaultLocaleMonths,\n monthsShort: defaultLocaleMonthsShort,\n\n week: defaultLocaleWeek,\n\n weekdays: defaultLocaleWeekdays,\n weekdaysMin: defaultLocaleWeekdaysMin,\n weekdaysShort: defaultLocaleWeekdaysShort,\n\n meridiemParse: defaultLocaleMeridiemParse,\n };\n\n // internal storage for locale config files\n var locales = {},\n localeFamilies = {},\n globalLocale;\n\n function commonPrefix(arr1, arr2) {\n var i,\n minl = Math.min(arr1.length, arr2.length);\n for (i = 0; i < minl; i += 1) {\n if (arr1[i] !== arr2[i]) {\n return i;\n }\n }\n return minl;\n }\n\n function normalizeLocale(key) {\n return key ? key.toLowerCase().replace('_', '-') : key;\n }\n\n // pick the locale from the array\n // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n function chooseLocale(names) {\n var i = 0,\n j,\n next,\n locale,\n split;\n\n while (i < names.length) {\n split = normalizeLocale(names[i]).split('-');\n j = split.length;\n next = normalizeLocale(names[i + 1]);\n next = next ? next.split('-') : null;\n while (j > 0) {\n locale = loadLocale(split.slice(0, j).join('-'));\n if (locale) {\n return locale;\n }\n if (\n next &&\n next.length >= j &&\n commonPrefix(split, next) >= j - 1\n ) {\n //the next array item is better than a shallower substring of this one\n break;\n }\n j--;\n }\n i++;\n }\n return globalLocale;\n }\n\n function isLocaleNameSane(name) {\n // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n // Ensure name is available and function returns boolean\n return !!(name && name.match('^[^/\\\\\\\\]*$'));\n }\n\n function loadLocale(name) {\n var oldLocale = null,\n aliasedRequire;\n // TODO: Find a better way to register and load all the locales in Node\n if (\n locales[name] === undefined &&\n typeof module !== 'undefined' &&\n module &&\n module.exports &&\n isLocaleNameSane(name)\n ) {\n try {\n oldLocale = globalLocale._abbr;\n aliasedRequire = require;\n aliasedRequire('./locale/' + name);\n getSetGlobalLocale(oldLocale);\n } catch (e) {\n // mark as not found to avoid repeating expensive file require call causing high CPU\n // when trying to find en-US, en_US, en-us for every format call\n locales[name] = null; // null means not found\n }\n }\n return locales[name];\n }\n\n // This function will load locale and then set the global locale. If\n // no arguments are passed in, it will simply return the current global\n // locale key.\n function getSetGlobalLocale(key, values) {\n var data;\n if (key) {\n if (isUndefined(values)) {\n data = getLocale(key);\n } else {\n data = defineLocale(key, values);\n }\n\n if (data) {\n // moment.duration._locale = moment._locale = data;\n globalLocale = data;\n } else {\n if (typeof console !== 'undefined' && console.warn) {\n //warn user if arguments are passed but the locale could not be set\n console.warn(\n 'Locale ' + key + ' not found. Did you forget to load it?'\n );\n }\n }\n }\n\n return globalLocale._abbr;\n }\n\n function defineLocale(name, config) {\n if (config !== null) {\n var locale,\n parentConfig = baseConfig;\n config.abbr = name;\n if (locales[name] != null) {\n deprecateSimple(\n 'defineLocaleOverride',\n 'use moment.updateLocale(localeName, config) to change ' +\n 'an existing locale. moment.defineLocale(localeName, ' +\n 'config) should only be used for creating a new locale ' +\n 'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n );\n parentConfig = locales[name]._config;\n } else if (config.parentLocale != null) {\n if (locales[config.parentLocale] != null) {\n parentConfig = locales[config.parentLocale]._config;\n } else {\n locale = loadLocale(config.parentLocale);\n if (locale != null) {\n parentConfig = locale._config;\n } else {\n if (!localeFamilies[config.parentLocale]) {\n localeFamilies[config.parentLocale] = [];\n }\n localeFamilies[config.parentLocale].push({\n name: name,\n config: config,\n });\n return null;\n }\n }\n }\n locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n if (localeFamilies[name]) {\n localeFamilies[name].forEach(function (x) {\n defineLocale(x.name, x.config);\n });\n }\n\n // backwards compat for now: also set the locale\n // make sure we set the locale AFTER all child locales have been\n // created, so we won't end up with the child locale set.\n getSetGlobalLocale(name);\n\n return locales[name];\n } else {\n // useful for testing\n delete locales[name];\n return null;\n }\n }\n\n function updateLocale(name, config) {\n if (config != null) {\n var locale,\n tmpLocale,\n parentConfig = baseConfig;\n\n if (locales[name] != null && locales[name].parentLocale != null) {\n // Update existing child locale in-place to avoid memory-leaks\n locales[name].set(mergeConfigs(locales[name]._config, config));\n } else {\n // MERGE\n tmpLocale = loadLocale(name);\n if (tmpLocale != null) {\n parentConfig = tmpLocale._config;\n }\n config = mergeConfigs(parentConfig, config);\n if (tmpLocale == null) {\n // updateLocale is called for creating a new locale\n // Set abbr so it will have a name (getters return\n // undefined otherwise).\n config.abbr = name;\n }\n locale = new Locale(config);\n locale.parentLocale = locales[name];\n locales[name] = locale;\n }\n\n // backwards compat for now: also set the locale\n getSetGlobalLocale(name);\n } else {\n // pass null for config to unupdate, useful for tests\n if (locales[name] != null) {\n if (locales[name].parentLocale != null) {\n locales[name] = locales[name].parentLocale;\n if (name === getSetGlobalLocale()) {\n getSetGlobalLocale(name);\n }\n } else if (locales[name] != null) {\n delete locales[name];\n }\n }\n }\n return locales[name];\n }\n\n // returns locale data\n function getLocale(key) {\n var locale;\n\n if (key && key._locale && key._locale._abbr) {\n key = key._locale._abbr;\n }\n\n if (!key) {\n return globalLocale;\n }\n\n if (!isArray(key)) {\n //short-circuit everything else\n locale = loadLocale(key);\n if (locale) {\n return locale;\n }\n key = [key];\n }\n\n return chooseLocale(key);\n }\n\n function listLocales() {\n return keys(locales);\n }\n\n function checkOverflow(m) {\n var overflow,\n a = m._a;\n\n if (a && getParsingFlags(m).overflow === -2) {\n overflow =\n a[MONTH] < 0 || a[MONTH] > 11\n ? MONTH\n : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n ? DATE\n : a[HOUR] < 0 ||\n a[HOUR] > 24 ||\n (a[HOUR] === 24 &&\n (a[MINUTE] !== 0 ||\n a[SECOND] !== 0 ||\n a[MILLISECOND] !== 0))\n ? HOUR\n : a[MINUTE] < 0 || a[MINUTE] > 59\n ? MINUTE\n : a[SECOND] < 0 || a[SECOND] > 59\n ? SECOND\n : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n ? MILLISECOND\n : -1;\n\n if (\n getParsingFlags(m)._overflowDayOfYear &&\n (overflow < YEAR || overflow > DATE)\n ) {\n overflow = DATE;\n }\n if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n overflow = WEEK;\n }\n if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n overflow = WEEKDAY;\n }\n\n getParsingFlags(m).overflow = overflow;\n }\n\n return m;\n }\n\n // iso 8601 regex\n // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n var extendedIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n basicIsoRegex =\n /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n isoDates = [\n ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n ['YYYY-DDD', /\\d{4}-\\d{3}/],\n ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n ['YYYYYYMMDD', /[+-]\\d{10}/],\n ['YYYYMMDD', /\\d{8}/],\n ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n ['YYYYDDD', /\\d{7}/],\n ['YYYYMM', /\\d{6}/, false],\n ['YYYY', /\\d{4}/, false],\n ],\n // iso time formats and regexes\n isoTimes = [\n ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n ['HH:mm', /\\d\\d:\\d\\d/],\n ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n ['HHmm', /\\d\\d\\d\\d/],\n ['HH', /\\d\\d/],\n ],\n aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n rfc2822 =\n /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n obsOffsets = {\n UT: 0,\n GMT: 0,\n EDT: -4 * 60,\n EST: -5 * 60,\n CDT: -5 * 60,\n CST: -6 * 60,\n MDT: -6 * 60,\n MST: -7 * 60,\n PDT: -7 * 60,\n PST: -8 * 60,\n };\n\n // date from iso format\n function configFromISO(config) {\n var i,\n l,\n string = config._i,\n match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n allowTime,\n dateFormat,\n timeFormat,\n tzFormat,\n isoDatesLen = isoDates.length,\n isoTimesLen = isoTimes.length;\n\n if (match) {\n getParsingFlags(config).iso = true;\n for (i = 0, l = isoDatesLen; i < l; i++) {\n if (isoDates[i][1].exec(match[1])) {\n dateFormat = isoDates[i][0];\n allowTime = isoDates[i][2] !== false;\n break;\n }\n }\n if (dateFormat == null) {\n config._isValid = false;\n return;\n }\n if (match[3]) {\n for (i = 0, l = isoTimesLen; i < l; i++) {\n if (isoTimes[i][1].exec(match[3])) {\n // match[2] should be 'T' or space\n timeFormat = (match[2] || ' ') + isoTimes[i][0];\n break;\n }\n }\n if (timeFormat == null) {\n config._isValid = false;\n return;\n }\n }\n if (!allowTime && timeFormat != null) {\n config._isValid = false;\n return;\n }\n if (match[4]) {\n if (tzRegex.exec(match[4])) {\n tzFormat = 'Z';\n } else {\n config._isValid = false;\n return;\n }\n }\n config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n configFromStringAndFormat(config);\n } else {\n config._isValid = false;\n }\n }\n\n function extractFromRFC2822Strings(\n yearStr,\n monthStr,\n dayStr,\n hourStr,\n minuteStr,\n secondStr\n ) {\n var result = [\n untruncateYear(yearStr),\n defaultLocaleMonthsShort.indexOf(monthStr),\n parseInt(dayStr, 10),\n parseInt(hourStr, 10),\n parseInt(minuteStr, 10),\n ];\n\n if (secondStr) {\n result.push(parseInt(secondStr, 10));\n }\n\n return result;\n }\n\n function untruncateYear(yearStr) {\n var year = parseInt(yearStr, 10);\n if (year <= 49) {\n return 2000 + year;\n } else if (year <= 999) {\n return 1900 + year;\n }\n return year;\n }\n\n function preprocessRFC2822(s) {\n // Remove comments and folding whitespace and replace multiple-spaces with a single space\n return s\n .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n .replace(/(\\s\\s+)/g, ' ')\n .replace(/^\\s\\s*/, '')\n .replace(/\\s\\s*$/, '');\n }\n\n function checkWeekday(weekdayStr, parsedInput, config) {\n if (weekdayStr) {\n // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n weekdayActual = new Date(\n parsedInput[0],\n parsedInput[1],\n parsedInput[2]\n ).getDay();\n if (weekdayProvided !== weekdayActual) {\n getParsingFlags(config).weekdayMismatch = true;\n config._isValid = false;\n return false;\n }\n }\n return true;\n }\n\n function calculateOffset(obsOffset, militaryOffset, numOffset) {\n if (obsOffset) {\n return obsOffsets[obsOffset];\n } else if (militaryOffset) {\n // the only allowed military tz is Z\n return 0;\n } else {\n var hm = parseInt(numOffset, 10),\n m = hm % 100,\n h = (hm - m) / 100;\n return h * 60 + m;\n }\n }\n\n // date and time from ref 2822 format\n function configFromRFC2822(config) {\n var match = rfc2822.exec(preprocessRFC2822(config._i)),\n parsedArray;\n if (match) {\n parsedArray = extractFromRFC2822Strings(\n match[4],\n match[3],\n match[2],\n match[5],\n match[6],\n match[7]\n );\n if (!checkWeekday(match[1], parsedArray, config)) {\n return;\n }\n\n config._a = parsedArray;\n config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n config._d = createUTCDate.apply(null, config._a);\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n getParsingFlags(config).rfc2822 = true;\n } else {\n config._isValid = false;\n }\n }\n\n // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n function configFromString(config) {\n var matched = aspNetJsonRegex.exec(config._i);\n if (matched !== null) {\n config._d = new Date(+matched[1]);\n return;\n }\n\n configFromISO(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n configFromRFC2822(config);\n if (config._isValid === false) {\n delete config._isValid;\n } else {\n return;\n }\n\n if (config._strict) {\n config._isValid = false;\n } else {\n // Final attempt, use Input Fallback\n hooks.createFromInputFallback(config);\n }\n }\n\n hooks.createFromInputFallback = deprecate(\n 'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n 'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n 'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n function (config) {\n config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n }\n );\n\n // Pick the first defined of two or three arguments.\n function defaults(a, b, c) {\n if (a != null) {\n return a;\n }\n if (b != null) {\n return b;\n }\n return c;\n }\n\n function currentDateArray(config) {\n // hooks is actually the exported moment object\n var nowValue = new Date(hooks.now());\n if (config._useUTC) {\n return [\n nowValue.getUTCFullYear(),\n nowValue.getUTCMonth(),\n nowValue.getUTCDate(),\n ];\n }\n return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n }\n\n // convert an array to a date.\n // the array should mirror the parameters below\n // note: all values past the year are optional and will default to the lowest possible value.\n // [year, month, day , hour, minute, second, millisecond]\n function configFromArray(config) {\n var i,\n date,\n input = [],\n currentDate,\n expectedWeekday,\n yearToUse;\n\n if (config._d) {\n return;\n }\n\n currentDate = currentDateArray(config);\n\n //compute day of the year from weeks and weekdays\n if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n dayOfYearFromWeekInfo(config);\n }\n\n //if the day of the year is set, figure out what it is\n if (config._dayOfYear != null) {\n yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n if (\n config._dayOfYear > daysInYear(yearToUse) ||\n config._dayOfYear === 0\n ) {\n getParsingFlags(config)._overflowDayOfYear = true;\n }\n\n date = createUTCDate(yearToUse, 0, config._dayOfYear);\n config._a[MONTH] = date.getUTCMonth();\n config._a[DATE] = date.getUTCDate();\n }\n\n // Default to current date.\n // * if no year, month, day of month are given, default to today\n // * if day of month is given, default month and year\n // * if month is given, default only year\n // * if year is given, don't default anything\n for (i = 0; i < 3 && config._a[i] == null; ++i) {\n config._a[i] = input[i] = currentDate[i];\n }\n\n // Zero out whatever was not defaulted, including time\n for (; i < 7; i++) {\n config._a[i] = input[i] =\n config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n }\n\n // Check for 24:00:00.000\n if (\n config._a[HOUR] === 24 &&\n config._a[MINUTE] === 0 &&\n config._a[SECOND] === 0 &&\n config._a[MILLISECOND] === 0\n ) {\n config._nextDay = true;\n config._a[HOUR] = 0;\n }\n\n config._d = (config._useUTC ? createUTCDate : createDate).apply(\n null,\n input\n );\n expectedWeekday = config._useUTC\n ? config._d.getUTCDay()\n : config._d.getDay();\n\n // Apply timezone offset from input. The actual utcOffset can be changed\n // with parseZone.\n if (config._tzm != null) {\n config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n }\n\n if (config._nextDay) {\n config._a[HOUR] = 24;\n }\n\n // check for mismatching day of week\n if (\n config._w &&\n typeof config._w.d !== 'undefined' &&\n config._w.d !== expectedWeekday\n ) {\n getParsingFlags(config).weekdayMismatch = true;\n }\n }\n\n function dayOfYearFromWeekInfo(config) {\n var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n w = config._w;\n if (w.GG != null || w.W != null || w.E != null) {\n dow = 1;\n doy = 4;\n\n // TODO: We need to take the current isoWeekYear, but that depends on\n // how we interpret now (local, utc, fixed offset). So create\n // a now version of current config (take local/utc/offset flags, and\n // create now).\n weekYear = defaults(\n w.GG,\n config._a[YEAR],\n weekOfYear(createLocal(), 1, 4).year\n );\n week = defaults(w.W, 1);\n weekday = defaults(w.E, 1);\n if (weekday < 1 || weekday > 7) {\n weekdayOverflow = true;\n }\n } else {\n dow = config._locale._week.dow;\n doy = config._locale._week.doy;\n\n curWeek = weekOfYear(createLocal(), dow, doy);\n\n weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n // Default to current week.\n week = defaults(w.w, curWeek.week);\n\n if (w.d != null) {\n // weekday -- low day numbers are considered next week\n weekday = w.d;\n if (weekday < 0 || weekday > 6) {\n weekdayOverflow = true;\n }\n } else if (w.e != null) {\n // local weekday -- counting starts from beginning of week\n weekday = w.e + dow;\n if (w.e < 0 || w.e > 6) {\n weekdayOverflow = true;\n }\n } else {\n // default to beginning of week\n weekday = dow;\n }\n }\n if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n getParsingFlags(config)._overflowWeeks = true;\n } else if (weekdayOverflow != null) {\n getParsingFlags(config)._overflowWeekday = true;\n } else {\n temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n config._a[YEAR] = temp.year;\n config._dayOfYear = temp.dayOfYear;\n }\n }\n\n // constant that refers to the ISO standard\n hooks.ISO_8601 = function () {};\n\n // constant that refers to the RFC 2822 form\n hooks.RFC_2822 = function () {};\n\n // date from string and format string\n function configFromStringAndFormat(config) {\n // TODO: Move this to another part of the creation flow to prevent circular deps\n if (config._f === hooks.ISO_8601) {\n configFromISO(config);\n return;\n }\n if (config._f === hooks.RFC_2822) {\n configFromRFC2822(config);\n return;\n }\n config._a = [];\n getParsingFlags(config).empty = true;\n\n // This array is used to make a Date, either with `new Date` or `Date.UTC`\n var string = '' + config._i,\n i,\n parsedInput,\n tokens,\n token,\n skipped,\n stringLength = string.length,\n totalParsedInputLength = 0,\n era,\n tokenLen;\n\n tokens =\n expandFormat(config._f, config._locale).match(formattingTokens) || [];\n tokenLen = tokens.length;\n for (i = 0; i < tokenLen; i++) {\n token = tokens[i];\n parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n [])[0];\n if (parsedInput) {\n skipped = string.substr(0, string.indexOf(parsedInput));\n if (skipped.length > 0) {\n getParsingFlags(config).unusedInput.push(skipped);\n }\n string = string.slice(\n string.indexOf(parsedInput) + parsedInput.length\n );\n totalParsedInputLength += parsedInput.length;\n }\n // don't parse if it's not a known token\n if (formatTokenFunctions[token]) {\n if (parsedInput) {\n getParsingFlags(config).empty = false;\n } else {\n getParsingFlags(config).unusedTokens.push(token);\n }\n addTimeToArrayFromToken(token, parsedInput, config);\n } else if (config._strict && !parsedInput) {\n getParsingFlags(config).unusedTokens.push(token);\n }\n }\n\n // add remaining unparsed input length to the string\n getParsingFlags(config).charsLeftOver =\n stringLength - totalParsedInputLength;\n if (string.length > 0) {\n getParsingFlags(config).unusedInput.push(string);\n }\n\n // clear _12h flag if hour is <= 12\n if (\n config._a[HOUR] <= 12 &&\n getParsingFlags(config).bigHour === true &&\n config._a[HOUR] > 0\n ) {\n getParsingFlags(config).bigHour = undefined;\n }\n\n getParsingFlags(config).parsedDateParts = config._a.slice(0);\n getParsingFlags(config).meridiem = config._meridiem;\n // handle meridiem\n config._a[HOUR] = meridiemFixWrap(\n config._locale,\n config._a[HOUR],\n config._meridiem\n );\n\n // handle era\n era = getParsingFlags(config).era;\n if (era !== null) {\n config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n }\n\n configFromArray(config);\n checkOverflow(config);\n }\n\n function meridiemFixWrap(locale, hour, meridiem) {\n var isPm;\n\n if (meridiem == null) {\n // nothing to do\n return hour;\n }\n if (locale.meridiemHour != null) {\n return locale.meridiemHour(hour, meridiem);\n } else if (locale.isPM != null) {\n // Fallback\n isPm = locale.isPM(meridiem);\n if (isPm && hour < 12) {\n hour += 12;\n }\n if (!isPm && hour === 12) {\n hour = 0;\n }\n return hour;\n } else {\n // this is not supposed to happen\n return hour;\n }\n }\n\n // date from string and array of format strings\n function configFromStringAndArray(config) {\n var tempConfig,\n bestMoment,\n scoreToBeat,\n i,\n currentScore,\n validFormatFound,\n bestFormatIsValid = false,\n configfLen = config._f.length;\n\n if (configfLen === 0) {\n getParsingFlags(config).invalidFormat = true;\n config._d = new Date(NaN);\n return;\n }\n\n for (i = 0; i < configfLen; i++) {\n currentScore = 0;\n validFormatFound = false;\n tempConfig = copyConfig({}, config);\n if (config._useUTC != null) {\n tempConfig._useUTC = config._useUTC;\n }\n tempConfig._f = config._f[i];\n configFromStringAndFormat(tempConfig);\n\n if (isValid(tempConfig)) {\n validFormatFound = true;\n }\n\n // if there is any input that was not parsed add a penalty for that format\n currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n //or tokens\n currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n getParsingFlags(tempConfig).score = currentScore;\n\n if (!bestFormatIsValid) {\n if (\n scoreToBeat == null ||\n currentScore < scoreToBeat ||\n validFormatFound\n ) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n if (validFormatFound) {\n bestFormatIsValid = true;\n }\n }\n } else {\n if (currentScore < scoreToBeat) {\n scoreToBeat = currentScore;\n bestMoment = tempConfig;\n }\n }\n }\n\n extend(config, bestMoment || tempConfig);\n }\n\n function configFromObject(config) {\n if (config._d) {\n return;\n }\n\n var i = normalizeObjectUnits(config._i),\n dayOrDate = i.day === undefined ? i.date : i.day;\n config._a = map(\n [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n function (obj) {\n return obj && parseInt(obj, 10);\n }\n );\n\n configFromArray(config);\n }\n\n function createFromConfig(config) {\n var res = new Moment(checkOverflow(prepareConfig(config)));\n if (res._nextDay) {\n // Adding is smart enough around DST\n res.add(1, 'd');\n res._nextDay = undefined;\n }\n\n return res;\n }\n\n function prepareConfig(config) {\n var input = config._i,\n format = config._f;\n\n config._locale = config._locale || getLocale(config._l);\n\n if (input === null || (format === undefined && input === '')) {\n return createInvalid({ nullInput: true });\n }\n\n if (typeof input === 'string') {\n config._i = input = config._locale.preparse(input);\n }\n\n if (isMoment(input)) {\n return new Moment(checkOverflow(input));\n } else if (isDate(input)) {\n config._d = input;\n } else if (isArray(format)) {\n configFromStringAndArray(config);\n } else if (format) {\n configFromStringAndFormat(config);\n } else {\n configFromInput(config);\n }\n\n if (!isValid(config)) {\n config._d = null;\n }\n\n return config;\n }\n\n function configFromInput(config) {\n var input = config._i;\n if (isUndefined(input)) {\n config._d = new Date(hooks.now());\n } else if (isDate(input)) {\n config._d = new Date(input.valueOf());\n } else if (typeof input === 'string') {\n configFromString(config);\n } else if (isArray(input)) {\n config._a = map(input.slice(0), function (obj) {\n return parseInt(obj, 10);\n });\n configFromArray(config);\n } else if (isObject(input)) {\n configFromObject(config);\n } else if (isNumber(input)) {\n // from milliseconds\n config._d = new Date(input);\n } else {\n hooks.createFromInputFallback(config);\n }\n }\n\n function createLocalOrUTC(input, format, locale, strict, isUTC) {\n var c = {};\n\n if (format === true || format === false) {\n strict = format;\n format = undefined;\n }\n\n if (locale === true || locale === false) {\n strict = locale;\n locale = undefined;\n }\n\n if (\n (isObject(input) && isObjectEmpty(input)) ||\n (isArray(input) && input.length === 0)\n ) {\n input = undefined;\n }\n // object construction must be done this way.\n // https://github.com/moment/moment/issues/1423\n c._isAMomentObject = true;\n c._useUTC = c._isUTC = isUTC;\n c._l = locale;\n c._i = input;\n c._f = format;\n c._strict = strict;\n\n return createFromConfig(c);\n }\n\n function createLocal(input, format, locale, strict) {\n return createLocalOrUTC(input, format, locale, strict, false);\n }\n\n var prototypeMin = deprecate(\n 'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other < this ? this : other;\n } else {\n return createInvalid();\n }\n }\n ),\n prototypeMax = deprecate(\n 'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n function () {\n var other = createLocal.apply(null, arguments);\n if (this.isValid() && other.isValid()) {\n return other > this ? this : other;\n } else {\n return createInvalid();\n }\n }\n );\n\n // Pick a moment m from moments so that m[fn](other) is true for all\n // other. This relies on the function fn to be transitive.\n //\n // moments should either be an array of moment objects or an array, whose\n // first element is an array of moment objects.\n function pickBy(fn, moments) {\n var res, i;\n if (moments.length === 1 && isArray(moments[0])) {\n moments = moments[0];\n }\n if (!moments.length) {\n return createLocal();\n }\n res = moments[0];\n for (i = 1; i < moments.length; ++i) {\n if (!moments[i].isValid() || moments[i][fn](res)) {\n res = moments[i];\n }\n }\n return res;\n }\n\n // TODO: Use [].sort instead?\n function min() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isBefore', args);\n }\n\n function max() {\n var args = [].slice.call(arguments, 0);\n\n return pickBy('isAfter', args);\n }\n\n var now = function () {\n return Date.now ? Date.now() : +new Date();\n };\n\n var ordering = [\n 'year',\n 'quarter',\n 'month',\n 'week',\n 'day',\n 'hour',\n 'minute',\n 'second',\n 'millisecond',\n ];\n\n function isDurationValid(m) {\n var key,\n unitHasDecimal = false,\n i,\n orderLen = ordering.length;\n for (key in m) {\n if (\n hasOwnProp(m, key) &&\n !(\n indexOf.call(ordering, key) !== -1 &&\n (m[key] == null || !isNaN(m[key]))\n )\n ) {\n return false;\n }\n }\n\n for (i = 0; i < orderLen; ++i) {\n if (m[ordering[i]]) {\n if (unitHasDecimal) {\n return false; // only allow non-integers for smallest unit\n }\n if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n unitHasDecimal = true;\n }\n }\n }\n\n return true;\n }\n\n function isValid$1() {\n return this._isValid;\n }\n\n function createInvalid$1() {\n return createDuration(NaN);\n }\n\n function Duration(duration) {\n var normalizedInput = normalizeObjectUnits(duration),\n years = normalizedInput.year || 0,\n quarters = normalizedInput.quarter || 0,\n months = normalizedInput.month || 0,\n weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n days = normalizedInput.day || 0,\n hours = normalizedInput.hour || 0,\n minutes = normalizedInput.minute || 0,\n seconds = normalizedInput.second || 0,\n milliseconds = normalizedInput.millisecond || 0;\n\n this._isValid = isDurationValid(normalizedInput);\n\n // representation for dateAddRemove\n this._milliseconds =\n +milliseconds +\n seconds * 1e3 + // 1000\n minutes * 6e4 + // 1000 * 60\n hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n // Because of dateAddRemove treats 24 hours as different from a\n // day when working around DST, we need to store them separately\n this._days = +days + weeks * 7;\n // It is impossible to translate months into days without knowing\n // which months you are are talking about, so we have to store\n // it separately.\n this._months = +months + quarters * 3 + years * 12;\n\n this._data = {};\n\n this._locale = getLocale();\n\n this._bubble();\n }\n\n function isDuration(obj) {\n return obj instanceof Duration;\n }\n\n function absRound(number) {\n if (number < 0) {\n return Math.round(-1 * number) * -1;\n } else {\n return Math.round(number);\n }\n }\n\n // compare two arrays, return the number of differences\n function compareArrays(array1, array2, dontConvert) {\n var len = Math.min(array1.length, array2.length),\n lengthDiff = Math.abs(array1.length - array2.length),\n diffs = 0,\n i;\n for (i = 0; i < len; i++) {\n if (\n (dontConvert && array1[i] !== array2[i]) ||\n (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n ) {\n diffs++;\n }\n }\n return diffs + lengthDiff;\n }\n\n // FORMATTING\n\n function offset(token, separator) {\n addFormatToken(token, 0, 0, function () {\n var offset = this.utcOffset(),\n sign = '+';\n if (offset < 0) {\n offset = -offset;\n sign = '-';\n }\n return (\n sign +\n zeroFill(~~(offset / 60), 2) +\n separator +\n zeroFill(~~offset % 60, 2)\n );\n });\n }\n\n offset('Z', ':');\n offset('ZZ', '');\n\n // PARSING\n\n addRegexToken('Z', matchShortOffset);\n addRegexToken('ZZ', matchShortOffset);\n addParseToken(['Z', 'ZZ'], function (input, array, config) {\n config._useUTC = true;\n config._tzm = offsetFromString(matchShortOffset, input);\n });\n\n // HELPERS\n\n // timezone chunker\n // '+10:00' > ['10', '00']\n // '-1530' > ['-15', '30']\n var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n function offsetFromString(matcher, string) {\n var matches = (string || '').match(matcher),\n chunk,\n parts,\n minutes;\n\n if (matches === null) {\n return null;\n }\n\n chunk = matches[matches.length - 1] || [];\n parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n }\n\n // Return a moment from input, that is local/utc/zone equivalent to model.\n function cloneWithOffset(input, model) {\n var res, diff;\n if (model._isUTC) {\n res = model.clone();\n diff =\n (isMoment(input) || isDate(input)\n ? input.valueOf()\n : createLocal(input).valueOf()) - res.valueOf();\n // Use low-level api, because this fn is low-level api.\n res._d.setTime(res._d.valueOf() + diff);\n hooks.updateOffset(res, false);\n return res;\n } else {\n return createLocal(input).local();\n }\n }\n\n function getDateOffset(m) {\n // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n // https://github.com/moment/moment/pull/1871\n return -Math.round(m._d.getTimezoneOffset());\n }\n\n // HOOKS\n\n // This function will be called whenever a moment is mutated.\n // It is intended to keep the offset in sync with the timezone.\n hooks.updateOffset = function () {};\n\n // MOMENTS\n\n // keepLocalTime = true means only change the timezone, without\n // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n // +0200, so we adjust the time as needed, to be valid.\n //\n // Keeping the time actually adds/subtracts (one hour)\n // from the actual represented time. That is why we call updateOffset\n // a second time. In case it wants us to change the offset again\n // _changeInProgress == true case, then we have to adjust, because\n // there is no such time in the given timezone.\n function getSetOffset(input, keepLocalTime, keepMinutes) {\n var offset = this._offset || 0,\n localAdjust;\n if (!this.isValid()) {\n return input != null ? this : NaN;\n }\n if (input != null) {\n if (typeof input === 'string') {\n input = offsetFromString(matchShortOffset, input);\n if (input === null) {\n return this;\n }\n } else if (Math.abs(input) < 16 && !keepMinutes) {\n input = input * 60;\n }\n if (!this._isUTC && keepLocalTime) {\n localAdjust = getDateOffset(this);\n }\n this._offset = input;\n this._isUTC = true;\n if (localAdjust != null) {\n this.add(localAdjust, 'm');\n }\n if (offset !== input) {\n if (!keepLocalTime || this._changeInProgress) {\n addSubtract(\n this,\n createDuration(input - offset, 'm'),\n 1,\n false\n );\n } else if (!this._changeInProgress) {\n this._changeInProgress = true;\n hooks.updateOffset(this, true);\n this._changeInProgress = null;\n }\n }\n return this;\n } else {\n return this._isUTC ? offset : getDateOffset(this);\n }\n }\n\n function getSetZone(input, keepLocalTime) {\n if (input != null) {\n if (typeof input !== 'string') {\n input = -input;\n }\n\n this.utcOffset(input, keepLocalTime);\n\n return this;\n } else {\n return -this.utcOffset();\n }\n }\n\n function setOffsetToUTC(keepLocalTime) {\n return this.utcOffset(0, keepLocalTime);\n }\n\n function setOffsetToLocal(keepLocalTime) {\n if (this._isUTC) {\n this.utcOffset(0, keepLocalTime);\n this._isUTC = false;\n\n if (keepLocalTime) {\n this.subtract(getDateOffset(this), 'm');\n }\n }\n return this;\n }\n\n function setOffsetToParsedOffset() {\n if (this._tzm != null) {\n this.utcOffset(this._tzm, false, true);\n } else if (typeof this._i === 'string') {\n var tZone = offsetFromString(matchOffset, this._i);\n if (tZone != null) {\n this.utcOffset(tZone);\n } else {\n this.utcOffset(0, true);\n }\n }\n return this;\n }\n\n function hasAlignedHourOffset(input) {\n if (!this.isValid()) {\n return false;\n }\n input = input ? createLocal(input).utcOffset() : 0;\n\n return (this.utcOffset() - input) % 60 === 0;\n }\n\n function isDaylightSavingTime() {\n return (\n this.utcOffset() > this.clone().month(0).utcOffset() ||\n this.utcOffset() > this.clone().month(5).utcOffset()\n );\n }\n\n function isDaylightSavingTimeShifted() {\n if (!isUndefined(this._isDSTShifted)) {\n return this._isDSTShifted;\n }\n\n var c = {},\n other;\n\n copyConfig(c, this);\n c = prepareConfig(c);\n\n if (c._a) {\n other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n this._isDSTShifted =\n this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n } else {\n this._isDSTShifted = false;\n }\n\n return this._isDSTShifted;\n }\n\n function isLocal() {\n return this.isValid() ? !this._isUTC : false;\n }\n\n function isUtcOffset() {\n return this.isValid() ? this._isUTC : false;\n }\n\n function isUtc() {\n return this.isValid() ? this._isUTC && this._offset === 0 : false;\n }\n\n // ASP.NET json date format regex\n var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n // and further modified to allow for strings containing both week and day\n isoRegex =\n /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n function createDuration(input, key) {\n var duration = input,\n // matching against regexp is expensive, do it on demand\n match = null,\n sign,\n ret,\n diffRes;\n\n if (isDuration(input)) {\n duration = {\n ms: input._milliseconds,\n d: input._days,\n M: input._months,\n };\n } else if (isNumber(input) || !isNaN(+input)) {\n duration = {};\n if (key) {\n duration[key] = +input;\n } else {\n duration.milliseconds = +input;\n }\n } else if ((match = aspNetRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: 0,\n d: toInt(match[DATE]) * sign,\n h: toInt(match[HOUR]) * sign,\n m: toInt(match[MINUTE]) * sign,\n s: toInt(match[SECOND]) * sign,\n ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n };\n } else if ((match = isoRegex.exec(input))) {\n sign = match[1] === '-' ? -1 : 1;\n duration = {\n y: parseIso(match[2], sign),\n M: parseIso(match[3], sign),\n w: parseIso(match[4], sign),\n d: parseIso(match[5], sign),\n h: parseIso(match[6], sign),\n m: parseIso(match[7], sign),\n s: parseIso(match[8], sign),\n };\n } else if (duration == null) {\n // checks for null or undefined\n duration = {};\n } else if (\n typeof duration === 'object' &&\n ('from' in duration || 'to' in duration)\n ) {\n diffRes = momentsDifference(\n createLocal(duration.from),\n createLocal(duration.to)\n );\n\n duration = {};\n duration.ms = diffRes.milliseconds;\n duration.M = diffRes.months;\n }\n\n ret = new Duration(duration);\n\n if (isDuration(input) && hasOwnProp(input, '_locale')) {\n ret._locale = input._locale;\n }\n\n if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n ret._isValid = input._isValid;\n }\n\n return ret;\n }\n\n createDuration.fn = Duration.prototype;\n createDuration.invalid = createInvalid$1;\n\n function parseIso(inp, sign) {\n // We'd normally use ~~inp for this, but unfortunately it also\n // converts floats to ints.\n // inp may be undefined, so careful calling replace on it.\n var res = inp && parseFloat(inp.replace(',', '.'));\n // apply sign while we're at it\n return (isNaN(res) ? 0 : res) * sign;\n }\n\n function positiveMomentsDifference(base, other) {\n var res = {};\n\n res.months =\n other.month() - base.month() + (other.year() - base.year()) * 12;\n if (base.clone().add(res.months, 'M').isAfter(other)) {\n --res.months;\n }\n\n res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n return res;\n }\n\n function momentsDifference(base, other) {\n var res;\n if (!(base.isValid() && other.isValid())) {\n return { milliseconds: 0, months: 0 };\n }\n\n other = cloneWithOffset(other, base);\n if (base.isBefore(other)) {\n res = positiveMomentsDifference(base, other);\n } else {\n res = positiveMomentsDifference(other, base);\n res.milliseconds = -res.milliseconds;\n res.months = -res.months;\n }\n\n return res;\n }\n\n // TODO: remove 'name' arg after deprecation is removed\n function createAdder(direction, name) {\n return function (val, period) {\n var dur, tmp;\n //invert the arguments, but complain about it\n if (period !== null && !isNaN(+period)) {\n deprecateSimple(\n name,\n 'moment().' +\n name +\n '(period, number) is deprecated. Please use moment().' +\n name +\n '(number, period). ' +\n 'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n );\n tmp = val;\n val = period;\n period = tmp;\n }\n\n dur = createDuration(val, period);\n addSubtract(this, dur, direction);\n return this;\n };\n }\n\n function addSubtract(mom, duration, isAdding, updateOffset) {\n var milliseconds = duration._milliseconds,\n days = absRound(duration._days),\n months = absRound(duration._months);\n\n if (!mom.isValid()) {\n // No op\n return;\n }\n\n updateOffset = updateOffset == null ? true : updateOffset;\n\n if (months) {\n setMonth(mom, get(mom, 'Month') + months * isAdding);\n }\n if (days) {\n set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n }\n if (milliseconds) {\n mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n }\n if (updateOffset) {\n hooks.updateOffset(mom, days || months);\n }\n }\n\n var add = createAdder(1, 'add'),\n subtract = createAdder(-1, 'subtract');\n\n function isString(input) {\n return typeof input === 'string' || input instanceof String;\n }\n\n // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n function isMomentInput(input) {\n return (\n isMoment(input) ||\n isDate(input) ||\n isString(input) ||\n isNumber(input) ||\n isNumberOrStringArray(input) ||\n isMomentInputObject(input) ||\n input === null ||\n input === undefined\n );\n }\n\n function isMomentInputObject(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'years',\n 'year',\n 'y',\n 'months',\n 'month',\n 'M',\n 'days',\n 'day',\n 'd',\n 'dates',\n 'date',\n 'D',\n 'hours',\n 'hour',\n 'h',\n 'minutes',\n 'minute',\n 'm',\n 'seconds',\n 'second',\n 's',\n 'milliseconds',\n 'millisecond',\n 'ms',\n ],\n i,\n property,\n propertyLen = properties.length;\n\n for (i = 0; i < propertyLen; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function isNumberOrStringArray(input) {\n var arrayTest = isArray(input),\n dataTypeTest = false;\n if (arrayTest) {\n dataTypeTest =\n input.filter(function (item) {\n return !isNumber(item) && isString(input);\n }).length === 0;\n }\n return arrayTest && dataTypeTest;\n }\n\n function isCalendarSpec(input) {\n var objectTest = isObject(input) && !isObjectEmpty(input),\n propertyTest = false,\n properties = [\n 'sameDay',\n 'nextDay',\n 'lastDay',\n 'nextWeek',\n 'lastWeek',\n 'sameElse',\n ],\n i,\n property;\n\n for (i = 0; i < properties.length; i += 1) {\n property = properties[i];\n propertyTest = propertyTest || hasOwnProp(input, property);\n }\n\n return objectTest && propertyTest;\n }\n\n function getCalendarFormat(myMoment, now) {\n var diff = myMoment.diff(now, 'days', true);\n return diff < -6\n ? 'sameElse'\n : diff < -1\n ? 'lastWeek'\n : diff < 0\n ? 'lastDay'\n : diff < 1\n ? 'sameDay'\n : diff < 2\n ? 'nextDay'\n : diff < 7\n ? 'nextWeek'\n : 'sameElse';\n }\n\n function calendar$1(time, formats) {\n // Support for single parameter, formats only overload to the calendar function\n if (arguments.length === 1) {\n if (!arguments[0]) {\n time = undefined;\n formats = undefined;\n } else if (isMomentInput(arguments[0])) {\n time = arguments[0];\n formats = undefined;\n } else if (isCalendarSpec(arguments[0])) {\n formats = arguments[0];\n time = undefined;\n }\n }\n // We want to compare the start of today, vs this.\n // Getting start-of-today depends on whether we're local/utc/offset or not.\n var now = time || createLocal(),\n sod = cloneWithOffset(now, this).startOf('day'),\n format = hooks.calendarFormat(this, sod) || 'sameElse',\n output =\n formats &&\n (isFunction(formats[format])\n ? formats[format].call(this, now)\n : formats[format]);\n\n return this.format(\n output || this.localeData().calendar(format, this, createLocal(now))\n );\n }\n\n function clone() {\n return new Moment(this);\n }\n\n function isAfter(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() > localInput.valueOf();\n } else {\n return localInput.valueOf() < this.clone().startOf(units).valueOf();\n }\n }\n\n function isBefore(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input);\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() < localInput.valueOf();\n } else {\n return this.clone().endOf(units).valueOf() < localInput.valueOf();\n }\n }\n\n function isBetween(from, to, units, inclusivity) {\n var localFrom = isMoment(from) ? from : createLocal(from),\n localTo = isMoment(to) ? to : createLocal(to);\n if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n return false;\n }\n inclusivity = inclusivity || '()';\n return (\n (inclusivity[0] === '('\n ? this.isAfter(localFrom, units)\n : !this.isBefore(localFrom, units)) &&\n (inclusivity[1] === ')'\n ? this.isBefore(localTo, units)\n : !this.isAfter(localTo, units))\n );\n }\n\n function isSame(input, units) {\n var localInput = isMoment(input) ? input : createLocal(input),\n inputMs;\n if (!(this.isValid() && localInput.isValid())) {\n return false;\n }\n units = normalizeUnits(units) || 'millisecond';\n if (units === 'millisecond') {\n return this.valueOf() === localInput.valueOf();\n } else {\n inputMs = localInput.valueOf();\n return (\n this.clone().startOf(units).valueOf() <= inputMs &&\n inputMs <= this.clone().endOf(units).valueOf()\n );\n }\n }\n\n function isSameOrAfter(input, units) {\n return this.isSame(input, units) || this.isAfter(input, units);\n }\n\n function isSameOrBefore(input, units) {\n return this.isSame(input, units) || this.isBefore(input, units);\n }\n\n function diff(input, units, asFloat) {\n var that, zoneDelta, output;\n\n if (!this.isValid()) {\n return NaN;\n }\n\n that = cloneWithOffset(input, this);\n\n if (!that.isValid()) {\n return NaN;\n }\n\n zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n units = normalizeUnits(units);\n\n switch (units) {\n case 'year':\n output = monthDiff(this, that) / 12;\n break;\n case 'month':\n output = monthDiff(this, that);\n break;\n case 'quarter':\n output = monthDiff(this, that) / 3;\n break;\n case 'second':\n output = (this - that) / 1e3;\n break; // 1000\n case 'minute':\n output = (this - that) / 6e4;\n break; // 1000 * 60\n case 'hour':\n output = (this - that) / 36e5;\n break; // 1000 * 60 * 60\n case 'day':\n output = (this - that - zoneDelta) / 864e5;\n break; // 1000 * 60 * 60 * 24, negate dst\n case 'week':\n output = (this - that - zoneDelta) / 6048e5;\n break; // 1000 * 60 * 60 * 24 * 7, negate dst\n default:\n output = this - that;\n }\n\n return asFloat ? output : absFloor(output);\n }\n\n function monthDiff(a, b) {\n if (a.date() < b.date()) {\n // end-of-month calculations work correct when the start month has more\n // days than the end month.\n return -monthDiff(b, a);\n }\n // difference in months\n var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n // b is in (anchor - 1 month, anchor + 1 month)\n anchor = a.clone().add(wholeMonthDiff, 'months'),\n anchor2,\n adjust;\n\n if (b - anchor < 0) {\n anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor - anchor2);\n } else {\n anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n // linear across the month\n adjust = (b - anchor) / (anchor2 - anchor);\n }\n\n //check for negative zero, return zero if negative zero\n return -(wholeMonthDiff + adjust) || 0;\n }\n\n hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n function toString() {\n return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n }\n\n function toISOString(keepOffset) {\n if (!this.isValid()) {\n return null;\n }\n var utc = keepOffset !== true,\n m = utc ? this.clone().utc() : this;\n if (m.year() < 0 || m.year() > 9999) {\n return formatMoment(\n m,\n utc\n ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n if (isFunction(Date.prototype.toISOString)) {\n // native implementation is ~50x faster, use it when we can\n if (utc) {\n return this.toDate().toISOString();\n } else {\n return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n .toISOString()\n .replace('Z', formatMoment(m, 'Z'));\n }\n }\n return formatMoment(\n m,\n utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n );\n }\n\n /**\n * Return a human readable representation of a moment that can\n * also be evaluated to get a new moment which is the same\n *\n * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n */\n function inspect() {\n if (!this.isValid()) {\n return 'moment.invalid(/* ' + this._i + ' */)';\n }\n var func = 'moment',\n zone = '',\n prefix,\n year,\n datetime,\n suffix;\n if (!this.isLocal()) {\n func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n zone = 'Z';\n }\n prefix = '[' + func + '(\"]';\n year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n datetime = '-MM-DD[T]HH:mm:ss.SSS';\n suffix = zone + '[\")]';\n\n return this.format(prefix + year + datetime + suffix);\n }\n\n function format(inputString) {\n if (!inputString) {\n inputString = this.isUtc()\n ? hooks.defaultFormatUtc\n : hooks.defaultFormat;\n }\n var output = formatMoment(this, inputString);\n return this.localeData().postformat(output);\n }\n\n function from(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ to: this, from: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function fromNow(withoutSuffix) {\n return this.from(createLocal(), withoutSuffix);\n }\n\n function to(time, withoutSuffix) {\n if (\n this.isValid() &&\n ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n ) {\n return createDuration({ from: this, to: time })\n .locale(this.locale())\n .humanize(!withoutSuffix);\n } else {\n return this.localeData().invalidDate();\n }\n }\n\n function toNow(withoutSuffix) {\n return this.to(createLocal(), withoutSuffix);\n }\n\n // If passed a locale key, it will set the locale for this\n // instance. Otherwise, it will return the locale configuration\n // variables for this instance.\n function locale(key) {\n var newLocaleData;\n\n if (key === undefined) {\n return this._locale._abbr;\n } else {\n newLocaleData = getLocale(key);\n if (newLocaleData != null) {\n this._locale = newLocaleData;\n }\n return this;\n }\n }\n\n var lang = deprecate(\n 'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n function (key) {\n if (key === undefined) {\n return this.localeData();\n } else {\n return this.locale(key);\n }\n }\n );\n\n function localeData() {\n return this._locale;\n }\n\n var MS_PER_SECOND = 1000,\n MS_PER_MINUTE = 60 * MS_PER_SECOND,\n MS_PER_HOUR = 60 * MS_PER_MINUTE,\n MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n // actual modulo - handles negative numbers (for dates before 1970):\n function mod$1(dividend, divisor) {\n return ((dividend % divisor) + divisor) % divisor;\n }\n\n function localStartOfDate(y, m, d) {\n // the date constructor remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return new Date(y, m, d).valueOf();\n }\n }\n\n function utcStartOfDate(y, m, d) {\n // Date.UTC remaps years 0-99 to 1900-1999\n if (y < 100 && y >= 0) {\n // preserve leap years using a full 400 year cycle, then reset\n return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n } else {\n return Date.UTC(y, m, d);\n }\n }\n\n function startOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year(), 0, 1);\n break;\n case 'quarter':\n time = startOfDate(\n this.year(),\n this.month() - (this.month() % 3),\n 1\n );\n break;\n case 'month':\n time = startOfDate(this.year(), this.month(), 1);\n break;\n case 'week':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday()\n );\n break;\n case 'isoWeek':\n time = startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1)\n );\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date());\n break;\n case 'hour':\n time = this._d.valueOf();\n time -= mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n );\n break;\n case 'minute':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_MINUTE);\n break;\n case 'second':\n time = this._d.valueOf();\n time -= mod$1(time, MS_PER_SECOND);\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function endOf(units) {\n var time, startOfDate;\n units = normalizeUnits(units);\n if (units === undefined || units === 'millisecond' || !this.isValid()) {\n return this;\n }\n\n startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n switch (units) {\n case 'year':\n time = startOfDate(this.year() + 1, 0, 1) - 1;\n break;\n case 'quarter':\n time =\n startOfDate(\n this.year(),\n this.month() - (this.month() % 3) + 3,\n 1\n ) - 1;\n break;\n case 'month':\n time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n break;\n case 'week':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - this.weekday() + 7\n ) - 1;\n break;\n case 'isoWeek':\n time =\n startOfDate(\n this.year(),\n this.month(),\n this.date() - (this.isoWeekday() - 1) + 7\n ) - 1;\n break;\n case 'day':\n case 'date':\n time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n break;\n case 'hour':\n time = this._d.valueOf();\n time +=\n MS_PER_HOUR -\n mod$1(\n time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n MS_PER_HOUR\n ) -\n 1;\n break;\n case 'minute':\n time = this._d.valueOf();\n time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n break;\n case 'second':\n time = this._d.valueOf();\n time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n break;\n }\n\n this._d.setTime(time);\n hooks.updateOffset(this, true);\n return this;\n }\n\n function valueOf() {\n return this._d.valueOf() - (this._offset || 0) * 60000;\n }\n\n function unix() {\n return Math.floor(this.valueOf() / 1000);\n }\n\n function toDate() {\n return new Date(this.valueOf());\n }\n\n function toArray() {\n var m = this;\n return [\n m.year(),\n m.month(),\n m.date(),\n m.hour(),\n m.minute(),\n m.second(),\n m.millisecond(),\n ];\n }\n\n function toObject() {\n var m = this;\n return {\n years: m.year(),\n months: m.month(),\n date: m.date(),\n hours: m.hours(),\n minutes: m.minutes(),\n seconds: m.seconds(),\n milliseconds: m.milliseconds(),\n };\n }\n\n function toJSON() {\n // new Date(NaN).toJSON() === null\n return this.isValid() ? this.toISOString() : null;\n }\n\n function isValid$2() {\n return isValid(this);\n }\n\n function parsingFlags() {\n return extend({}, getParsingFlags(this));\n }\n\n function invalidAt() {\n return getParsingFlags(this).overflow;\n }\n\n function creationData() {\n return {\n input: this._i,\n format: this._f,\n locale: this._locale,\n isUTC: this._isUTC,\n strict: this._strict,\n };\n }\n\n addFormatToken('N', 0, 0, 'eraAbbr');\n addFormatToken('NN', 0, 0, 'eraAbbr');\n addFormatToken('NNN', 0, 0, 'eraAbbr');\n addFormatToken('NNNN', 0, 0, 'eraName');\n addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n addFormatToken('y', ['yy', 2], 0, 'eraYear');\n addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n addRegexToken('N', matchEraAbbr);\n addRegexToken('NN', matchEraAbbr);\n addRegexToken('NNN', matchEraAbbr);\n addRegexToken('NNNN', matchEraName);\n addRegexToken('NNNNN', matchEraNarrow);\n\n addParseToken(\n ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n function (input, array, config, token) {\n var era = config._locale.erasParse(input, token, config._strict);\n if (era) {\n getParsingFlags(config).era = era;\n } else {\n getParsingFlags(config).invalidEra = input;\n }\n }\n );\n\n addRegexToken('y', matchUnsigned);\n addRegexToken('yy', matchUnsigned);\n addRegexToken('yyy', matchUnsigned);\n addRegexToken('yyyy', matchUnsigned);\n addRegexToken('yo', matchEraYearOrdinal);\n\n addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n addParseToken(['yo'], function (input, array, config, token) {\n var match;\n if (config._locale._eraYearOrdinalRegex) {\n match = input.match(config._locale._eraYearOrdinalRegex);\n }\n\n if (config._locale.eraYearOrdinalParse) {\n array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n } else {\n array[YEAR] = parseInt(input, 10);\n }\n });\n\n function localeEras(m, format) {\n var i,\n l,\n date,\n eras = this._eras || getLocale('en')._eras;\n for (i = 0, l = eras.length; i < l; ++i) {\n switch (typeof eras[i].since) {\n case 'string':\n // truncate time\n date = hooks(eras[i].since).startOf('day');\n eras[i].since = date.valueOf();\n break;\n }\n\n switch (typeof eras[i].until) {\n case 'undefined':\n eras[i].until = +Infinity;\n break;\n case 'string':\n // truncate time\n date = hooks(eras[i].until).startOf('day').valueOf();\n eras[i].until = date.valueOf();\n break;\n }\n }\n return eras;\n }\n\n function localeErasParse(eraName, format, strict) {\n var i,\n l,\n eras = this.eras(),\n name,\n abbr,\n narrow;\n eraName = eraName.toUpperCase();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n name = eras[i].name.toUpperCase();\n abbr = eras[i].abbr.toUpperCase();\n narrow = eras[i].narrow.toUpperCase();\n\n if (strict) {\n switch (format) {\n case 'N':\n case 'NN':\n case 'NNN':\n if (abbr === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNN':\n if (name === eraName) {\n return eras[i];\n }\n break;\n\n case 'NNNNN':\n if (narrow === eraName) {\n return eras[i];\n }\n break;\n }\n } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n return eras[i];\n }\n }\n }\n\n function localeErasConvertYear(era, year) {\n var dir = era.since <= era.until ? +1 : -1;\n if (year === undefined) {\n return hooks(era.since).year();\n } else {\n return hooks(era.since).year() + (year - era.offset) * dir;\n }\n }\n\n function getEraName() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].name;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].name;\n }\n }\n\n return '';\n }\n\n function getEraNarrow() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].narrow;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].narrow;\n }\n }\n\n return '';\n }\n\n function getEraAbbr() {\n var i,\n l,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (eras[i].since <= val && val <= eras[i].until) {\n return eras[i].abbr;\n }\n if (eras[i].until <= val && val <= eras[i].since) {\n return eras[i].abbr;\n }\n }\n\n return '';\n }\n\n function getEraYear() {\n var i,\n l,\n dir,\n val,\n eras = this.localeData().eras();\n for (i = 0, l = eras.length; i < l; ++i) {\n dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n // truncate time\n val = this.clone().startOf('day').valueOf();\n\n if (\n (eras[i].since <= val && val <= eras[i].until) ||\n (eras[i].until <= val && val <= eras[i].since)\n ) {\n return (\n (this.year() - hooks(eras[i].since).year()) * dir +\n eras[i].offset\n );\n }\n }\n\n return this.year();\n }\n\n function erasNameRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNameRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNameRegex : this._erasRegex;\n }\n\n function erasAbbrRegex(isStrict) {\n if (!hasOwnProp(this, '_erasAbbrRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasAbbrRegex : this._erasRegex;\n }\n\n function erasNarrowRegex(isStrict) {\n if (!hasOwnProp(this, '_erasNarrowRegex')) {\n computeErasParse.call(this);\n }\n return isStrict ? this._erasNarrowRegex : this._erasRegex;\n }\n\n function matchEraAbbr(isStrict, locale) {\n return locale.erasAbbrRegex(isStrict);\n }\n\n function matchEraName(isStrict, locale) {\n return locale.erasNameRegex(isStrict);\n }\n\n function matchEraNarrow(isStrict, locale) {\n return locale.erasNarrowRegex(isStrict);\n }\n\n function matchEraYearOrdinal(isStrict, locale) {\n return locale._eraYearOrdinalRegex || matchUnsigned;\n }\n\n function computeErasParse() {\n var abbrPieces = [],\n namePieces = [],\n narrowPieces = [],\n mixedPieces = [],\n i,\n l,\n erasName,\n erasAbbr,\n erasNarrow,\n eras = this.eras();\n\n for (i = 0, l = eras.length; i < l; ++i) {\n erasName = regexEscape(eras[i].name);\n erasAbbr = regexEscape(eras[i].abbr);\n erasNarrow = regexEscape(eras[i].narrow);\n\n namePieces.push(erasName);\n abbrPieces.push(erasAbbr);\n narrowPieces.push(erasNarrow);\n mixedPieces.push(erasName);\n mixedPieces.push(erasAbbr);\n mixedPieces.push(erasNarrow);\n }\n\n this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n this._erasNarrowRegex = new RegExp(\n '^(' + narrowPieces.join('|') + ')',\n 'i'\n );\n }\n\n // FORMATTING\n\n addFormatToken(0, ['gg', 2], 0, function () {\n return this.weekYear() % 100;\n });\n\n addFormatToken(0, ['GG', 2], 0, function () {\n return this.isoWeekYear() % 100;\n });\n\n function addWeekYearFormatToken(token, getter) {\n addFormatToken(0, [token, token.length], 0, getter);\n }\n\n addWeekYearFormatToken('gggg', 'weekYear');\n addWeekYearFormatToken('ggggg', 'weekYear');\n addWeekYearFormatToken('GGGG', 'isoWeekYear');\n addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n // ALIASES\n\n // PARSING\n\n addRegexToken('G', matchSigned);\n addRegexToken('g', matchSigned);\n addRegexToken('GG', match1to2, match2);\n addRegexToken('gg', match1to2, match2);\n addRegexToken('GGGG', match1to4, match4);\n addRegexToken('gggg', match1to4, match4);\n addRegexToken('GGGGG', match1to6, match6);\n addRegexToken('ggggg', match1to6, match6);\n\n addWeekParseToken(\n ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n function (input, week, config, token) {\n week[token.substr(0, 2)] = toInt(input);\n }\n );\n\n addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n week[token] = hooks.parseTwoDigitYear(input);\n });\n\n // MOMENTS\n\n function getSetWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.week(),\n this.weekday() + this.localeData()._week.dow,\n this.localeData()._week.dow,\n this.localeData()._week.doy\n );\n }\n\n function getSetISOWeekYear(input) {\n return getSetWeekYearHelper.call(\n this,\n input,\n this.isoWeek(),\n this.isoWeekday(),\n 1,\n 4\n );\n }\n\n function getISOWeeksInYear() {\n return weeksInYear(this.year(), 1, 4);\n }\n\n function getISOWeeksInISOWeekYear() {\n return weeksInYear(this.isoWeekYear(), 1, 4);\n }\n\n function getWeeksInYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n }\n\n function getWeeksInWeekYear() {\n var weekInfo = this.localeData()._week;\n return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n }\n\n function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n var weeksTarget;\n if (input == null) {\n return weekOfYear(this, dow, doy).year;\n } else {\n weeksTarget = weeksInYear(input, dow, doy);\n if (week > weeksTarget) {\n week = weeksTarget;\n }\n return setWeekAll.call(this, input, week, weekday, dow, doy);\n }\n }\n\n function setWeekAll(weekYear, week, weekday, dow, doy) {\n var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n this.year(date.getUTCFullYear());\n this.month(date.getUTCMonth());\n this.date(date.getUTCDate());\n return this;\n }\n\n // FORMATTING\n\n addFormatToken('Q', 0, 'Qo', 'quarter');\n\n // PARSING\n\n addRegexToken('Q', match1);\n addParseToken('Q', function (input, array) {\n array[MONTH] = (toInt(input) - 1) * 3;\n });\n\n // MOMENTS\n\n function getSetQuarter(input) {\n return input == null\n ? Math.ceil((this.month() + 1) / 3)\n : this.month((input - 1) * 3 + (this.month() % 3));\n }\n\n // FORMATTING\n\n addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n // PARSING\n\n addRegexToken('D', match1to2, match1to2NoLeadingZero);\n addRegexToken('DD', match1to2, match2);\n addRegexToken('Do', function (isStrict, locale) {\n // TODO: Remove \"ordinalParse\" fallback in next major release.\n return isStrict\n ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n : locale._dayOfMonthOrdinalParseLenient;\n });\n\n addParseToken(['D', 'DD'], DATE);\n addParseToken('Do', function (input, array) {\n array[DATE] = toInt(input.match(match1to2)[0]);\n });\n\n // MOMENTS\n\n var getSetDayOfMonth = makeGetSet('Date', true);\n\n // FORMATTING\n\n addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n // PARSING\n\n addRegexToken('DDD', match1to3);\n addRegexToken('DDDD', match3);\n addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n config._dayOfYear = toInt(input);\n });\n\n // HELPERS\n\n // MOMENTS\n\n function getSetDayOfYear(input) {\n var dayOfYear =\n Math.round(\n (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n ) + 1;\n return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n }\n\n // FORMATTING\n\n addFormatToken('m', ['mm', 2], 0, 'minute');\n\n // PARSING\n\n addRegexToken('m', match1to2, match1to2HasZero);\n addRegexToken('mm', match1to2, match2);\n addParseToken(['m', 'mm'], MINUTE);\n\n // MOMENTS\n\n var getSetMinute = makeGetSet('Minutes', false);\n\n // FORMATTING\n\n addFormatToken('s', ['ss', 2], 0, 'second');\n\n // PARSING\n\n addRegexToken('s', match1to2, match1to2HasZero);\n addRegexToken('ss', match1to2, match2);\n addParseToken(['s', 'ss'], SECOND);\n\n // MOMENTS\n\n var getSetSecond = makeGetSet('Seconds', false);\n\n // FORMATTING\n\n addFormatToken('S', 0, 0, function () {\n return ~~(this.millisecond() / 100);\n });\n\n addFormatToken(0, ['SS', 2], 0, function () {\n return ~~(this.millisecond() / 10);\n });\n\n addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n addFormatToken(0, ['SSSS', 4], 0, function () {\n return this.millisecond() * 10;\n });\n addFormatToken(0, ['SSSSS', 5], 0, function () {\n return this.millisecond() * 100;\n });\n addFormatToken(0, ['SSSSSS', 6], 0, function () {\n return this.millisecond() * 1000;\n });\n addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n return this.millisecond() * 10000;\n });\n addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n return this.millisecond() * 100000;\n });\n addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n return this.millisecond() * 1000000;\n });\n\n // PARSING\n\n addRegexToken('S', match1to3, match1);\n addRegexToken('SS', match1to3, match2);\n addRegexToken('SSS', match1to3, match3);\n\n var token, getSetMillisecond;\n for (token = 'SSSS'; token.length <= 9; token += 'S') {\n addRegexToken(token, matchUnsigned);\n }\n\n function parseMs(input, array) {\n array[MILLISECOND] = toInt(('0.' + input) * 1000);\n }\n\n for (token = 'S'; token.length <= 9; token += 'S') {\n addParseToken(token, parseMs);\n }\n\n getSetMillisecond = makeGetSet('Milliseconds', false);\n\n // FORMATTING\n\n addFormatToken('z', 0, 0, 'zoneAbbr');\n addFormatToken('zz', 0, 0, 'zoneName');\n\n // MOMENTS\n\n function getZoneAbbr() {\n return this._isUTC ? 'UTC' : '';\n }\n\n function getZoneName() {\n return this._isUTC ? 'Coordinated Universal Time' : '';\n }\n\n var proto = Moment.prototype;\n\n proto.add = add;\n proto.calendar = calendar$1;\n proto.clone = clone;\n proto.diff = diff;\n proto.endOf = endOf;\n proto.format = format;\n proto.from = from;\n proto.fromNow = fromNow;\n proto.to = to;\n proto.toNow = toNow;\n proto.get = stringGet;\n proto.invalidAt = invalidAt;\n proto.isAfter = isAfter;\n proto.isBefore = isBefore;\n proto.isBetween = isBetween;\n proto.isSame = isSame;\n proto.isSameOrAfter = isSameOrAfter;\n proto.isSameOrBefore = isSameOrBefore;\n proto.isValid = isValid$2;\n proto.lang = lang;\n proto.locale = locale;\n proto.localeData = localeData;\n proto.max = prototypeMax;\n proto.min = prototypeMin;\n proto.parsingFlags = parsingFlags;\n proto.set = stringSet;\n proto.startOf = startOf;\n proto.subtract = subtract;\n proto.toArray = toArray;\n proto.toObject = toObject;\n proto.toDate = toDate;\n proto.toISOString = toISOString;\n proto.inspect = inspect;\n if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n return 'Moment<' + this.format() + '>';\n };\n }\n proto.toJSON = toJSON;\n proto.toString = toString;\n proto.unix = unix;\n proto.valueOf = valueOf;\n proto.creationData = creationData;\n proto.eraName = getEraName;\n proto.eraNarrow = getEraNarrow;\n proto.eraAbbr = getEraAbbr;\n proto.eraYear = getEraYear;\n proto.year = getSetYear;\n proto.isLeapYear = getIsLeapYear;\n proto.weekYear = getSetWeekYear;\n proto.isoWeekYear = getSetISOWeekYear;\n proto.quarter = proto.quarters = getSetQuarter;\n proto.month = getSetMonth;\n proto.daysInMonth = getDaysInMonth;\n proto.week = proto.weeks = getSetWeek;\n proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n proto.weeksInYear = getWeeksInYear;\n proto.weeksInWeekYear = getWeeksInWeekYear;\n proto.isoWeeksInYear = getISOWeeksInYear;\n proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n proto.date = getSetDayOfMonth;\n proto.day = proto.days = getSetDayOfWeek;\n proto.weekday = getSetLocaleDayOfWeek;\n proto.isoWeekday = getSetISODayOfWeek;\n proto.dayOfYear = getSetDayOfYear;\n proto.hour = proto.hours = getSetHour;\n proto.minute = proto.minutes = getSetMinute;\n proto.second = proto.seconds = getSetSecond;\n proto.millisecond = proto.milliseconds = getSetMillisecond;\n proto.utcOffset = getSetOffset;\n proto.utc = setOffsetToUTC;\n proto.local = setOffsetToLocal;\n proto.parseZone = setOffsetToParsedOffset;\n proto.hasAlignedHourOffset = hasAlignedHourOffset;\n proto.isDST = isDaylightSavingTime;\n proto.isLocal = isLocal;\n proto.isUtcOffset = isUtcOffset;\n proto.isUtc = isUtc;\n proto.isUTC = isUtc;\n proto.zoneAbbr = getZoneAbbr;\n proto.zoneName = getZoneName;\n proto.dates = deprecate(\n 'dates accessor is deprecated. Use date instead.',\n getSetDayOfMonth\n );\n proto.months = deprecate(\n 'months accessor is deprecated. Use month instead',\n getSetMonth\n );\n proto.years = deprecate(\n 'years accessor is deprecated. Use year instead',\n getSetYear\n );\n proto.zone = deprecate(\n 'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n getSetZone\n );\n proto.isDSTShifted = deprecate(\n 'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n isDaylightSavingTimeShifted\n );\n\n function createUnix(input) {\n return createLocal(input * 1000);\n }\n\n function createInZone() {\n return createLocal.apply(null, arguments).parseZone();\n }\n\n function preParsePostFormat(string) {\n return string;\n }\n\n var proto$1 = Locale.prototype;\n\n proto$1.calendar = calendar;\n proto$1.longDateFormat = longDateFormat;\n proto$1.invalidDate = invalidDate;\n proto$1.ordinal = ordinal;\n proto$1.preparse = preParsePostFormat;\n proto$1.postformat = preParsePostFormat;\n proto$1.relativeTime = relativeTime;\n proto$1.pastFuture = pastFuture;\n proto$1.set = set;\n proto$1.eras = localeEras;\n proto$1.erasParse = localeErasParse;\n proto$1.erasConvertYear = localeErasConvertYear;\n proto$1.erasAbbrRegex = erasAbbrRegex;\n proto$1.erasNameRegex = erasNameRegex;\n proto$1.erasNarrowRegex = erasNarrowRegex;\n\n proto$1.months = localeMonths;\n proto$1.monthsShort = localeMonthsShort;\n proto$1.monthsParse = localeMonthsParse;\n proto$1.monthsRegex = monthsRegex;\n proto$1.monthsShortRegex = monthsShortRegex;\n proto$1.week = localeWeek;\n proto$1.firstDayOfYear = localeFirstDayOfYear;\n proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n proto$1.weekdays = localeWeekdays;\n proto$1.weekdaysMin = localeWeekdaysMin;\n proto$1.weekdaysShort = localeWeekdaysShort;\n proto$1.weekdaysParse = localeWeekdaysParse;\n\n proto$1.weekdaysRegex = weekdaysRegex;\n proto$1.weekdaysShortRegex = weekdaysShortRegex;\n proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n proto$1.isPM = localeIsPM;\n proto$1.meridiem = localeMeridiem;\n\n function get$1(format, index, field, setter) {\n var locale = getLocale(),\n utc = createUTC().set(setter, index);\n return locale[field](utc, format);\n }\n\n function listMonthsImpl(format, index, field) {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n\n if (index != null) {\n return get$1(format, index, field, 'month');\n }\n\n var i,\n out = [];\n for (i = 0; i < 12; i++) {\n out[i] = get$1(format, i, field, 'month');\n }\n return out;\n }\n\n // ()\n // (5)\n // (fmt, 5)\n // (fmt)\n // (true)\n // (true, 5)\n // (true, fmt, 5)\n // (true, fmt)\n function listWeekdaysImpl(localeSorted, format, index, field) {\n if (typeof localeSorted === 'boolean') {\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n } else {\n format = localeSorted;\n index = format;\n localeSorted = false;\n\n if (isNumber(format)) {\n index = format;\n format = undefined;\n }\n\n format = format || '';\n }\n\n var locale = getLocale(),\n shift = localeSorted ? locale._week.dow : 0,\n i,\n out = [];\n\n if (index != null) {\n return get$1(format, (index + shift) % 7, field, 'day');\n }\n\n for (i = 0; i < 7; i++) {\n out[i] = get$1(format, (i + shift) % 7, field, 'day');\n }\n return out;\n }\n\n function listMonths(format, index) {\n return listMonthsImpl(format, index, 'months');\n }\n\n function listMonthsShort(format, index) {\n return listMonthsImpl(format, index, 'monthsShort');\n }\n\n function listWeekdays(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n }\n\n function listWeekdaysShort(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n }\n\n function listWeekdaysMin(localeSorted, format, index) {\n return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n }\n\n getSetGlobalLocale('en', {\n eras: [\n {\n since: '0001-01-01',\n until: +Infinity,\n offset: 1,\n name: 'Anno Domini',\n narrow: 'AD',\n abbr: 'AD',\n },\n {\n since: '0000-12-31',\n until: -Infinity,\n offset: 1,\n name: 'Before Christ',\n narrow: 'BC',\n abbr: 'BC',\n },\n ],\n dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n ordinal: function (number) {\n var b = number % 10,\n output =\n toInt((number % 100) / 10) === 1\n ? 'th'\n : b === 1\n ? 'st'\n : b === 2\n ? 'nd'\n : b === 3\n ? 'rd'\n : 'th';\n return number + output;\n },\n });\n\n // Side effect imports\n\n hooks.lang = deprecate(\n 'moment.lang is deprecated. Use moment.locale instead.',\n getSetGlobalLocale\n );\n hooks.langData = deprecate(\n 'moment.langData is deprecated. Use moment.localeData instead.',\n getLocale\n );\n\n var mathAbs = Math.abs;\n\n function abs() {\n var data = this._data;\n\n this._milliseconds = mathAbs(this._milliseconds);\n this._days = mathAbs(this._days);\n this._months = mathAbs(this._months);\n\n data.milliseconds = mathAbs(data.milliseconds);\n data.seconds = mathAbs(data.seconds);\n data.minutes = mathAbs(data.minutes);\n data.hours = mathAbs(data.hours);\n data.months = mathAbs(data.months);\n data.years = mathAbs(data.years);\n\n return this;\n }\n\n function addSubtract$1(duration, input, value, direction) {\n var other = createDuration(input, value);\n\n duration._milliseconds += direction * other._milliseconds;\n duration._days += direction * other._days;\n duration._months += direction * other._months;\n\n return duration._bubble();\n }\n\n // supports only 2.0-style add(1, 's') or add(duration)\n function add$1(input, value) {\n return addSubtract$1(this, input, value, 1);\n }\n\n // supports only 2.0-style subtract(1, 's') or subtract(duration)\n function subtract$1(input, value) {\n return addSubtract$1(this, input, value, -1);\n }\n\n function absCeil(number) {\n if (number < 0) {\n return Math.floor(number);\n } else {\n return Math.ceil(number);\n }\n }\n\n function bubble() {\n var milliseconds = this._milliseconds,\n days = this._days,\n months = this._months,\n data = this._data,\n seconds,\n minutes,\n hours,\n years,\n monthsFromDays;\n\n // if we have a mix of positive and negative values, bubble down first\n // check: https://github.com/moment/moment/issues/2166\n if (\n !(\n (milliseconds >= 0 && days >= 0 && months >= 0) ||\n (milliseconds <= 0 && days <= 0 && months <= 0)\n )\n ) {\n milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n days = 0;\n months = 0;\n }\n\n // The following code bubbles up values, see the tests for\n // examples of what that means.\n data.milliseconds = milliseconds % 1000;\n\n seconds = absFloor(milliseconds / 1000);\n data.seconds = seconds % 60;\n\n minutes = absFloor(seconds / 60);\n data.minutes = minutes % 60;\n\n hours = absFloor(minutes / 60);\n data.hours = hours % 24;\n\n days += absFloor(hours / 24);\n\n // convert days to months\n monthsFromDays = absFloor(daysToMonths(days));\n months += monthsFromDays;\n days -= absCeil(monthsToDays(monthsFromDays));\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n data.days = days;\n data.months = months;\n data.years = years;\n\n return this;\n }\n\n function daysToMonths(days) {\n // 400 years have 146097 days (taking into account leap year rules)\n // 400 years have 12 months === 4800\n return (days * 4800) / 146097;\n }\n\n function monthsToDays(months) {\n // the reverse of daysToMonths\n return (months * 146097) / 4800;\n }\n\n function as(units) {\n if (!this.isValid()) {\n return NaN;\n }\n var days,\n months,\n milliseconds = this._milliseconds;\n\n units = normalizeUnits(units);\n\n if (units === 'month' || units === 'quarter' || units === 'year') {\n days = this._days + milliseconds / 864e5;\n months = this._months + daysToMonths(days);\n switch (units) {\n case 'month':\n return months;\n case 'quarter':\n return months / 3;\n case 'year':\n return months / 12;\n }\n } else {\n // handle milliseconds separately because of floating point math errors (issue #1867)\n days = this._days + Math.round(monthsToDays(this._months));\n switch (units) {\n case 'week':\n return days / 7 + milliseconds / 6048e5;\n case 'day':\n return days + milliseconds / 864e5;\n case 'hour':\n return days * 24 + milliseconds / 36e5;\n case 'minute':\n return days * 1440 + milliseconds / 6e4;\n case 'second':\n return days * 86400 + milliseconds / 1000;\n // Math.floor prevents floating point math errors here\n case 'millisecond':\n return Math.floor(days * 864e5) + milliseconds;\n default:\n throw new Error('Unknown unit ' + units);\n }\n }\n }\n\n function makeAs(alias) {\n return function () {\n return this.as(alias);\n };\n }\n\n var asMilliseconds = makeAs('ms'),\n asSeconds = makeAs('s'),\n asMinutes = makeAs('m'),\n asHours = makeAs('h'),\n asDays = makeAs('d'),\n asWeeks = makeAs('w'),\n asMonths = makeAs('M'),\n asQuarters = makeAs('Q'),\n asYears = makeAs('y'),\n valueOf$1 = asMilliseconds;\n\n function clone$1() {\n return createDuration(this);\n }\n\n function get$2(units) {\n units = normalizeUnits(units);\n return this.isValid() ? this[units + 's']() : NaN;\n }\n\n function makeGetter(name) {\n return function () {\n return this.isValid() ? this._data[name] : NaN;\n };\n }\n\n var milliseconds = makeGetter('milliseconds'),\n seconds = makeGetter('seconds'),\n minutes = makeGetter('minutes'),\n hours = makeGetter('hours'),\n days = makeGetter('days'),\n months = makeGetter('months'),\n years = makeGetter('years');\n\n function weeks() {\n return absFloor(this.days() / 7);\n }\n\n var round = Math.round,\n thresholds = {\n ss: 44, // a few seconds to seconds\n s: 45, // seconds to minute\n m: 45, // minutes to hour\n h: 22, // hours to day\n d: 26, // days to month/week\n w: null, // weeks to month\n M: 11, // months to year\n };\n\n // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n }\n\n function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n var duration = createDuration(posNegDuration).abs(),\n seconds = round(duration.as('s')),\n minutes = round(duration.as('m')),\n hours = round(duration.as('h')),\n days = round(duration.as('d')),\n months = round(duration.as('M')),\n weeks = round(duration.as('w')),\n years = round(duration.as('y')),\n a =\n (seconds <= thresholds.ss && ['s', seconds]) ||\n (seconds < thresholds.s && ['ss', seconds]) ||\n (minutes <= 1 && ['m']) ||\n (minutes < thresholds.m && ['mm', minutes]) ||\n (hours <= 1 && ['h']) ||\n (hours < thresholds.h && ['hh', hours]) ||\n (days <= 1 && ['d']) ||\n (days < thresholds.d && ['dd', days]);\n\n if (thresholds.w != null) {\n a =\n a ||\n (weeks <= 1 && ['w']) ||\n (weeks < thresholds.w && ['ww', weeks]);\n }\n a = a ||\n (months <= 1 && ['M']) ||\n (months < thresholds.M && ['MM', months]) ||\n (years <= 1 && ['y']) || ['yy', years];\n\n a[2] = withoutSuffix;\n a[3] = +posNegDuration > 0;\n a[4] = locale;\n return substituteTimeAgo.apply(null, a);\n }\n\n // This function allows you to set the rounding function for relative time strings\n function getSetRelativeTimeRounding(roundingFunction) {\n if (roundingFunction === undefined) {\n return round;\n }\n if (typeof roundingFunction === 'function') {\n round = roundingFunction;\n return true;\n }\n return false;\n }\n\n // This function allows you to set a threshold for relative time strings\n function getSetRelativeTimeThreshold(threshold, limit) {\n if (thresholds[threshold] === undefined) {\n return false;\n }\n if (limit === undefined) {\n return thresholds[threshold];\n }\n thresholds[threshold] = limit;\n if (threshold === 's') {\n thresholds.ss = limit - 1;\n }\n return true;\n }\n\n function humanize(argWithSuffix, argThresholds) {\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var withSuffix = false,\n th = thresholds,\n locale,\n output;\n\n if (typeof argWithSuffix === 'object') {\n argThresholds = argWithSuffix;\n argWithSuffix = false;\n }\n if (typeof argWithSuffix === 'boolean') {\n withSuffix = argWithSuffix;\n }\n if (typeof argThresholds === 'object') {\n th = Object.assign({}, thresholds, argThresholds);\n if (argThresholds.s != null && argThresholds.ss == null) {\n th.ss = argThresholds.s - 1;\n }\n }\n\n locale = this.localeData();\n output = relativeTime$1(this, !withSuffix, th, locale);\n\n if (withSuffix) {\n output = locale.pastFuture(+this, output);\n }\n\n return locale.postformat(output);\n }\n\n var abs$1 = Math.abs;\n\n function sign(x) {\n return (x > 0) - (x < 0) || +x;\n }\n\n function toISOString$1() {\n // for ISO strings we do not use the normal bubbling rules:\n // * milliseconds bubble up until they become hours\n // * days do not bubble at all\n // * months bubble up until they become years\n // This is because there is no context-free conversion between hours and days\n // (think of clock changes)\n // and also not between days and months (28-31 days per month)\n if (!this.isValid()) {\n return this.localeData().invalidDate();\n }\n\n var seconds = abs$1(this._milliseconds) / 1000,\n days = abs$1(this._days),\n months = abs$1(this._months),\n minutes,\n hours,\n years,\n s,\n total = this.asSeconds(),\n totalSign,\n ymSign,\n daysSign,\n hmsSign;\n\n if (!total) {\n // this is the same as C#'s (Noda) and python (isodate)...\n // but not other JS (goog.date)\n return 'P0D';\n }\n\n // 3600 seconds -> 60 minutes -> 1 hour\n minutes = absFloor(seconds / 60);\n hours = absFloor(minutes / 60);\n seconds %= 60;\n minutes %= 60;\n\n // 12 months -> 1 year\n years = absFloor(months / 12);\n months %= 12;\n\n // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n totalSign = total < 0 ? '-' : '';\n ymSign = sign(this._months) !== sign(total) ? '-' : '';\n daysSign = sign(this._days) !== sign(total) ? '-' : '';\n hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n return (\n totalSign +\n 'P' +\n (years ? ymSign + years + 'Y' : '') +\n (months ? ymSign + months + 'M' : '') +\n (days ? daysSign + days + 'D' : '') +\n (hours || minutes || seconds ? 'T' : '') +\n (hours ? hmsSign + hours + 'H' : '') +\n (minutes ? hmsSign + minutes + 'M' : '') +\n (seconds ? hmsSign + s + 'S' : '')\n );\n }\n\n var proto$2 = Duration.prototype;\n\n proto$2.isValid = isValid$1;\n proto$2.abs = abs;\n proto$2.add = add$1;\n proto$2.subtract = subtract$1;\n proto$2.as = as;\n proto$2.asMilliseconds = asMilliseconds;\n proto$2.asSeconds = asSeconds;\n proto$2.asMinutes = asMinutes;\n proto$2.asHours = asHours;\n proto$2.asDays = asDays;\n proto$2.asWeeks = asWeeks;\n proto$2.asMonths = asMonths;\n proto$2.asQuarters = asQuarters;\n proto$2.asYears = asYears;\n proto$2.valueOf = valueOf$1;\n proto$2._bubble = bubble;\n proto$2.clone = clone$1;\n proto$2.get = get$2;\n proto$2.milliseconds = milliseconds;\n proto$2.seconds = seconds;\n proto$2.minutes = minutes;\n proto$2.hours = hours;\n proto$2.days = days;\n proto$2.weeks = weeks;\n proto$2.months = months;\n proto$2.years = years;\n proto$2.humanize = humanize;\n proto$2.toISOString = toISOString$1;\n proto$2.toString = toISOString$1;\n proto$2.toJSON = toISOString$1;\n proto$2.locale = locale;\n proto$2.localeData = localeData;\n\n proto$2.toIsoString = deprecate(\n 'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n toISOString$1\n );\n proto$2.lang = lang;\n\n // FORMATTING\n\n addFormatToken('X', 0, 0, 'unix');\n addFormatToken('x', 0, 0, 'valueOf');\n\n // PARSING\n\n addRegexToken('x', matchSigned);\n addRegexToken('X', matchTimestamp);\n addParseToken('X', function (input, array, config) {\n config._d = new Date(parseFloat(input) * 1000);\n });\n addParseToken('x', function (input, array, config) {\n config._d = new Date(toInt(input));\n });\n\n //! moment.js\n\n hooks.version = '2.30.1';\n\n setHookCallback(createLocal);\n\n hooks.fn = proto;\n hooks.min = min;\n hooks.max = max;\n hooks.now = now;\n hooks.utc = createUTC;\n hooks.unix = createUnix;\n hooks.months = listMonths;\n hooks.isDate = isDate;\n hooks.locale = getSetGlobalLocale;\n hooks.invalid = createInvalid;\n hooks.duration = createDuration;\n hooks.isMoment = isMoment;\n hooks.weekdays = listWeekdays;\n hooks.parseZone = createInZone;\n hooks.localeData = getLocale;\n hooks.isDuration = isDuration;\n hooks.monthsShort = listMonthsShort;\n hooks.weekdaysMin = listWeekdaysMin;\n hooks.defineLocale = defineLocale;\n hooks.updateLocale = updateLocale;\n hooks.locales = listLocales;\n hooks.weekdaysShort = listWeekdaysShort;\n hooks.normalizeUnits = normalizeUnits;\n hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n hooks.calendarFormat = getCalendarFormat;\n hooks.prototype = proto;\n\n // currently HTML5 input type only supports 24-hour formats\n hooks.HTML5_FMT = {\n DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // \n DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // \n DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // \n DATE: 'YYYY-MM-DD', // \n TIME: 'HH:mm', // \n TIME_SECONDS: 'HH:mm:ss', // \n TIME_MS: 'HH:mm:ss.SSS', // \n WEEK: 'GGGG-[W]WW', // \n MONTH: 'YYYY-MM', // \n };\n\n return hooks;\n\n})));\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","import js_cookie from 'js-cookie';\r\n\r\nconst STORAGE_NAME_LOGIN = 'session_login';\r\nconst STORAGE_NAME_IS_LOGGED_IN = 'session_is_logged_in';\r\nconst STORAGE_NAME_LANGUAGE = 'session_language';\r\nconst STORAGE_NAME_USERDATA = 'user_data';\r\nconst PREFERRED_CLIENT = 'preferred_client';\r\n\r\nexport class Session {\r\n protected b64auth: string;\r\n protected _isLoggedIn: boolean;\r\n protected userdata;\r\n\r\n constructor() {\r\n var f = 5;\r\n this.b64auth = js_cookie.get(STORAGE_NAME_LOGIN);\r\n this._isLoggedIn = !!this.b64auth;\r\n\r\n if (localStorage) {\r\n let tmp = localStorage.getItem(STORAGE_NAME_USERDATA);\r\n this.userdata = tmp ? JSON.parse(tmp) : null;\r\n }\r\n if (!this.userdata) {\r\n let tmp = js_cookie.getJSON(STORAGE_NAME_USERDATA);\r\n this.userdata = tmp || null;\r\n }\r\n }\r\n\r\n isLoggedIn() {\r\n return this._isLoggedIn;\r\n }\r\n\r\n setLoggedIn(enable) {\r\n this._isLoggedIn = enable;\r\n }\r\n\r\n setAuthString(b64auth, remember = false) {\r\n this.b64auth = b64auth;\r\n // im Cookie speichern\r\n if (this.b64auth) {\r\n js_cookie.set(STORAGE_NAME_LOGIN, this.b64auth, {\r\n expires: remember ? 365 : 1\r\n });\r\n } else {\r\n js_cookie.remove(STORAGE_NAME_LOGIN);\r\n }\r\n }\r\n\r\n getAuthString() {\r\n return this.b64auth;\r\n }\r\n\r\n setUserData(name, value) {\r\n this.userdata = this.userdata || {};\r\n this.userdata[name] = value;\r\n\r\n let tmpData = JSON.stringify(this.userdata);\r\n // im localStorage speichern\r\n if (localStorage) {\r\n localStorage.setItem(STORAGE_NAME_USERDATA, tmpData);\r\n }\r\n // im Cookie speichern\r\n js_cookie.set(STORAGE_NAME_USERDATA, tmpData);\r\n }\r\n\r\n public getUserData(name: string): any {\r\n return (this.userdata || {})[name];\r\n }\r\n\r\n getLanguage(): string {\r\n return this.getUserData(STORAGE_NAME_LANGUAGE);\r\n }\r\n\r\n setLanguage(lang: string) {\r\n this.setUserData(STORAGE_NAME_LANGUAGE, lang);\r\n }\r\n\r\n setPreferredClient(clientID: number) {\r\n if (isNaN(clientID)) {\r\n js_cookie.remove(PREFERRED_CLIENT);\r\n } else {\r\n js_cookie.set(PREFERRED_CLIENT, clientID);\r\n }\r\n }\r\n}\r\n\r\nconst SessionInstance = new Session();\r\nexport default SessionInstance;\r\n","import Session from './session';\r\nimport Moment from 'moment';\r\n\r\nexport function getAuthString(token: string): string\r\nexport function getAuthString(username: string, password: string): string\r\nexport function getAuthString(username_token: string, password?: string): string {\r\n /*\r\n * Erstellt ein String für Basic oder Token Authentifizierung\r\n */\r\n if (password != null) {\r\n return 'Basic ' + btoa(`${username_token}:${password}`);\r\n } else {\r\n return `Token ${username_token}`;\r\n }\r\n}\r\n\r\nexport function getUrlParameter(url: string): { FullPath: string, Url: string, Parameter: Array } {\r\n /*\r\n * Trennt URL Parameter auf und gibt ein Objekt mit URL und Parameterliste zurück\r\n */\r\n if (!url) {\r\n return null;\r\n }\r\n\r\n var result = {\r\n FullPath: url,\r\n Url: null,\r\n Parameter: null\r\n };\r\n\r\n var tmpSplit = url.split('?');\r\n result.Url = tmpSplit[0];\r\n\r\n // Url Parameter weiter auftrennen\r\n if (tmpSplit.length > 1) {\r\n var parameterList = {};\r\n var paramSplit = tmpSplit[1].split('&');\r\n for (var i = 0; i < paramSplit.length; i++) {\r\n var keyVal = paramSplit[i].split('=');\r\n if (keyVal.length > 1) {\r\n parameterList[keyVal[0]] = keyVal[1];\r\n } else {\r\n parameterList[keyVal[0]] = null;\r\n }\r\n }\r\n result.Parameter = parameterList;\r\n }\r\n\r\n return result;\r\n}\r\n\r\nexport function getParameterFromUrl(sParam: string): string {\r\n /*\r\n * Gibt den Wert eines URL-Parameters zurück\r\n */\r\n const sPageURL = decodeURIComponent(window.location.search.substring(1)),\r\n sURLVariables = sPageURL.split('&');\r\n\r\n for (let i = 0; i < sURLVariables.length; i++) {\r\n const sParameterName = sURLVariables[i].split('=');\r\n\r\n if (sParameterName[0] === sParam) {\r\n return sParameterName[1] === undefined ? null : sParameterName[1];\r\n }\r\n }\r\n}\r\n\r\nexport function setUrlParameter(name: string, value: string) {\r\n /*\r\n * Setzt den Wert eines URL-Parameters\r\n */\r\n name = encodeURI(name);\r\n value = encodeURI(value);\r\n\r\n var sPageURL = decodeURIComponent(window.location.search.substring(1)),\r\n sURLVariables = sPageURL.split('&');\r\n\r\n var hasSet = false;\r\n for (let i = 0; i < sURLVariables.length; i++) {\r\n const sParameterName = sURLVariables[i].split('=');\r\n\r\n if (sParameterName[0] === name) {\r\n sParameterName[1] = value;\r\n sURLVariables[i] = sParameterName.join('=');\r\n hasSet = true;\r\n break;\r\n }\r\n }\r\n\r\n if (!hasSet) {\r\n sURLVariables[sURLVariables.length] = [name, value].join('=');\r\n }\r\n\r\n document.location.search = sURLVariables.join('&');\r\n}\r\n\r\nexport function isUrl(url: string) {\r\n /*\r\n * Prüft ob die URL mit http:// oder https:// gebinnt\r\n */\r\n if (!url) {\r\n return null;\r\n }\r\n\r\n return url.startsWith('http://') || url.startsWith('https://');\r\n}\r\n\r\nexport function isGuid(id: string) {\r\n /*\r\n * Prüft ob die URL mit http:// oder https:// gebinnt\r\n */\r\n if (!id) {\r\n return false;\r\n }\r\n\r\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(id);\r\n}\r\n\r\nexport function isCordova() {\r\n /*\r\n * Prüft anhand URL ob es eine cordova / App Anwendung ist\r\n */\r\n return document.URL.indexOf('http://') === -1 && document.URL.indexOf('https://') === -1;\r\n}\r\n\r\nlet _fileSystem = null;\r\nexport function getFileSystem() {\r\n /*\r\n * Fragt das Dateisystem an, gibt ein promise zurück\r\n */\r\n var reqDefer = $.Deferred();\r\n\r\n if (_fileSystem) {\r\n reqDefer.resolve(_fileSystem);\r\n } else {\r\n window.requestFileSystem(LocalFileSystem.PERSISTENT,\r\n 0,\r\n (fs) => {\r\n reqDefer.resolve(fs);\r\n },\r\n (msg) => {\r\n reqDefer.reject(msg);\r\n }\r\n );\r\n }\r\n return reqDefer.promise();\r\n}\r\n\r\nexport function getValidLink(link) {\r\n /*\r\n * Prüft ob 'externer' Link http:// vorgestellt hat und fügt bei Bedarf hinzu.\r\n */\r\n if (!link) {\r\n return null;\r\n }\r\n\r\n if (link.indexOf('http:/') === 0 || link.indexOf('https:/') === 0) {\r\n return link;\r\n }\r\n\r\n return 'http://' + link;\r\n}\r\n\r\nexport function getCurrentLanguage(dflt?) {\r\n /*\r\n * Lädt unter Beachtung aller Quellen die Sprache\r\n * Sprachangabe über URL Parameter überschreibt die hinterlegte Sprache\r\n */\r\n return getParameterFromUrl('lang') || Session.getLanguage() || dflt || \"de\";\r\n}\r\n\r\nexport function setNewLanguage(lang) {\r\n /*\r\n * Speichert die neu gewählte sprache ab\r\n */\r\n Session.setLanguage(lang);\r\n setUrlParameter('lang', lang);\r\n}\r\n\r\nexport function prepareChrome() {\r\n /*\r\n * Wartet bis chrome das Dateisystem richtig initialisiert hat\r\n */\r\n\r\n // TODO check what is required\r\n\r\n var pluginReady = $.Deferred();\r\n var sizeReady = $.Deferred();\r\n\r\n // persistent storage erhöhen\r\n if (cordova.platformId === 'browser' &&\r\n typeof (window.initPersistentFileSystem) != 'undefined') {\r\n var bytes = 50 * 1024 * 1024;\r\n window.initPersistentFileSystem(bytes,\r\n () => {\r\n sizeReady.resolve();\r\n },\r\n () => {\r\n sizeReady.resolve();\r\n });\r\n } else {\r\n sizeReady.resolve();\r\n }\r\n\r\n // warten bis Dateisystem bereit\r\n if (!!window.isFilePluginReadyRaised) {\r\n window.addEventListener('filePluginIsReady', function() {\r\n pluginReady.resolve();\r\n }, false);\r\n if (window.isFilePluginReadyRaised()) {\r\n pluginReady.resolve();\r\n }\r\n } else {\r\n pluginReady.resolve();\r\n }\r\n\r\n return $.when.apply($, [pluginReady, sizeReady]);\r\n}\r\n\r\nexport function AddWorkDays(date: Date, daysToAdd: number, disabledDays?: Array<{ date: Date }>) {\r\n date = new Date(date.getTime());\r\n date.setHours(0, 0, 0, 0);\r\n\r\n while (daysToAdd > 0) {\r\n const day = date.getDay();\r\n if (day != 0 && day != 6 && !(disabledDays || []).some((holiday: { date: Date }) => holiday.date.getTime() == date.getTime())) {\r\n daysToAdd--;\r\n }\r\n\r\n date.setDate(date.getDate() + 1);\r\n }\r\n\r\n return date;\r\n}\r\n\r\nexport function ValidateDate(date: string | Date, disabledDays?: Array<{ date: Date }>): boolean {\r\n if (typeof date === 'string') {\r\n // 1st try\r\n let dt = Moment(date, 'L');\r\n if (!dt.isValid()) {\r\n // 2nd try\r\n dt = Moment(date);\r\n\r\n if (!dt.isValid()) {\r\n return false;\r\n }\r\n }\r\n\r\n date = dt.toDate();\r\n }\r\n\r\n const checkDate = new Date(date.getTime());\r\n checkDate.setHours(0, 0, 0, 0);\r\n const day = checkDate.getDay();\r\n\r\n return day != 0 && day != 6 && !(disabledDays || []).some((holiday: { date: Date }) => holiday.date.getTime() == checkDate.getTime());\r\n}\r\n\r\n// custom form validation rule\r\n$.fn.form.settings.rules.isValidDate = function(value: string) {\r\n const dt = Moment(value, 'L');\r\n\r\n if (!dt.isValid()) {\r\n return false;\r\n }\r\n\r\n const date = dt.toDate();\r\n const day = date.getDay();\r\n\r\n // weekend as invalid time\r\n return day != 0 && day != 6;\r\n};\r\n","import * as Utils from './utils';\r\nimport Session from './session'; //const serviceUrl = \"http://sandersoftware.dyndns.org/restservice/\";//accounts\r\n\r\nexport const ServiceUrl = 'api/';\r\n\r\nexport function login(token: string)\r\nexport function login(username: string, password?: string, onSuccess?, onError?)\r\nexport function login(username: string, password?: string, onSuccess?, onError?) {\r\n /*\r\n * Meldet sich am awenko Service an\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Utils.getAuthString(username, password)\r\n },\r\n url: `${ServiceUrl}login/validate`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function logout() {\r\n /*\r\n * Meldet den Benutzer ab\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}login/logout`,\r\n type: \"POST\",\r\n dataType: 'json'\r\n });\r\n}\r\n\r\nexport function requestPasswordReset(username) {\r\n /*\r\n * Fordert das Zurücksetzen des Passwortes an\r\n */\r\n return $.ajax(`${ServiceUrl}login/requestPasswordReset?username=${username}`);\r\n}\r\n\r\nexport function resetPasswordReset(username, password, token) {\r\n /*\r\n * Fordert das Zurücksetzen des Passwortes an\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n url: `${ServiceUrl}login/resetPassword`,\r\n data: JSON.stringify({\r\n username,\r\n password,\r\n token\r\n }),\r\n dataType: 'json'\r\n });\r\n}\r\n\r\nexport function registerClient(data, onSuccess, onError) {\r\n /*\r\n * Neuen Kunden anlegen\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n url: `${ServiceUrl}client/create`,\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function checkUsername(username: string, onSuccess?: Function, onError?: Function) {\r\n /*\r\n * Prüft auf vorhandensein eines Benutzernamens\r\n */\r\n return $.ajax({\r\n type: \"GET\",\r\n url: `${ServiceUrl}login/userexists?username=${encodeURIComponent(username)}`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function getClientData(onSuccess?, onError?) {\r\n /*\r\n * Zugewiesenen Kundenbetreuer laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}client/getCurrentClient`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function getAllowedClients(onSuccess?, onError?) {\r\n /*\r\n * Zugewiesenen Kundenaccounts laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}client/getAllowedClients`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function updateUserInfo(data) {\r\n /*\r\n * Benutzerinformationen aktualisieren\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n url: `${ServiceUrl}user/updateUserInfo`,\r\n });\r\n}\r\n\r\nexport function updateUserLogin(data) {\r\n /*\r\n * Benutzerinformationen aktualisieren\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n url: `${ServiceUrl}user/updateUserLogin`,\r\n });\r\n}\r\n\r\nexport function updateClientInfo(data) {\r\n /*\r\n * Mandantinformationen aktualisieren\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n data: JSON.stringify(data),\r\n dataType: 'json',\r\n url: `${ServiceUrl}client/updateClientInfo`,\r\n });\r\n}\r\n\r\nexport function getAssignedSupporter(onSuccess?, onError?) {\r\n /*\r\n * Zugewiesenen Kundenbetreuer laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}supporter/getSupporter`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function getSupporterThumbUrl(fileId) {\r\n return encodeURI(`${ServiceUrl}supporter/getPhoto?fileId=${fileId}`);\r\n}\r\n\r\nexport function getLastXCleaningPlans(count: number, onSuccess?: Function, onError?: Function) {\r\n /*\r\n * letzen X Reinigungspläne laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}cleaningplan/lastEntries?num=${count}`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function getLastXLabReports(count: number, onSuccess?: Function, onError?: Function) {\r\n /*\r\n * letzen X Laborberichte laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}labreports/lastEntries?num=${count}`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function getLastXUserFiles(count: number) {\r\n /*\r\n * letzen X Dateien laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}files/lastEntries?num=${count}`\r\n });\r\n}\r\n\r\nexport function getCleaningPlans(start: number, count: number, filter: string, docTypesFilter?: string) {\r\n /*\r\n * Bereich von Reinigungsplänen laden\r\n */\r\n count = isNaN(count) ? 50 : count;\r\n start = isNaN(start) ? 0 : start;\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}cleaningplan/getRange?start=${start}&count=${count}&filter=${filter || null}&docTypesFilter=${docTypesFilter || null}`\r\n });\r\n}\r\n\r\nexport function getLabReports(start, count, filter) {\r\n /*\r\n * Bereich von Reinigungsplänen laden\r\n */\r\n count = isNaN(count) ? 50 : count;\r\n start = isNaN(start) ? 0 : start;\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}labreports/getRange?start=${start}&count=${count}&filter=${filter || null}`\r\n });\r\n}\r\n\r\nexport function getCleaningPlansDownloadUrl(id) {\r\n /*\r\n * Stellt einen Link zum Download der Datei bereit\r\n */\r\n return encodeURI(`${ServiceUrl}cleaningplan/download?id=${id}`);\r\n}\r\n\r\nexport function downloadCleaningPlan(id) {\r\n var deferred = new $.Deferred();\r\n var xhr = new XMLHttpRequest();\r\n var uri = `${ServiceUrl}cleaningplan/download?id=${id}`;\r\n xhr.open(\"GET\", uri, true);\r\n xhr.responseType = 'blob';\r\n xhr.setRequestHeader(\"Authorization\", Session.getAuthString());\r\n\r\n xhr.onreadystatechange = function(e) {\r\n if (this.readyState == 4 && this.status == 200) {\r\n var fileName = decodeURI(this.getResponseHeader('x-filename') || 'download');\r\n if (window.navigator['msSaveBlob']) {\r\n window.navigator['msSaveBlob'](this.response, fileName);\r\n } else {\r\n var file = window.URL.createObjectURL(this.response);\r\n var link = document.createElement('a');\r\n link.href = file;\r\n link.target = '_blank';\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n setTimeout(function() {\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(file);\r\n }, 100);\r\n }\r\n deferred.resolve();\r\n } else if (xhr.readyState === 4 && xhr.status !== 200) {\r\n deferred.reject(xhr.status);\r\n }\r\n };\r\n xhr.onprogress = function(e) {\r\n var currentProgress = e.loaded * 100 / e.total;\r\n deferred.progress(currentProgress);\r\n };\r\n\r\n xhr.send();\r\n\r\n return deferred.promise();\r\n}\r\n\r\nexport function sendMessage(messageData) {\r\n /*\r\n * nachricht and den zugewiesenen Kundenbetreuer senden\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}supporter/sendMessage`,\r\n dataType: 'json',\r\n data: JSON.stringify(messageData)\r\n });\r\n}\r\n\r\nexport function sendOrder(items, cartDetails) {\r\n /*\r\n * Bestellung and den zugewiesenen Kundenbetreuer senden\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}supporter/sendOrder`,\r\n dataType: 'json',\r\n data: JSON.stringify({\r\n items,\r\n cartDetails\r\n })\r\n });\r\n}\r\n\r\nexport function requestPickup(items, details) {\r\n /*\r\n * Bestellung and den zugewiesenen Kundenbetreuer senden\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}supporter/requestPickup`,\r\n dataType: 'json',\r\n data: JSON.stringify({\r\n items,\r\n details\r\n })\r\n });\r\n}\r\n\r\nexport function getLastXDocuments(count: number, onSuccess?: Function, onError?: Function) {\r\n /*\r\n * Die letzen {count} neuen Dateien laden\r\n */\r\n count = isNaN(count) ? 10 : count;\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}documentinfo/lastEntries?num=${count}`,\r\n success: (data) => {\r\n if (onSuccess) {\r\n onSuccess(data);\r\n }\r\n },\r\n error: (msg) => {\r\n if (onError) {\r\n onError(msg);\r\n }\r\n }\r\n });\r\n}\r\n\r\nexport function getDocuments(start: number, count: number, filter: string, docTypesFilter?: string) {\r\n /*\r\n * Die letzen {count} neuen Dateien laden\r\n */\r\n count = isNaN(count) ? 50 : count;\r\n start = isNaN(start) ? 0 : start;\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}documentinfo/getRange?start=${start}&count=${count}&filter=${filter || null}&docTypesFilter=${docTypesFilter || null}`\r\n });\r\n}\r\n\r\nexport function getDocumentDownloadUrl(uid) {\r\n /*\r\n * Stellt einen Link zum Download der Datei bereit\r\n */\r\n return encodeURI(`${ServiceUrl}documentinfo/downloadfile?uid=${uid}`);\r\n}\r\n\r\nexport function getDocTypes() {\r\n /*\r\n * Alle verwendeten Dokument Typen laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}documentinfo/getDocTypes`\r\n });\r\n}\r\n\r\nexport function getCleaningPlanTypes() {\r\n /*\r\n * Alle verwendeten Reinigungsplan Typen laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}cleaningplan/getCleaningPlanTypes`\r\n });\r\n}\r\n\r\nexport function downloadDocument(uid: string) {\r\n return downloadX(`${ServiceUrl}documentinfo/downloadfile?uid=${uid}`);\r\n}\r\n\r\nexport function downloadFile(uid: string) {\r\n return downloadX(`${ServiceUrl}files/downloadfile?uniqueFileName=${uid}`);\r\n}\r\n\r\nexport function downloadX(uri: string) {\r\n const deferred = $.Deferred();\r\n const xhr = new XMLHttpRequest();\r\n xhr.open(\"GET\", uri, true);\r\n xhr.responseType = 'blob';\r\n xhr.setRequestHeader(\"Authorization\", Session.getAuthString());\r\n\r\n xhr.onreadystatechange = function(e: Event) {\r\n if (this.readyState == 4 && this.status == 200) {\r\n const fileName = decodeURI(this.getResponseHeader('x-filename') || 'download');\r\n if (window.navigator['msSaveBlob']) {\r\n window.navigator['msSaveBlob'](this.response, fileName);\r\n } else {\r\n const file = window.URL.createObjectURL(this.response);\r\n const link = document.createElement('a');\r\n link.href = file;\r\n link.target = '_blank';\r\n link.download = fileName;\r\n document.body.appendChild(link);\r\n link.click();\r\n setTimeout(function() {\r\n document.body.removeChild(link);\r\n window.URL.revokeObjectURL(file);\r\n }, 100);\r\n }\r\n deferred.resolve();\r\n } else if (xhr.readyState === 4 && xhr.status !== 200) {\r\n deferred.reject(xhr.status);\r\n }\r\n };\r\n xhr.onprogress = function(e) {\r\n const currentProgress = e.loaded * 100 / e.total;\r\n deferred.progress(currentProgress);\r\n };\r\n\r\n xhr.send();\r\n\r\n return deferred.promise();\r\n}\r\n\r\nexport function getLastXProducts(count) {\r\n /*\r\n * Die letzen {count} neuen Produkte laden\r\n */\r\n count = isNaN(count) ? 10 : count;\r\n let lang = Utils.getCurrentLanguage();\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}productinfo/lastEntries?num=${count}&lang=${lang}`\r\n });\r\n}\r\n\r\nexport function getProducts(start, count, filter) {\r\n /*\r\n * Die letzen {count} neuen Dateien laden\r\n */\r\n let lang = Utils.getCurrentLanguage();\r\n count = isNaN(count) ? 50 : count;\r\n start = isNaN(start) ? 0 : start;\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}productinfo/getProducts?start=${start}&count=${count}&lang=${lang}&filter=${filter || null}`\r\n });\r\n}\r\n\r\nexport function getProductsDistinct(start, count, filter) {\r\n /*\r\n * Die letzen {count} neuen Dateien laden\r\n */\r\n let lang = Utils.getCurrentLanguage();\r\n count = isNaN(count) ? 50 : count;\r\n start = isNaN(start) ? 0 : start;\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}productinfo/getProductsDistinct?start=${start}&count=${count}&lang=${lang}&filter=${filter || null}`\r\n });\r\n}\r\n\r\nexport function getProductsByArticle(articleNr, start, count, filter) {\r\n /*\r\n * Einträge zu einem bestimmten Artikel laden\r\n */\r\n let lang = Utils.getCurrentLanguage();\r\n count = isNaN(count) ? 50 : count;\r\n start = isNaN(start) ? 0 : start;\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}productinfo/getProductsByArticle?articleNr=${articleNr}&start=${start}&count=${count}&lang=${lang}&filter=${filter || null}`\r\n });\r\n}\r\n\r\nexport function getProductsInfos() {\r\n /*\r\n * Produkt Broschüren laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString(),\r\n 'X-Portal-Language': Utils.getCurrentLanguage()\r\n },\r\n url: `${ServiceUrl}productinfo/getProductsInfos`\r\n });\r\n}\r\n\r\nexport function checkFileExists(name: string) {\r\n /*\r\n * Prüft ob die Datei bereits existiert\r\n */\r\n return $.ajax({\r\n type: \"GET\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString(),\r\n 'X-Portal-Language': Utils.getCurrentLanguage()\r\n },\r\n url: `${ServiceUrl}files/fileExists?filename=${encodeURIComponent(name)}`\r\n });\r\n}\r\n\r\nexport function uploadFile(file: File, comment?: string) {\r\n const formdata = new FormData(); // Anlegen eines FormData Objekts zum Versenden unserer Datei\r\n formdata.append('uploadfile', file); // Anhängen der Datei an das Objekt\r\n formdata.append(\"replace\", \"true\");\r\n formdata.append(\"name\", file.name); // Original Namen senden\r\n formdata.append(\"comment\", encodeURIComponent(comment));\r\n\r\n return $.ajax({\r\n type: 'POST',\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString(),\r\n 'X-Portal-Language': Utils.getCurrentLanguage()\r\n },\r\n url: `${ServiceUrl}files/upload`,\r\n data: formdata,\r\n processData: false,\r\n contentType: false\r\n });\r\n}\r\n\r\nexport function getUserFiles(start: number, count: number, filter: string) {\r\n /*\r\n * Die letzen {count} neuen Dateien laden\r\n */\r\n count = isNaN(count) ? 50 : count;\r\n start = isNaN(start) ? 0 : start;\r\n\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}files/getRange?start=${start}&count=${count}&filter=${filter || null}`\r\n });\r\n}\r\n\r\nexport function getUserFileVersion(fileID: string) {\r\n /*\r\n * Versionen einer Datei laden\r\n */\r\n\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}files/GetFileVersions?fileid=${fileID}`\r\n });\r\n}\r\n\r\n\r\nexport function deleteUserFile(fileID: string) {\r\n /*\r\n * Vom Benutzer hochgeladene Datei löschen (inkl. aller Versionen)\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}files/delete?fileID=${fileID}`,\r\n type: \"POST\",\r\n dataType: 'json',\r\n data: JSON.stringify({\r\n fileID\r\n })\r\n });\r\n}\r\n\r\nexport function getDatasheetUrl(id) {\r\n /*\r\n * Stellt einen Link zum Download eines Datenblattes bereit\r\n */\r\n return encodeURI(`${ServiceUrl}productinfo/downloadDatasheet?id=${id}`);\r\n}\r\n\r\nexport function getProductInfoUrl(name, branchOfIndustry) {\r\n /*\r\n * Stellt einen Link zum Download einer Produktbroschüre bereit\r\n */\r\n return encodeURI(`${ServiceUrl}productinfo/downloadProductsInfoFile?name=${encodeURIComponent(name)}&branch=${encodeURIComponent(branchOfIndustry)}`);\r\n}\r\n\r\nexport function getProductsOrders() {\r\n /*\r\n * Die letzen Bestellungen laden\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}productinfo/getLastOrders`\r\n });\r\n}\r\n\r\nexport function getProductsByOrder(orderNr: string) {\r\n /*\r\n * Artikel der Bestellung laden\r\n */\r\n const lang = Utils.getCurrentLanguage();\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}productinfo/getProductsByOrder?orderNr=${orderNr}&lang=${lang}`\r\n });\r\n}\r\n\r\nexport function setUserConditionsAccepted(isAccepted: boolean) {\r\n /*\r\n * AGB als akzeptiert deklarieren\r\n */\r\n return $.ajax({\r\n type: \"POST\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}user/setUserConditionsAccepted`,\r\n data: String(isAccepted),\r\n dataType: 'json'\r\n });\r\n}\r\n\r\nexport function isAcceptingConditionsRequired(authString: string) {\r\n /*\r\n * Prüfen ob AGB zuerst akzeptiert werden müssen\r\n */\r\n return $.ajax({\r\n type: \"GET\",\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': authString\r\n },\r\n url: `${ServiceUrl}user/isAcceptingConditionsRequired`,\r\n dataType: 'json'\r\n });\r\n}\r\n\r\nexport function logStatisticsEvent(module: string, action: string) {\r\n /*\r\n * Event für die Statistik erfassen\r\n */\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}statistics/logEvent`,\r\n type: \"POST\",\r\n dataType: 'json',\r\n data: JSON.stringify({\r\n Module: module,\r\n Action: action\r\n })\r\n });\r\n}\r\n\r\nexport function checkConnection() {\r\n let checkFinish = $.Deferred();\r\n\r\n let img = new Image();\r\n\r\n img.onload = () => {\r\n checkFinish.resolve();\r\n };\r\n img.onerror = () => {\r\n checkFinish.resolve();\r\n };\r\n img.src = ServiceUrl;\r\n\r\n setTimeout(() => {\r\n checkFinish.reject();\r\n }, 10000);\r\n\r\n return checkFinish.promise();\r\n}\r\n\r\nexport function getRelevantHolidays() {\r\n /*\r\n * Alle relevanten Feiertage laden\r\n */\r\n const now = new Date();\r\n const tzoffset = now.getTimezoneOffset() * 60000;\r\n const startWith = (new Date(now.getTime() - tzoffset)).toISOString().split('T')[0];\r\n\r\n return $.ajax({\r\n xhrFields: {\r\n withCredentials: true\r\n },\r\n headers: {\r\n 'Authorization': Session.getAuthString()\r\n },\r\n url: `${ServiceUrl}holiday/holidays?startWith=${startWith}`\r\n });\r\n}\r\n","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","export default function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}","import defineProperty from \"./defineProperty.js\";\nexport default function _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n module.exports = _typeof = function _typeof(obj) {\n return typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n } else {\n module.exports = _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n }\n\n return _typeof(obj);\n}\n\nmodule.exports = _typeof;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _objectSpread from '@babel/runtime/helpers/esm/objectSpread';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\n\nvar consoleLogger = {\n type: 'logger',\n log: function log(args) {\n this.output('log', args);\n },\n warn: function warn(args) {\n this.output('warn', args);\n },\n error: function error(args) {\n this.output('error', args);\n },\n output: function output(type, args) {\n if (console && console[type]) console[type].apply(console, args);\n }\n};\n\nvar Logger = function () {\n function Logger(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Logger);\n\n this.init(concreteLogger, options);\n }\n\n _createClass(Logger, [{\n key: \"init\",\n value: function init(concreteLogger) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.prefix = options.prefix || 'i18next:';\n this.logger = concreteLogger || consoleLogger;\n this.options = options;\n this.debug = options.debug;\n }\n }, {\n key: \"setDebug\",\n value: function setDebug(bool) {\n this.debug = bool;\n }\n }, {\n key: \"log\",\n value: function log() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return this.forward(args, 'log', '', true);\n }\n }, {\n key: \"warn\",\n value: function warn() {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return this.forward(args, 'warn', '', true);\n }\n }, {\n key: \"error\",\n value: function error() {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return this.forward(args, 'error', '');\n }\n }, {\n key: \"deprecate\",\n value: function deprecate() {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n }\n }, {\n key: \"forward\",\n value: function forward(args, lvl, prefix, debugOnly) {\n if (debugOnly && !this.debug) return null;\n if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n return this.logger[lvl](args);\n }\n }, {\n key: \"create\",\n value: function create(moduleName) {\n return new Logger(this.logger, _objectSpread({}, {\n prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n }, this.options));\n }\n }]);\n\n return Logger;\n}();\n\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n function EventEmitter() {\n _classCallCheck(this, EventEmitter);\n\n this.observers = {};\n }\n\n _createClass(EventEmitter, [{\n key: \"on\",\n value: function on(events, listener) {\n var _this = this;\n\n events.split(' ').forEach(function (event) {\n _this.observers[event] = _this.observers[event] || [];\n\n _this.observers[event].push(listener);\n });\n return this;\n }\n }, {\n key: \"off\",\n value: function off(event, listener) {\n if (!this.observers[event]) return;\n\n if (!listener) {\n delete this.observers[event];\n return;\n }\n\n this.observers[event] = this.observers[event].filter(function (l) {\n return l !== listener;\n });\n }\n }, {\n key: \"emit\",\n value: function emit(event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (this.observers[event]) {\n var cloned = [].concat(this.observers[event]);\n cloned.forEach(function (observer) {\n observer.apply(void 0, args);\n });\n }\n\n if (this.observers['*']) {\n var _cloned = [].concat(this.observers['*']);\n\n _cloned.forEach(function (observer) {\n observer.apply(observer, [event].concat(args));\n });\n }\n }\n }]);\n\n return EventEmitter;\n}();\n\nfunction defer() {\n var res;\n var rej;\n var promise = new Promise(function (resolve, reject) {\n res = resolve;\n rej = reject;\n });\n promise.resolve = res;\n promise.reject = rej;\n return promise;\n}\nfunction makeString(object) {\n if (object == null) return '';\n return '' + object;\n}\nfunction copy(a, s, t) {\n a.forEach(function (m) {\n if (s[m]) t[m] = s[m];\n });\n}\n\nfunction getLastOfPath(object, path, Empty) {\n function cleanKey(key) {\n return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n }\n\n function canNotTraverseDeeper() {\n return !object || typeof object === 'string';\n }\n\n var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n\n while (stack.length > 1) {\n if (canNotTraverseDeeper()) return {};\n var key = cleanKey(stack.shift());\n if (!object[key] && Empty) object[key] = new Empty();\n\n if (Object.prototype.hasOwnProperty.call(object, key)) {\n object = object[key];\n } else {\n object = {};\n }\n }\n\n if (canNotTraverseDeeper()) return {};\n return {\n obj: object,\n k: cleanKey(stack.shift())\n };\n}\n\nfunction setPath(object, path, newValue) {\n var _getLastOfPath = getLastOfPath(object, path, Object),\n obj = _getLastOfPath.obj,\n k = _getLastOfPath.k;\n\n obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n var _getLastOfPath2 = getLastOfPath(object, path, Object),\n obj = _getLastOfPath2.obj,\n k = _getLastOfPath2.k;\n\n obj[k] = obj[k] || [];\n if (concat) obj[k] = obj[k].concat(newValue);\n if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n var _getLastOfPath3 = getLastOfPath(object, path),\n obj = _getLastOfPath3.obj,\n k = _getLastOfPath3.k;\n\n if (!obj) return undefined;\n return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n var value = getPath(data, key);\n\n if (value !== undefined) {\n return value;\n }\n\n return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n for (var prop in source) {\n if (prop !== '__proto__' && prop !== 'constructor') {\n if (prop in target) {\n if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n if (overwrite) target[prop] = source[prop];\n } else {\n deepExtend(target[prop], source[prop], overwrite);\n }\n } else {\n target[prop] = source[prop];\n }\n }\n }\n\n return target;\n}\nfunction regexEscape(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '/': '/'\n};\nfunction escape(data) {\n if (typeof data === 'string') {\n return data.replace(/[&<>\"'\\/]/g, function (s) {\n return _entityMap[s];\n });\n }\n\n return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\n\nfunction deepFind(obj, path) {\n var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n if (!obj) return undefined;\n if (obj[path]) return obj[path];\n var paths = path.split(keySeparator);\n var current = obj;\n\n for (var i = 0; i < paths.length; ++i) {\n if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n return undefined;\n }\n\n if (current[paths[i]] === undefined) {\n var j = 2;\n var p = paths.slice(i, i + j).join(keySeparator);\n var mix = current[p];\n\n while (mix === undefined && paths.length > i + j) {\n j++;\n p = paths.slice(i, i + j).join(keySeparator);\n mix = current[p];\n }\n\n if (mix === undefined) return undefined;\n if (typeof mix === 'string') return mix;\n if (p && typeof mix[p] === 'string') return mix[p];\n var joinedPath = paths.slice(i + j).join(keySeparator);\n if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n return undefined;\n }\n\n current = current[paths[i]];\n }\n\n return current;\n}\n\nvar ResourceStore = function (_EventEmitter) {\n _inherits(ResourceStore, _EventEmitter);\n\n function ResourceStore(data) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n ns: ['translation'],\n defaultNS: 'translation'\n };\n\n _classCallCheck(this, ResourceStore);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(ResourceStore).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.data = data || {};\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n if (_this.options.ignoreJSONStructure === undefined) {\n _this.options.ignoreJSONStructure = true;\n }\n\n return _this;\n }\n\n _createClass(ResourceStore, [{\n key: \"addNamespaces\",\n value: function addNamespaces(ns) {\n if (this.options.ns.indexOf(ns) < 0) {\n this.options.ns.push(ns);\n }\n }\n }, {\n key: \"removeNamespaces\",\n value: function removeNamespaces(ns) {\n var index = this.options.ns.indexOf(ns);\n\n if (index > -1) {\n this.options.ns.splice(index, 1);\n }\n }\n }, {\n key: \"getResource\",\n value: function getResource(lng, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n var path = [lng, ns];\n if (key && typeof key !== 'string') path = path.concat(key);\n if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n }\n\n var result = getPath(this.data, path);\n if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n }\n }, {\n key: \"addResource\",\n value: function addResource(lng, ns, key, value) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n silent: false\n };\n var keySeparator = this.options.keySeparator;\n if (keySeparator === undefined) keySeparator = '.';\n var path = [lng, ns];\n if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n value = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n setPath(this.data, path, value);\n if (!options.silent) this.emit('added', lng, ns, key, value);\n }\n }, {\n key: \"addResources\",\n value: function addResources(lng, ns, resources) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n silent: false\n };\n\n for (var m in resources) {\n if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n silent: true\n });\n }\n\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"addResourceBundle\",\n value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n silent: false\n };\n var path = [lng, ns];\n\n if (lng.indexOf('.') > -1) {\n path = lng.split('.');\n deep = resources;\n resources = ns;\n ns = path[1];\n }\n\n this.addNamespaces(ns);\n var pack = getPath(this.data, path) || {};\n\n if (deep) {\n deepExtend(pack, resources, overwrite);\n } else {\n pack = _objectSpread({}, pack, resources);\n }\n\n setPath(this.data, path, pack);\n if (!options.silent) this.emit('added', lng, ns, resources);\n }\n }, {\n key: \"removeResourceBundle\",\n value: function removeResourceBundle(lng, ns) {\n if (this.hasResourceBundle(lng, ns)) {\n delete this.data[lng][ns];\n }\n\n this.removeNamespaces(ns);\n this.emit('removed', lng, ns);\n }\n }, {\n key: \"hasResourceBundle\",\n value: function hasResourceBundle(lng, ns) {\n return this.getResource(lng, ns) !== undefined;\n }\n }, {\n key: \"getResourceBundle\",\n value: function getResourceBundle(lng, ns) {\n if (!ns) ns = this.options.defaultNS;\n if (this.options.compatibilityAPI === 'v1') return _objectSpread({}, {}, this.getResource(lng, ns));\n return this.getResource(lng, ns);\n }\n }, {\n key: \"getDataByLanguage\",\n value: function getDataByLanguage(lng) {\n return this.data[lng];\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return this.data;\n }\n }]);\n\n return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n processors: {},\n addPostProcessor: function addPostProcessor(module) {\n this.processors[module.name] = module;\n },\n handle: function handle(processors, value, key, options, translator) {\n var _this = this;\n\n processors.forEach(function (processor) {\n if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n });\n return value;\n }\n};\n\nvar checkedLoadedFor = {};\n\nvar Translator = function (_EventEmitter) {\n _inherits(Translator, _EventEmitter);\n\n function Translator(services) {\n var _this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Translator);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Translator).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n _this.options = options;\n\n if (_this.options.keySeparator === undefined) {\n _this.options.keySeparator = '.';\n }\n\n _this.logger = baseLogger.create('translator');\n return _this;\n }\n\n _createClass(Translator, [{\n key: \"changeLanguage\",\n value: function changeLanguage(lng) {\n if (lng) this.language = lng;\n }\n }, {\n key: \"exists\",\n value: function exists(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n interpolation: {}\n };\n var resolved = this.resolve(key, options);\n return resolved && resolved.res !== undefined;\n }\n }, {\n key: \"extractFromKey\",\n value: function extractFromKey(key, options) {\n var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n if (nsSeparator === undefined) nsSeparator = ':';\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n var namespaces = options.ns || this.options.defaultNS;\n\n if (nsSeparator && key.indexOf(nsSeparator) > -1) {\n var m = key.match(this.interpolator.nestingRegexp);\n\n if (m && m.length > 0) {\n return {\n key: key,\n namespaces: namespaces\n };\n }\n\n var parts = key.split(nsSeparator);\n if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n key = parts.join(keySeparator);\n }\n\n if (typeof namespaces === 'string') namespaces = [namespaces];\n return {\n key: key,\n namespaces: namespaces\n };\n }\n }, {\n key: \"translate\",\n value: function translate(keys, options, lastKey) {\n var _this2 = this;\n\n if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n options = this.options.overloadTranslationOptionHandler(arguments);\n }\n\n if (!options) options = {};\n if (keys === undefined || keys === null) return '';\n if (!Array.isArray(keys)) keys = [String(keys)];\n var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n\n var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n key = _this$extractFromKey.key,\n namespaces = _this$extractFromKey.namespaces;\n\n var namespace = namespaces[namespaces.length - 1];\n var lng = options.lng || this.language;\n var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n\n if (lng && lng.toLowerCase() === 'cimode') {\n if (appendNamespaceToCIMode) {\n var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n return namespace + nsSeparator + key;\n }\n\n return key;\n }\n\n var resolved = this.resolve(keys, options);\n var res = resolved && resolved.res;\n var resUsedKey = resolved && resolved.usedKey || key;\n var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n var resType = Object.prototype.toString.apply(res);\n var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n\n if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n if (!options.returnObjects && !this.options.returnObjects) {\n if (!this.options.returnedObjectHandler) {\n this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n }\n\n return this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread({}, options, {\n ns: namespaces\n })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n }\n\n if (keySeparator) {\n var resTypeIsArray = resType === '[object Array]';\n var copy = resTypeIsArray ? [] : {};\n var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n\n for (var m in res) {\n if (Object.prototype.hasOwnProperty.call(res, m)) {\n var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n copy[m] = this.translate(deepKey, _objectSpread({}, options, {\n joinArrays: false,\n ns: namespaces\n }));\n if (copy[m] === deepKey) copy[m] = res[m];\n }\n }\n\n res = copy;\n }\n } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n res = res.join(joinArrays);\n if (res) res = this.extendTranslation(res, keys, options, lastKey);\n } else {\n var usedDefault = false;\n var usedKey = false;\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var hasDefaultValue = Translator.hasDefaultValue(options);\n var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count) : '';\n var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n\n if (!this.isValidLookup(res) && hasDefaultValue) {\n usedDefault = true;\n res = defaultValue;\n }\n\n if (!this.isValidLookup(res)) {\n usedKey = true;\n res = key;\n }\n\n var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n\n if (usedKey || usedDefault || updateMissing) {\n this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n\n if (keySeparator) {\n var fk = this.resolve(key, _objectSpread({}, options, {\n keySeparator: false\n }));\n if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n }\n\n var lngs = [];\n var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n\n if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n for (var i = 0; i < fallbackLngs.length; i++) {\n lngs.push(fallbackLngs[i]);\n }\n } else if (this.options.saveMissingTo === 'all') {\n lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n } else {\n lngs.push(options.lng || this.language);\n }\n\n var send = function send(l, k, fallbackValue) {\n if (_this2.options.missingKeyHandler) {\n _this2.options.missingKeyHandler(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n _this2.backendConnector.saveMissing(l, namespace, k, updateMissing ? fallbackValue : res, updateMissing, options);\n }\n\n _this2.emit('missingKey', l, namespace, k, res);\n };\n\n if (this.options.saveMissing) {\n if (this.options.saveMissingPlurals && needsPluralHandling) {\n lngs.forEach(function (language) {\n _this2.pluralResolver.getSuffixes(language).forEach(function (suffix) {\n send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n });\n });\n } else {\n send(lngs, key, defaultValue);\n }\n }\n }\n\n res = this.extendTranslation(res, keys, options, resolved, lastKey);\n if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n if (usedKey && this.options.parseMissingKeyHandler) res = this.options.parseMissingKeyHandler(res);\n }\n\n return res;\n }\n }, {\n key: \"extendTranslation\",\n value: function extendTranslation(res, key, options, resolved, lastKey) {\n var _this3 = this;\n\n if (this.i18nFormat && this.i18nFormat.parse) {\n res = this.i18nFormat.parse(res, options, resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n resolved: resolved\n });\n } else if (!options.skipInterpolation) {\n if (options.interpolation) this.interpolator.init(_objectSpread({}, options, {\n interpolation: _objectSpread({}, this.options.interpolation, options.interpolation)\n }));\n var skipOnVariables = options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var nestBef;\n\n if (skipOnVariables) {\n var nb = res.match(this.interpolator.nestingRegexp);\n nestBef = nb && nb.length;\n }\n\n var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n if (this.options.interpolation.defaultVariables) data = _objectSpread({}, this.options.interpolation.defaultVariables, data);\n res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n\n if (skipOnVariables) {\n var na = res.match(this.interpolator.nestingRegexp);\n var nestAft = na && na.length;\n if (nestBef < nestAft) options.nest = false;\n }\n\n if (options.nest !== false) res = this.interpolator.nest(res, function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (lastKey && lastKey[0] === args[0] && !options.context) {\n _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n\n return null;\n }\n\n return _this3.translate.apply(_this3, args.concat([key]));\n }, options);\n if (options.interpolation) this.interpolator.reset();\n }\n\n var postProcess = options.postProcess || this.options.postProcess;\n var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n\n if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread({\n i18nResolved: resolved\n }, options) : options, this);\n }\n\n return res;\n }\n }, {\n key: \"resolve\",\n value: function resolve(keys) {\n var _this4 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var found;\n var usedKey;\n var exactUsedKey;\n var usedLng;\n var usedNS;\n if (typeof keys === 'string') keys = [keys];\n keys.forEach(function (k) {\n if (_this4.isValidLookup(found)) return;\n\n var extracted = _this4.extractFromKey(k, options);\n\n var key = extracted.key;\n usedKey = key;\n var namespaces = extracted.namespaces;\n if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n namespaces.forEach(function (ns) {\n if (_this4.isValidLookup(found)) return;\n usedNS = ns;\n\n if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n\n _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n }\n\n codes.forEach(function (code) {\n if (_this4.isValidLookup(found)) return;\n usedLng = code;\n var finalKey = key;\n var finalKeys = [finalKey];\n\n if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n } else {\n var pluralSuffix;\n if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count);\n if (needsPluralHandling && needsContextHandling) finalKeys.push(finalKey + pluralSuffix);\n if (needsContextHandling) finalKeys.push(finalKey += \"\".concat(_this4.options.contextSeparator).concat(options.context));\n if (needsPluralHandling) finalKeys.push(finalKey += pluralSuffix);\n }\n\n var possibleKey;\n\n while (possibleKey = finalKeys.pop()) {\n if (!_this4.isValidLookup(found)) {\n exactUsedKey = possibleKey;\n found = _this4.getResource(code, ns, possibleKey, options);\n }\n }\n });\n });\n });\n return {\n res: found,\n usedKey: usedKey,\n exactUsedKey: exactUsedKey,\n usedLng: usedLng,\n usedNS: usedNS\n };\n }\n }, {\n key: \"isValidLookup\",\n value: function isValidLookup(res) {\n return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n }\n }, {\n key: \"getResource\",\n value: function getResource(code, ns, key) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n return this.resourceStore.getResource(code, ns, key, options);\n }\n }], [{\n key: \"hasDefaultValue\",\n value: function hasDefaultValue(options) {\n var prefix = 'defaultValue';\n\n for (var option in options) {\n if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n return true;\n }\n }\n\n return false;\n }\n }]);\n\n return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\nvar LanguageUtil = function () {\n function LanguageUtil(options) {\n _classCallCheck(this, LanguageUtil);\n\n this.options = options;\n this.whitelist = this.options.supportedLngs || false;\n this.supportedLngs = this.options.supportedLngs || false;\n this.logger = baseLogger.create('languageUtils');\n }\n\n _createClass(LanguageUtil, [{\n key: \"getScriptPartFromCode\",\n value: function getScriptPartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return null;\n var p = code.split('-');\n if (p.length === 2) return null;\n p.pop();\n if (p[p.length - 1].toLowerCase() === 'x') return null;\n return this.formatLanguageCode(p.join('-'));\n }\n }, {\n key: \"getLanguagePartFromCode\",\n value: function getLanguagePartFromCode(code) {\n if (!code || code.indexOf('-') < 0) return code;\n var p = code.split('-');\n return this.formatLanguageCode(p[0]);\n }\n }, {\n key: \"formatLanguageCode\",\n value: function formatLanguageCode(code) {\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n var p = code.split('-');\n\n if (this.options.lowerCaseLng) {\n p = p.map(function (part) {\n return part.toLowerCase();\n });\n } else if (p.length === 2) {\n p[0] = p[0].toLowerCase();\n p[1] = p[1].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n } else if (p.length === 3) {\n p[0] = p[0].toLowerCase();\n if (p[1].length === 2) p[1] = p[1].toUpperCase();\n if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n }\n\n return p.join('-');\n }\n\n return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n }\n }, {\n key: \"isWhitelisted\",\n value: function isWhitelisted(code) {\n this.logger.deprecate('languageUtils.isWhitelisted', 'function \"isWhitelisted\" will be renamed to \"isSupportedCode\" in the next major - please make sure to rename it\\'s usage asap.');\n return this.isSupportedCode(code);\n }\n }, {\n key: \"isSupportedCode\",\n value: function isSupportedCode(code) {\n if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n code = this.getLanguagePartFromCode(code);\n }\n\n return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n }\n }, {\n key: \"getBestMatchFromCodes\",\n value: function getBestMatchFromCodes(codes) {\n var _this = this;\n\n if (!codes) return null;\n var found;\n codes.forEach(function (code) {\n if (found) return;\n\n var cleanedLng = _this.formatLanguageCode(code);\n\n if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n });\n\n if (!found && this.options.supportedLngs) {\n codes.forEach(function (code) {\n if (found) return;\n\n var lngOnly = _this.getLanguagePartFromCode(code);\n\n if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n found = _this.options.supportedLngs.find(function (supportedLng) {\n if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n });\n });\n }\n\n if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n return found;\n }\n }, {\n key: \"getFallbackCodes\",\n value: function getFallbackCodes(fallbacks, code) {\n if (!fallbacks) return [];\n if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n if (!code) return fallbacks[\"default\"] || [];\n var found = fallbacks[code];\n if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n if (!found) found = fallbacks[this.formatLanguageCode(code)];\n if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n if (!found) found = fallbacks[\"default\"];\n return found || [];\n }\n }, {\n key: \"toResolveHierarchy\",\n value: function toResolveHierarchy(code, fallbackCode) {\n var _this2 = this;\n\n var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n var codes = [];\n\n var addCode = function addCode(c) {\n if (!c) return;\n\n if (_this2.isSupportedCode(c)) {\n codes.push(c);\n } else {\n _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n }\n };\n\n if (typeof code === 'string' && code.indexOf('-') > -1) {\n if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n } else if (typeof code === 'string') {\n addCode(this.formatLanguageCode(code));\n }\n\n fallbackCodes.forEach(function (fc) {\n if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n });\n return codes;\n }\n }]);\n\n return LanguageUtil;\n}();\n\nvar sets = [{\n lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n nr: [1, 2],\n fc: 1\n}, {\n lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n nr: [1, 2],\n fc: 2\n}, {\n lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n nr: [1],\n fc: 3\n}, {\n lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n nr: [1, 2, 5],\n fc: 4\n}, {\n lngs: ['ar'],\n nr: [0, 1, 2, 3, 11, 100],\n fc: 5\n}, {\n lngs: ['cs', 'sk'],\n nr: [1, 2, 5],\n fc: 6\n}, {\n lngs: ['csb', 'pl'],\n nr: [1, 2, 5],\n fc: 7\n}, {\n lngs: ['cy'],\n nr: [1, 2, 3, 8],\n fc: 8\n}, {\n lngs: ['fr'],\n nr: [1, 2],\n fc: 9\n}, {\n lngs: ['ga'],\n nr: [1, 2, 3, 7, 11],\n fc: 10\n}, {\n lngs: ['gd'],\n nr: [1, 2, 3, 20],\n fc: 11\n}, {\n lngs: ['is'],\n nr: [1, 2],\n fc: 12\n}, {\n lngs: ['jv'],\n nr: [0, 1],\n fc: 13\n}, {\n lngs: ['kw'],\n nr: [1, 2, 3, 4],\n fc: 14\n}, {\n lngs: ['lt'],\n nr: [1, 2, 10],\n fc: 15\n}, {\n lngs: ['lv'],\n nr: [1, 2, 0],\n fc: 16\n}, {\n lngs: ['mk'],\n nr: [1, 2],\n fc: 17\n}, {\n lngs: ['mnk'],\n nr: [0, 1, 2],\n fc: 18\n}, {\n lngs: ['mt'],\n nr: [1, 2, 11, 20],\n fc: 19\n}, {\n lngs: ['or'],\n nr: [2, 1],\n fc: 2\n}, {\n lngs: ['ro'],\n nr: [1, 2, 20],\n fc: 20\n}, {\n lngs: ['sl'],\n nr: [5, 1, 2, 3],\n fc: 21\n}, {\n lngs: ['he', 'iw'],\n nr: [1, 2, 20, 21],\n fc: 22\n}];\nvar _rulesPluralsTypes = {\n 1: function _(n) {\n return Number(n > 1);\n },\n 2: function _(n) {\n return Number(n != 1);\n },\n 3: function _(n) {\n return 0;\n },\n 4: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 5: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n },\n 6: function _(n) {\n return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n },\n 7: function _(n) {\n return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 8: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n },\n 9: function _(n) {\n return Number(n >= 2);\n },\n 10: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n },\n 11: function _(n) {\n return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n },\n 12: function _(n) {\n return Number(n % 10 != 1 || n % 100 == 11);\n },\n 13: function _(n) {\n return Number(n !== 0);\n },\n 14: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n },\n 15: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n },\n 16: function _(n) {\n return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n },\n 17: function _(n) {\n return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n },\n 18: function _(n) {\n return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n },\n 19: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n },\n 20: function _(n) {\n return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n },\n 21: function _(n) {\n return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n },\n 22: function _(n) {\n return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n }\n};\n\nfunction createRules() {\n var rules = {};\n sets.forEach(function (set) {\n set.lngs.forEach(function (l) {\n rules[l] = {\n numbers: set.nr,\n plurals: _rulesPluralsTypes[set.fc]\n };\n });\n });\n return rules;\n}\n\nvar PluralResolver = function () {\n function PluralResolver(languageUtils) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, PluralResolver);\n\n this.languageUtils = languageUtils;\n this.options = options;\n this.logger = baseLogger.create('pluralResolver');\n this.rules = createRules();\n }\n\n _createClass(PluralResolver, [{\n key: \"addRule\",\n value: function addRule(lng, obj) {\n this.rules[lng] = obj;\n }\n }, {\n key: \"getRule\",\n value: function getRule(code) {\n return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n }\n }, {\n key: \"needsPlural\",\n value: function needsPlural(code) {\n var rule = this.getRule(code);\n return rule && rule.numbers.length > 1;\n }\n }, {\n key: \"getPluralFormsOfKey\",\n value: function getPluralFormsOfKey(code, key) {\n return this.getSuffixes(code).map(function (suffix) {\n return key + suffix;\n });\n }\n }, {\n key: \"getSuffixes\",\n value: function getSuffixes(code) {\n var _this = this;\n\n var rule = this.getRule(code);\n\n if (!rule) {\n return [];\n }\n\n return rule.numbers.map(function (number) {\n return _this.getSuffix(code, number);\n });\n }\n }, {\n key: \"getSuffix\",\n value: function getSuffix(code, count) {\n var _this2 = this;\n\n var rule = this.getRule(code);\n\n if (rule) {\n var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n var suffix = rule.numbers[idx];\n\n if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n if (suffix === 2) {\n suffix = 'plural';\n } else if (suffix === 1) {\n suffix = '';\n }\n }\n\n var returnSuffix = function returnSuffix() {\n return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n };\n\n if (this.options.compatibilityJSON === 'v1') {\n if (suffix === 1) return '';\n if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n return returnSuffix();\n } else if (this.options.compatibilityJSON === 'v2') {\n return returnSuffix();\n } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n return returnSuffix();\n }\n\n return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n }\n\n this.logger.warn(\"no plural rule found for: \".concat(code));\n return '';\n }\n }]);\n\n return PluralResolver;\n}();\n\nvar Interpolator = function () {\n function Interpolator() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n _classCallCheck(this, Interpolator);\n\n this.logger = baseLogger.create('interpolator');\n this.options = options;\n\n this.format = options.interpolation && options.interpolation.format || function (value) {\n return value;\n };\n\n this.init(options);\n }\n\n _createClass(Interpolator, [{\n key: \"init\",\n value: function init() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n if (!options.interpolation) options.interpolation = {\n escapeValue: true\n };\n var iOpts = options.interpolation;\n this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n this.resetRegExp();\n }\n }, {\n key: \"reset\",\n value: function reset() {\n if (this.options) this.init(this.options);\n }\n }, {\n key: \"resetRegExp\",\n value: function resetRegExp() {\n var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n this.regexp = new RegExp(regexpStr, 'g');\n var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n }\n }, {\n key: \"interpolate\",\n value: function interpolate(str, data, lng, options) {\n var _this = this;\n\n var match;\n var value;\n var replaces;\n var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n\n function regexSafe(val) {\n return val.replace(/\\$/g, '$$$$');\n }\n\n var handleFormat = function handleFormat(key) {\n if (key.indexOf(_this.formatSeparator) < 0) {\n var path = getPathWithDefaults(data, defaultData, key);\n return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread({}, options, data, {\n interpolationkey: key\n })) : path;\n }\n\n var p = key.split(_this.formatSeparator);\n var k = p.shift().trim();\n var f = p.join(_this.formatSeparator).trim();\n return _this.format(getPathWithDefaults(data, defaultData, k), f, lng, _objectSpread({}, options, data, {\n interpolationkey: k\n }));\n };\n\n this.resetRegExp();\n var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables || this.options.interpolation.skipOnVariables;\n var todos = [{\n regex: this.regexpUnescape,\n safeValue: function safeValue(val) {\n return regexSafe(val);\n }\n }, {\n regex: this.regexp,\n safeValue: function safeValue(val) {\n return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n }\n }];\n todos.forEach(function (todo) {\n replaces = 0;\n\n while (match = todo.regex.exec(str)) {\n value = handleFormat(match[1].trim());\n\n if (value === undefined) {\n if (typeof missingInterpolationHandler === 'function') {\n var temp = missingInterpolationHandler(str, match, options);\n value = typeof temp === 'string' ? temp : '';\n } else if (skipOnVariables) {\n value = match[0];\n continue;\n } else {\n _this.logger.warn(\"missed to pass in variable \".concat(match[1], \" for interpolating \").concat(str));\n\n value = '';\n }\n } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n value = makeString(value);\n }\n\n var safeValue = todo.safeValue(value);\n str = str.replace(match[0], safeValue);\n\n if (skipOnVariables) {\n todo.regex.lastIndex += safeValue.length;\n todo.regex.lastIndex -= match[0].length;\n } else {\n todo.regex.lastIndex = 0;\n }\n\n replaces++;\n\n if (replaces >= _this.maxReplaces) {\n break;\n }\n }\n });\n return str;\n }\n }, {\n key: \"nest\",\n value: function nest(str, fc) {\n var _this2 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var match;\n var value;\n\n var clonedOptions = _objectSpread({}, options);\n\n clonedOptions.applyPostProcessor = false;\n delete clonedOptions.defaultValue;\n\n function handleHasOptions(key, inheritedOptions) {\n var sep = this.nestingOptionsSeparator;\n if (key.indexOf(sep) < 0) return key;\n var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n var optionsString = \"{\".concat(c[1]);\n key = c[0];\n optionsString = this.interpolate(optionsString, clonedOptions);\n optionsString = optionsString.replace(/'/g, '\"');\n\n try {\n clonedOptions = JSON.parse(optionsString);\n if (inheritedOptions) clonedOptions = _objectSpread({}, inheritedOptions, clonedOptions);\n } catch (e) {\n this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n return \"\".concat(key).concat(sep).concat(optionsString);\n }\n\n delete clonedOptions.defaultValue;\n return key;\n }\n\n while (match = this.nestingRegexp.exec(str)) {\n var formatters = [];\n var doReduce = false;\n\n if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n var r = match[1].split(this.formatSeparator).map(function (elem) {\n return elem.trim();\n });\n match[1] = r.shift();\n formatters = r;\n doReduce = true;\n }\n\n value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n if (value && match[0] === str && typeof value !== 'string') return value;\n if (typeof value !== 'string') value = makeString(value);\n\n if (!value) {\n this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n value = '';\n }\n\n if (doReduce) {\n value = formatters.reduce(function (v, f) {\n return _this2.format(v, f, options.lng, _objectSpread({}, options, {\n interpolationkey: match[1].trim()\n }));\n }, value.trim());\n }\n\n str = str.replace(match[0], value);\n this.regexp.lastIndex = 0;\n }\n\n return str;\n }\n }]);\n\n return Interpolator;\n}();\n\nfunction remove(arr, what) {\n var found = arr.indexOf(what);\n\n while (found !== -1) {\n arr.splice(found, 1);\n found = arr.indexOf(what);\n }\n}\n\nvar Connector = function (_EventEmitter) {\n _inherits(Connector, _EventEmitter);\n\n function Connector(backend, store, services) {\n var _this;\n\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n\n _classCallCheck(this, Connector);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(Connector).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.backend = backend;\n _this.store = store;\n _this.services = services;\n _this.languageUtils = services.languageUtils;\n _this.options = options;\n _this.logger = baseLogger.create('backendConnector');\n _this.state = {};\n _this.queue = [];\n\n if (_this.backend && _this.backend.init) {\n _this.backend.init(services, options.backend, options);\n }\n\n return _this;\n }\n\n _createClass(Connector, [{\n key: \"queueLoad\",\n value: function queueLoad(languages, namespaces, options, callback) {\n var _this2 = this;\n\n var toLoad = [];\n var pending = [];\n var toLoadLanguages = [];\n var toLoadNamespaces = [];\n languages.forEach(function (lng) {\n var hasAllNamespaces = true;\n namespaces.forEach(function (ns) {\n var name = \"\".concat(lng, \"|\").concat(ns);\n\n if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n _this2.state[name] = 2;\n } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n if (pending.indexOf(name) < 0) pending.push(name);\n } else {\n _this2.state[name] = 1;\n hasAllNamespaces = false;\n if (pending.indexOf(name) < 0) pending.push(name);\n if (toLoad.indexOf(name) < 0) toLoad.push(name);\n if (toLoadNamespaces.indexOf(ns) < 0) toLoadNamespaces.push(ns);\n }\n });\n if (!hasAllNamespaces) toLoadLanguages.push(lng);\n });\n\n if (toLoad.length || pending.length) {\n this.queue.push({\n pending: pending,\n loaded: {},\n errors: [],\n callback: callback\n });\n }\n\n return {\n toLoad: toLoad,\n pending: pending,\n toLoadLanguages: toLoadLanguages,\n toLoadNamespaces: toLoadNamespaces\n };\n }\n }, {\n key: \"loaded\",\n value: function loaded(name, err, data) {\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n if (err) this.emit('failedLoading', lng, ns, err);\n\n if (data) {\n this.store.addResourceBundle(lng, ns, data);\n }\n\n this.state[name] = err ? -1 : 2;\n var loaded = {};\n this.queue.forEach(function (q) {\n pushPath(q.loaded, [lng], ns);\n remove(q.pending, name);\n if (err) q.errors.push(err);\n\n if (q.pending.length === 0 && !q.done) {\n Object.keys(q.loaded).forEach(function (l) {\n if (!loaded[l]) loaded[l] = [];\n\n if (q.loaded[l].length) {\n q.loaded[l].forEach(function (ns) {\n if (loaded[l].indexOf(ns) < 0) loaded[l].push(ns);\n });\n }\n });\n q.done = true;\n\n if (q.errors.length) {\n q.callback(q.errors);\n } else {\n q.callback();\n }\n }\n });\n this.emit('loaded', loaded);\n this.queue = this.queue.filter(function (q) {\n return !q.done;\n });\n }\n }, {\n key: \"read\",\n value: function read(lng, ns, fcName) {\n var _this3 = this;\n\n var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 350;\n var callback = arguments.length > 5 ? arguments[5] : undefined;\n if (!lng.length) return callback(null, {});\n return this.backend[fcName](lng, ns, function (err, data) {\n if (err && data && tried < 5) {\n setTimeout(function () {\n _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n }, wait);\n return;\n }\n\n callback(err, data);\n });\n }\n }, {\n key: \"prepareLoading\",\n value: function prepareLoading(languages, namespaces) {\n var _this4 = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var callback = arguments.length > 3 ? arguments[3] : undefined;\n\n if (!this.backend) {\n this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n return callback && callback();\n }\n\n if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n if (typeof namespaces === 'string') namespaces = [namespaces];\n var toLoad = this.queueLoad(languages, namespaces, options, callback);\n\n if (!toLoad.toLoad.length) {\n if (!toLoad.pending.length) callback();\n return null;\n }\n\n toLoad.toLoad.forEach(function (name) {\n _this4.loadOne(name);\n });\n }\n }, {\n key: \"load\",\n value: function load(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {}, callback);\n }\n }, {\n key: \"reload\",\n value: function reload(languages, namespaces, callback) {\n this.prepareLoading(languages, namespaces, {\n reload: true\n }, callback);\n }\n }, {\n key: \"loadOne\",\n value: function loadOne(name) {\n var _this5 = this;\n\n var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n var s = name.split('|');\n var lng = s[0];\n var ns = s[1];\n this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n\n _this5.loaded(name, err, data);\n });\n }\n }, {\n key: \"saveMissing\",\n value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n\n if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n return;\n }\n\n if (key === undefined || key === null || key === '') return;\n\n if (this.backend && this.backend.create) {\n this.backend.create(languages, namespace, key, fallbackValue, null, _objectSpread({}, options, {\n isUpdate: isUpdate\n }));\n }\n\n if (!languages || !languages[0]) return;\n this.store.addResource(languages[0], namespace, key, fallbackValue);\n }\n }]);\n\n return Connector;\n}(EventEmitter);\n\nfunction get() {\n return {\n debug: false,\n initImmediate: true,\n ns: ['translation'],\n defaultNS: ['translation'],\n fallbackLng: ['dev'],\n fallbackNS: false,\n whitelist: false,\n nonExplicitWhitelist: false,\n supportedLngs: false,\n nonExplicitSupportedLngs: false,\n load: 'all',\n preload: false,\n simplifyPluralSuffix: true,\n keySeparator: '.',\n nsSeparator: ':',\n pluralSeparator: '_',\n contextSeparator: '_',\n partialBundledLanguages: false,\n saveMissing: false,\n updateMissing: false,\n saveMissingTo: 'fallback',\n saveMissingPlurals: true,\n missingKeyHandler: false,\n missingInterpolationHandler: false,\n postProcess: false,\n postProcessPassResolved: false,\n returnNull: true,\n returnEmptyString: true,\n returnObjects: false,\n joinArrays: false,\n returnedObjectHandler: false,\n parseMissingKeyHandler: false,\n appendNamespaceToMissingKey: false,\n appendNamespaceToCIMode: false,\n overloadTranslationOptionHandler: function handle(args) {\n var ret = {};\n if (_typeof(args[1]) === 'object') ret = args[1];\n if (typeof args[1] === 'string') ret.defaultValue = args[1];\n if (typeof args[2] === 'string') ret.tDescription = args[2];\n\n if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n var options = args[3] || args[2];\n Object.keys(options).forEach(function (key) {\n ret[key] = options[key];\n });\n }\n\n return ret;\n },\n interpolation: {\n escapeValue: true,\n format: function format(value, _format, lng, options) {\n return value;\n },\n prefix: '{{',\n suffix: '}}',\n formatSeparator: ',',\n unescapePrefix: '-',\n nestingPrefix: '$t(',\n nestingSuffix: ')',\n nestingOptionsSeparator: ',',\n maxReplaces: 1000,\n skipOnVariables: false\n }\n };\n}\nfunction transformOptions(options) {\n if (typeof options.ns === 'string') options.ns = [options.ns];\n if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n\n if (options.whitelist) {\n if (options.whitelist && options.whitelist.indexOf('cimode') < 0) {\n options.whitelist = options.whitelist.concat(['cimode']);\n }\n\n options.supportedLngs = options.whitelist;\n }\n\n if (options.nonExplicitWhitelist) {\n options.nonExplicitSupportedLngs = options.nonExplicitWhitelist;\n }\n\n if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n options.supportedLngs = options.supportedLngs.concat(['cimode']);\n }\n\n return options;\n}\n\nfunction noop() {}\n\nvar I18n = function (_EventEmitter) {\n _inherits(I18n, _EventEmitter);\n\n function I18n() {\n var _this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n _classCallCheck(this, I18n);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(I18n).call(this));\n\n if (isIE10) {\n EventEmitter.call(_assertThisInitialized(_this));\n }\n\n _this.options = transformOptions(options);\n _this.services = {};\n _this.logger = baseLogger;\n _this.modules = {\n external: []\n };\n\n if (callback && !_this.isInitialized && !options.isClone) {\n if (!_this.options.initImmediate) {\n _this.init(options, callback);\n\n return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n }\n\n setTimeout(function () {\n _this.init(options, callback);\n }, 0);\n }\n\n return _this;\n }\n\n _createClass(I18n, [{\n key: \"init\",\n value: function init() {\n var _this2 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n\n if (options.whitelist && !options.supportedLngs) {\n this.logger.deprecate('whitelist', 'option \"whitelist\" will be renamed to \"supportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n if (options.nonExplicitWhitelist && !options.nonExplicitSupportedLngs) {\n this.logger.deprecate('whitelist', 'options \"nonExplicitWhitelist\" will be renamed to \"nonExplicitSupportedLngs\" in the next major - please make sure to rename this option asap.');\n }\n\n this.options = _objectSpread({}, get(), this.options, transformOptions(options));\n this.format = this.options.interpolation.format;\n if (!callback) callback = noop;\n\n function createClassOnDemand(ClassOrObject) {\n if (!ClassOrObject) return null;\n if (typeof ClassOrObject === 'function') return new ClassOrObject();\n return ClassOrObject;\n }\n\n if (!this.options.isClone) {\n if (this.modules.logger) {\n baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n } else {\n baseLogger.init(null, this.options);\n }\n\n var lu = new LanguageUtil(this.options);\n this.store = new ResourceStore(this.options.resources, this.options);\n var s = this.services;\n s.logger = baseLogger;\n s.resourceStore = this.store;\n s.languageUtils = lu;\n s.pluralResolver = new PluralResolver(lu, {\n prepend: this.options.pluralSeparator,\n compatibilityJSON: this.options.compatibilityJSON,\n simplifyPluralSuffix: this.options.simplifyPluralSuffix\n });\n s.interpolator = new Interpolator(this.options);\n s.utils = {\n hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n };\n s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n s.backendConnector.on('*', function (event) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n\n if (this.modules.languageDetector) {\n s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n s.languageDetector.init(s, this.options.detection, this.options);\n }\n\n if (this.modules.i18nFormat) {\n s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n if (s.i18nFormat.init) s.i18nFormat.init(this);\n }\n\n this.translator = new Translator(this.services, this.options);\n this.translator.on('*', function (event) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n _this2.emit.apply(_this2, [event].concat(args));\n });\n this.modules.external.forEach(function (m) {\n if (m.init) m.init(_this2);\n });\n }\n\n if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n }\n\n if (!this.services.languageDetector && !this.options.lng) {\n this.logger.warn('init: no languageDetector is used and no lng is defined');\n }\n\n var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n storeApi.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store;\n\n return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n };\n });\n var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n storeApiChained.forEach(function (fcName) {\n _this2[fcName] = function () {\n var _this2$store2;\n\n (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n\n return _this2;\n };\n });\n var deferred = defer();\n\n var load = function load() {\n var finish = function finish(err, t) {\n if (_this2.isInitialized) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n _this2.isInitialized = true;\n if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n\n _this2.emit('initialized', _this2.options);\n\n deferred.resolve(t);\n callback(err, t);\n };\n\n if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n\n _this2.changeLanguage(_this2.options.lng, finish);\n };\n\n if (this.options.resources || !this.options.initImmediate) {\n load();\n } else {\n setTimeout(load, 0);\n }\n\n return deferred;\n }\n }, {\n key: \"loadResources\",\n value: function loadResources(language) {\n var _this3 = this;\n\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n var usedCallback = callback;\n var usedLng = typeof language === 'string' ? language : this.language;\n if (typeof language === 'function') usedCallback = language;\n\n if (!this.options.resources || this.options.partialBundledLanguages) {\n if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n var toLoad = [];\n\n var append = function append(lng) {\n if (!lng) return;\n\n var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n\n lngs.forEach(function (l) {\n if (toLoad.indexOf(l) < 0) toLoad.push(l);\n });\n };\n\n if (!usedLng) {\n var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n fallbacks.forEach(function (l) {\n return append(l);\n });\n } else {\n append(usedLng);\n }\n\n if (this.options.preload) {\n this.options.preload.forEach(function (l) {\n return append(l);\n });\n }\n\n this.services.backendConnector.load(toLoad, this.options.ns, usedCallback);\n } else {\n usedCallback(null);\n }\n }\n }, {\n key: \"reloadResources\",\n value: function reloadResources(lngs, ns, callback) {\n var deferred = defer();\n if (!lngs) lngs = this.languages;\n if (!ns) ns = this.options.ns;\n if (!callback) callback = noop;\n this.services.backendConnector.reload(lngs, ns, function (err) {\n deferred.resolve();\n callback(err);\n });\n return deferred;\n }\n }, {\n key: \"use\",\n value: function use(module) {\n if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n\n if (module.type === 'backend') {\n this.modules.backend = module;\n }\n\n if (module.type === 'logger' || module.log && module.warn && module.error) {\n this.modules.logger = module;\n }\n\n if (module.type === 'languageDetector') {\n this.modules.languageDetector = module;\n }\n\n if (module.type === 'i18nFormat') {\n this.modules.i18nFormat = module;\n }\n\n if (module.type === 'postProcessor') {\n postProcessor.addPostProcessor(module);\n }\n\n if (module.type === '3rdParty') {\n this.modules.external.push(module);\n }\n\n return this;\n }\n }, {\n key: \"changeLanguage\",\n value: function changeLanguage(lng, callback) {\n var _this4 = this;\n\n this.isLanguageChangingTo = lng;\n var deferred = defer();\n this.emit('languageChanging', lng);\n\n var done = function done(err, l) {\n if (l) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n\n _this4.translator.changeLanguage(l);\n\n _this4.isLanguageChangingTo = undefined;\n\n _this4.emit('languageChanged', l);\n\n _this4.logger.log('languageChanged', l);\n } else {\n _this4.isLanguageChangingTo = undefined;\n }\n\n deferred.resolve(function () {\n return _this4.t.apply(_this4, arguments);\n });\n if (callback) callback(err, function () {\n return _this4.t.apply(_this4, arguments);\n });\n };\n\n var setLng = function setLng(lngs) {\n if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n\n if (l) {\n if (!_this4.language) {\n _this4.language = l;\n _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n }\n\n if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n if (_this4.services.languageDetector) _this4.services.languageDetector.cacheUserLanguage(l);\n }\n\n _this4.loadResources(l, function (err) {\n done(err, l);\n });\n };\n\n if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n setLng(this.services.languageDetector.detect());\n } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n this.services.languageDetector.detect(setLng);\n } else {\n setLng(lng);\n }\n\n return deferred;\n }\n }, {\n key: \"getFixedT\",\n value: function getFixedT(lng, ns) {\n var _this5 = this;\n\n var fixedT = function fixedT(key, opts) {\n var options;\n\n if (_typeof(opts) !== 'object') {\n for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n rest[_key3 - 2] = arguments[_key3];\n }\n\n options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n } else {\n options = _objectSpread({}, opts);\n }\n\n options.lng = options.lng || fixedT.lng;\n options.lngs = options.lngs || fixedT.lngs;\n options.ns = options.ns || fixedT.ns;\n return _this5.t(key, options);\n };\n\n if (typeof lng === 'string') {\n fixedT.lng = lng;\n } else {\n fixedT.lngs = lng;\n }\n\n fixedT.ns = ns;\n return fixedT;\n }\n }, {\n key: \"t\",\n value: function t() {\n var _this$translator;\n\n return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n }\n }, {\n key: \"exists\",\n value: function exists() {\n var _this$translator2;\n\n return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n }\n }, {\n key: \"setDefaultNamespace\",\n value: function setDefaultNamespace(ns) {\n this.options.defaultNS = ns;\n }\n }, {\n key: \"hasLoadedNamespace\",\n value: function hasLoadedNamespace(ns) {\n var _this6 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!this.isInitialized) {\n this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n return false;\n }\n\n if (!this.languages || !this.languages.length) {\n this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n return false;\n }\n\n var lng = this.languages[0];\n var fallbackLng = this.options ? this.options.fallbackLng : false;\n var lastLng = this.languages[this.languages.length - 1];\n if (lng.toLowerCase() === 'cimode') return true;\n\n var loadNotPending = function loadNotPending(l, n) {\n var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n\n return loadState === -1 || loadState === 2;\n };\n\n if (options.precheck) {\n var preResult = options.precheck(this, loadNotPending);\n if (preResult !== undefined) return preResult;\n }\n\n if (this.hasResourceBundle(lng, ns)) return true;\n if (!this.services.backendConnector.backend) return true;\n if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n return false;\n }\n }, {\n key: \"loadNamespaces\",\n value: function loadNamespaces(ns, callback) {\n var _this7 = this;\n\n var deferred = defer();\n\n if (!this.options.ns) {\n callback && callback();\n return Promise.resolve();\n }\n\n if (typeof ns === 'string') ns = [ns];\n ns.forEach(function (n) {\n if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n });\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"loadLanguages\",\n value: function loadLanguages(lngs, callback) {\n var deferred = defer();\n if (typeof lngs === 'string') lngs = [lngs];\n var preloaded = this.options.preload || [];\n var newLngs = lngs.filter(function (lng) {\n return preloaded.indexOf(lng) < 0;\n });\n\n if (!newLngs.length) {\n if (callback) callback();\n return Promise.resolve();\n }\n\n this.options.preload = preloaded.concat(newLngs);\n this.loadResources(function (err) {\n deferred.resolve();\n if (callback) callback(err);\n });\n return deferred;\n }\n }, {\n key: \"dir\",\n value: function dir(lng) {\n if (!lng) lng = this.languages && this.languages.length > 0 ? this.languages[0] : this.language;\n if (!lng) return 'rtl';\n var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam'];\n return rtlLngs.indexOf(this.services.languageUtils.getLanguagePartFromCode(lng)) >= 0 ? 'rtl' : 'ltr';\n }\n }, {\n key: \"createInstance\",\n value: function createInstance() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 ? arguments[1] : undefined;\n return new I18n(options, callback);\n }\n }, {\n key: \"cloneInstance\",\n value: function cloneInstance() {\n var _this8 = this;\n\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n\n var mergedOptions = _objectSpread({}, this.options, options, {\n isClone: true\n });\n\n var clone = new I18n(mergedOptions);\n var membersToCopy = ['store', 'services', 'language'];\n membersToCopy.forEach(function (m) {\n clone[m] = _this8[m];\n });\n clone.services = _objectSpread({}, this.services);\n clone.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n clone.translator = new Translator(clone.services, clone.options);\n clone.translator.on('*', function (event) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n clone.emit.apply(clone, [event].concat(args));\n });\n clone.init(mergedOptions, callback);\n clone.translator.options = clone.options;\n clone.translator.backendConnector.services.utils = {\n hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n };\n return clone;\n }\n }, {\n key: \"toJSON\",\n value: function toJSON() {\n return {\n options: this.options,\n store: this.store,\n language: this.language,\n languages: this.languages\n };\n }\n }]);\n\n return I18n;\n}(EventEmitter);\n\nvar i18next = new I18n();\n\nexport default i18next;\n","import Handlebars from 'handlebars/runtime';\r\nimport Moment from 'moment';\r\nimport {\r\n getDatasheetUrl\r\n} from '../service.js';\r\nimport i18next from 'i18next';\r\n\r\nexport default function() {\r\n\r\n const units = [\r\n \"B\",\r\n \"kB\",\r\n \"MB\",\r\n \"GB\",\r\n \"TB\",\r\n \"MAX\"\r\n ];\r\n\r\n Handlebars.registerHelper('short_string', function(text, limit) {\r\n /*\r\n * Einen String auf die angegebene Anzahl der Zeichen kürzen\r\n */\r\n if (text && text.length > limit) {\r\n return new Handlebars.SafeString(text.substr(0, isNaN(limit) ? 20 : limit) + '...');\r\n }\r\n return new Handlebars.SafeString(text || \"\");\r\n });\r\n\r\n Handlebars.registerHelper('date_format', function(isodate) {\r\n /*\r\n * Datum formatieren im Format: 12. Juni 2016\r\n */\r\n if (!isodate) {\r\n return '--.--.--';\r\n }\r\n return Moment(isodate).format('ll');\r\n });\r\n\r\n Handlebars.registerHelper('document_icon', function(filename) {\r\n /*\r\n * Dateityp ermitteln und passendes Icon zurückgeben\r\n */\r\n console.log(filename);\r\n var idx = (filename || '').lastIndexOf('.');\r\n if (idx < 0) {\r\n return '';\r\n }\r\n var ext = filename.substr(idx, filename.length - 1);\r\n switch (ext.toLowerCase()) {\r\n case '.pdf':\r\n return 'pdf';\r\n case '.doc':\r\n case '.docx':\r\n case '.docm':\r\n return 'word';\r\n case '.xls':\r\n case '.xlsx':\r\n case '.xlsm':\r\n case '.xlsb':\r\n return 'excel';\r\n case '.txt':\r\n return 'text';\r\n case '.jpg':\r\n case '.png':\r\n case '.bmp':\r\n return 'image';\r\n default:\r\n return '';\r\n }\r\n });\r\n\r\n Handlebars.registerHelper('resolve_doctype', function(type) {\r\n /*\r\n * Dokumenttyp auflösen\r\n */\r\n if (!type) {\r\n return '--';\r\n }\r\n\r\n type = type.replace(/rü/g, 'rue');\r\n var result = i18next.t(`portal.products.type.${type}`);\r\n return result || '--';\r\n });\r\n\r\n Handlebars.registerHelper('file_size', function(filesize) {\r\n /*\r\n * Dateigröße in ein lesbares Format umwandeln\r\n */\r\n if (!filesize) {\r\n return '-- B';\r\n }\r\n\r\n let level = 0;\r\n while (filesize > 1024) {\r\n filesize /= 1024.0;\r\n level++;\r\n }\r\n const unit = units[Math.min(level, units.length - 1)];\r\n filesize = filesize.toFixed(2);\r\n return `${filesize} ${unit}`;\r\n });\r\n\r\n Handlebars.registerHelper('hasXXDocument', function(list, type, block) {\r\n /*\r\n * Datenblattyp auflösen\r\n */\r\n if (!list) {\r\n return false;\r\n }\r\n\r\n for (var i = 0; i < list.length; i++) {\r\n if (list[i].type.toUpperCase() == type) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n });\r\n\r\n Handlebars.registerHelper('getXXDocumentUrl', function(list, type, block) {\r\n /*\r\n * Datenblattyp auflösen\r\n */\r\n if (!list) {\r\n return false;\r\n }\r\n\r\n for (var i = 0; i < list.length; i++) {\r\n if (list[i].type.toUpperCase() == type) {\r\n return getDatasheetUrl(list[i].id);\r\n }\r\n }\r\n return false;\r\n });\r\n\r\n Handlebars.registerHelper('eq', function(v1, v2) {\r\n /*\r\n * vergleich zweier Werte\r\n */\r\n return v1 == v2;\r\n });\r\n\r\n Handlebars.registerHelper('ifShowShoppingButton', function(item, options) {\r\n /*\r\n * Artikel-Nr auf unbestellbarkeit vergleichen\r\n * Kunden Anforderung von 200801\r\n */\r\n if (item && !isNaN(item['article-nr'])) {\r\n const articleNr = +item['article-nr'];\r\n if (articleNr >= 7010100 &&\r\n articleNr <= 7080100) {\r\n return options.inverse(this);\r\n }\r\n }\r\n\r\n return options.fn(this);\r\n });\r\n}\r\n","const GUID_EXPRESSION = '([A-F0-9]{8}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{4}-[A-F0-9]{12})';\r\nconst INT_EXPRESSION = '(\\\\d+)';\r\nconst STRING_EXPRESSION = '([A-Z0-9\\\\-]+)';\r\nconst BOOLEAN_EXPRESSION = '(true|false)';\r\nconst ANY_EXPRESSION = '(.*)';\r\n\r\n/* Unterstützte Platzhalter\r\n * :guid\r\n * :int\r\n * :string\r\n * :boolean\r\n * :*\r\n * ?\r\n */\r\nclass Router {\r\n\r\n protected _ignoreHashchange: boolean;\r\n protected _routes;\r\n protected _isWatching: boolean;\r\n protected _previousFragment: string;\r\n protected _currentFragment: string;\r\n\r\n constructor() {\r\n this._routes = {};\r\n this._isWatching = false;\r\n this._previousFragment = null;\r\n this._currentFragment = null;\r\n this._ignoreHashchange = false;\r\n }\r\n\r\n addRoute(routes, handler) {\r\n if (!Array.isArray(routes)) {\r\n routes = [routes];\r\n }\r\n for (let i = 0; i < routes.length; i++) {\r\n if (!this._routes.hasOwnProperty(routes[i])) {\r\n this._routes[routes[i]] = handler;\r\n }\r\n }\r\n }\r\n\r\n startWatcher() {\r\n var self = this;\r\n if (!this._isWatching) {\r\n $(window).on('hashchange', () => {\r\n self._onHashChange();\r\n }).trigger('hashchange');\r\n this._isWatching = true;\r\n }\r\n }\r\n\r\n getFragment(url?: string) {\r\n var fragment;\r\n\r\n if (!!url) {\r\n fragment = url.split('#')[1];\r\n } else if (!(fragment = window.location.hash.slice(1)) && !!window.location.search) {\r\n fragment = window.location.search;\r\n }\r\n\r\n return fragment || '/';\r\n }\r\n\r\n pushState(fragment: string, preventTrigger?: boolean, removeUrlParameter?: boolean) {\r\n if (!fragment) {\r\n return;\r\n }\r\n\r\n if (!fragment.startsWith('#')) {\r\n fragment = '#' + fragment;\r\n }\r\n\r\n // TODO check navigator\r\n history.pushState(null, (navigator).title, (removeUrlParameter ? location.pathname : '') + fragment);\r\n\r\n this._ignoreHashchange = !!preventTrigger;\r\n\r\n $(window).trigger('hashchange');\r\n }\r\n\r\n restartState(fragment, preventTrigger) {\r\n if (!fragment) {\r\n return;\r\n }\r\n\r\n if (!fragment.startsWith('#')) {\r\n fragment = '#' + fragment;\r\n }\r\n\r\n var backlen = history.length - 1;\r\n history.go(-backlen); // Return at the beginning\r\n //history.replaceState({}, null, 'your relative url');\r\n\r\n history.replaceState(null, (navigator).title, fragment);\r\n\r\n this._ignoreHashchange = preventTrigger;\r\n\r\n $(window).trigger('hashchange');\r\n }\r\n\r\n getState() {\r\n return location.hash.substring(1);\r\n }\r\n\r\n replaceState(fragment, preventTrigger) {\r\n if (!fragment) {\r\n return;\r\n }\r\n\r\n if (!fragment.startsWith('#')) {\r\n fragment = '#' + fragment;\r\n }\r\n\r\n history.replaceState(null, (navigator).title, fragment);\r\n\r\n this._ignoreHashchange = preventTrigger;\r\n\r\n $(window).trigger('hashchange');\r\n }\r\n\r\n restoreFragment() {\r\n var tmp;\r\n\r\n if (!!this._previousFragment) {\r\n this.pushState(this._previousFragment, true);\r\n\r\n tmp = this._currentFragment;\r\n\r\n this._currentFragment = this._previousFragment;\r\n this._previousFragment = tmp;\r\n }\r\n }\r\n\r\n openDefaultRoute() {\r\n // this.replaceState(this.getDefaultRoute());\r\n }\r\n\r\n resetState() {\r\n history.replaceState(null, navigator, '#');\r\n }\r\n\r\n _getRouteExpression(str) {\r\n str = '^' + str\r\n .replace(/:guid/ig, GUID_EXPRESSION)\r\n .replace(/:int/ig, INT_EXPRESSION)\r\n .replace(/:string/ig, STRING_EXPRESSION)\r\n .replace(/:boolean/ig, BOOLEAN_EXPRESSION)\r\n .replace(/:any/ig, ANY_EXPRESSION)\r\n .replace(/[:][*]/ig, ANY_EXPRESSION)\r\n .replace(/\\?/, '\\\\?') + '$';\r\n\r\n return new RegExp(str, 'ig');\r\n }\r\n\r\n _onHashChange() {\r\n var fragment = this.getFragment();\r\n var useDefaultRoute = true;\r\n var extractedValues;\r\n var typesOfValues;\r\n var params;\r\n var regEx;\r\n\r\n if (this._ignoreHashchange) {\r\n this._ignoreHashchange = false;\r\n return;\r\n }\r\n\r\n if (!!window.location.href) {\r\n this._previousFragment = this._currentFragment;\r\n this._currentFragment = this.getFragment(window.location.href);\r\n }\r\n\r\n for (var route in this._routes) {\r\n regEx = this._getRouteExpression(route);\r\n\r\n if (regEx.test(fragment)) {\r\n regEx.lastIndex = 0;\r\n\r\n typesOfValues = this._getValueTypes(route);\r\n extractedValues = regEx.exec(fragment);\r\n\r\n params = this._prepareValues(extractedValues, typesOfValues);\r\n\r\n this._routes[route].apply(this, params);\r\n\r\n useDefaultRoute = false;\r\n break;\r\n }\r\n }\r\n\r\n /*if (useDefaultRoute) {\r\n this.replaceState(this.getDefaultRoute());\r\n }*/\r\n }\r\n\r\n _getValueTypes(route) {\r\n var regEx = /:([\\w]+)|:(.*)/ig;\r\n var types = [];\r\n var match;\r\n\r\n if (regEx.test(route)) {\r\n regEx.lastIndex = 0;\r\n\r\n while ((match = regEx.exec(route))) {\r\n types.push(match[1]);\r\n }\r\n }\r\n\r\n return types;\r\n }\r\n\r\n _prepareValues(extractedValues, types) {\r\n var values = [];\r\n var value;\r\n var type;\r\n\r\n if (extractedValues) {\r\n extractedValues.splice(0, 1);\r\n\r\n for (var vCnt = 0, vLen = extractedValues.length; vCnt < vLen; vCnt++) {\r\n value = extractedValues[vCnt];\r\n type = types[vCnt];\r\n\r\n switch (type) {\r\n case 'int':\r\n value = parseInt(value, 10);\r\n break;\r\n case 'boolean':\r\n value = value === 'true';\r\n break;\r\n }\r\n\r\n values.push(value);\r\n }\r\n }\r\n\r\n return values;\r\n }\r\n}\r\n\r\nexport default (new Router());\r\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\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 (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\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 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\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) : adopt(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 var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") 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 throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\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\n/** @deprecated */\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\n/** @deprecated */\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 __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\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\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\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 (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, 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\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","/*\r\n* Grundklasse für eine View mit erforderlichen Funktionen\r\n*/\r\nclass View {\r\n init(subRoute?: string) {\r\n throw new TypeError(`'${this.constructor.name}' class must implement method 'init(subRoute)'`);\r\n }\r\n show(subRoute?: string) {\r\n throw new TypeError(`'${this.constructor.name}' class must implement method 'show(subRoute)'`);\r\n }\r\n hide() {\r\n /* optional function */\r\n return $.Deferred().resolve();\r\n }\r\n dispose() {\r\n throw new TypeError(`'${this.constructor.name}' class must implement method 'dispose()'`);\r\n }\r\n}\r\n\r\nexport default View;\r\n","//\r\nexport class Dimmer {\r\n protected $dimmer;\r\n protected removeOnHide: boolean;\r\n\r\n constructor(parent?) {\r\n this.$dimmer = this._getDimmer(parent);\r\n }\r\n\r\n show(text?: string) {\r\n this.$dimmer.find('.loader').toggleClass('text', !!text).text(text ? text : '');\r\n this.$dimmer.addClass('active');\r\n return this;\r\n }\r\n\r\n hide() {\r\n if (this.removeOnHide) {\r\n this.$dimmer.remove();\r\n } else {\r\n this.$dimmer.removeClass('active');\r\n }\r\n }\r\n\r\n remove() {\r\n this.$dimmer.remove();\r\n }\r\n\r\n _getDimmer($parent) {\r\n if (!$parent || $($parent).length === 0) {\r\n $parent = $('body');\r\n } else {\r\n this.removeOnHide = true;\r\n }\r\n let $dimmer = $parent.find('> .dimmer');\r\n\r\n if ($dimmer.length === 0) {\r\n $dimmer = $(\r\n '
' +\r\n '
Wird geladen...
' +\r\n '
');\r\n $parent.append($dimmer);\r\n }\r\n return $dimmer;\r\n }\r\n}\r\n\r\nexport class Spinner {\r\n protected $spinner;\r\n protected removeOnHide: boolean;\r\n\r\n constructor(parent?) {\r\n this.$spinner = this._getLoader(parent);\r\n }\r\n\r\n show(text?: string) {\r\n this.$spinner\r\n .toggleClass('text', !!text)\r\n .text(text ? text : '')\r\n .addClass('active');\r\n return this;\r\n }\r\n\r\n hide() {\r\n if (this.removeOnHide) {\r\n this.$spinner.remove();\r\n } else {\r\n this.$spinner.removeClass('active');\r\n }\r\n }\r\n\r\n _getLoader($parent) {\r\n if (!$parent || $($parent).length === 0) {\r\n $parent = $('body');\r\n } else {\r\n this.removeOnHide = true;\r\n }\r\n\r\n let $loader = $parent.find('> .loader');\r\n if ($loader.length === 0) {\r\n $loader = $('
');\r\n $parent.append($loader);\r\n }\r\n return $loader;\r\n }\r\n}\r\n\r\n// dimmer with loader for whole Page\r\nlet PageSpinner = new Dimmer();\r\nexport default PageSpinner;\r\n","
\r\n
Warenkorb
\r\n
\r\n
Artikel
\r\n
Details
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Artikel-Nr\r\n
\r\n
\r\n Bezeichnung\r\n
\r\n
\r\n Menge\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{#each .}}\r\n
\r\n
\r\n {{articleNr}}\r\n
\r\n
\r\n {{name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{unit}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {{/each}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Bitte beachten Sie Ihre Lieferkonditionen sowie Anforderungen seitens Auftragsabwicklung.\r\n

\r\n

\r\n Ihre Bestellung muss von einer Person vor Ort bei der Lieferung angenommen werden.\r\n

\r\n
\r\n
\r\n

\r\n Wir bitten um schriftliche Bestellung mind. 24 Stunden vor Abholung.\r\n

\r\n

\r\n Zahlung nur via Rechnung möglich. Vorschrift: Feuerlöscher auf dem Fahrzeug!\r\n

\r\n
\r\n
\r\n

\r\n Feuerlöscher!\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n Fehler beim Senden der Bestellung aufgetreten!\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Ihr Warenkorb ist leer!\r\n
\r\n

Prüfen Sie evtl. die Menge.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Abbrechen\r\n
\r\n
\r\n Bestellen\r\n \r\n
\r\n
\r\n
\r\n","import * as Service from './service';\r\n\r\nexport class Holidays {\r\n protected static holidaysDefer = null;\r\n static load() {\r\n if (!this.holidaysDefer) {\r\n return (this.holidaysDefer = Service.getRelevantHolidays());\r\n }\r\n\r\n return this.holidaysDefer;\r\n }\r\n}\r\n","import Session from './session';\r\nimport * as Service from './service';\r\n//import MainView from './view/main';\r\nimport i18next from 'i18next';\r\nimport Moment from 'moment';\r\nimport {\r\n Dimmer\r\n} from './spinner';\r\nimport { AddWorkDays, ValidateDate } from './utils';\r\n\r\nimport ShoppingCartDialog from '../templates/shopping_cart.hbs';\r\nimport { Holidays } from \"./Holidays\";\r\n\r\n\r\nclass ShoppingCart {\r\n protected articleTabActive: boolean;\r\n protected items: { [x: string]: any; };\r\n protected userDataId: string;\r\n\r\n constructor() {\r\n this.articleTabActive = true;\r\n }\r\n\r\n init(client, user) {\r\n const userhash = btoa(user.username);\r\n this.userDataId = `shopping-cart-${userhash || 0}`;\r\n\r\n if (user['native-client-id'] != client.id) {\r\n this.userDataId += `-${client.id}`;\r\n }\r\n\r\n // Warenkorb aus localStorage laden\r\n this._load();\r\n\r\n this.update();\r\n\r\n // Warenkorb anzeigen Event\r\n $('.shopping-cart.item').on('click', (evt) => {\r\n Holidays.load()\r\n .then((holidays) => {\r\n this._onShowCart(evt, holidays);\r\n }, () => {\r\n this._onShowCart(evt);\r\n });\r\n });\r\n }\r\n\r\n _load() {\r\n this.items = Session.getUserData(this.userDataId) || this.items;\r\n if (!(this.items instanceof Object)) {\r\n this.items = {};\r\n }\r\n }\r\n\r\n _save() {\r\n Session.setUserData(this.userDataId, this.items);\r\n }\r\n\r\n addItem(articleNr: string, name?: string, count?: number, unit?: string, id?: number) {\r\n let tmpItem = this.items[articleNr];\r\n if (tmpItem) {\r\n tmpItem.count += (count || 1);\r\n } else if (name != null) {\r\n this.items[articleNr] = {\r\n articleNr,\r\n name,\r\n count,\r\n unit,\r\n id\r\n };\r\n }\r\n this._save();\r\n this.update();\r\n }\r\n\r\n removeItem(id) {\r\n let tmpItem = this.items[id];\r\n if (tmpItem && tmpItem.count > 0) {\r\n tmpItem.count--;\r\n this._save();\r\n this.update();\r\n }\r\n }\r\n\r\n deleteItem(id) {\r\n delete this.items[id];\r\n this._save();\r\n this.update();\r\n }\r\n\r\n clear() {\r\n this.items = {};\r\n this._save();\r\n this.update();\r\n }\r\n\r\n getCount() {\r\n return Object.keys(this.items).length;\r\n }\r\n\r\n get(id) {\r\n return this.items[id];\r\n }\r\n\r\n getAll() {\r\n let result = [];\r\n for (var key in this.items) {\r\n result.push(this.items[key]);\r\n }\r\n return result;\r\n }\r\n\r\n update() {\r\n // Warenkorb Icon aktualisieren\r\n let cartIcon = $('.shopping-cart.item');\r\n let count = this.getCount();\r\n cartIcon.toggleClass('hidden', count == 0)\r\n .find('.counter').text(count);\r\n }\r\n\r\n _onShowCart(evt, holidays?: any[]) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n\r\n Service.logStatisticsEvent('shoppingcart', 'open');\r\n\r\n // show cart dialog\r\n let $cart = this._createMessageWindow(false);\r\n this._bindCartEvents($cart);\r\n\r\n $cart.find('[type=\"date\"]').parent().calendar();\r\n\r\n //$cart.find('div.checkbox').checkbox();\r\n $cart.find('.form').form();\r\n\r\n $cart.find('.menu .item').tab({\r\n onVisible: (tab) => {\r\n this.articleTabActive = tab == 'article';\r\n this._enableActiveTab($cart);\r\n }\r\n });\r\n\r\n // setup visible fields\r\n this._onReceivementChange($cart);\r\n\r\n // get active tab\r\n const $activeTab = $cart.find('.tabular.menu .item.active');\r\n this.articleTabActive = $activeTab.attr('data-tab') == 'article';\r\n this._enableActiveTab($cart);\r\n\r\n const disabledDays = [];\r\n if (holidays) {\r\n holidays.forEach(function(elem) {\r\n disabledDays.push({\r\n date: new Date(elem.date),\r\n message: (elem.message || '').replace(/(?:\\r\\n|\\r|\\n)/g, ' / ')\r\n });\r\n });\r\n }\r\n\r\n $cart.modal({\r\n closable: false,\r\n onApprove: () => {\r\n // check active tab\r\n if (this.articleTabActive) {\r\n this.articleTabActive = false;\r\n this._enableActiveTab($cart);\r\n return false;\r\n }\r\n\r\n // prüfe Details Angaben auf Vollständigkeit\r\n if (!$cart.find('.form').form('validate form')) {\r\n this.articleTabActive = false;\r\n this._enableActiveTab($cart);\r\n return false;\r\n }\r\n\r\n const cartDetails = $cart.find('.form').form('get values');\r\n const propertyName = cartDetails.receivement === 'pickup' ? 'pickup' : 'delivery';\r\n\r\n if (!ValidateDate(cartDetails[`${propertyName}-date`], disabledDays)) {\r\n $cart.find(`.form .field.${propertyName}`).addClass('error');\r\n return false;\r\n }\r\n\r\n cartDetails.retoure = cartDetails.retoure == 'true';\r\n cartDetails['unloading-as-always'] = cartDetails['unloading-as-always'] == 'on';\r\n cartDetails['tel-avis-as-always'] = cartDetails['tel-avis-as-always'] == 'on';\r\n\r\n // prüfe Inhalt des Warenkorbs, zeige warnung an\r\n const cartItems = this.getAll();\r\n let count = 0;\r\n for (var i = 0; i < cartItems.length; i++) {\r\n count += cartItems[i].count;\r\n }\r\n if (count <= 0) {\r\n $cart.find('.warning.message.items').removeClass('hidden');\r\n return false;\r\n } else {\r\n $cart.find('.warning.message.items').addClass('hidden');\r\n }\r\n\r\n Service.logStatisticsEvent('shoppingcart', 'send');\r\n\r\n // send order\r\n var dimmer = new Dimmer($cart).show(i18next.t('shoppingcart.sending'));\r\n Service.sendOrder(cartItems, cartDetails)\r\n .then((result: boolean) => {\r\n if (!result) {\r\n return $.Deferred().reject();\r\n }\r\n dimmer.hide();\r\n // reset shopping cart\r\n this.clear();\r\n $cart.modal('hide');\r\n })\r\n .fail(() => {\r\n // show error\r\n dimmer.hide();\r\n $cart.find('.negative.message').removeClass('hidden');\r\n });\r\n return false;\r\n },\r\n onHidden: () => {\r\n // remove from body\r\n $cart.remove();\r\n\r\n const currentView = window.ViewManager.getCurrentView();\r\n if (currentView[\"getCurrentViewName\"]) {\r\n const viewName = (currentView).getCurrentViewName();\r\n Service.logStatisticsEvent(viewName, 'open');\r\n }\r\n },\r\n onShow: () => {\r\n // Abholung nur Sprache DE einblenden\r\n $cart.find('.details .fields.pickup').toggleClass('hidden', (Session.getLanguage() || '').toUpperCase() !== 'DE');\r\n\r\n const dateInputs = $cart.find('.form [type=\"date\"]');\r\n // change type to text to disable browser popup\r\n dateInputs.attr('type', 'text');\r\n const defaultDates = {\r\n \"days\": [\"S\", \"M\", \"D\", \"M\", \"D\", \"F\", \"S\"],\r\n \"months\": [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n \"monthsShort\": [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n \"today\": \"Heute\",\r\n \"now\": \"Jetzt\",\r\n \"am\": \"AM\",\r\n \"pm\": \"PM\"\r\n };\r\n\r\n const client = Session.getUserData('client');\r\n let offsetDays = 2;\r\n // additional +3 day delivery delay time for not Austria & Liechtenstein clients\r\n if (!client || !client.country || (client.country.toLowerCase() !== 'ch' && client.country.toLowerCase() !== 'li')) {\r\n offsetDays += 3;\r\n }\r\n\r\n dateInputs.parent().calendar({\r\n type: 'date',\r\n minDate: AddWorkDays(new Date(), offsetDays, disabledDays),\r\n disabledDaysOfWeek: [0, 6],\r\n disabledDates: disabledDays,\r\n firstDayOfWeek: 1,\r\n formatter: {\r\n date: function(date: Date) {\r\n return Moment(date).format('L');\r\n }\r\n },\r\n parser: {\r\n date: function(text: string) {\r\n const dt = Moment(text, 'L');\r\n return dt.isValid() ? dt.toDate() : null;\r\n }\r\n },\r\n text: i18next.t('calender', { returnObjects: true, defaultValue: defaultDates })\r\n });\r\n },\r\n onVisible: () => {\r\n $cart.find('i.info').popup({\r\n position: 'top center'\r\n });\r\n }\r\n })\r\n .modal('refresh')\r\n .modal('show');\r\n }\r\n\r\n _onReceivementChange($cart) {\r\n const $selection = $cart.find('[data-tab=\"details\"] input[name=\"receivement\"]:checked');\r\n if ($selection.parent().hasClass('pickup')) {\r\n $cart.find('.field.pickup').removeClass('hidden');\r\n $cart.find('.field.delivery, .fields.delivery').addClass('hidden');\r\n $cart.find('.form').form({\r\n fields: {\r\n 'pickup-date': ['empty'],\r\n 'pickup-time': ['empty']\r\n }\r\n });\r\n $cart.find('.message.pickup').removeClass('hidden');\r\n $cart.find('.message.delivery').addClass('hidden');\r\n } else {\r\n $cart.find('.field.delivery, .fields.delivery').removeClass('hidden');\r\n $cart.find('.field.pickup').addClass('hidden');\r\n $cart.find('.form').form({\r\n fields: {\r\n 'delivery-date': ['empty']\r\n }\r\n });\r\n $cart.find('.message.pickup').addClass('hidden');\r\n $cart.find('.message.delivery').removeClass('hidden');\r\n }\r\n }\r\n\r\n _enableActiveTab($cart) {\r\n $cart.find('.menu .item').tab('change tab', this.articleTabActive ? 'article' : 'details');\r\n $cart.find('.approve.button').text(this.articleTabActive ? i18next.t('shoppingcart.continue') : i18next.t('shoppingcart.send-order'));\r\n }\r\n\r\n _createMessageWindow(showPrompt: boolean) {\r\n let data = this.getAll();\r\n let $cart = $(ShoppingCartDialog(data));\r\n $('body').append($cart);\r\n $cart.localize();\r\n return $cart;\r\n }\r\n\r\n _bindCartEvents($cart) {\r\n const self = this;\r\n\r\n $cart.on('change', 'input[name=\"receivement\"]', function() {\r\n self._onReceivementChange($cart);\r\n });\r\n\r\n $cart.on('click', '.button.subtract', function(evt: Event) {\r\n // remove 1 piece\r\n let id = $(evt.target).closest('.row').attr('data-article');\r\n let $input = $(evt.target).closest('.grid').find('input');\r\n let tmpVal = $input.val();\r\n if (tmpVal > 0) {\r\n tmpVal--;\r\n self.removeItem(id);\r\n $input.val(tmpVal);\r\n }\r\n\r\n $input.transition('pulse', '100ms');\r\n });\r\n\r\n $cart.on('click', '.button.add', function(evt: Event) {\r\n // add 1 piece\r\n let articleNr = $(evt.target).closest('.row').attr('data-article');\r\n let $input = $(evt.target).closest('.grid').find('input');\r\n let tmpVal = $input.val();\r\n tmpVal++;\r\n self.addItem(articleNr);\r\n $input.val(tmpVal);\r\n\r\n $input.transition('pulse', '100ms');\r\n });\r\n\r\n $cart.on('change', 'input.amount', function(evt) {\r\n let id = $(evt.target).closest('.row').attr('data-article');\r\n let tmpVal = +evt.target.value;\r\n if (tmpVal < 0) {\r\n tmpVal = 0;\r\n evt.target.value = 0;\r\n }\r\n let item = self.get(id);\r\n if (item) {\r\n item.count = tmpVal;\r\n self._save();\r\n self.update();\r\n }\r\n });\r\n\r\n $cart.on('click', '.button.delete', function(evt: Event) {\r\n // remove item from cart\r\n let $row = $(evt.target).closest('.row');\r\n let id = $row.attr('data-article');\r\n $row.transition({\r\n animation: 'fade right',\r\n onComplete: () => {\r\n self.deleteItem(id);\r\n $row.remove();\r\n }\r\n });\r\n });\r\n\r\n $cart.find('.ui.checkbox.tel-avis').checkbox({\r\n 'onChange': function() {\r\n $cart.find('input[name=\"tel-avis\"]').prop('disabled', $(this).is(':checked'));\r\n }\r\n });\r\n\r\n $cart.find('.ui.checkbox.unloading').checkbox({\r\n 'onChange': function() {\r\n $cart.find('input[name=\"unloading-note\"]').prop('disabled', $(this).is(':checked'));\r\n }\r\n });\r\n }\r\n}\r\n\r\nconst ShoppingCartInstance = new ShoppingCart();\r\nexport default ShoppingCartInstance;\r\n","
\r\n
Retoure volle Ware
\r\n
\r\n
Retoure-Artikel
\r\n
Details
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Aus Bestellung:\r\n
\r\n
\r\n
\r\n \r\n \r\n
Bestellung
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Artikel-Nr\r\n
\r\n
\r\n Bezeichnung\r\n
\r\n
\r\n Menge\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Keine Bestellung ausgewählt.\r\n
\r\n
\r\n
\r\n

Gewählte Retour Artikel

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n

\r\n Diese Retouren-Anmeldung bezweckt den Rücktransport von voller Ware zur Halag. Gerne prüfen wir diese und kontaktieren Sie für das weitere Vorgehen.\r\n

\r\n
\r\n
\r\n \r\n
\r\n
\r\n Fehler beim Senden der Retoure aufgetreten!\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n Ihre Retoure Liste ist leer!\r\n
\r\n

Prüfen Sie evtl. die Menge.

\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Abbrechen\r\n
\r\n
\r\n Absenden\r\n \r\n
\r\n
\r\n
\r\n","{{#each data}}\r\n
\r\n
\r\n {{article-nr}}\r\n
\r\n
\r\n {{name}}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{unit}}\r\n
\r\n {{#if ../show-remove-icon}}\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{/if}}\r\n
\r\n{{else}}\r\n {{#if EmptyText}}\r\n {{EmptyText}}\r\n {{else}}\r\n Keine Artikel ausgewählt.\r\n {{/if}}\r\n{{/each}}\r\n","import Session from './session';\r\nimport * as Service from './service';\r\nimport i18next from 'i18next';\r\nimport Moment from 'moment';\r\nimport {\r\n Dimmer\r\n} from './spinner';\r\nimport { AddWorkDays, ValidateDate } from './utils';\r\n\r\nimport RetoureDialog from '../templates/retoure.hbs';\r\nimport RetoureList from '../templates/retoure_list.hbs';\r\nimport { Holidays } from \"./Holidays\";\r\n\r\nclass Retoure {\r\n protected articleTabActive: boolean;\r\n protected items;\r\n protected $cart;\r\n protected userDataId: string;\r\n\r\n constructor() {\r\n this.articleTabActive = true;\r\n }\r\n\r\n init(client, user) {\r\n const userhash = btoa(user.username);\r\n this.userDataId = `retoure-${userhash || 0}`;\r\n\r\n if (user['native-client-id'] != client.id) {\r\n this.userDataId += client.id;\r\n }\r\n\r\n // Retoure aus localStorage laden\r\n this._load();\r\n\r\n this.update();\r\n }\r\n\r\n _load() {\r\n this.items = Session.getUserData(this.userDataId) || this.items;\r\n if (!(this.items instanceof Object)) {\r\n this.items = {};\r\n }\r\n }\r\n\r\n _save() {\r\n Session.setUserData(this.userDataId, this.items);\r\n }\r\n\r\n addItem(articleNr: string, name?: string, count?: number, unit?: string, id?: number) {\r\n const tmpItem = this.items[articleNr];\r\n // TODO remember articles by id+amount additionally, to represent all orders\r\n if (tmpItem) {\r\n tmpItem.amount += (count || 1);\r\n } else if (name != null) {\r\n this.items[articleNr] = {\r\n \"article-nr\": articleNr.trim(),\r\n name: name.trim(),\r\n \"amount\": count,\r\n unit: unit.trim(),\r\n id,\r\n \"show-remove-icon\": true\r\n };\r\n }\r\n this._save();\r\n if (tmpItem) {\r\n // amount update\r\n this.updateItem(tmpItem);\r\n } else {\r\n // full update\r\n this.update();\r\n }\r\n }\r\n\r\n removeItem(articleNr: string, count: number = 1): void {\r\n const tmpItem = this.items[articleNr];\r\n if (tmpItem && tmpItem.amount > 0) {\r\n tmpItem.amount -= count;\r\n\r\n if (tmpItem.amount <= 0) {\r\n delete this.items[articleNr];\r\n }\r\n\r\n this._save();\r\n\r\n // amount update\r\n this.updateItem(tmpItem);\r\n }\r\n }\r\n\r\n deleteItem(articleNr: string) {\r\n let tmpItem = this.items[articleNr];\r\n if (tmpItem) {\r\n tmpItem.amount = 0;\r\n this.updateItem(tmpItem);\r\n }\r\n delete this.items[articleNr];\r\n this._save();\r\n this.update();\r\n }\r\n\r\n clear() {\r\n this.items = {};\r\n this._save();\r\n this.update();\r\n }\r\n\r\n getCount() {\r\n return Object.keys(this.items).length;\r\n }\r\n\r\n get(articleNr: string) {\r\n return this.items[articleNr];\r\n }\r\n\r\n getAll(): Array {\r\n const result = [];\r\n for (var key in this.items) {\r\n if (this.items[key].amount) {\r\n result.push(this.items[key]);\r\n }\r\n }\r\n return result;\r\n }\r\n\r\n update() {\r\n if (this.$cart) {\r\n const products = this.getAll();\r\n const $listData = RetoureList({ data: products, 'show-remove-icon': true });\r\n this.$cart.find('.retoure-products').empty()\r\n .append($listData)\r\n .localize();\r\n }\r\n }\r\n\r\n updateItem(tmpItem) {\r\n this.$cart.find(`.order-products .row[data-article=\"${tmpItem['article-nr']}\"] input.amount`).val(tmpItem['amount'] || 0);\r\n this.$cart.find(`.retoure-products .row[data-article=\"${tmpItem['article-nr']}\"] input.amount`).val(tmpItem['amount'] || 0);\r\n }\r\n\r\n _updateOrderProducts(products: any[]) {\r\n const retoureData = this.items;\r\n if (retoureData) {\r\n for (let i = 0; i < products.length; i++) {\r\n const item = products[i];\r\n const retoureItem = retoureData[item['article-nr']];\r\n item.amount = retoureItem ? retoureItem.amount : 0;\r\n }\r\n }\r\n const $listData = RetoureList({ data: products });\r\n this.$cart.find('.order-products').empty()\r\n .append($listData);\r\n }\r\n\r\n show() {\r\n Holidays.load()\r\n .then((holidays) => {\r\n this._onShowDialog(null, holidays);\r\n }, () => {\r\n this._onShowDialog();\r\n })\r\n }\r\n\r\n _onShowDialog(evt?: Event, holidays?: any[]) {\r\n if (evt) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n }\r\n\r\n // show cart dialog\r\n this.$cart = this._createMessageWindow(false);\r\n this._bindCartEvents(this.$cart);\r\n\r\n this.$cart.find('[type=\"date\"]').parent().calendar();\r\n\r\n this.$cart.find('div.checkbox').checkbox();\r\n this.$cart.find('.form').form({\r\n fields: {\r\n 'pickup-date': ['empty']\r\n }\r\n });\r\n\r\n const $orders = this.$cart.find('.dropdown.orders');\r\n this._initDropdown(this.$cart, $orders);\r\n\r\n this.$cart.find('.menu .item').tab({\r\n onVisible: (tab) => {\r\n this.articleTabActive = tab == 'article';\r\n this._enableActiveTab(this.$cart);\r\n }\r\n });\r\n\r\n // get active tab\r\n const $activeTab = this.$cart.find('.tabular.menu .item.active');\r\n this.articleTabActive = $activeTab.attr('data-tab') == 'article';\r\n this._enableActiveTab(this.$cart);\r\n\r\n const disabledDays = [];\r\n if (holidays) {\r\n holidays.forEach(function(elem) {\r\n disabledDays.push({\r\n date: new Date(elem.date),\r\n message: (elem.message || '').replace(/(?:\\r\\n|\\r|\\n)/g, ' / ')\r\n });\r\n });\r\n }\r\n\r\n this.$cart.modal({\r\n onApprove: () => {\r\n // check active tab\r\n if (this.articleTabActive) {\r\n this.articleTabActive = false;\r\n this._enableActiveTab(this.$cart);\r\n return false;\r\n }\r\n\r\n // prüfe Details Angaben auf Vollständigkeit\r\n if (!this.$cart.find('.form').form('validate form')) {\r\n this.articleTabActive = false;\r\n this._enableActiveTab(this.$cart);\r\n return false;\r\n }\r\n\r\n const cartDetails = this.$cart.find('.form').form('get values');\r\n cartDetails['on-next-delivery'] = cartDetails['on-next-delivery'] == 'on';\r\n\r\n if (cartDetails['on-next-delivery'] === false &&\r\n !ValidateDate(cartDetails['pickup-date'], disabledDays)) {\r\n this.$cart.find('.form .field.pick-up').addClass('error');\r\n return false;\r\n }\r\n\r\n // prüfe Inhalt des Warenkorbs, zeige warnung an\r\n const cartItems = this.getAll();\r\n let amount = 0;\r\n for (var i = 0; i < cartItems.length; i++) {\r\n amount += cartItems[i].amount;\r\n }\r\n if (amount <= 0) {\r\n this.$cart.find('.warning.message').removeClass('hidden');\r\n return false;\r\n } else {\r\n this.$cart.find('.warning.message').addClass('hidden');\r\n }\r\n\r\n // send order\r\n const dimmer = new Dimmer(this.$cart).show(i18next.t('retoure.sending'));\r\n // TODO Abholung Auftrag senden\r\n Service.requestPickup(cartItems, cartDetails)\r\n .then((result) => {\r\n if (!result) {\r\n return $.Deferred().reject();\r\n }\r\n dimmer.hide();\r\n // reset shopping cart\r\n this.clear();\r\n this.$cart.modal('hide');\r\n })\r\n .fail(() => {\r\n // show error\r\n dimmer.hide();\r\n this.$cart.find('.negative.message').removeClass('hidden');\r\n });\r\n return false;\r\n },\r\n onHidden: () => {\r\n // remove from body\r\n this.$cart.remove();\r\n this.$cart = null;\r\n },\r\n onShow: () => {\r\n const dateInputs = this.$cart.find('.form [type=\"date\"]');\r\n // change type to text to disable browser popup\r\n dateInputs.attr('type', 'text');\r\n const defaultDates = {\r\n \"days\": [\"S\", \"M\", \"D\", \"M\", \"D\", \"F\", \"S\"],\r\n \"months\": [\"Januar\", \"Februar\", \"März\", \"April\", \"Mai\", \"Juni\", \"Juli\", \"August\", \"September\", \"Oktober\", \"November\", \"Dezember\"],\r\n \"monthsShort\": [\"Jan\", \"Feb\", \"Mär\", \"Apr\", \"Mai\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Okt\", \"Nov\", \"Dez\"],\r\n \"today\": \"Heute\",\r\n \"now\": \"Jetzt\",\r\n \"am\": \"AM\",\r\n \"pm\": \"PM\"\r\n };\r\n\r\n const client = Session.getUserData('client');\r\n let offsetDays = 2;\r\n // additional +3 days delivery delay for not austria clients\r\n if (!client || !client.country || client.country.toLowerCase() !== 'ch') {\r\n offsetDays += 3;\r\n }\r\n\r\n dateInputs.parent().calendar({\r\n type: 'date',\r\n minDate: AddWorkDays(new Date(), offsetDays, disabledDays),\r\n disabledDaysOfWeek: [0, 6],\r\n disabledDates: disabledDays,\r\n firstDayOfWeek: 1,\r\n formatter: {\r\n date: function(date: Date) {\r\n return Moment(date).format('L');\r\n }\r\n },\r\n parser: {\r\n date: function(text: string) {\r\n const dt = Moment(text, 'L');\r\n return dt.isValid() ? dt.toDate() : null;\r\n }\r\n },\r\n text: i18next.t('calender', { returnObjects: true, defaultValue: defaultDates }),\r\n onSelect: (date, mode) => {\r\n this.$cart.find('textarea[name=\"customer-message\"]').focus();\r\n }\r\n });\r\n\r\n this.update();\r\n }\r\n })\r\n .modal('refresh')\r\n .modal('show');\r\n }\r\n\r\n _initDropdown($cart, $ordersDropdown) {\r\n const instance = this;\r\n // Init dropdown\r\n $ordersDropdown.dropdown({\r\n placeholder: i18next.t('retoure.orders'),\r\n values: [],\r\n onChange: function(value: string, text: string, $selectedItem) {\r\n Service.getProductsByOrder(value)\r\n .then((products) => {\r\n instance._updateOrderProducts(products);\r\n });\r\n }\r\n });\r\n Service.getProductsOrders()\r\n .then(function(orders: Array<{ nr: number, date: string }>) {\r\n // prepare values\r\n const orderList = $.map(orders, function(order: { nr: number, date: string }) {\r\n return {\r\n name: `${order.nr} (${Moment(order.date).format('L')})`,\r\n value: order.nr\r\n };\r\n });\r\n $ordersDropdown.dropdown(\"change values\", orderList);\r\n });\r\n }\r\n\r\n _enableActiveTab($cart) {\r\n $cart.find('.menu .item').tab('change tab', this.articleTabActive ? 'article' : 'details');\r\n $cart.find('.approve.button').text(this.articleTabActive ? i18next.t('retoure.continue') : i18next.t('retoure.send-order'));\r\n }\r\n\r\n _createMessageWindow(showPrompt) {\r\n let data = this.getAll();\r\n let $cart = $(RetoureDialog(data));\r\n $('body').append($cart);\r\n $cart.localize();\r\n return $cart;\r\n }\r\n\r\n _bindCartEvents($cart) {\r\n const self = this;\r\n\r\n $cart.on('click', '.button.subtract', function(evt) {\r\n // remove 1 piece\r\n const $row = $(evt.target).closest('.row');\r\n const articleNr = $row.attr('data-article');\r\n const $input = $row.find('input');\r\n let tmpVal = $input.val();\r\n if (tmpVal > 0) {\r\n tmpVal--;\r\n $input.val(tmpVal);\r\n if (!tmpVal) {\r\n const $realRow = $cart.find(`.retoure-products [data-id=\"${$row.data('id')}\"]`)\r\n if ($realRow.length) {\r\n $realRow.transition({\r\n animation: 'fade right',\r\n onComplete: () => {\r\n self.removeItem(articleNr);\r\n }\r\n });\r\n }\r\n } else {\r\n self.removeItem(articleNr);\r\n $input.transition('pulse', '100ms');\r\n }\r\n }\r\n });\r\n\r\n $cart.on('click', '.button.add', function(evt: Event) {\r\n // add 1 piece\r\n const $target = $(evt.target);\r\n const $row = $target.closest('.row');\r\n const articleNr = $row.attr('data-article');\r\n const articleID = $row.attr('data-id');\r\n const name = $row.find('>.name.column').text();\r\n const unit = $row.find('>.name.unit').text();\r\n const $input = $target.closest('.grid').find('input');\r\n let tmpVal = $input.val();\r\n tmpVal++;\r\n self.addItem(articleNr, name, 1, unit, articleID);\r\n $input.val(tmpVal);\r\n\r\n $input.transition('pulse', '100ms');\r\n });\r\n\r\n $cart.on('change', 'input.amount', function(evt) {\r\n const id = $(evt.target).closest('.row').attr('data-article');\r\n const tmpVal = Math.max(0, +evt.target.value);\r\n\r\n const $target = $(evt.target);\r\n const $row = $target.closest('.row');\r\n const articleNr = $row.attr('data-article');\r\n const articleID = $row.attr('data-id');\r\n const name = $row.find('>.name.column').text();\r\n const unit = $row.find('>.name.unit').text();\r\n const $input = $target.closest('.grid').find('input');\r\n\r\n const item = self.get(id);\r\n if (item) {\r\n const diff = tmpVal - item.amount;\r\n if (diff > 0) {\r\n self.addItem(articleNr, name, diff, unit, articleID);\r\n } else {\r\n if (tmpVal <= 0) {\r\n const $realRow = $cart.find(`.retoure-products [data-id=\"${$row.data('id')}\"]`);\r\n $realRow.transition({\r\n animation: 'fade right',\r\n onComplete: () => {\r\n self.removeItem(articleNr, Math.abs(diff));\r\n }\r\n });\r\n return;\r\n } else {\r\n self.removeItem(articleNr, Math.abs(diff));\r\n }\r\n }\r\n } else {\r\n self.addItem(articleNr, name, tmpVal, unit, articleID);\r\n }\r\n\r\n $input.val(tmpVal);\r\n\r\n $input.transition('pulse', '100ms');\r\n });\r\n\r\n $cart.on('click', '.button.delete', function(evt) {\r\n // remove item from cart\r\n const $row = $(evt.target).closest('.row');\r\n const articleNr = $row.attr('data-article');\r\n $row.transition({\r\n animation: 'fade right',\r\n onComplete: () => {\r\n self.deleteItem(articleNr);\r\n $row.remove();\r\n }\r\n });\r\n });\r\n\r\n $cart.find('div.checkbox.on-next-delivery input').on('change', function() {\r\n $cart.find('.details .field.pick-up').toggleClass('disabled', this.checked)\r\n .toggleClass('required', !this.checked);\r\n if (this.checked) {\r\n $cart.find('.form').form('remove rule', 'pickup-date', ['empty']);\r\n } else {\r\n $cart.find('.form').form('add rule', 'pickup-date', ['empty']);\r\n }\r\n });\r\n }\r\n}\r\n\r\nconst RetoureInstance = new Retoure();\r\nexport default RetoureInstance;\r\n","
\r\n
\r\n
Upload...
\r\n
\r\n\r\n
\r\n \r\n Um die Nutzung des Kundenportals fortsetzen zu können, müssen Sie die AGB gelesen und akzeptiert haben.\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n Abbrechen\r\n
\r\n
\r\n Weiter\r\n
\r\n
\r\n
\r\n","import View from './view';\r\nimport Router from '../router';\r\nimport { Dimmer } from '../spinner';\r\nimport * as Service from '../service';\r\nimport Session from '../session';\r\nimport * as Utils from '../utils';\r\nimport ShoppingCart from '../shoppingcart';\r\nimport Retoure from '../retoure';\r\n\r\nimport AcceptConditionsDialog from '../../templates/accept_conditions_dialog.hbs';\r\n\r\nimport i18next from 'i18next';\r\n\r\nclass LoginView extends View {\r\n protected username: string;\r\n\r\n constructor(userName?: string) {\r\n super();\r\n this.username = userName;\r\n }\r\n\r\n init() {\r\n if (Session.isLoggedIn() && !this._getToken()) {\r\n Router.pushState('main');\r\n return;\r\n }\r\n this.show();\r\n }\r\n\r\n show() {\r\n const self = this;\r\n $('.main-content').load('templates/login.html', function(data) {\r\n self._initValidation();\r\n $(this).localize();\r\n\r\n $('.login-box button').on(\"click\", self.checkLogin);\r\n $('input#username').val(self.username || '');\r\n $('.checkbox').checkbox();\r\n $('input#username').on('keydown', $.proxy(self._triggerEnter, self));\r\n $('input#password').on('keydown', $.proxy(self._triggerEnter, self))\r\n .siblings('i.eye.icon')\r\n .on('click', $.proxy(self._triggerPasswordVisibility, self));\r\n\r\n const token = self._getToken();\r\n if (token != null) {\r\n self.checkToken(token);\r\n }\r\n });\r\n }\r\n\r\n _triggerPasswordVisibility(evt) {\r\n const $eye = $(evt.currentTarget);\r\n const passwordInput = $eye.siblings('input');\r\n if (passwordInput.attr('type') == 'password') {\r\n passwordInput.attr('type', 'text');\r\n $eye.addClass('slash');\r\n } else {\r\n passwordInput.attr('type', 'password');\r\n $eye.removeClass('slash');\r\n }\r\n }\r\n\r\n _getToken(): string {\r\n return Utils.getParameterFromUrl('t') || null;\r\n }\r\n\r\n _initValidation() {\r\n $('.ui.login-box')\r\n .form({\r\n fields: {\r\n username: ['email', 'empty'],\r\n password: ['empty']\r\n }\r\n });\r\n }\r\n\r\n _triggerEnter(evt) {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n\r\n if (evt.currentTarget.id === 'username') {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $('input#password').focus();\r\n } else if (evt.currentTarget.id === 'password') {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n this.checkLogin();\r\n }\r\n }\r\n\r\n checkLogin(evt?) {\r\n if (!$('.form').form('validate form')) {\r\n return;\r\n }\r\n const logDimmer = new Dimmer($('.login-box')).show(i18next.t('portal.verify'));\r\n const loginValues = $('.form').form('get values');\r\n Service.login(loginValues.username, loginValues.password)\r\n .then(function(data) {\r\n if (!data) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n return Service.isAcceptingConditionsRequired(Utils.getAuthString(data))\r\n .then((requireAcceptConditions: boolean) => {\r\n if (requireAcceptConditions) {\r\n const acceptDeferred = $.Deferred();\r\n const $dialog = $(AcceptConditionsDialog());\r\n $dialog.localize();\r\n\r\n $('.modal-container').append($dialog);\r\n\r\n $dialog.modal({\r\n autofocus: false,\r\n closable: false,\r\n dimmerSettings: {\r\n variation: 'inverted'\r\n },\r\n onShow: function() {\r\n $dialog.find('.checkbox').checkbox({\r\n onChange: function() {\r\n $dialog.find('.positive.button').toggleClass('disabled', !this.checked);\r\n }\r\n });\r\n\r\n logDimmer.hide();\r\n },\r\n onHidden: function() {\r\n $dialog.modal('destroy');\r\n $dialog.remove();\r\n },\r\n onApprove: function(element) {\r\n const accepted = $dialog.find('.checkbox').checkbox('is checked');\r\n\r\n if (!accepted) {\r\n acceptDeferred.reject('AGB wurden nicht akzeptiert.');\r\n return;\r\n }\r\n\r\n Session.setAuthString(Utils.getAuthString(data));\r\n\r\n Service.setUserConditionsAccepted(true)\r\n .then(acceptDeferred.resolve, acceptDeferred.reject)\r\n\r\n logDimmer.show();\r\n },\r\n onDeny: function(element) {\r\n acceptDeferred.reject();\r\n }\r\n }).modal('show');\r\n\r\n return acceptDeferred;\r\n }\r\n })\r\n .then(() => {\r\n Service.logStatisticsEvent('login', 'login');\r\n\r\n Session.setAuthString(Utils.getAuthString(data));\r\n Session.setLoggedIn(true);\r\n Session.setUserData(\"user\", btoa(loginValues.username));\r\n // clear cart on new login\r\n ShoppingCart.clear();\r\n Retoure.clear();\r\n });\r\n })\r\n .then(() => { Router.pushState('main'); })\r\n .fail(function(msg) {\r\n $('.form').addClass('error');\r\n $('.form .message').text(msg ? msg.statusText : i18next.t('portal.error.check-your-login'));\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n }\r\n\r\n checkToken(token: string) {\r\n const logDimmer = new Dimmer($('.login-box')).show(i18next.t('portal.verify'));\r\n const loginValues = $('.form').form('get values');\r\n Service.login(token)\r\n .then(function(data) {\r\n if (!data) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n Session.setAuthString(Utils.getAuthString(data));\r\n Session.setLoggedIn(true);\r\n Session.setUserData(\"user\", btoa(loginValues.username));\r\n // clear cart on new login\r\n ShoppingCart.clear();\r\n Retoure.clear();\r\n Router.pushState('main', null, true);\r\n })\r\n .fail(function(msg) {\r\n $('.form').addClass('error');\r\n $('.form .message').text(msg ? msg.statusText : i18next.t('portal.error.check-your-login'));\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n }\r\n\r\n dispose() {\r\n\r\n }\r\n}\r\n\r\nexport default LoginView;\r\n","import View from './view';\r\nimport PageSpinner, { Dimmer } from '../spinner';\r\nimport * as Service from '../service';\r\nimport * as Utils from '../utils';\r\nimport i18next from 'i18next';\r\n\r\nclass RecoverView extends View {\r\n protected $parent;\r\n protected token;\r\n\r\n constructor(userName) {\r\n super();\r\n }\r\n\r\n init() {\r\n this.show();\r\n }\r\n\r\n show() {\r\n PageSpinner.show('');\r\n this.$parent = $('.main-content');\r\n this.$parent.load('templates/recover.html', (evt) => {\r\n $(this.$parent).localize();\r\n\r\n // Check for Reset Token\r\n const token = this._getToken();\r\n if(token) {\r\n this.token = token;\r\n this.$parent.find('.reset.row').removeClass('hidden');\r\n this.$parent.find('.request.row').addClass('hidden');\r\n }\r\n\r\n this._initValidation();\r\n this.$parent.find('.request-box button').on(\"click\", $.proxy(this.sendRecoverRequest, this));\r\n this.$parent.find('.reset-box button').on(\"click\", $.proxy(this.sendResetRequest, this));\r\n\r\n this.$parent.find('input#username').on('keydown', $.proxy(this._triggerEnter, this));\r\n this.$parent.find('input#password').on('keydown', $.proxy(this._triggerEnter, this));\r\n this.$parent.find('input#password-confirm').on('keydown', $.proxy(this._triggerEnter, this));\r\n\r\n PageSpinner.hide();\r\n });\r\n }\r\n\r\n _getToken() {\r\n let param = Utils.getParameterFromUrl('t');\r\n if(param!=null) {\r\n return param;\r\n }\r\n return null;\r\n }\r\n\r\n _initValidation() {\r\n this.$parent.find('.form.reset-box')\r\n .form({\r\n on: 'blur',\r\n fields: {\r\n 'username': ['email', 'empty'],\r\n 'password': ['minLength[6]','empty'],\r\n 'password-confirm': 'match[password]'\r\n }\r\n })\r\n ;\r\n\r\n this.$parent.find('.form.request-box')\r\n .form({\r\n on: 'blur',\r\n fields: {\r\n 'username': ['email', 'empty']\r\n }\r\n })\r\n ;\r\n }\r\n\r\n _triggerEnter(evt) {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n const nextField = $(evt.currentTarget).closest('.field').next('.field');\r\n if(nextField.length>0){\r\n nextField.find('input').focus();\r\n }else{\r\n $(evt.currentTarget).closest('.form').find('button').click();\r\n }\r\n evt.preventDefault();\r\n }\r\n\r\n sendRecoverRequest(evt) {\r\n const self = this;\r\n if (!this.$parent.find('.form.request-box').form('validate form')) {\r\n return;\r\n }\r\n const logDimmer = new Dimmer($('.request-box')).show(i18next.t('portal.recover.send-request'));\r\n const loginValues = $('.request-box.form').form('get values');\r\n Service.requestPasswordReset(loginValues.username)\r\n .then(function(data) {\r\n if (!data) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n self.$parent.find('.request.row').addClass('hidden');\r\n self.$parent.find('.check-info.row').removeClass('hidden');\r\n })\r\n .fail(function(msg) {\r\n self.$parent.find('.form.request-box').addClass('error');\r\n self.$parent.find('.form.request-box .message').text(msg ? msg.statusText : i18next.t('portal.unexpected-error-occured'));\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n }\r\n\r\n sendResetRequest(evt: Event) {\r\n const self = this;\r\n if (!this.$parent.find('.form.reset-box').form('validate form')) {\r\n return;\r\n }\r\n const logDimmer = new Dimmer($('.reset-box')).show(i18next.t('portal.recover.send-request'));\r\n const loginValues = $('.reset-box.form').form('get values');\r\n Service.resetPasswordReset(loginValues.username, loginValues.password, this.token)\r\n .then(function(data) {\r\n if (!data) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n self.$parent.find('.reset.row').addClass('hidden');\r\n self.$parent.find('.success-info.row').removeClass('hidden');\r\n })\r\n .fail(function(msg) {\r\n self.$parent.find('.form.reset-box').addClass('error');\r\n self.$parent.find('.form.reset-box .message').text(msg ? msg.responseText : i18next.t('portal.unexpected-error-occured'));\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n }\r\n\r\n dispose() {\r\n\r\n }\r\n}\r\n\r\nexport default RecoverView;\r\n","import i18next from 'i18next';\r\n\r\nclass Message {\r\n\r\n show(title: string, content: string, onClose?: Function) {\r\n if ($('body > .msg').length === 0) {\r\n this._createMessageWindow();\r\n }\r\n\r\n $('body > .msg.modal .header p').text(title ? title : '').toggleClass('hidden', !title);\r\n $('body > .msg.modal .content p').text(content ? content : '').toggleClass('hidden', !content);\r\n\r\n $('body > .msg.modal')\r\n .modal({\r\n inverted: true,\r\n closable: false,\r\n onApprove: onClose || $.noop\r\n })\r\n .modal('refresh')\r\n .modal('show');\r\n }\r\n\r\n prompt(title: string, content: string, onConfirm: Function, onCancel: Function) {\r\n const resultDeferred = $.Deferred();\r\n\r\n if ($('body > .prompt').length === 0) {\r\n this._createPromptWindow();\r\n }\r\n\r\n $('body > .prompt.modal .header').text(title ? title : '').toggleClass('hidden', !title);\r\n $('body > .prompt.modal .content').toggleClass('hidden', !content).find('p').html(content ? content : '');\r\n\r\n $('body > .prompt.modal')\r\n .modal({\r\n allowMultiple: true,\r\n closable: false,\r\n onDeny: () => {\r\n if (onCancel) {\r\n onCancel();\r\n }\r\n\r\n resultDeferred.reject();\r\n },\r\n onApprove: () => {\r\n if (onConfirm) {\r\n onConfirm();\r\n }\r\n\r\n resultDeferred.resolve();\r\n }\r\n })\r\n .modal('refresh')\r\n .modal('show');\r\n\r\n return resultDeferred.promise();\r\n }\r\n\r\n hide() {\r\n $('body > .message .modal').modal('hide');\r\n }\r\n\r\n _createMessageWindow() {\r\n $('body').append([\r\n '
',\r\n '
',\r\n '

',\r\n '

',\r\n '
',\r\n '
',\r\n '

',\r\n '

',\r\n '
',\r\n '
',\r\n '
',\r\n i18next.t('portal.ok'),\r\n '
',\r\n '
',\r\n '
'\r\n ].join(''));\r\n }\r\n\r\n _createPromptWindow() {\r\n $('body').append([\r\n '
',\r\n '
',\r\n '
',\r\n '
',\r\n '

',\r\n '

',\r\n '
',\r\n '
',\r\n '
',\r\n i18next.t('portal.yes'),\r\n '
',\r\n '
',\r\n i18next.t('portal.no'),\r\n '
',\r\n '
',\r\n '
'\r\n ].join(''));\r\n }\r\n}\r\n\r\nexport default (new Message());\r\n","import View from './view';\r\nimport { Dimmer } from '../spinner';\r\nimport * as Service from '../service';\r\nimport Message from '../message';\r\n\r\nimport i18next from 'i18next';\r\n\r\nimport '../../less/register.less';\r\n\r\nclass RegisterView extends View {\r\n\r\n protected $parent;\r\n protected currentView: string;\r\n\r\n init() {\r\n this.show();\r\n }\r\n\r\n show() {\r\n this.$parent = $('.main-content');\r\n this.$parent.load('templates/register.html', (evt) => {\r\n $(this.$parent).localize();\r\n this.currentView = 'base';\r\n this.$parent.find('.dropdown').dropdown();\r\n this.$parent.find('.checkbox').checkbox();\r\n this._initValidation();\r\n this._bindEvents();\r\n });\r\n }\r\n\r\n _initValidation() {\r\n this.$parent.find('.form.base-data')\r\n .form({\r\n keyboardShortcuts: false,\r\n revalidate: true,\r\n fields: {\r\n 'customer-id': 'empty',\r\n 'first-name': 'empty',\r\n 'last-name': 'empty',\r\n 'street': 'empty',\r\n 'house-nr': 'empty',\r\n 'postcode': ['minLength[3]', 'empty'],\r\n 'city': 'empty',\r\n 'contact-email': 'email',\r\n 'tel-nr': 'empty'\r\n }\r\n });\r\n\r\n this.$parent.find('.form.login-data')\r\n .form({\r\n keyboardShortcuts: false,\r\n revalidate: true,\r\n fields: {\r\n 'login-id': ['email', 'empty'],\r\n 'password': ['minLength[6]', 'empty'],\r\n 'password-confirm': 'match[password]'\r\n }\r\n })\r\n ;\r\n\r\n this.$parent.find('.form.summary-data')\r\n .form({\r\n revalidate: true,\r\n fields: {\r\n 'accept-license': {\r\n identifier: 'accept-license',\r\n rules: [{\r\n type: 'checked',\r\n prompt: i18next.t('portal.reg.check-license')\r\n }]\r\n }\r\n }\r\n })\r\n ;\r\n }\r\n\r\n _bindEvents() {\r\n const self = this;\r\n // switch view events\r\n this.$parent.find('.button.next, .button.back').on('click', function(evt) {\r\n if ($(this).hasClass('next')) {\r\n self.switchDialogView($(this).data('id'), 'next');\r\n } else {\r\n self.switchDialogView($(this).data('id'), 'back');\r\n }\r\n });\r\n\r\n // send registration event\r\n this.$parent.find('.button.send').on('click', function(evt) {\r\n if (!self.isSummaryValid()) {\r\n return;\r\n }\r\n self._sendRegistration();\r\n });\r\n\r\n this.$parent.find('.form').on('keydown', 'input', $.proxy(self._triggerEnter, self));\r\n\r\n // toggle password visibility\r\n const instance = this;\r\n this.$parent.find('div.password i.eye.icon').on('click', function(evt) {\r\n const $eye = instance.$parent.find('div.password i.eye.Icon');\r\n const passwordInput = $eye.siblings('input');\r\n if (passwordInput.attr('type') == 'password') {\r\n passwordInput.attr('type', 'text');\r\n $eye.addClass('slash');\r\n } else {\r\n passwordInput.attr('type', 'password');\r\n $eye.removeClass('slash');\r\n }\r\n });\r\n }\r\n\r\n _sendRegistration() {\r\n let self = this;\r\n let baseFormValues = self.$parent.find('.base-data.form').form('get values');\r\n let loginFormValues = self.$parent.find('.login-data.form').form('get values');\r\n let data = $.extend(true, baseFormValues, loginFormValues);\r\n\r\n const logDimmer = new Dimmer(self.$parent.find('.form')).show(i18next.t('portal.reg.register') + '...');\r\n Service.registerClient(data, (data) => {\r\n self.$parent.find('.step.summary').addClass('completed');\r\n self.$parent.find('.registration.row, .success-info.row').toggleClass('hidden');\r\n logDimmer.remove();\r\n }, (msg) => {\r\n self.$parent.find('.form').addClass('error');\r\n self.$parent.find('.message.error').text(msg.responseText);\r\n logDimmer.remove();\r\n });\r\n }\r\n\r\n _triggerEnter(evt) {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n\r\n const $form = $(evt.currentTarget).closest('.form');\r\n const $inputsList = $form.find('input:not(.hidden,.noselection), button');\r\n const index = $inputsList.index(evt.currentTarget);\r\n\r\n if (index < $inputsList.length) {\r\n evt.preventDefault();\r\n evt.stopPropagation();\r\n $($inputsList.get(index + 1)).focus();\r\n }\r\n }\r\n\r\n switchDialogView(nextView: string, direction: string) {\r\n this._validateFormsOnSwitch(direction)\r\n .then(() => {\r\n this._changeView(nextView);\r\n });\r\n }\r\n\r\n _validateFormsOnSwitch(direction: string) {\r\n const deffer = $.Deferred();\r\n if (direction == 'next') {\r\n switch (this.currentView) {\r\n case 'base':\r\n this.validateBaseData()\r\n .then(() => {\r\n const message = i18next.t('portal.reg.myOwnEmail');\r\n return Message.prompt(null, message, () => {\r\n }, () => {\r\n setTimeout(() => {\r\n $('.base-data.form [name=\"contact-email\"]').focus();\r\n }, 50);\r\n });\r\n })\r\n .then(() => {\r\n this.$parent.find('.step.base').addClass('completed');\r\n deffer.resolve();\r\n });\r\n break;\r\n\r\n case 'login':\r\n this.validateLoginData()\r\n .then(() => {\r\n this.$parent.find('.step.login').addClass('completed');\r\n deffer.resolve();\r\n });\r\n break;\r\n\r\n default:\r\n deffer.resolve();\r\n break;\r\n }\r\n } else {\r\n deffer.resolve();\r\n }\r\n return deffer.promise();\r\n }\r\n\r\n _changeView(nextView: string) {\r\n switch (nextView) {\r\n case 'base':\r\n this.$parent.find('.login-data').addClass('hidden');\r\n this.$parent.find('.summary-data').addClass('hidden');\r\n this.$parent.find('.base-data').removeClass('hidden');\r\n break;\r\n case 'login':\r\n this.$parent.find('.summary-data').addClass('hidden');\r\n this.$parent.find('.base-data').addClass('hidden');\r\n this.$parent.find('.login-data').removeClass('hidden');\r\n\r\n if (this.currentView === 'base') {\r\n let email = $('.base-data.form').form('get value', 'contact-email');\r\n this.$parent.find('.login-data input[name=\"login-id\"]').val(email);\r\n }\r\n\r\n if (this.currentView === 'base') {\r\n const fName = $('.base-data.form').form('get value', 'first-name');\r\n const lName = $('.base-data.form').form('get value', 'last-name');\r\n this.$parent.find('.login-data input[name=\"login-first-name\"]').val(fName);\r\n this.$parent.find('.login-data input[name=\"login-last-name\"]').val(lName);\r\n }\r\n this.$parent.find('.login-data input[name=\"password\"]').focus();\r\n break;\r\n case 'summary':\r\n this.$parent.find('.base-data').addClass('hidden');\r\n this.$parent.find('.login-data').addClass('hidden');\r\n this.$parent.find('.summary-data').removeClass('hidden');\r\n\r\n const baseFormValues = $('.base-data.form').form('get values');\r\n const loginFormValues = $('.login-data.form').form('get values');\r\n const summaryValues = $.extend(true, baseFormValues, loginFormValues);\r\n summaryValues.name = `${summaryValues['first-name'] || ''} ${summaryValues['last-name'] || ''}`;\r\n const $summaryTable = this.$parent.find('.summary-data table');\r\n const formKeys = Object.keys(summaryValues);\r\n for (let i = 0; i < formKeys.length; i++) {\r\n const currentKey = formKeys[i];\r\n const $field = $summaryTable.find(`tr.${currentKey} td.value`);\r\n if ($field.length === 0) {\r\n continue;\r\n } else if (currentKey === 'street') {\r\n $field.text(`${summaryValues.street} ${summaryValues['house-nr']}`);\r\n } else if (currentKey === 'city') {\r\n $field.text(`${summaryValues.postcode} ${summaryValues.city}`);\r\n } else if (currentKey === 'country') {\r\n const textItem = this.$parent.find('.base-data div.dropdown').dropdown('get item', summaryValues[currentKey]);\r\n $field.text(!textItem ? '' : textItem.text());\r\n } else {\r\n $field.text(summaryValues[currentKey]);\r\n }\r\n }\r\n break;\r\n }\r\n\r\n // Fortschritt setzen\r\n this.$parent.find('.step.active').removeClass('active');\r\n this.$parent.find(`.step.${nextView}`).addClass('active');\r\n this.currentView = nextView;\r\n }\r\n\r\n validateBaseData() {\r\n if (this.$parent.find('.base-data.form').form('validate form')) {\r\n return $.Deferred().resolve().promise();\r\n } else {\r\n return $.Deferred().reject().promise();\r\n }\r\n }\r\n\r\n validateLoginData() {\r\n if (!this.$parent.find('.login-data.form').form('validate form')) {\r\n return $.Deferred().reject().promise();\r\n }\r\n\r\n const logDimmer = new Dimmer(this.$parent.find('.login-data.form')).show(i18next.t('portal.verify'));\r\n const nameCheckDefer = $.Deferred();\r\n const userName = this.$parent.find('.login-data.form').form('get value', 'login-id');\r\n Service.checkUsername(userName)\r\n .then((userExists: boolean) => {\r\n if (userExists) {\r\n return $.Deferred().reject().promise();\r\n }\r\n nameCheckDefer.resolve();\r\n })\r\n .fail(() => {\r\n this.$parent.find('.login-data.form').addClass('error');\r\n this.$parent.find('.error.message').text(i18next.t('portal.error.username-used-already'));\r\n nameCheckDefer.reject();\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n\r\n return nameCheckDefer.promise();\r\n }\r\n\r\n isSummaryValid() {\r\n return this.$parent.find('.summary-data.form').form('validate form');\r\n }\r\n\r\n dispose() {\r\n\r\n }\r\n}\r\n\r\nexport default RegisterView;\r\n","/*\r\n* Grundklasse für eine View mit erforderlichen Funktionen\r\n*/\r\nclass SubView {\r\n protected $parent;\r\n\r\n constructor(container) {\r\n this.$parent = container;\r\n }\r\n\r\n init() {\r\n throw new TypeError(`'${this.constructor.name}' class must implement method 'init()'`);\r\n }\r\n\r\n show() {\r\n return this._flipIn(this.$parent);\r\n }\r\n\r\n hide() {\r\n return this._flipOut(this.$parent);\r\n }\r\n\r\n dispose() {\r\n throw new TypeError(`'${this.constructor.name}' class must implement method 'dispose()'`);\r\n }\r\n\r\n _onShown() {\r\n }\r\n\r\n _onHidden() {\r\n }\r\n\r\n _flipIn(element) {\r\n const self = this;\r\n const flipDefer = $.Deferred();\r\n element.transition({\r\n animation: 'vertical flip in',\r\n onComplete: function() {\r\n $(this).addClass('active').remove('hidden');\r\n self._onShown();\r\n flipDefer.resolve(this);\r\n }\r\n });\r\n return flipDefer.promise();\r\n }\r\n\r\n _flipOut(element) {\r\n const self = this;\r\n const flipDefer = $.Deferred();\r\n element.transition({\r\n animation: 'vertical flip out',\r\n onComplete: function() {\r\n $(this).removeClass('active');\r\n self._onHidden();\r\n flipDefer.resolve(this);\r\n }\r\n });\r\n return flipDefer.promise();\r\n }\r\n}\r\n\r\nexport default SubView;\r\n","import * as Service from './service';\r\nimport i18next from 'i18next';\r\n\r\nclass DownloadHelper {\r\n static downloadDocument(uid: string) {\r\n Service.logStatisticsEvent('documents', 'download');\r\n\r\n Service.downloadDocument(uid)\r\n .fail(function(resultCode: number) {\r\n switch (resultCode) {\r\n case 401:\r\n case 403:\r\n alert(i18next.t('portal.no-rights-download'));\r\n break;\r\n case 404:\r\n alert(i18next.t('portal.file-not-found'));\r\n break;\r\n default:\r\n alert(i18next.t('portal.unexpected-error-occured'));\r\n }\r\n });\r\n }\r\n\r\n static downloadFile(uid: string) {\r\n Service.downloadFile(uid)\r\n .fail(function(resultCode: number) {\r\n switch (resultCode) {\r\n case 401:\r\n case 403:\r\n alert(i18next.t('portal.no-rights-download'));\r\n break;\r\n case 404:\r\n alert(i18next.t('portal.file-not-found'));\r\n break;\r\n default:\r\n alert(i18next.t('portal.unexpected-error-occured'));\r\n }\r\n });\r\n }\r\n\r\n static downloadCleaningPlan(id) {\r\n Service.logStatisticsEvent('cleaning-plan', 'download');\r\n\r\n Service.downloadCleaningPlan(id)\r\n .fail(function(resultCode: number) {\r\n switch (resultCode) {\r\n case 401:\r\n case 403:\r\n alert(i18next.t('portal.no-rights-download'));\r\n break;\r\n case 404:\r\n alert(i18next.t('portal.file-not-found'));\r\n break;\r\n default:\r\n alert(i18next.t('portal.unexpected-error-occured'));\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport default DownloadHelper;\r\n","
\r\n
\r\n Keine Daten vorhanden.\r\n
\r\n
\r\n","
\r\n
\r\n
\r\n
\r\n {{#if isnew}}\r\n NEW\r\n {{/if}}\r\n \r\n
\r\n
{{{short_string name 30}}}
\r\n
{{date_format lstchg}}
\r\n
\r\n
\r\n","
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
{{{short_string filename 30}}}
\r\n
{{date_format filedate}}
\r\n
\r\n
\r\n","
\r\n {{!--\r\n {{#if datasheets}}\r\n
\r\n \r\n
\r\n
\r\n {{/if}}\r\n --}}\r\n \r\n
\r\n
{{{short_string name 28}}}
\r\n
{{date_format purchase-date}}
\r\n
\r\n
\r\n","
\r\n
\r\n \r\n
\r\n
\r\n
\r\n {{#if isnew}}\r\n NEW\r\n {{/if}}\r\n \r\n
\r\n
{{{short_string name 30}}}
\r\n
{{date_format lstchg}}
\r\n
\r\n
\r\n","import SubView from './sub_view';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport Session from '../session';\r\nimport * as Service from '../service';\r\nimport DownloadHelper from '../download_helper';\r\n\r\nimport i18next from 'i18next';\r\nimport Moment from 'moment';\r\n\r\nimport EmptyPreviewItem from '../../templates/empty_preview_item.hbs';\r\nimport DocumentPreviewItem from '../../templates/document_preview_item.hbs';\r\nimport UserFilePreviewItem from '../../templates/userfile_preview_item.hbs';\r\nimport ProductPreviewItem from '../../templates/product_preview_item.hbs';\r\nimport ProductInfoPreviewItem from '../../templates/productinfo_preview_item.hbs';\r\n\r\nclass HomeView extends SubView {\r\n protected productsData: { [x: string]: any; };\r\n\r\n constructor(container) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n this._initDocumentsCard();\r\n this._initProductsCard();\r\n this._initCleaningPlansCard();\r\n this._initLabReportsCard();\r\n this._initMarketingInfosCard();\r\n this._initFileExchangeCard();\r\n\r\n this._bindEvents();\r\n }\r\n\r\n _initDocumentsCard() {\r\n const $docs = this.$parent.find('.card.documents');\r\n const docsDimmer = new Dimmer($docs).show(i18next.t('portal.loading'));\r\n Service.getLastXDocuments(10)\r\n .then(function(data) {\r\n const $list = $docs.find('.list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n let maxDate = '';\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(DocumentPreviewItem(data[i]));\r\n if (data[i].lstchg > maxDate) {\r\n maxDate = data[i].lstchg;\r\n }\r\n }\r\n const $time = $docs.find('.time');\r\n $time.text(Moment(maxDate).format('LL'));\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _initProductsCard() {\r\n const $products = this.$parent.find('.card.products');\r\n const prodDimmer = new Dimmer($products).show(i18next.t('portal.loading'));\r\n const self = this;\r\n Service.getLastXProducts(10)\r\n .then(function(data) {\r\n const $list = $products.find('.list').empty();\r\n self.productsData = {};\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n let maxDate = '0';\r\n for (let i = 0; i < data.length; i++) {\r\n const item = data[i];\r\n self.productsData[item.id] = item;\r\n const $product = $(ProductPreviewItem(item));\r\n $list.append($product);\r\n self._initPopup($product, item);\r\n if (item['purchase-date'] > maxDate) {\r\n maxDate = item['purchase-date'];\r\n }\r\n }\r\n const $time = $products.find('.time');\r\n $time.text(Moment(maxDate).format('LL'));\r\n }\r\n $list.localize();\r\n prodDimmer.hide();\r\n });\r\n }\r\n\r\n _initCleaningPlansCard() {\r\n const $plans = this.$parent.find('.card.cleaning-plans');\r\n\r\n let showCleaningPlans = true;\r\n const user = Session.getUserData('user-info');\r\n if (!user || user[\"is-cleaningplans-enabled\"] === null) {\r\n const client = Session.getUserData('client');\r\n if (client && client.settings) {\r\n // keine Reinigungspläne anzeigen\r\n showCleaningPlans = !!client.settings[\"is-cleaningplans-enabled\"];\r\n }\r\n } else {\r\n showCleaningPlans = user[\"is-cleaningplans-enabled\"];\r\n }\r\n\r\n if (!showCleaningPlans) {\r\n $plans.addClass('hidden');\r\n return;\r\n }\r\n\r\n $plans.removeClass('hidden');\r\n const docsDimmer = new Dimmer($plans).show(i18next.t('portal.loading'));\r\n Service.getLastXCleaningPlans(10)\r\n .then(function(data) {\r\n const $list = $plans.find('.list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n let maxDate = '';\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(DocumentPreviewItem(data[i]));\r\n if (data[i].lstchg > maxDate) {\r\n maxDate = data[i].docdate;\r\n }\r\n }\r\n const $time = $plans.find('.time');\r\n $time.text(Moment(maxDate).format('LL'));\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _initLabReportsCard() {\r\n const $plans = this.$parent.find('.card.lab-reports');\r\n const docsDimmer = new Dimmer($plans).show(i18next.t('portal.loading'));\r\n // TODO load lab reports\r\n Service.getLastXLabReports(10)\r\n .then(function(data) {\r\n const $list = $plans.find('.list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n let maxDate = '';\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(DocumentPreviewItem(data[i]));\r\n if (data[i].lstchg > maxDate) {\r\n maxDate = data[i].docdate;\r\n }\r\n }\r\n const $time = $plans.find('.time');\r\n $time.text(Moment(maxDate).format('LL'));\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _initMarketingInfosCard() {\r\n const $productsInfo = this.$parent.find('.card.marketing-info');\r\n const docsDimmer = new Dimmer($productsInfo).show(i18next.t('portal.loading'));\r\n Service.getProductsInfos()\r\n .then(function(data) {\r\n const $list = $productsInfo.find('.list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n let clientBranch = (Session.getUserData('client') || {})['branch-of-industry'];\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n const name = data[i].name;\r\n const lstchg = data[i].lstchg;\r\n const isnew = data[i].isnew;\r\n $list.append(ProductInfoPreviewItem({\r\n name,\r\n lstchg,\r\n url: Service.getProductInfoUrl(name, clientBranch),\r\n isnew\r\n }));\r\n }\r\n const $count = $productsInfo.find('.count');\r\n $count.text(data.length);\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n })\r\n .fail(() => {\r\n const $list = $productsInfo.find('.list').empty();\r\n $list.append(EmptyPreviewItem());\r\n\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _initFileExchangeCard() {\r\n const $files = this.$parent.find('.card.file-exchange');\r\n\r\n let showUserfilesSharing = true;\r\n const user = Session.getUserData('user-info');\r\n if (!user || user[\"is-userfiles-sharing-enabled\"] === null) {\r\n const client = Session.getUserData('client');\r\n if (client && client.settings) {\r\n // keinen Dateiaustausch anzeigen\r\n showUserfilesSharing = !!client.settings[\"is-userfiles-sharing-enabled\"];\r\n }\r\n } else {\r\n showUserfilesSharing = user[\"is-userfiles-sharing-enabled\"];\r\n }\r\n\r\n if (!showUserfilesSharing) {\r\n $files.addClass('hidden');\r\n return;\r\n }\r\n\r\n const docsDimmer = new Dimmer($files).show(i18next.t('portal.loading'));\r\n Service.getLastXUserFiles(10)\r\n .then(function(data) {\r\n const $list = $files.find('.list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n let maxDate = '';\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(UserFilePreviewItem(data[i]));\r\n if (data[i].lstchg > maxDate) {\r\n maxDate = data[i].docdate;\r\n }\r\n }\r\n const $time = $files.find('.time');\r\n $time.text(Moment(maxDate).format('LL'));\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _initPopup($product, item) {\r\n const popupType = item.datasheets ? '.datasheet.popup' : '.empty.popup';\r\n const onShow = (item.datasheets && item.datasheets.length) ? $.proxy(this._onShowDatasheetPopup, this) : null;\r\n\r\n $product.find('.download.button').popup({\r\n popup: popupType,\r\n //hoverable: true,\r\n on: 'click',\r\n position: 'top right',\r\n onShow: onShow,\r\n lastResort: true\r\n });\r\n }\r\n\r\n _onShowDatasheetPopup(element) {\r\n const id = $(element).closest('.item').data('id');\r\n const item = this.productsData[id];\r\n if (item.datasheets) {\r\n // filter\r\n const buttons = this.$parent.find('.datasheet.popup .item');\r\n this.$parent.find('.datasheet.popup .header').text(item.name);\r\n buttons.addClass('hidden');\r\n for (let i = 0; i < item.datasheets.length; i++) {\r\n const sheet = item.datasheets[i];\r\n const type = sheet.type.toUpperCase();\r\n switch (type) {\r\n case 'PB':\r\n buttons.filter('.pb')\r\n .removeClass('hidden')\r\n .find('a').attr('href', Service.getDatasheetUrl(sheet.id));\r\n break;\r\n case 'BA':\r\n buttons.filter('.ba')\r\n .removeClass('hidden')\r\n .find('a').attr('href', Service.getDatasheetUrl(sheet.id));\r\n break;\r\n case 'SDB':\r\n buttons.filter('.sdb')\r\n .removeClass('hidden')\r\n .find('a').attr('href', Service.getDatasheetUrl(sheet.id));\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n _bindEvents() {\r\n const $docs = this.$parent.find('.card.documents');\r\n $docs.on('click', '.download.button', $.proxy(this._onDocumentDownload, this));\r\n\r\n const $plans = this.$parent.find('.card.cleaning-plans');\r\n $plans.on('click', '.download.button', $.proxy(this._onDocumentDownload, this));\r\n\r\n const $lab = this.$parent.find('.card.lab-reports');\r\n $lab.on('click', '.download.button', $.proxy(this._onDocumentDownload, this));\r\n\r\n var $files = this.$parent.find('.card.file-exchange');\r\n $files.on('click', '.download.button', $.proxy(this._onFileDownload, this));\r\n\r\n const $buttons = this.$parent.find('.datasheet.popup');\r\n $buttons.on('click', 'a.button', function(evt) {\r\n $(evt.currentTarget).closest('.datasheet.popup')\r\n .addClass('hidden')\r\n .removeClass('visible');\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n const $docs = this.$parent.find('.card.documents');\r\n $docs.off('click');\r\n }\r\n\r\n _onDocumentDownload(evt) {\r\n const uid = $(evt.currentTarget).closest('.item').data('uid');\r\n DownloadHelper.downloadDocument(uid);\r\n }\r\n\r\n _onFileDownload(evt) {\r\n const uid = $(evt.currentTarget).closest('.item').data('uid');\r\n DownloadHelper.downloadFile(uid);\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default HomeView;\r\n","/*\r\n * Requires jQuery.\r\n *\r\n * Events will be triggered at the pager element.\r\n * A 'change' event will be triggered.\r\n */\r\n\r\nclass Pager {\r\n protected element;\r\n protected _pageCount: number;\r\n protected _currentPage: number;\r\n protected _maxPageBlockCount: number;\r\n\r\n constructor(element, pageCount?: number) {\r\n this.element = $(element);\r\n this._pageCount = pageCount || 0;\r\n this._setClasses();\r\n this._setupPagination();\r\n this._bindEvents();\r\n }\r\n\r\n setPage(page) {\r\n this._currentPage = page;\r\n this._createPager();\r\n this.element.trigger('change', [this._currentPage, this._pageCount]);\r\n }\r\n\r\n setPageCount(count) {\r\n if (this._pageCount == count) {\r\n return;\r\n }\r\n this._pageCount = count || 0;\r\n this.update();\r\n if (this._currentPage > this._pageCount) {\r\n this.setPage(this._pageCount);\r\n }\r\n }\r\n\r\n getPage() {\r\n return this._currentPage;\r\n }\r\n\r\n getPageCount() {\r\n return this._pageCount;\r\n }\r\n\r\n update() {\r\n this._setupPagination();\r\n this._createPager();\r\n }\r\n\r\n _setClasses() {\r\n this.element\r\n .addClass('ui')\r\n .addClass('menu');\r\n }\r\n\r\n _bindEvents() {\r\n const self = this;\r\n\r\n this.element.off()\r\n .on('click.pager', 'a.item', (evt) => {\r\n const page = parseInt($(evt.target).attr('data-nr'));\r\n self.setPage(page);\r\n });\r\n\r\n $(window).off('resize.pager')\r\n .on('resize.pager', (evt) => {\r\n self._setupPagination(self._currentPage);\r\n self._createPager();\r\n });\r\n }\r\n\r\n _setupPagination(currentPage?: number) {\r\n this._currentPage = currentPage || 0;\r\n this._maxPageBlockCount = -1;\r\n\r\n if (this._pageCount <= 1) {\r\n this.element.addClass('hidden');\r\n } else {\r\n // size test\r\n this.element\r\n .removeClass('hidden')\r\n .empty()\r\n .append(`${1}`)\r\n .append(`${Math.round(this._pageCount / 2 + 1)}`)\r\n .append(`${this._pageCount + 1}`);\r\n\r\n const widthPerBlock = this.element.width() / 3;\r\n const maxWidth = this.element.parent().width();\r\n this._maxPageBlockCount = Math.floor(maxWidth / widthPerBlock);\r\n\r\n // minimum 7 buttons for switching between more than 7 pages required\r\n if (this._pageCount >= 7 && this._maxPageBlockCount < 7) {\r\n this._maxPageBlockCount = 7;\r\n }\r\n }\r\n }\r\n\r\n _createPager() {\r\n if (this._pageCount <= 1) {\r\n // no pager required\r\n this.element.addClass('hidden');\r\n } else {\r\n let pager = this.element.removeClass('hidden').empty();\r\n\r\n if (this._maxPageBlockCount < 0 || this._maxPageBlockCount >= this._pageCount) {\r\n // show all page buttons\r\n for (let i = 0; i < this._pageCount; i++) {\r\n pager.append(`${i + 1}`);\r\n }\r\n } else {\r\n const offset = Math.floor((this._maxPageBlockCount - 5) / 2);\r\n\r\n if (this._currentPage + offset < this._maxPageBlockCount - 2) {\r\n // pre-last item as disabled [...]\r\n for (let i = 0; i < this._maxPageBlockCount - 2; i++) {\r\n pager.append(`${i + 1}`);\r\n }\r\n pager.append('
...
');\r\n pager.append(`${this._pageCount}`);\r\n }\r\n else if ((this._pageCount + offset - this._currentPage) <= this._maxPageBlockCount - 2) {\r\n // second item as disabled [...]\r\n pager.append(`${1}`);\r\n pager.append('
...
');\r\n let startIndex = this._pageCount - (this._maxPageBlockCount - 2);\r\n for (let i = startIndex; i < this._pageCount; i++) {\r\n pager.append(`${i + 1}`);\r\n }\r\n } else {\r\n // second and pre-last item as disabled [...]\r\n pager.append(`${1}`);\r\n pager.append('
...
');\r\n let startIndex = this._currentPage - offset;\r\n let endIndex = startIndex + this._maxPageBlockCount - 4;\r\n for (let i = startIndex; i < endIndex; i++) {\r\n pager.append(`${i + 1}`);\r\n }\r\n pager.append('
...
');\r\n pager.append(`${this._pageCount}`);\r\n }\r\n }\r\n pager.find(`[data-nr=\"${this._currentPage}\"]`).addClass('active');\r\n }\r\n }\r\n}\r\n\r\nexport default Pager;\r\n","\r\n \r\n {{#if isnew}}\r\n NEW\r\n {{/if}}\r\n \r\n \r\n \r\n

\r\n
\r\n {{name}}\r\n
Letzte Änderung: {{date_format lstchg}}
\r\n\r\n
\r\n

\r\n \r\n \r\n {{file_size size}}\r\n \r\n \r\n {{resolve_doctype doctype}}\r\n \r\n \r\n {{date_format docdate}}\r\n \r\n \r\n
\r\n \r\n\r\n","import SubView from './sub_view';\r\nimport * as Service from '../service';\r\nimport DownloadHelper from '../download_helper';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport Pager from '../pager';\r\nimport Message from '../message';\r\nimport i18next from 'i18next';\r\n\r\nimport EmptyPreviewItem from '../../templates/empty_preview_item.hbs';\r\nimport DocumentItem from '../../templates/document_item.hbs';\r\n\r\nconst docsPerPage = 10;\r\n\r\nclass DocumentsView extends SubView {\r\n protected searchFilter: any;\r\n protected docTypeFilter: any;\r\n protected currentOffset: number;\r\n protected lastRequestParameters: { offset: number, docTypeFilter?: any, searchFilter?: any };\r\n\r\n constructor(container: any) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n this.searchFilter = null;\r\n this.docTypeFilter = null;\r\n this.lastRequestParameters = {\r\n offset: -1\r\n };\r\n\r\n this.$parent.pager = new Pager(this.$parent.find('.menu.pagination'));\r\n this.$parent.pager.setPage(0);\r\n this._bindEvents();\r\n this.$parent.find('.file-listing').css('max-height', 1000);\r\n\r\n this._initDropdown();\r\n }\r\n\r\n _initDropdown() {\r\n // Init dropdown\r\n let self = this;\r\n let $docsDropdown = this.$parent.find('.doc-types.dropdown');\r\n $docsDropdown.dropdown({\r\n placeholder: i18next.t('portal.products.doc-type'),\r\n values: [],\r\n onChange: function(value, text, $selectedItem) {\r\n let newTypeFilter = (value == 'none' || value == '') ? null : value;\r\n if (newTypeFilter != null) {\r\n newTypeFilter = newTypeFilter.replace(/rue/g, 'rü');\r\n } else {\r\n $docsDropdown.dropdown('clear', true);\r\n }\r\n if (newTypeFilter != self.docTypeFilter) {\r\n self.docTypeFilter = newTypeFilter;\r\n self._loadDocuments(0);\r\n }\r\n return;\r\n }\r\n });\r\n Service.getDocTypes()\r\n .then(function(types) {\r\n // prepare values\r\n let typeList = $.map(types, function(type) {\r\n if (type == null) {\r\n return {\r\n name: i18next.t(`portal.products.type.unassigned`),\r\n value: '--'\r\n };\r\n }\r\n type = type.replace(/rü/g, 'rue');\r\n return {\r\n name: i18next.t(`portal.products.type.${type}`),\r\n value: type\r\n };\r\n });\r\n // sort entries alphabetical\r\n typeList.sort(function(a, b) {\r\n let aVal = a.name.toLowerCase();\r\n let bVal = b.name.toLowerCase();\r\n return aVal < bVal ? -1 : 1;\r\n });\r\n // add 'unselect' option\r\n typeList.unshift({\r\n name: i18next.t('portal.products.unselect-type'),\r\n value: 'none'\r\n });\r\n $docsDropdown.dropdown(\"change values\", typeList);\r\n });\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.on('click', '.download.button', $.proxy(this._onDocumentDownload, this));\r\n this.$parent.find('.button.search').on('click', $.proxy(this._onFilterDocuments, this));\r\n this.$parent.find('.search input').on('keydown', (evt: KeyboardEvent) => {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n\r\n this._onFilterDocuments(evt);\r\n evt.preventDefault();\r\n });\r\n\r\n this.$parent.pager.element.on('change', (evt, page, total) => {\r\n this._loadDocuments(page * docsPerPage);\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.off('click');\r\n this.$parent.find('.button.search').off('click');\r\n this.$parent.find('.search input').off('keydown');\r\n }\r\n\r\n _onShown() {\r\n this._loadDocuments(0);\r\n }\r\n\r\n _loadDocuments(offset) {\r\n // just for the case, offset has not been set\r\n offset = offset || 0;\r\n\r\n if (this.lastRequestParameters.offset == offset &&\r\n this.lastRequestParameters.searchFilter == this.searchFilter &&\r\n this.lastRequestParameters.docTypeFilter == this.docTypeFilter) {\r\n // no need for update\r\n return;\r\n }\r\n\r\n this.lastRequestParameters.offset = offset;\r\n this.lastRequestParameters.searchFilter = this.searchFilter;\r\n this.lastRequestParameters.docTypeFilter = this.docTypeFilter;\r\n\r\n const self = this;\r\n const $docs = this.$parent;\r\n const docsDimmer = new Dimmer($docs).show(i18next.t('portal.loading'));\r\n Service.getDocuments(offset, docsPerPage, this.searchFilter, this.docTypeFilter)\r\n .fail(function(msg) {\r\n docsDimmer.hide();\r\n Message.show(i18next.t('portal.error'), msg.statusText + ':
' + msg.responseText);\r\n })\r\n .then(function(data, textStatus, response) {\r\n self.currentOffset = offset;\r\n const totalCount = response.getResponseHeader('X-Documents-Count');\r\n const fromToRange = response.getResponseHeader('X-Documents-Range');\r\n $docs.pager.setPageCount(Math.ceil(totalCount * 1 / docsPerPage));\r\n\r\n const $list = $docs.find('.documents-list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(DocumentItem(data[i]));\r\n }\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _onDocumentDownload(evt) {\r\n const uid = $(evt.currentTarget).closest('.item').data('uid');\r\n DownloadHelper.downloadDocument(uid);\r\n }\r\n\r\n _onFilterDocuments(evt) {\r\n Service.logStatisticsEvent('documents', 'search');\r\n\r\n this.searchFilter = $(evt.currentTarget).parent().find('input').val().toLowerCase();\r\n this._loadDocuments(0);\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default DocumentsView;\r\n","
\r\n

\r\n

\r\n
\r\n","import SubView from './sub_view';\r\nimport * as Service from '../service';\r\nimport DownloadHelper from '../download_helper';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport Pager from '../pager';\r\nimport Message from '../message';\r\nimport i18next from 'i18next';\r\n\r\nimport EmptyPreviewItem from '../../templates/empty_cleaning_preview_item.hbs';\r\nimport DocumentItem from '../../templates/document_item.hbs';\r\n\r\nconst docsPerPage = 10;\r\n\r\nclass CleaningPlansView extends SubView {\r\n protected searchFilter: any;\r\n protected docTypeFilter: any;\r\n protected lastRequestParameters: { offset?: number, searchFilter?: string, docTypeFilter?: string };\r\n protected currentOffset: number;\r\n\r\n constructor(container) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n this.searchFilter = null;\r\n this.docTypeFilter = null;\r\n this.lastRequestParameters = {\r\n offset: -1\r\n };\r\n\r\n this.$parent.pager = new Pager(this.$parent.find('.menu.pagination'));\r\n this.$parent.pager.setPage(0);\r\n this._bindEvents();\r\n this.$parent.find('.file-listing').css('max-height', 1000);\r\n\r\n this._initDropdown();\r\n }\r\n\r\n _initDropdown() {\r\n // Init dropdown\r\n const self = this;\r\n const $docsDropdown = this.$parent.find('.doc-types.dropdown');\r\n $docsDropdown.dropdown({\r\n placeholder: i18next.t('portal.cleaning-plan'),\r\n values: [],\r\n onChange: function(value: string, text: string, $selectedItem) {\r\n let newTypeFilter = (value == 'none' || value == '') ? null : value;\r\n if (newTypeFilter != null) {\r\n newTypeFilter = newTypeFilter.replace(/rue/g, 'rü');\r\n } else {\r\n $docsDropdown.dropdown('clear', true);\r\n }\r\n if (newTypeFilter != self.docTypeFilter) {\r\n self.docTypeFilter = newTypeFilter;\r\n self._loadCleaningPlans(0);\r\n }\r\n return;\r\n }\r\n });\r\n Service.getCleaningPlanTypes()\r\n .then(function(types: string[]) {\r\n // prepare values\r\n let typeList = $.map(types, function(type: string) {\r\n if (type == null) {\r\n return {\r\n name: i18next.t(`portal.products.type.unassigned`),\r\n value: '--'\r\n };\r\n }\r\n type = type.replace(/rü/g, 'rue');\r\n return {\r\n name: i18next.t(`portal.products.type.${type}`),\r\n value: type\r\n };\r\n });\r\n // sort entries alphabetical\r\n typeList.sort(function(a: any, b: any) {\r\n let aVal = a.name.toLowerCase();\r\n let bVal = b.name.toLowerCase();\r\n return aVal < bVal ? -1 : 1;\r\n });\r\n // add 'unselect' option\r\n typeList.unshift({\r\n name: i18next.t('portal.products.unselect-type'),\r\n value: 'none'\r\n });\r\n $docsDropdown.dropdown(\"change values\", typeList);\r\n });\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.on('click', '.download.button', $.proxy(this._onDocumentDownload, this));\r\n this.$parent.find('.button.search').on('click', $.proxy(this._onFilterDocuments, this));\r\n this.$parent.find('.search input').on('keydown', (evt: KeyboardEvent) => {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n\r\n this._onFilterDocuments(evt);\r\n evt.preventDefault();\r\n });\r\n\r\n this.$parent.pager.element.on('change', (evt: Event, page: number, total: number) => {\r\n this._loadCleaningPlans(page * docsPerPage);\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.off('click');\r\n this.$parent.find('.button.search').off('click');\r\n this.$parent.find('.search input').off('keydown');\r\n }\r\n\r\n _onShown() {\r\n this._loadCleaningPlans(0);\r\n }\r\n\r\n _loadCleaningPlans(offset: number) {\r\n // just for the case, offset has not been set\r\n offset = offset || 0;\r\n\r\n if (this.lastRequestParameters.offset == offset &&\r\n this.lastRequestParameters.searchFilter == this.searchFilter &&\r\n this.lastRequestParameters.docTypeFilter == this.docTypeFilter) {\r\n // no need for update\r\n return;\r\n }\r\n\r\n this.lastRequestParameters.offset = offset;\r\n this.lastRequestParameters.searchFilter = this.searchFilter;\r\n this.lastRequestParameters.docTypeFilter = this.docTypeFilter;\r\n\r\n const self = this;\r\n const $docs = this.$parent;\r\n const docsDimmer = new Dimmer($docs).show(i18next.t('portal.loading'));\r\n Service.getCleaningPlans(offset, docsPerPage, this.searchFilter, self.docTypeFilter)\r\n .fail(function(msg) {\r\n docsDimmer.hide();\r\n Message.show(i18next.t('portal.error'), msg.statusText + ':
' + msg.responseText);\r\n })\r\n .then(function(data, textStatus, response) {\r\n self.currentOffset = offset;\r\n const totalCount = response.getResponseHeader('X-Documents-Count');\r\n const fromToRange = response.getResponseHeader('X-Documents-Range');\r\n $docs.pager.setPageCount(Math.ceil(totalCount * 1 / docsPerPage));\r\n\r\n const $list = $docs.find('.cleaning-plans-list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(DocumentItem(data[i]));\r\n }\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _onDocumentDownload(evt: Event) {\r\n const uid = $(evt.currentTarget).closest('.item').data('uid');\r\n DownloadHelper.downloadDocument(uid);\r\n }\r\n\r\n _onFilterDocuments(evt: Event) {\r\n Service.logStatisticsEvent('cleaning-plans', 'search');\r\n\r\n this.searchFilter = $(evt.currentTarget).parent().find('input').val().toLowerCase();\r\n this._loadCleaningPlans(0);\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default CleaningPlansView;\r\n","import SubView from './sub_view';\r\nimport * as Service from '../service';\r\nimport DownloadHelper from '../download_helper';\r\nimport Message from '../message';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport Pager from '../pager';\r\nimport i18next from 'i18next';\r\n\r\nimport EmptyPreviewItem from '../../templates/empty_preview_item.hbs';\r\nimport DocumentItem from '../../templates/document_item.hbs';\r\n\r\nconst docsPerPage = 10;\r\n\r\nclass LabReportsView extends SubView {\r\n protected searchFilter: any;\r\n protected docTypeFilter: any;\r\n protected currentOffset: number;\r\n protected lastRequestParameters: { offset: number, docTypeFilter?: any, searchFilter?: any };\r\n\r\n constructor(container: any) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n this.searchFilter = null;\r\n this.lastRequestParameters = {\r\n offset: -1\r\n };\r\n\r\n this.$parent.pager = new Pager(this.$parent.find('.menu.pagination'));\r\n this.$parent.pager.setPage(0);\r\n this._bindEvents();\r\n const newHeight = $('body').height() - 400;\r\n this.$parent.find('.file-listing').css('max-height', 1000);\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.on('click', '.download.button', $.proxy(this._onDocumentDownload, this));\r\n this.$parent.find('.button.search').on('click', $.proxy(this._onFilterDocuments, this));\r\n this.$parent.find('.search input').on('keydown', (evt) => {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n this._onFilterDocuments(evt);\r\n evt.preventDefault();\r\n });\r\n\r\n this.$parent.pager.element.on('change', (evt, page, total) => {\r\n this._loadDocuments(page * docsPerPage);\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.off('click');\r\n this.$parent.find('.button.search').off('click');\r\n this.$parent.find('.search input').off('keydown');\r\n }\r\n\r\n _onShown() {\r\n this._loadDocuments(0);\r\n }\r\n\r\n _loadDocuments(offset) {\r\n // just for the case, offset has not been set\r\n offset = offset || 0;\r\n\r\n if (this.lastRequestParameters.offset == offset &&\r\n this.lastRequestParameters.searchFilter == this.searchFilter) {\r\n // no need for update\r\n return;\r\n }\r\n\r\n this.lastRequestParameters.offset = offset;\r\n this.lastRequestParameters.searchFilter = this.searchFilter;\r\n\r\n const self = this;\r\n const $docs = this.$parent;\r\n const docsDimmer = new Dimmer($docs).show(i18next.t('portal.loading'));\r\n Service.getLabReports(offset, docsPerPage, this.searchFilter)\r\n .fail(function(msg) {\r\n docsDimmer.hide();\r\n Message.show(i18next.t('portal.error'), msg.statusText + ':
' + msg.responseText);\r\n })\r\n .then(function(data, textStatus, response) {\r\n self.currentOffset = offset;\r\n const totalCount = response.getResponseHeader('X-Documents-Count');\r\n const fromToRange = response.getResponseHeader('X-Documents-Range');\r\n $docs.pager.setPageCount(Math.ceil(totalCount * 1 / docsPerPage));\r\n\r\n const $list = $docs.find('.lab-reports-list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(DocumentItem(data[i]));\r\n }\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _onDocumentDownload(evt) {\r\n const uid = $(evt.currentTarget).closest('.item').data('uid');\r\n DownloadHelper.downloadDocument(uid);\r\n }\r\n\r\n _onFilterDocuments(evt) {\r\n this.searchFilter = $(evt.currentTarget).parent().find('input').val().toLowerCase();\r\n this._loadDocuments(0);\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default LabReportsView;\r\n","\r\n \r\n \r\n \r\n \r\n {{amount}} {{unit}}\r\n \r\n \r\n

\r\n
\r\n \r\n {{name}}\r\n \r\n
\r\n Artikel-Nr: {{article-nr}}\r\n
\r\n
\r\n

\r\n \r\n \r\n Auftrags-Nr: {{ordering-nr}}
Vom: {{date_format purchase-date}}\r\n \r\n \r\n {{#if (hasXXDocument datasheets 'SDB')}}\r\n \r\n SDB\r\n \r\n {{/if}}\r\n \r\n \r\n {{#if (hasXXDocument datasheets 'PB')}}\r\n \r\n PB\r\n \r\n {{/if}}\r\n \r\n \r\n {{#if (hasXXDocument datasheets 'BA')}}\r\n \r\n BA\r\n \r\n {{/if}}\r\n \r\n \r\n {{#ifShowShoppingButton this}}\r\n {{#unless out-of-sale}}\r\n
\r\n \r\n
\r\n {{/unless}}\r\n {{/ifShowShoppingButton}}\r\n \r\n\r\n","\r\n \r\n \r\n \r\n \r\n

\r\n
\r\n \r\n {{name}}\r\n \r\n
\r\n Artikel-Nr: {{article-nr}}\r\n
\r\n
\r\n

\r\n \r\n \r\n {{#if (hasXXDocument datasheets 'SDB')}}\r\n \r\n SDB\r\n \r\n {{/if}}\r\n \r\n \r\n {{#if (hasXXDocument datasheets 'PB')}}\r\n \r\n PB\r\n \r\n {{/if}}\r\n \r\n \r\n {{#if (hasXXDocument datasheets 'BA')}}\r\n \r\n BA\r\n \r\n {{/if}}\r\n \r\n \r\n {{#unless out-of-sale}}\r\n
\r\n \r\n
\r\n {{/unless}}\r\n \r\n\r\n","import SubView from './sub_view';\r\nimport * as Service from '../service';\r\nimport Message from '../message';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport Pager from '../pager';\r\nimport ShoppingCart from '../shoppingcart';\r\nimport i18next from 'i18next';\r\n\r\nimport EmptyPreviewItem from '../../templates/empty_preview_item.hbs';\r\nimport ProductItem from '../../templates/product_item.hbs';\r\nimport ProductDistinctItem from '../../templates/product_distinct_item.hbs';\r\n\r\nconst docsPerPage = 10;\r\n\r\nclass ProductsView extends SubView {\r\n protected articleNr: any;\r\n protected searchFilter: any;\r\n protected docTypeFilter: any;\r\n protected currentOffset: number;\r\n protected distinctProducts: boolean;\r\n protected lastRequestParameters: { offset: number, docTypeFilter?: any, searchFilter?: any, distinctProducts?: boolean, articleNr?: any };\r\n\r\n constructor(container: any) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n this.searchFilter = null;\r\n this.distinctProducts = false;\r\n this.lastRequestParameters = {\r\n offset: -1\r\n };\r\n\r\n this.$parent.pager = new Pager(this.$parent.find('.menu.pagination'));\r\n this.$parent.pager.setPage(0);\r\n this._bindEvents();\r\n this.$parent.find('.file-listing').css('max-height', 1000);\r\n }\r\n\r\n _bindEvents() {\r\n // filter list\r\n this.$parent.find('.button.search').on('click', $.proxy(this._onFilterProducts, this));\r\n this.$parent.find('.search input').on('keydown', (evt) => {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n\r\n this._onFilterProducts(evt);\r\n evt.preventDefault();\r\n });\r\n\r\n // add selected item to cart\r\n this.$parent.find('.products-list').on('click', '.in-cart', $.proxy(this._onAddToCart, this));\r\n\r\n // page change\r\n this.$parent.pager.element.on('change', (evt, page, total) => {\r\n this._loadProducts(page * docsPerPage);\r\n });\r\n\r\n // condense products list\r\n this.$parent.on('change', '[name=\"distinct-products\"]', (evt) => {\r\n this.distinctProducts = $(evt.currentTarget).is(':checked');\r\n this._loadProducts();\r\n });\r\n\r\n // just stop clicks on links\r\n this.$parent.on('click', 'a', (evt) => {\r\n evt.stopPropagation();\r\n });\r\n\r\n // filter by single articleNr\r\n this.$parent.on('click', '.products-list .item', (evt) => {\r\n // enable 'back' button\r\n this.$parent.find('.single-item-row').removeClass('hidden');\r\n // set current filter item\r\n this.articleNr = $(evt.currentTarget).find('.article-nr').text();\r\n let name = $(evt.currentTarget).find('.article-name').text();\r\n this.$parent.find('.single-item-row.article-name').text(name);\r\n\r\n this._loadProducts();\r\n });\r\n\r\n // return to full list\r\n this.$parent.on('click', '.single-item-row .return', (evt) => {\r\n this.articleNr = null;\r\n this.$parent.find('.single-item-row').addClass('hidden');\r\n\r\n this._loadProducts();\r\n });\r\n\r\n // download clicks\r\n this.$parent.find('.products-list').on('click', '.column.doc a', function() {\r\n Service.logStatisticsEvent('purchase', $(this).closest('.column.doc').data('type'));\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.off('click');\r\n this.$parent.off('change');\r\n this.$parent.pager.element.off('change');\r\n this.$parent.find('.button.search').off('click');\r\n this.$parent.find('.search input').off('keydown');\r\n this.$parent.find('.products-list').off('click');\r\n }\r\n\r\n _onShown() {\r\n this.distinctProducts = this.$parent.find('[name=\"distinct-products\"]').is(':checked');\r\n\r\n this._loadProducts();\r\n }\r\n\r\n _loadProducts(offset?: number) {\r\n // just for the case, offset has not been set\r\n offset = offset || 0;\r\n\r\n if (this.lastRequestParameters.offset == offset &&\r\n this.lastRequestParameters.searchFilter == this.searchFilter &&\r\n this.lastRequestParameters.distinctProducts == this.distinctProducts &&\r\n this.lastRequestParameters.articleNr == this.articleNr) {\r\n // no need for update\r\n return;\r\n }\r\n\r\n this.lastRequestParameters.offset = offset;\r\n this.lastRequestParameters.searchFilter = this.searchFilter;\r\n this.lastRequestParameters.distinctProducts = this.distinctProducts;\r\n this.lastRequestParameters.articleNr = this.articleNr;\r\n\r\n // load corresponding view\r\n if (this.articleNr) {\r\n this._loadSingleArticelView(offset);\r\n } else if (this.distinctProducts) {\r\n this._loadDistinctView(offset);\r\n } else {\r\n this._loadDefaultView(offset);\r\n }\r\n }\r\n\r\n _loadDefaultView(offset) {\r\n const self = this;\r\n const $products = this.$parent;\r\n const docsDimmer = new Dimmer($products).show(i18next.t('portal.loading'));\r\n Service.getProducts(offset, docsPerPage, this.searchFilter)\r\n .fail(function(msg) {\r\n docsDimmer.hide();\r\n Message.show(i18next.t('portal.error'), msg.statusText + ':
' + msg.responseText);\r\n })\r\n .then(function(data, textStatus, response) {\r\n self.currentOffset = offset;\r\n const totalCount = response.getResponseHeader('X-Documents-Count');\r\n const fromToRange = response.getResponseHeader('X-Documents-Range');\r\n $products.pager.setPageCount(Math.ceil(totalCount * 1 / docsPerPage));\r\n\r\n const $list = $products.find('.products-list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(ProductItem(data[i]));\r\n }\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _loadDistinctView(offset) {\r\n const self = this;\r\n const $products = this.$parent;\r\n const docsDimmer = new Dimmer($products).show(i18next.t('portal.loading'));\r\n Service.getProductsDistinct(offset, docsPerPage, this.searchFilter)\r\n .fail(function(msg) {\r\n docsDimmer.hide();\r\n Message.show(i18next.t('portal.error'), msg.statusText + ':
' + msg.responseText);\r\n })\r\n .then(function(data, textStatus, response) {\r\n self.currentOffset = offset;\r\n const totalCount = response.getResponseHeader('X-Documents-Count');\r\n const fromToRange = response.getResponseHeader('X-Documents-Range');\r\n $products.pager.setPageCount(Math.ceil(totalCount * 1 / docsPerPage));\r\n\r\n const $list = $products.find('.products-list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(ProductDistinctItem(data[i]));\r\n }\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _loadSingleArticelView(offset) {\r\n const self = this;\r\n const $products = this.$parent;\r\n const docsDimmer = new Dimmer($products).show(i18next.t('portal.loading'));\r\n Service.getProductsByArticle(this.articleNr, offset, docsPerPage, this.searchFilter)\r\n .fail(function(msg) {\r\n docsDimmer.hide();\r\n Message.show(i18next.t('portal.error'), msg.statusText + ':
' + msg.responseText);\r\n })\r\n .then(function(data, textStatus, response) {\r\n self.currentOffset = offset;\r\n const totalCount = response.getResponseHeader('X-Documents-Count');\r\n const fromToRange = response.getResponseHeader('X-Documents-Range');\r\n $products.pager.setPageCount(Math.ceil(totalCount * 1 / docsPerPage));\r\n\r\n const $list = $products.find('.products-list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n for (let i = 0; i < data.length; i++) {\r\n $list.append(ProductItem(data[i]));\r\n }\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _onFilterProducts(evt) {\r\n Service.logStatisticsEvent('purchase', 'search');\r\n\r\n this.searchFilter = $(evt.currentTarget).parent().find('input').val().toLowerCase();\r\n this._loadProducts(0);\r\n }\r\n\r\n _onAddToCart(evt) {\r\n let $item = $(evt.currentTarget).closest('.item');\r\n let id = $item.data('id');\r\n let unit = $item.find('span.unit').text().replace(/^\\s+|\\s+$/g, '');\r\n let articleNr = $item.find('span.article-nr').text().replace(/^\\s+|\\s+$/g, '');\r\n let articleName = $item.find('span.article-name').text().replace(/^\\s+|\\s+$/g, '');\r\n ShoppingCart.addItem(articleNr, articleName, 1, unit, id);\r\n evt.stopPropagation();\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default ProductsView;\r\n","import SubView from './sub_view';\r\nimport Session from '../session';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport * as Service from '../service';\r\n\r\nimport i18next from 'i18next';\r\n\r\nclass ContactView extends SubView {\r\n constructor(container) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n const client = Session.getUserData('client');\r\n const user = Session.getUserData('user-info');\r\n const firstName = (user || client)['first-name'];\r\n const lastName = (user || client)['last-name'];\r\n const responseEmail = user ? user.username : client['contact-email'];\r\n\r\n this.$parent.find('.form').form({\r\n fields: {\r\n 'name': 'empty',\r\n 'contact-email': ['empty', 'email'],\r\n 'message': 'empty'\r\n }\r\n }).form('set values', {\r\n 'name': `${firstName} ${lastName}`,\r\n 'contact-email': responseEmail,\r\n 'message': ''\r\n });\r\n this.$parent.find('.send.message').addClass('hidden');\r\n\r\n this._bindEvents();\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.find('.contact.send.button').on('click', $.proxy(this._sendMessage, this));\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.find('.contact.send.button').off('click');\r\n }\r\n\r\n _sendMessage() {\r\n const $sendButton = this.$parent.find('.send.button').addClass('hidden');\r\n const $resultMessage = this.$parent.find('.send.message').addClass('hidden');\r\n const $form = this.$parent.find('.form');\r\n if ($form.form('validate form')) {\r\n const $formArea = this.$parent.find('.contact-form.column');\r\n const logDimmer = new Dimmer($formArea).show(i18next.t('portal.send') + '...');\r\n const values = $form.form('get values');\r\n\r\n Service.logStatisticsEvent('contact', 'send');\r\n\r\n Service.sendMessage(values)\r\n .then((result: boolean) => {\r\n if (!result) {\r\n return $.Deferred().reject();\r\n }\r\n logDimmer.hide();\r\n this.$parent.find('textarea[name=\"message\"]').val('');\r\n $resultMessage.removeClass('hidden')\r\n .toggleClass('positive', true)\r\n .toggleClass('error', false)\r\n .find('.header').text(i18next.t('portal.contact.message-sent')).prepend('');\r\n // meldung ausblenden\r\n setTimeout(function() {\r\n $resultMessage.transition('scale', 2000, function() {\r\n $resultMessage.addClass('hidden');\r\n $sendButton.removeClass('hidden');\r\n });\r\n }, 2000);\r\n })\r\n .fail(() => {\r\n logDimmer.hide();\r\n $sendButton.removeClass('hidden');\r\n $resultMessage.removeClass('hidden')\r\n .toggleClass('positive', false)\r\n .toggleClass('error', true)\r\n .find('.header').text(i18next.t('portal.contact.error-send'));\r\n });\r\n } else {\r\n $sendButton.removeClass('hidden');\r\n }\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default ContactView;\r\n","import SubView from './sub_view';\r\nimport * as Utils from '../utils';\r\nimport Session from '../session';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport * as Service from '../service';\r\n\r\nimport { setNewLanguage } from '../utils';\r\nimport i18next from 'i18next';\r\n\r\nclass SettingsView extends SubView {\r\n protected preEditClientData: any;\r\n\r\n constructor(container) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n this.$parent.find('.form').form();\r\n this.$parent.find('.form > .field, .form > .fields').addClass('disabled');\r\n\r\n this._initUserInformation();\r\n this._initUserLoginInformation();\r\n this._initClientInformation();\r\n\r\n const client = Session.getUserData('client');\r\n this.$parent.find('.form').form({\r\n fields: {\r\n 'name': 'empty',\r\n 'contact-email': ['empty', 'email'],\r\n 'message': 'empty'\r\n }\r\n }).form('set values', {\r\n 'name': `${client['first-name']} ${client['last-name']}`,\r\n 'contact-email': client['contact-email'],\r\n 'message': ''\r\n });\r\n this.$parent.find('.send.message').addClass('hidden');\r\n\r\n this._bindEvents();\r\n }\r\n\r\n _initUserInformation(user?) {\r\n user = user || Session.getUserData('user-info');\r\n const language = user.language || Session.getLanguage() || 'de';\r\n\r\n this.$parent.find('[name=\"user[first-name]\"]').val(user['first-name']);\r\n this.$parent.find('[name=\"user[last-name]\"]').val(user['last-name']);\r\n this.$parent.find('.language.dropdown').dropdown('set selected', language.toLowerCase());\r\n this.$parent.find('[name=\"user[receive-notifications]\"]').prop('checked', !!user['receive-notifications']);\r\n\r\n this.$parent.find('.user-data .edit.button').toggleClass('disabled', !user || user.supporter);\r\n }\r\n\r\n _initUserLoginInformation(username?: string) {\r\n username = username || atob(Session.getUserData(\"user\"));\r\n\r\n this.$parent.find('[name=\"login[username]\"]').val(username || \"\");\r\n this.$parent.find('[name=\"login[password1]\"]').val(\"\");\r\n this.$parent.find('[name=\"login[password2]\"]').val(\"\");\r\n\r\n this.$parent.find('.login-data .edit.button').toggleClass('disabled', !username);\r\n }\r\n\r\n _initClientInformation(client?) {\r\n client = client || Session.getUserData('client');\r\n this.$parent.find('[name=\"client[customer-id]\"]').val(client['customer-id']);\r\n this.$parent.find('[name=\"client[company]\"]').val(client['company']);\r\n this.$parent.find('[name=\"client[street]\"]').val(client['street']);\r\n this.$parent.find('[name=\"client[house-nr]\"]').val(client['house-nr']);\r\n this.$parent.find('[name=\"client[postcode]\"]').val(client['postcode']);\r\n this.$parent.find('[name=\"client[city]\"]').val(client['city']);\r\n\r\n const countryDropdown = this.$parent.find('.country.dropdown');\r\n\r\n if (!countryDropdown.find(`.menu [data-value=\"${client.country}\"]`).length) {\r\n countryDropdown.find('.menu')\r\n .append(`
${(client.country || '').toUpperCase()}
`);\r\n }\r\n countryDropdown.dropdown({\r\n fullTextSearch: true,\r\n direction: 'upward'\r\n });\r\n countryDropdown.dropdown('set selected', client.country);\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.find('.edit.button').off('click').on('click', $.proxy(this._enableEditMode, this));\r\n this.$parent.find('.cancel.button').off('click').on('click', $.proxy(this._cancelEditMode, this));\r\n this.$parent.find('.save.button').off('click').on('click', $.proxy(this._saveChanges, this));\r\n\r\n // toggle password visibility\r\n this.$parent.find('div.password i.eye.icon').on('click', (evt) =>{\r\n const $eye = this.$parent.find('div.password i.eye.Icon');\r\n const passwordInput = $eye.siblings('input');\r\n if (passwordInput.attr('type') == 'password') {\r\n passwordInput.attr('type', 'text');\r\n $eye.addClass('slash');\r\n } else {\r\n passwordInput.attr('type', 'password');\r\n $eye.removeClass('slash');\r\n }\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.find('.contact.send.button').off('click');\r\n }\r\n\r\n _enableEditMode(evt) {\r\n const $editButton = $(evt.currentTarget);\r\n $editButton.toggleClass('hidden', true)\r\n .siblings('.button').toggleClass('hidden', false);\r\n $editButton.siblings('.field, .fields').toggleClass('disabled', false);\r\n\r\n // Werte vor der Änderung merken\r\n const $parentForm = $editButton.closest('.form');\r\n if ($parentForm.hasClass('client-data')) {\r\n const $form = this.$parent.find('.client-data.form');\r\n this.preEditClientData = this._cleanValues($form.form('get values'));\r\n }\r\n\r\n const firstInput = $editButton.siblings('.field, .fields').find('input:not([disabled]):not([readonly])').get(0);\r\n $(firstInput).focus();\r\n }\r\n\r\n _cancelEditMode(evt) {\r\n const $editButton = $(evt.currentTarget).siblings('.edit');\r\n $editButton.toggleClass('hidden', false)\r\n .siblings('.button').toggleClass('hidden', true);\r\n $editButton.siblings('.field, .fields').toggleClass('disabled', true);\r\n\r\n // TODO reset initial form values\r\n const $parentForm = $editButton.closest('.form');\r\n if ($parentForm.hasClass('user-data')) {\r\n this._initUserInformation();\r\n }\r\n else if ($parentForm.hasClass('login-data')) {\r\n this._initUserLoginInformation();\r\n }\r\n else if ($parentForm.hasClass('client-data')) {\r\n this._initClientInformation();\r\n }\r\n }\r\n\r\n _saveChanges(evt) {\r\n // TODO reset initial form values\r\n let saveDeferred;\r\n let $parentForm = $(evt.currentTarget).closest('.form');\r\n if ($parentForm.hasClass('user-data')) {\r\n saveDeferred = this._saveUserInformation();\r\n }\r\n else if ($parentForm.hasClass('login-data')) {\r\n saveDeferred = this._saveUserLoginInformation();\r\n }\r\n else if ($parentForm.hasClass('client-data')) {\r\n saveDeferred = this._saveClientInformation();\r\n }\r\n\r\n saveDeferred.then(() => {\r\n let $editButton = $(evt.currentTarget).siblings('.edit');\r\n $editButton.toggleClass('hidden', false)\r\n .siblings('.button').toggleClass('hidden', true);\r\n $editButton.siblings('.field, .fields').toggleClass('disabled', true);\r\n });\r\n }\r\n\r\n _cleanValues(item: any): any {\r\n const newItem = {};\r\n\r\n for (let field in item) {\r\n const start = field.indexOf('[') + 1;\r\n const end = field.lastIndexOf(']');\r\n const name = end < 0 ? field : field.substring(start, end);\r\n if (name == 'receive-notifications') {\r\n newItem[name] = item[field] == \"on\";\r\n } else {\r\n newItem[name] = item[field];\r\n }\r\n }\r\n return newItem;\r\n }\r\n\r\n _hasValueChanges(itemA: any, itemB: any): boolean {\r\n if (!itemA != !itemB) {\r\n return true;\r\n }\r\n\r\n const keysA: string[] = Object.keys(itemA);\r\n const keysB: string[] = Object.keys(itemB);\r\n if (keysA.length != keysB.length) {\r\n return true;\r\n }\r\n\r\n for (let i = 0; i < keysA.length; i++) {\r\n const key = keysA[i];\r\n const valA = itemA[key];\r\n const valB = itemB[key];\r\n if (!valA != !valB ||\r\n valA != valB) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n _saveUserInformation() {\r\n const $form = this.$parent.find('.user-data.form');\r\n if ($form.form('validate form')) {\r\n // TODO: speichern text\r\n const logDimmer = new Dimmer($form).show(i18next.t('portal.send') + '...');\r\n const sendData = this._cleanValues($form.form('get values'));\r\n return Service.updateUserInfo(sendData)\r\n .then((user) => {\r\n let oldUser = Session.getUserData(\"user-info\");\r\n Session.setUserData(\"user-info\", user);\r\n this._initUserInformation(user);\r\n\r\n // reload to change language\r\n if (user.language && user.language != oldUser.language) {\r\n setNewLanguage(user.language);\r\n }\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n } else {\r\n return $.Deferred().reject();\r\n }\r\n }\r\n\r\n isPasswordOK(password1: string, password2: string) {\r\n return password1 == password2;\r\n }\r\n\r\n _saveUserLoginInformation() {\r\n let $form = this.$parent.find('.login-data.form');\r\n if ($form.form('validate form')) {\r\n // TODO: speichern text\r\n let sendData: { password1: string, password2: string } = this._cleanValues($form.form('get values'));\r\n if (!this.isPasswordOK(sendData.password1, sendData.password2)) {\r\n return $.Deferred().reject();\r\n }\r\n let logDimmer = new Dimmer($form).show(i18next.t('portal.send') + '...');\r\n return Service.updateUserLogin(sendData)\r\n .then((token) => {\r\n if (token) {\r\n Session.setAuthString(Utils.getAuthString(token));\r\n Session.setLoggedIn(true);\r\n Session.setUserData(\"user\", btoa(sendData['username']));\r\n this._initUserLoginInformation();\r\n }\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n } else {\r\n return $.Deferred().reject();\r\n }\r\n }\r\n\r\n _saveClientInformation() {\r\n const $form = this.$parent.find('.client-data.form');\r\n if ($form.form('validate form')) {\r\n const sendData = this._cleanValues($form.form('get values'));\r\n\r\n // prüfe auf Änderungen\r\n if (!this._hasValueChanges(this.preEditClientData, sendData)) {\r\n // keine Aktion nötig\r\n this.preEditClientData = null;\r\n return $.Deferred().resolve();\r\n }\r\n\r\n this.preEditClientData = null;\r\n // speichern text\r\n const logDimmer = new Dimmer($form).show(i18next.t('portal.send') + '...');\r\n\r\n return Service.updateClientInfo(sendData)\r\n .then((client) => {\r\n Session.setUserData(\"client\", client);\r\n this._initClientInformation(client);\r\n })\r\n .always(() => {\r\n logDimmer.hide();\r\n });\r\n } else {\r\n return $.Deferred().reject();\r\n }\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default SettingsView;\r\n","\r\n \r\n \r\n \r\n \r\n

\r\n
\r\n {{filename}}\r\n
{{comment}}
\r\n
\r\n

\r\n \r\n \r\n {{date_format filedate}}\r\n \r\n \r\n {{file_size size}}\r\n \r\n \r\n {{#if user-info}}\r\n {{user-info.last-name}}\r\n {{else}}\r\n -/-\r\n {{/if}}\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n\r\n","
\r\n
\r\n
Upload...
\r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n \r\n Dateien zum Hochladen wählen oder hineinziehen.\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n Filenname.xyz\r\n
\r\n 1 MB\r\n
\r\n
\r\n 01. Dez 2019\r\n
\r\n
\r\n
\r\n
\r\n
Beschreibung
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
Upload...
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n Es ist ein Fehler aufgetreten!\r\n
\r\n

!

\r\n
\r\n
\r\n
\r\n
\r\n Abbrechen\r\n
\r\n
\r\n Speichern\r\n \r\n
\r\n
\r\n
\r\n","
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n {{current.filename}}\r\n
\r\n Version: {{current.version}} / Änderungsdatum: {{date_format current.filedate}}\r\n
\r\n
\r\n {{file_size current.size}}\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n {{#if current.comment}}\r\n
\r\n
Beschreibung
\r\n
\r\n {{current.comment}}\r\n
\r\n
\r\n {{/if}}\r\n
\r\n
\r\n {{#if versions}}\r\n
\r\n
\r\n
Versionen
\r\n
\r\n
\r\n \r\n \r\n \r\n {{#each versions}}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{/each}}\r\n \r\n
\r\n \r\n \r\n

\r\n
\r\n {{filename}}\r\n
{{comment}}
\r\n
\r\n

\r\n
\r\n {{date_format filedate}}\r\n \r\n {{file_size size}}\r\n \r\n {{version}}\r\n \r\n {{#if user-info}}\r\n {{user-info.last-name}}\r\n {{else}}\r\n -/-\r\n {{/if}}\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {{/if}}\r\n
\r\n
\r\n \r\n Löschen\r\n
\r\n
\r\n Schließen\r\n
\r\n
\r\n
\r\n","import SubView from './sub_view';\r\nimport * as Service from '../service';\r\nimport DownloadHelper from '../download_helper';\r\nimport {\r\n Dimmer\r\n} from '../spinner';\r\nimport Pager from '../pager';\r\nimport Message from '../message';\r\nimport i18next from 'i18next';\r\nimport Handlebars from 'handlebars/runtime';\r\n\r\nimport EmptyPreviewItem from '../../templates/empty_preview_item.hbs';\r\nimport UserFileItem from '../../templates/userfile_item.hbs';\r\nimport UploadDialog from '../../templates/upload_dialog.hbs';\r\nimport UserFileDetailDialog from '../../templates/userfile_detail_dialog.hbs';\r\n\r\nconst docsPerPage = 10;\r\n\r\nclass FileExchangeView extends SubView {\r\n protected searchFilter: any;\r\n protected currentOffset: number;\r\n protected lastRequestParameters: { offset: number, searchFilter?: string };\r\n\r\n constructor(container: any) {\r\n super(container);\r\n }\r\n\r\n init() {\r\n this.searchFilter = null;\r\n this.lastRequestParameters = {\r\n offset: -1\r\n };\r\n\r\n this.$parent.pager = new Pager(this.$parent.find('.menu.pagination'));\r\n this.$parent.pager.setPage(0);\r\n this._bindEvents();\r\n this.$parent.find('.file-listing').css('max-height', 1000);\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.on('click', '.upload.button', $.proxy(this._onFileUpload, this));\r\n this.$parent.on('click', '.download.button', $.proxy(this._onUserFileDownload, this));\r\n this.$parent.on('click', 'table tr', $.proxy(this._onFileClick, this));\r\n this.$parent.find('.button.search').on('click', $.proxy(this._onFilterFiles, this));\r\n this.$parent.find('.search input').on('keydown', (evt) => {\r\n if (evt.keyCode != 13) {\r\n return;\r\n }\r\n this._onFilterFiles(evt);\r\n evt.preventDefault();\r\n });\r\n\r\n this.$parent.pager.element.on('change', (evt: Event, page: number, total: number) => {\r\n this._loadUserFiles(page * docsPerPage);\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.off('click');\r\n this.$parent.find('.button.search').off('click');\r\n this.$parent.find('.search input').off('keydown');\r\n }\r\n\r\n _onShown() {\r\n this._loadUserFiles(0);\r\n }\r\n\r\n _loadUserFiles(offset?: number, forceReload: boolean = false) {\r\n // just for the case, offset has not been set\r\n offset = offset || 0;\r\n\r\n if (this.lastRequestParameters.offset == offset && !forceReload &&\r\n this.lastRequestParameters.searchFilter == this.searchFilter) {\r\n // no need for update\r\n return;\r\n }\r\n\r\n this.lastRequestParameters.offset = offset;\r\n this.lastRequestParameters.searchFilter = this.searchFilter;\r\n\r\n var self = this;\r\n var $docs = this.$parent;\r\n var docsDimmer = new Dimmer($docs).show(i18next.t('portal.loading'));\r\n Service.getUserFiles(offset, docsPerPage, this.searchFilter)\r\n .fail(function(msg) {\r\n docsDimmer.hide();\r\n Message.show(i18next.t('portal.error'), msg.statusText + ':
' + msg.responseText);\r\n })\r\n .then(function(data, textStatus, response) {\r\n self.currentOffset = offset;\r\n var totalCount = response.getResponseHeader('X-Documents-Count');\r\n var fromToRange = response.getResponseHeader('X-Documents-Range');\r\n $docs.pager.setPageCount(Math.ceil(totalCount * 1 / docsPerPage));\r\n\r\n var $list = $docs.find('.userfiles-list').empty();\r\n if (!data || !data.length) {\r\n $list.append(EmptyPreviewItem());\r\n } else {\r\n for (var i = 0; i < data.length; i++) {\r\n $list.append(UserFileItem(data[i]));\r\n }\r\n }\r\n $list.localize();\r\n docsDimmer.hide();\r\n });\r\n }\r\n\r\n _onFileClick(evt: Event) {\r\n const self = this;\r\n const fileID = $(evt.currentTarget).closest('tr.item').data('uid');\r\n // load all files\r\n Service.getUserFileVersion(fileID)\r\n .then((result: { current: any, versions: any }) => {\r\n const $dialog = $(UserFileDetailDialog(result));\r\n $dialog.localize();\r\n $('.modal-container').append($dialog);\r\n\r\n $dialog.modal({\r\n autofocus: false,\r\n closable: true,\r\n allowMultiple: true,\r\n onHidden: function() {\r\n $dialog.modal('destroy');\r\n $dialog.remove();\r\n },\r\n onVisible: function() { },\r\n onShow: function() {\r\n $dialog.on('click', '.download.button', $.proxy(self._onUserFileDownload, self));\r\n },\r\n onApprove: function(element) {\r\n if (element.hasClass('delete')) {\r\n // Sicherheitsabfrage zum löschen der Datei\r\n Message.prompt(\r\n i18next.t('upload.deletion.prompt-title'),\r\n i18next.t('upload.deletion.prompt-message', { file: result.current.filename }),\r\n () => {\r\n Service.deleteUserFile(fileID)\r\n .then((success: boolean) => {\r\n if (success) {\r\n $dialog.modal('hide');\r\n $('body .dimmer').dimmer('hide');\r\n self._loadUserFiles(0, true);\r\n }\r\n })\r\n .fail(() => {\r\n Message.show(\r\n i18next.t('upload.deletion.error-title'),\r\n i18next.t('upload.deletion.error-title')\r\n );\r\n });\r\n }, $.noop);\r\n return false;\r\n }\r\n },\r\n onDeny: function(element) { }\r\n }).modal('show');\r\n })\r\n }\r\n\r\n _onFileUpload(evt) {\r\n const $dialog = $(UploadDialog());\r\n $dialog.localize();\r\n\r\n $('.modal-container').append($dialog);\r\n\r\n const self = this;\r\n let uploadFile: File = null;\r\n\r\n const handleFileSelection = function(files: File[]) {\r\n for (let i = 0; i < files.length; i++) {\r\n const curfile: File = files[i];\r\n if (!curfile.type) {\r\n continue;\r\n }\r\n // set as current upload file\r\n uploadFile = curfile;\r\n\r\n const fileType = Handlebars.helpers.document_icon(curfile.name);\r\n const fileSize = Handlebars.helpers.file_size(curfile.size);\r\n const fileDate = Handlebars.helpers.date_format(curfile.lastModified || new Date());\r\n\r\n // set values\r\n $dialog.find('.description .icon').addClass(fileType);\r\n $dialog.find('.description .filename').text(curfile.name);\r\n $dialog.find('.description .filesize').text(fileSize);\r\n $dialog.find('.description .date').text(fileDate);\r\n\r\n $dialog.find('.positive').removeClass('disabled');\r\n $dialog.find('.dropzone').addClass('hidden');\r\n $dialog.find('.description').removeClass('hidden');\r\n $dialog.find('.description textarea').focus();\r\n\r\n // TODO (OPTIONAL) list history versions of this file\r\n\r\n break; // for loop\r\n }\r\n };\r\n\r\n $dialog.modal({\r\n autofocus: false,\r\n closable: false,\r\n allowMultiple: true,\r\n dimmerSettings: {\r\n variation: 'inverted'\r\n },\r\n onHidden: function() {\r\n $dialog.modal('destroy');\r\n $dialog.remove();\r\n },\r\n onVisible: function() {\r\n },\r\n onShow: function() {\r\n $dialog.find('input[type=\"file\"]').on('change', function() {\r\n // manuelles wählen der Dateien\r\n handleFileSelection(this.files);\r\n });\r\n\r\n let blockLeave = false;\r\n\r\n $dialog.find('.dropzone')\r\n .on('dragover', function(e) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n })\r\n .on('dragleave', function(e) {\r\n if (blockLeave) {\r\n blockLeave = false;\r\n } else {\r\n e.currentTarget.style.backgroundColor = ''\r\n }\r\n\r\n e.preventDefault();\r\n e.stopPropagation();\r\n })\r\n .on('dragenter', function(e) {\r\n if ($(e.target).closest(e.currentTarget).length > 0) {\r\n blockLeave = true;\r\n }\r\n\r\n e.currentTarget.style.backgroundColor = '#eea'\r\n e.preventDefault();\r\n e.stopPropagation();\r\n })\r\n .on('drop', function(e) {\r\n e.currentTarget.style.backgroundColor = ''\r\n e.stopPropagation();\r\n e.preventDefault();\r\n\r\n // only 1 file support\r\n if (e.originalEvent.dataTransfer.files.length) {\r\n handleFileSelection(e.originalEvent.dataTransfer.files);\r\n }\r\n });\r\n },\r\n onApprove: function(element) {\r\n const comment = $dialog.find('.description textarea').val();\r\n\r\n // TODO lock area, show progress\r\n if (uploadFile) {\r\n $dialog.find('.progress').removeClass('hidden');\r\n $dialog.find('.dimmer').addClass('active');\r\n $dialog.find('.negative.message').addClass('hidden');\r\n\r\n Service.uploadFile(uploadFile, comment)\r\n .progress((x) => {\r\n console.log('progress: ', x);\r\n })\r\n .then(() => {\r\n $dialog.modal('hide');\r\n // update list\r\n self.lastRequestParameters.offset = -1;\r\n self._loadUserFiles(0);\r\n })\r\n .fail((msg) => {\r\n $dialog.find('.progress').addClass('hidden');\r\n $dialog.find('.dimmer').removeClass('active');\r\n $dialog.find('.negative.message').removeClass('hidden')\r\n .find('p').text(msg.statusText);\r\n });\r\n }\r\n\r\n return false;\r\n },\r\n onDeny: function(element) {\r\n uploadFile = null;\r\n }\r\n }).modal('show');\r\n }\r\n\r\n _onUserFileDownload(evt: Event) {\r\n evt.stopPropagation();\r\n evt.preventDefault();\r\n\r\n const uid = $(evt.currentTarget).data('uid');\r\n DownloadHelper.downloadFile(uid);\r\n }\r\n\r\n _onFilterFiles(evt: Event) {\r\n this.searchFilter = $(evt.currentTarget).parent().find('input').val().toLowerCase();\r\n this._loadUserFiles(0);\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n}\r\n\r\nexport default FileExchangeView;\r\n","
\r\n \r\n \r\n Konto\r\n
\r\n\r\n {{#each this}}\r\n \r\n \r\n {{company}}\r\n \r\n {{/each}}\r\n\r\n
\r\n
\r\n","import Router from '../router';\r\nimport ShoppingCart from '../shoppingcart';\r\nimport Retoure from '../retoure';\r\nimport View from './view';\r\nimport SubView from './sub_view';\r\nimport HomeView from './home_sub_view';\r\nimport DocumentsView from './documents_sub_view';\r\nimport CleaningPlansView from './cleaningplans_sub_view';\r\nimport LabReportsView from './labreports_sub_view';\r\nimport ProductsView from './products_sub_view';\r\nimport ContactView from './contact_sub_view';\r\nimport SettingsView from './settings_sub_view';\r\nimport FileExchangeView from './file_exchange_sub_view';\r\nimport PageSpinner, {\r\n Dimmer\r\n} from '../spinner.js';\r\nimport Session from '../session.js';\r\nimport * as Service from '../service.js';\r\n\r\nimport EmptyPreviewItem from '../../templates/empty_preview_item.hbs';\r\nimport DocumentPreviewItem from '../../templates/document_preview_item.hbs';\r\nimport DocumentItem from '../../templates/document_item.hbs';\r\nimport MenuItemClients from '../../templates/menu_item_clients.hbs';\r\nimport { Holidays } from \"../Holidays\";\r\n\r\n\r\nclass MainView extends View {\r\n protected $parent;\r\n protected currentSubView: View;\r\n protected currentSubViewName: string;\r\n\r\n init(subView: string) {\r\n PageSpinner.show();\r\n\r\n this.$parent = $('.main-content');\r\n const self = this;\r\n $('.main-content').load('templates/main.html', function(data) {\r\n $(this).localize();\r\n self._bindEvents();\r\n self.initResizeLogo();\r\n PageSpinner.hide();\r\n\r\n $('.ui.dropdown').dropdown();\r\n $('.ui.checkbox').checkbox();\r\n\r\n Service.getClientData()\r\n .then((data: { client: any, user: any }) => {\r\n let client;\r\n let user;\r\n if (data.hasOwnProperty('user')) {\r\n client = data.client;\r\n user = data.user;\r\n Session.setUserData('client', data.client);\r\n Session.setUserData('user-info', data.user);\r\n } else {\r\n // Kompatibilität mit altem RestService\r\n client = data;\r\n user = null;\r\n Session.setUserData('client', data);\r\n Session.setUserData('user-info', null);\r\n }\r\n\r\n // Warenkorb initialisieren\r\n ShoppingCart.init(client, user);\r\n window.Cart = ShoppingCart;\r\n\r\n // Retoure initialisieren\r\n Retoure.init(client, user);\r\n window.Retoure = Retoure;\r\n\r\n // Reinigungspläne & Dateiaustausch initialisieren\r\n self._initCleaningPlans(client, user);\r\n self._initUserFilesSharing(client, user);\r\n self._initAllowedClients(client, user);\r\n\r\n // enable workshops link to customers with Language=DE\r\n $(this).find('.menu .workshops.item').toggleClass('hidden', (Session.getLanguage() || '').toUpperCase() !== 'DE');\r\n return Service.getAssignedSupporter();\r\n })\r\n .then((data) => {\r\n self._setupSupporter(data);\r\n }, () => {\r\n self._setupSupporter(null);\r\n })\r\n .then(() => {\r\n self.show(subView);\r\n });\r\n });\r\n }\r\n\r\n show(subViewName: string) {\r\n const allowedViews = [\r\n 'contact',\r\n 'documents',\r\n 'purchase',\r\n 'lab-reports',\r\n 'settings',\r\n 'retoure'\r\n ];\r\n\r\n if (this._hasCleaningPlansEnabled()) {\r\n allowedViews.push('cleaning-plans');\r\n }\r\n\r\n if (this._hasUserFilesSharingEnabled()) {\r\n allowedViews.push('file-exchange');\r\n }\r\n\r\n if (!!subViewName && allowedViews.indexOf(subViewName) < 0) {\r\n Router.pushState('main');\r\n return;\r\n }\r\n\r\n let newViewClass: any;\r\n switch (subViewName) {\r\n case 'contact':\r\n newViewClass = ContactView;\r\n break;\r\n case 'documents':\r\n newViewClass = DocumentsView;\r\n break;\r\n case 'purchase':\r\n newViewClass = ProductsView;\r\n break;\r\n case 'cleaning-plans':\r\n newViewClass = CleaningPlansView;\r\n break;\r\n case 'lab-reports':\r\n newViewClass = LabReportsView;\r\n break;\r\n case 'settings':\r\n newViewClass = SettingsView;\r\n break;\r\n case 'retoure':\r\n Retoure.show();\r\n // Module Einstieg Event erfassen\r\n Service.logStatisticsEvent(subViewName, 'open');\r\n Router.restoreFragment();\r\n return;\r\n case 'file-exchange':\r\n newViewClass = FileExchangeView;\r\n break;\r\n default:\r\n subViewName = 'home';\r\n newViewClass = HomeView;\r\n break;\r\n }\r\n\r\n // Module Einstieg Event erfassen\r\n Service.logStatisticsEvent(subViewName, 'open');\r\n\r\n // check new instance of View\r\n /*\r\n if(!(newViewClass instanceof SubView)) {\r\n throw new TypeError('SubView muss von View ableiten!');\r\n }\r\n */\r\n\r\n if (!this.currentSubView || this.currentSubView.constructor !== newViewClass) {\r\n const wait = $.Deferred();\r\n if (this.currentSubView) {\r\n this.currentSubView.hide()\r\n .then(() => {\r\n this.currentSubView.dispose();\r\n wait.resolve();\r\n });\r\n } else {\r\n wait.resolve();\r\n }\r\n wait.then(() => {\r\n this.currentSubView = new newViewClass(this.$parent.find(`.row.${subViewName}`));\r\n this.currentSubView.init();\r\n this.currentSubView.show();\r\n });\r\n }\r\n\r\n this.selectActiveTab(subViewName);\r\n\r\n this.currentSubViewName = subViewName;\r\n }\r\n\r\n getCurrentViewName(): string {\r\n return this.currentSubViewName;\r\n }\r\n\r\n selectActiveTab(tab: string) {\r\n this.$parent.find('.head.row .menu .item.active').toggleClass('active', false);\r\n\r\n const item = this.$parent.find('.head.row .menu .item.' + tab);\r\n if (item.length > 0) {\r\n item.addClass('active');\r\n }\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.find('.menu').on('click', '.item', (evt: Event) => {\r\n const item = $(evt.currentTarget);\r\n if (item.hasClass('logout')) {\r\n this.logout();\r\n return;\r\n }\r\n\r\n if ((item.hasClass('client') || item.hasClass('client-selection')) && !isNaN(item.data('id'))) {\r\n Session.setPreferredClient(item.data('id'));\r\n window.location.reload();\r\n return false;\r\n }\r\n });\r\n\r\n this.$parent.find('a.certificate.item').on('click', (evt: Event) => {\r\n Service.logStatisticsEvent('certificate', 'open-link');\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.find('.menu').off('click', '.item');\r\n }\r\n\r\n _setupSupporter(data) {\r\n if (!data) {\r\n return;\r\n }\r\n let image = null;\r\n if (data['image-id']) {\r\n image = Service.getSupporterThumbUrl(data['image-id']);\r\n }\r\n this.$parent.find('.contact .thumb').attr('src', image);\r\n this.$parent.find('.contact .name').text(`${data['first-name']} ${data['last-name']}`);\r\n this.$parent.find('.contact .position').text(data.position);\r\n this.$parent.find('.contact .tel-nr').text(data['tel-nr']);\r\n this.$parent.find('.contact .contact-email').text(data['contact-email']).attr('href', `mailto:${data['contact-email']}`);\r\n }\r\n\r\n _initCleaningPlans(client, user) {\r\n let showCleaningPlans = this._hasCleaningPlansEnabled(user);\r\n\r\n if (!showCleaningPlans) {\r\n // keine Reinigungspläne anzeigen\r\n $('.card.cleaning-plans').addClass('hidden');\r\n $('.menu .cleaning-plans.item').addClass('hidden');\r\n return;\r\n }\r\n }\r\n\r\n _initUserFilesSharing(client, user) {\r\n let showUserFilesSharing = this._hasUserFilesSharingEnabled(user);\r\n\r\n if (!showUserFilesSharing) {\r\n // kein Dateiaustausch anzeigen\r\n $('.card.file-exchange').addClass('hidden');\r\n $('.menu .file-exchange.item').addClass('hidden');\r\n return;\r\n }\r\n }\r\n\r\n _initAllowedClients(client, user) {\r\n return Service.getAllowedClients()\r\n .then((availableClients: any[]) => {\r\n\r\n if (!availableClients || !availableClients.length) {\r\n // hide switch menu if no other clients are active\r\n return;\r\n }\r\n\r\n // add current client\r\n if (!availableClients.some(val => val.id == client.id)) {\r\n availableClients.push(client);\r\n\r\n availableClients.sort(function(a, b) {\r\n if (a.company == b.company) {\r\n return 0;\r\n }\r\n\r\n return a.company > b.company ? -1 : 1;\r\n })\r\n }\r\n\r\n if (availableClients && availableClients.length == 1) {\r\n // hide switch menu if no other clients are active\r\n return;\r\n }\r\n\r\n const $newMenuItem = $(MenuItemClients(availableClients));\r\n $newMenuItem.localize();\r\n $newMenuItem.insertBefore(this.$parent.find('.menu .item.logout'));\r\n\r\n // mark current client as selected\r\n const $currentSelection = $newMenuItem.find(`[data-id=\"${client.id}\"]`);\r\n $currentSelection.find('.icon').removeClass('outline');\r\n $currentSelection.find('span').wrapInner('');\r\n });\r\n }\r\n\r\n _hasCleaningPlansEnabled(user?): boolean {\r\n user = user || Session.getUserData('user-info');\r\n\r\n if (!user || user[\"is-cleaningplans-enabled\"] === null) {\r\n const client = Session.getUserData('client');\r\n if (client && client.settings) {\r\n // keine Reinigungspläne anzeigen\r\n return !!client.settings[\"is-cleaningplans-enabled\"];\r\n }\r\n } else {\r\n return user[\"is-cleaningplans-enabled\"];\r\n }\r\n }\r\n\r\n _hasUserFilesSharingEnabled(user?) {\r\n user = user || Session.getUserData('user-info');\r\n const client = Session.getUserData('client');\r\n\r\n if (!client || !client.settings ||\r\n !client.settings[\"is-userfiles-sharing-enabled\"]) {\r\n // Dateiaustausch am Mandanten ist deaktiviert\r\n return false;\r\n }\r\n\r\n if (user && user[\"is-userfiles-sharing-enabled\"] === false) {\r\n // Dateiaustausch am benutzer ist deaktiviert\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n logout() {\r\n Service.logStatisticsEvent('main', 'logout');\r\n // reset preferred client\r\n Session.setPreferredClient(null);\r\n // clear cart on logout\r\n ShoppingCart.clear();\r\n // clear retoure on logout\r\n Retoure.clear();\r\n // logout user\r\n Service.logout();\r\n Session.setLoggedIn(false);\r\n Session.setAuthString(null);\r\n Router.pushState('login');\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n\r\n initResizeLogo() {\r\n $(window).on('resize', (evt: Event) => {\r\n let logo = $('.head.row > .logo.column');\r\n let menu = $('.head.row > .menu-bar');\r\n let width = $(window).width();\r\n logo.removeClass('two three four wide');\r\n menu.removeClass('twelve thirteen fourteen wide');\r\n\r\n if (width <= 1100) {\r\n logo.addClass('two wide');\r\n menu.addClass('fourteen wide');\r\n } else if (width <= 1200) {\r\n logo.addClass('three wide');\r\n menu.addClass('thirteen wide');\r\n } else {\r\n logo.addClass('four wide');\r\n menu.addClass('twelve wide');\r\n }\r\n });\r\n\r\n $(window).trigger('resize');\r\n }\r\n}\r\n\r\nexport default MainView;\r\n","import View from './view';\r\nimport PageSpinner from '../spinner.js';\r\n\r\nclass FileNotFoundView extends View {\r\n protected $parent;\r\n protected currentSubView: View;\r\n\r\n init(subView: string) {\r\n PageSpinner.show();\r\n\r\n this.$parent = $('.main-content');\r\n const self = this;\r\n $('.main-content').load('templates/file_not_found.html', function(data) {\r\n PageSpinner.hide();\r\n $(this).localize();\r\n\r\n if (history.length <= 2) {\r\n self.$parent.find('button.back').addClass('hidden');\r\n } else {\r\n self._bindEvents();\r\n }\r\n self.initResizeLogo();\r\n });\r\n }\r\n\r\n show() {\r\n\r\n }\r\n\r\n _bindEvents() {\r\n this.$parent.find('button.back').on('click', (evt: Event) => {\r\n // check if history available otherwise close window\r\n history.go(-2);\r\n });\r\n }\r\n\r\n _unbindEvents() {\r\n this.$parent.find('button.back').off('click');\r\n }\r\n\r\n dispose() {\r\n this._unbindEvents();\r\n }\r\n\r\n initResizeLogo() {\r\n $(window).on('resize', (evt: Event) => {\r\n let logo = $('.head.row > .logo.column');\r\n let menu = $('.head.row > .menu-bar');\r\n let width = $(window).width();\r\n logo.removeClass('two three four wide');\r\n menu.removeClass('twelve thirteen fourteen wide');\r\n\r\n if (width <= 1100) {\r\n logo.addClass('two wide');\r\n menu.addClass('fourteen wide');\r\n } else if (width <= 1200) {\r\n logo.addClass('three wide');\r\n menu.addClass('thirteen wide');\r\n } else {\r\n logo.addClass('four wide');\r\n menu.addClass('twelve wide');\r\n }\r\n });\r\n\r\n $(window).trigger('resize');\r\n }\r\n}\r\n\r\nexport default FileNotFoundView;\r\n","import Router from '../router';\r\nimport LoginView from './login';\r\nimport RecoverView from './recover';\r\nimport RegisterView from './register';\r\nimport MainView from './main';\r\nimport FileNotFoundView from './file_not_found';\r\nimport View from './view';\r\nimport Session from '../session';\r\n//import PageLoader from '../spinner';\r\nimport * as Utils from '../utils';\r\nimport i18next from 'i18next';\r\n\r\nimport { setNewLanguage } from '../utils';\r\n\r\n/*\r\n * ViewManager dient zur Verwaltung und zur Umschaltung zwischen\r\n * unterschiedlichen Ansichten\r\n */\r\nclass ViewManager {\r\n protected currentView: View;\r\n\r\n constructor() {\r\n // Aktuell aktive Ansicht\r\n this.currentView = null;\r\n this.initStartPage();\r\n this.initRoutes();\r\n this.initLanguage();\r\n this.initFooterScroll();\r\n }\r\n\r\n initStartPage() {\r\n // Bei Direkteinstieg auf eine Ansicht Anmeldung prüfen\r\n if (Router.getState() == '404') {\r\n // just let it access\r\n } else if (!Session.isLoggedIn() && Router.getState() !== 'recover' && Router.getState() !== 'register') {\r\n Router.pushState('login');\r\n } else if ((!Router.getState() || Router.getState() === 'login') && !Utils.getParameterFromUrl('t')) {\r\n Router.pushState('main');\r\n }\r\n }\r\n\r\n initRoutes() {\r\n // Login Route hinzufügen\r\n this.addViewRoute('login', LoginView);\r\n\r\n // Passwort Wiederherstellung\r\n this.addViewRoute('recover', RecoverView);\r\n\r\n // Register Route hinzufügen\r\n this.addViewRoute(['register', 'register/:any'], RegisterView);\r\n\r\n // Hauptansicht Route hinzufügen\r\n this.addViewRoute(['main', 'main/:any'], MainView);\r\n\r\n // 404 Seite\r\n this.addViewRoute(['404', '404/'], FileNotFoundView);\r\n\r\n // Router starten\r\n Router.startWatcher();\r\n }\r\n\r\n addViewRoute(path: string, viewClass: any): void\r\n addViewRoute(path: string[], viewClass: any): void\r\n addViewRoute(path: string | string[], viewClass: any): void {\r\n /*\r\n * Route zu einr View registrieren\r\n */\r\n Router.addRoute(path, (subRoute: string) => {\r\n this.switchView(viewClass, subRoute);\r\n });\r\n }\r\n\r\n switchView(viewClass: typeof View, subRoute: string): void {\r\n /*\r\n * Umschaltung zwischen Ansichten\r\n */\r\n if (this.currentView) {\r\n if (this.currentView.constructor == viewClass) {\r\n this.currentView.show(subRoute);\r\n } else {\r\n this.currentView.dispose();\r\n this.currentView = null;\r\n }\r\n }\r\n\r\n if (!this.currentView) {\r\n this.currentView = new viewClass();\r\n this.currentView.init(subRoute);\r\n }\r\n }\r\n\r\n getCurrentView(): View {\r\n return this.currentView;\r\n }\r\n\r\n initLanguage() {\r\n $('.lang-menu .lang a')\r\n .toggleClass('active', false)\r\n .filter(`.${i18next.language}`)\r\n .toggleClass('active', true);\r\n $('.lang-menu .lang').on('click', 'a', function(evt: Event) {\r\n const lang = $(evt.currentTarget).attr('data-lang');\r\n evt.preventDefault();\r\n setNewLanguage(lang);\r\n });\r\n }\r\n\r\n initFooterScroll() {\r\n if (window.navigator && navigator.userAgent) {\r\n if (navigator.userAgent.indexOf('Trident') >= 0) {\r\n // nur im IE erforderlich (Trident = IE)\r\n $(window).on('scroll', () => {\r\n let $footer = $('.footer');\r\n let height = Math.floor($footer.height());\r\n let top = Math.floor($footer.position().top);\r\n let docHeight = Math.floor($(document).height());\r\n if (top < docHeight - height - 5) {\r\n $footer.offset({ top: docHeight });\r\n }\r\n });\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ViewManager;\r\n","export default function Polyfill() {\r\n /*\r\n * Polyfill für isInteger\r\n */\r\n Number.isInteger = Number.isInteger || function(value) {\r\n return typeof value === \"number\" &&\r\n isFinite(value) &&\r\n Math.floor(value) === value;\r\n };\r\n\r\n /*\r\n * Hilfsmethode Polyfill\r\n */\r\n Array.isArray = Array.isArray || function(arg: any): arg is any[] {\r\n return (!!arg && arg.constructor === Array);\r\n };\r\n\r\n /*\r\n * Polyfill für padEnd\r\n */\r\n if (!String.prototype.padEnd) {\r\n String.prototype.padEnd = function padEnd(targetLength: number, padString?: string) {\r\n targetLength = targetLength >> 0; //floor if number or convert non-number to 0;\r\n padString = String(padString || ' ');\r\n if (this.length > targetLength) {\r\n return String(this);\r\n } else {\r\n targetLength = targetLength - this.length;\r\n if (targetLength > padString.length) {\r\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\r\n }\r\n return String(this) + padString.slice(0, targetLength);\r\n }\r\n };\r\n }\r\n\r\n /*\r\n * Polyfill für padStart\r\n * https://github.com/uxitten/polyfill/blob/master/string.polyfill.js\r\n */\r\n if (!String.prototype.padStart) {\r\n String.prototype.padStart = function padStart(targetLength: number, padString?: string) {\r\n targetLength = targetLength >> 0; //truncate if number, or convert non-number to 0;\r\n padString = String(typeof padString !== 'undefined' ? padString : ' ');\r\n if (this.length >= targetLength) {\r\n return String(this);\r\n } else {\r\n targetLength = targetLength - this.length;\r\n if (targetLength > padString.length) {\r\n padString += padString.repeat(targetLength / padString.length); //append to original to ensure we are longer than needed\r\n }\r\n return padString.slice(0, targetLength) + String(this);\r\n }\r\n };\r\n }\r\n\r\n /*\r\n * Polyfill für startsWith\r\n */\r\n if (!String.prototype.startsWith) {\r\n String.prototype.startsWith = function(searchString, position) {\r\n position = position || 0;\r\n return this.indexOf(searchString, position) === position;\r\n };\r\n }\r\n}\r\n","import i18next from 'i18next';\r\n\r\nexport function TranslateErrors() {\r\n\r\n /* Texte */\r\n let text = [\r\n 'unspecifiedRule',\r\n 'unspecifiedField'\r\n ];\r\n\r\n for (let i = 0; i < text.length; i++) {\r\n let key = text[i];\r\n $.fn.form.settings.text[key] = i18next.t(`semantic-ui.${key}`);\r\n }\r\n\r\n\r\n /* Prompt */\r\n let prompt = [\r\n 'empty',\r\n 'checked',\r\n 'email',\r\n 'url',\r\n 'regExp',\r\n 'integer',\r\n 'decimal',\r\n 'number',\r\n 'is',\r\n 'isExactly',\r\n 'not',\r\n 'notExactly',\r\n 'contain',\r\n 'containExactly',\r\n 'doesntContain',\r\n 'doesntContainExactly',\r\n 'minLength',\r\n 'length',\r\n 'exactLength',\r\n 'maxLength',\r\n 'match',\r\n 'different',\r\n 'minCount',\r\n 'exactCount',\r\n 'maxCount'\r\n ];\r\n\r\n for (let i = 0; i < prompt.length; i++) {\r\n let key = prompt[i];\r\n $.fn.form.settings.prompt[key] = i18next.t(`semantic-ui.${key}`);\r\n }\r\n}","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _typeof from '@babel/runtime/helpers/esm/typeof';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\nfunction addQueryString(url, params) {\n if (params && _typeof(params) === 'object') {\n var queryString = '',\n e = encodeURIComponent; // Must encode data\n\n for (var paramName in params) {\n queryString += '&' + e(paramName) + '=' + e(params[paramName]);\n }\n\n if (!queryString) {\n return url;\n }\n\n url = url + (url.indexOf('?') !== -1 ? '&' : '?') + queryString.slice(1);\n }\n\n return url;\n} // https://gist.github.com/Xeoncross/7663273\n\n\nfunction ajax(url, options, callback, data, cache) {\n if (data && _typeof(data) === 'object') {\n if (!cache) {\n data['_t'] = new Date();\n } // URL encoded form data must be in querystring format\n\n\n data = addQueryString('', data).slice(1);\n }\n\n if (options.queryStringParams) {\n url = addQueryString(url, options.queryStringParams);\n }\n\n try {\n var x;\n\n if (XMLHttpRequest) {\n x = new XMLHttpRequest();\n } else {\n x = new ActiveXObject('MSXML2.XMLHTTP.3.0');\n }\n\n x.open(data ? 'POST' : 'GET', url, 1);\n\n if (!options.crossDomain) {\n x.setRequestHeader('X-Requested-With', 'XMLHttpRequest');\n }\n\n x.withCredentials = !!options.withCredentials;\n\n if (data) {\n x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n }\n\n if (x.overrideMimeType) {\n x.overrideMimeType(\"application/json\");\n }\n\n var h = options.customHeaders;\n h = typeof h === 'function' ? h() : h;\n\n if (h) {\n for (var i in h) {\n x.setRequestHeader(i, h[i]);\n }\n }\n\n x.onreadystatechange = function () {\n x.readyState > 3 && callback && callback(x.responseText, x);\n };\n\n x.send(data);\n } catch (e) {\n console && console.log(e);\n }\n}\n\nfunction getDefaults() {\n return {\n loadPath: '/locales/{{lng}}/{{ns}}.json',\n addPath: '/locales/add/{{lng}}/{{ns}}',\n allowMultiLoading: false,\n parse: JSON.parse,\n parsePayload: function parsePayload(namespace, key, fallbackValue) {\n return _defineProperty({}, key, fallbackValue || '');\n },\n crossDomain: false,\n ajax: ajax\n };\n}\n\nvar Backend =\n/*#__PURE__*/\nfunction () {\n function Backend(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Backend);\n\n this.init(services, options);\n this.type = 'backend';\n }\n\n _createClass(Backend, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n }\n }, {\n key: \"readMulti\",\n value: function readMulti(languages, namespaces, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath(languages, namespaces);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: languages.join('+'),\n ns: namespaces.join('+')\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"read\",\n value: function read(language, namespace, callback) {\n var loadPath = this.options.loadPath;\n\n if (typeof this.options.loadPath === 'function') {\n loadPath = this.options.loadPath([language], [namespace]);\n }\n\n var url = this.services.interpolator.interpolate(loadPath, {\n lng: language,\n ns: namespace\n });\n this.loadUrl(url, callback);\n }\n }, {\n key: \"loadUrl\",\n value: function loadUrl(url, callback) {\n var _this = this;\n\n this.options.ajax(url, this.options, function (data, xhr) {\n if (xhr.status >= 500 && xhr.status < 600) return callback('failed loading ' + url, true\n /* retry */\n );\n if (xhr.status >= 400 && xhr.status < 500) return callback('failed loading ' + url, false\n /* no retry */\n );\n var ret, err;\n\n try {\n ret = _this.options.parse(data, url);\n } catch (e) {\n err = 'failed parsing ' + url + ' to json';\n }\n\n if (err) return callback(err, false);\n callback(null, ret);\n });\n }\n }, {\n key: \"create\",\n value: function create(languages, namespace, key, fallbackValue) {\n var _this2 = this;\n\n if (typeof languages === 'string') languages = [languages];\n var payload = this.options.parsePayload(namespace, key, fallbackValue);\n languages.forEach(function (lng) {\n var url = _this2.services.interpolator.interpolate(_this2.options.addPath, {\n lng: lng,\n ns: namespace\n });\n\n _this2.options.ajax(url, _this2.options, function (data, xhr) {//const statusCode = xhr.status.toString();\n // TODO: if statusCode === 4xx do log\n }, payload);\n });\n }\n }]);\n\n return Backend;\n}();\n\nBackend.type = 'backend';\n\nexport default Backend;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar defaults = {\n tName: 't',\n i18nName: 'i18n',\n handleName: 'localize',\n selectorAttr: 'data-i18n',\n targetAttr: 'i18n-target',\n optionsAttr: 'i18n-options',\n useOptionsAttr: false,\n parseDefaultValueFromContent: true\n};\n\nfunction init(i18next, $) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n\n options = _extends({}, defaults, options);\n\n function parse(ele, key, opts) {\n if (key.length === 0) return;\n\n var attr = 'text';\n\n if (key.indexOf('[') === 0) {\n var parts = key.split(']');\n key = parts[1];\n attr = parts[0].substr(1, parts[0].length - 1);\n }\n\n if (key.indexOf(';') === key.length - 1) {\n key = key.substr(0, key.length - 2);\n }\n\n function extendDefault(o, val) {\n if (!options.parseDefaultValueFromContent) return o;\n return _extends({}, o, { defaultValue: val });\n }\n\n if (attr === 'html') {\n ele.html(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr === 'text') {\n ele.text(i18next.t(key, extendDefault(opts, ele.text())));\n } else if (attr === 'prepend') {\n ele.prepend(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr === 'append') {\n ele.append(i18next.t(key, extendDefault(opts, ele.html())));\n } else if (attr.indexOf('data-') === 0) {\n var dataAttr = attr.substr('data-'.length);\n var translated = i18next.t(key, extendDefault(opts, ele.data(dataAttr)));\n\n // we change into the data cache\n ele.data(dataAttr, translated);\n // we change into the dom\n ele.attr(attr, translated);\n } else {\n ele.attr(attr, i18next.t(key, extendDefault(opts, ele.attr(attr))));\n }\n }\n\n function localize(ele, opts) {\n var key = ele.attr(options.selectorAttr);\n if (!key && typeof key !== 'undefined' && key !== false) key = ele.text() || ele.val();\n if (!key) return;\n\n var target = ele,\n targetSelector = ele.data(options.targetAttr);\n\n if (targetSelector) target = ele.find(targetSelector) || ele;\n\n if (!opts && options.useOptionsAttr === true) opts = ele.data(options.optionsAttr);\n\n opts = opts || {};\n\n if (key.indexOf(';') >= 0) {\n var keys = key.split(';');\n\n $.each(keys, function (m, k) {\n // .trim(): Trim the comma-separated parameters on the data-i18n attribute.\n if (k !== '') parse(target, k.trim(), opts);\n });\n } else {\n parse(target, key, opts);\n }\n\n if (options.useOptionsAttr === true) {\n var clone = {};\n clone = _extends({ clone: clone }, opts);\n\n delete clone.lng;\n ele.data(options.optionsAttr, clone);\n }\n }\n\n function handle(opts) {\n return this.each(function () {\n // localize element itself\n localize($(this), opts);\n\n // localize children\n var elements = $(this).find('[' + options.selectorAttr + ']');\n elements.each(function () {\n localize($(this), opts);\n });\n });\n };\n\n // $.t $.i18n shortcut\n $[options.tName] = i18next.t.bind(i18next);\n $[options.i18nName] = i18next;\n\n // selector function $(mySelector).localize(opts);\n $.fn[options.handleName] = handle;\n}\n\nexports.default = {\n init: init\n};","module.exports = require('./dist/commonjs/index.js').default;\n","//! moment.js locale configuration\n//! locale : German [de]\n//! author : lluchs : https://github.com/lluchs\n//! author: Menelion Elensúle: https://github.com/Oire\n//! author : Mikolaj Dadela : https://github.com/mik01aj\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n function processRelativeTime(number, withoutSuffix, key, isFuture) {\n var format = {\n m: ['eine Minute', 'einer Minute'],\n h: ['eine Stunde', 'einer Stunde'],\n d: ['ein Tag', 'einem Tag'],\n dd: [number + ' Tage', number + ' Tagen'],\n w: ['eine Woche', 'einer Woche'],\n M: ['ein Monat', 'einem Monat'],\n MM: [number + ' Monate', number + ' Monaten'],\n y: ['ein Jahr', 'einem Jahr'],\n yy: [number + ' Jahre', number + ' Jahren'],\n };\n return withoutSuffix ? format[key][0] : format[key][1];\n }\n\n var de = moment.defineLocale('de', {\n months: 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split(\n '_'\n ),\n monthsShort:\n 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),\n monthsParseExact: true,\n weekdays:\n 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split(\n '_'\n ),\n weekdaysShort: 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),\n weekdaysMin: 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD.MM.YYYY',\n LL: 'D. MMMM YYYY',\n LLL: 'D. MMMM YYYY HH:mm',\n LLLL: 'dddd, D. MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[heute um] LT [Uhr]',\n sameElse: 'L',\n nextDay: '[morgen um] LT [Uhr]',\n nextWeek: 'dddd [um] LT [Uhr]',\n lastDay: '[gestern um] LT [Uhr]',\n lastWeek: '[letzten] dddd [um] LT [Uhr]',\n },\n relativeTime: {\n future: 'in %s',\n past: 'vor %s',\n s: 'ein paar Sekunden',\n ss: '%d Sekunden',\n m: processRelativeTime,\n mm: '%d Minuten',\n h: processRelativeTime,\n hh: '%d Stunden',\n d: processRelativeTime,\n dd: processRelativeTime,\n w: processRelativeTime,\n ww: '%d Wochen',\n M: processRelativeTime,\n MM: processRelativeTime,\n y: processRelativeTime,\n yy: processRelativeTime,\n },\n dayOfMonthOrdinalParse: /\\d{1,2}\\./,\n ordinal: '%d.',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return de;\n\n})));\n","//! moment.js locale configuration\n//! locale : French [fr]\n//! author : John Fischer : https://github.com/jfroffice\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var monthsStrictRegex =\n /^(janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsShortStrictRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?)/i,\n monthsRegex =\n /(janv\\.?|févr\\.?|mars|avr\\.?|mai|juin|juil\\.?|août|sept\\.?|oct\\.?|nov\\.?|déc\\.?|janvier|février|mars|avril|mai|juin|juillet|août|septembre|octobre|novembre|décembre)/i,\n monthsParse = [\n /^janv/i,\n /^févr/i,\n /^mars/i,\n /^avr/i,\n /^mai/i,\n /^juin/i,\n /^juil/i,\n /^août/i,\n /^sept/i,\n /^oct/i,\n /^nov/i,\n /^déc/i,\n ];\n\n var fr = moment.defineLocale('fr', {\n months: 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split(\n '_'\n ),\n monthsShort:\n 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split(\n '_'\n ),\n monthsRegex: monthsRegex,\n monthsShortRegex: monthsRegex,\n monthsStrictRegex: monthsStrictRegex,\n monthsShortStrictRegex: monthsShortStrictRegex,\n monthsParse: monthsParse,\n longMonthsParse: monthsParse,\n shortMonthsParse: monthsParse,\n weekdays: 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),\n weekdaysShort: 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),\n weekdaysMin: 'di_lu_ma_me_je_ve_sa'.split('_'),\n weekdaysParseExact: true,\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: '[Aujourd’hui à] LT',\n nextDay: '[Demain à] LT',\n nextWeek: 'dddd [à] LT',\n lastDay: '[Hier à] LT',\n lastWeek: 'dddd [dernier à] LT',\n sameElse: 'L',\n },\n relativeTime: {\n future: 'dans %s',\n past: 'il y a %s',\n s: 'quelques secondes',\n ss: '%d secondes',\n m: 'une minute',\n mm: '%d minutes',\n h: 'une heure',\n hh: '%d heures',\n d: 'un jour',\n dd: '%d jours',\n w: 'une semaine',\n ww: '%d semaines',\n M: 'un mois',\n MM: '%d mois',\n y: 'un an',\n yy: '%d ans',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}(er|)/,\n ordinal: function (number, period) {\n switch (period) {\n // TODO: Return 'e' when day of month > 1. Move this case inside\n // block for masculine words below.\n // See https://github.com/moment/moment/issues/3375\n case 'D':\n return number + (number === 1 ? 'er' : '');\n\n // Words with masculine grammatical gender: mois, trimestre, jour\n default:\n case 'M':\n case 'Q':\n case 'DDD':\n case 'd':\n return number + (number === 1 ? 'er' : 'e');\n\n // Words with feminine grammatical gender: semaine\n case 'w':\n case 'W':\n return number + (number === 1 ? 're' : 'e');\n }\n },\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return fr;\n\n})));\n","//! moment.js locale configuration\n//! locale : Italian [it]\n//! author : Lorenzo : https://github.com/aliem\n//! author: Mattia Larentis: https://github.com/nostalgiaz\n//! author: Marco : https://github.com/Manfre98\n\n;(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined'\n && typeof require === 'function' ? factory(require('../moment')) :\n typeof define === 'function' && define.amd ? define(['../moment'], factory) :\n factory(global.moment)\n}(this, (function (moment) { 'use strict';\n\n //! moment.js locale configuration\n\n var it = moment.defineLocale('it', {\n months: 'gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre'.split(\n '_'\n ),\n monthsShort: 'gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic'.split('_'),\n weekdays: 'domenica_lunedì_martedì_mercoledì_giovedì_venerdì_sabato'.split(\n '_'\n ),\n weekdaysShort: 'dom_lun_mar_mer_gio_ven_sab'.split('_'),\n weekdaysMin: 'do_lu_ma_me_gi_ve_sa'.split('_'),\n longDateFormat: {\n LT: 'HH:mm',\n LTS: 'HH:mm:ss',\n L: 'DD/MM/YYYY',\n LL: 'D MMMM YYYY',\n LLL: 'D MMMM YYYY HH:mm',\n LLLL: 'dddd D MMMM YYYY HH:mm',\n },\n calendar: {\n sameDay: function () {\n return (\n '[Oggi a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextDay: function () {\n return (\n '[Domani a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n nextWeek: function () {\n return (\n 'dddd [a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastDay: function () {\n return (\n '[Ieri a' +\n (this.hours() > 1 ? 'lle ' : this.hours() === 0 ? ' ' : \"ll'\") +\n ']LT'\n );\n },\n lastWeek: function () {\n switch (this.day()) {\n case 0:\n return (\n '[La scorsa] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n default:\n return (\n '[Lo scorso] dddd [a' +\n (this.hours() > 1\n ? 'lle '\n : this.hours() === 0\n ? ' '\n : \"ll'\") +\n ']LT'\n );\n }\n },\n sameElse: 'L',\n },\n relativeTime: {\n future: 'tra %s',\n past: '%s fa',\n s: 'alcuni secondi',\n ss: '%d secondi',\n m: 'un minuto',\n mm: '%d minuti',\n h: \"un'ora\",\n hh: '%d ore',\n d: 'un giorno',\n dd: '%d giorni',\n w: 'una settimana',\n ww: '%d settimane',\n M: 'un mese',\n MM: '%d mesi',\n y: 'un anno',\n yy: '%d anni',\n },\n dayOfMonthOrdinalParse: /\\d{1,2}º/,\n ordinal: '%dº',\n week: {\n dow: 1, // Monday is the first day of the week.\n doy: 4, // The week that contains Jan 4th is the first week of the year.\n },\n });\n\n return it;\n\n})));\n","import Helpers from './helper/handlebars';\r\nimport ViewManager from './view/view_manager';\r\nimport Polyfill from './polyfill';\r\nimport '../less/main.less';\r\nimport { getCurrentLanguage } from './utils';\r\nimport PageSpinner from './spinner';\r\nimport { TranslateErrors } from './errors';\r\nimport i18next from 'i18next';\r\nimport XHR from 'i18next-xhr-backend';\r\nimport j18n from 'jquery-i18next';\r\nimport Moment from 'moment';\r\nimport 'moment/locale/de';\r\nimport 'moment/locale/fr';\r\nimport 'moment/locale/it';\r\n\r\nconst VERSION = '21.1.28';\r\n\r\nPageSpinner.show();\r\n\r\n// Handlebars Helpers registrieren\r\nHelpers();\r\n\r\n// Polyfills erstellen\r\nPolyfill();\r\n\r\n// DOM Ready Event binden\r\n$(document).ready(onReady);\r\n\r\nfunction onReady() {\r\n i18next.use(XHR)\r\n .init({\r\n lng: getCurrentLanguage(),\r\n fallbackLng: 'de',\r\n debug: true,\r\n backend: {\r\n // load from i18next-gitbook repo\r\n loadPath: 'locales/{{lng}}.json',\r\n crossDomain: false\r\n }\r\n }, function(err, t) {\r\n // Sprache definieren\r\n Moment.locale(i18next.language);\r\n\r\n // jquery i18next initialisieren\r\n j18n.init(i18next, $);\r\n\r\n // Fehlermeldungen übersetzen\r\n TranslateErrors();\r\n\r\n PageSpinner.hide();\r\n\r\n // App starten\r\n window.ViewManager = new ViewManager();\r\n\r\n // Title der Seite separat setzen\r\n $(\"title\").text(i18next.t('customer-portal'));\r\n $(\".page-title\").localize();\r\n $(\".footer\").localize();\r\n\r\n // file drop ausserhalb des vorgesehenen bereichs vermeiden\r\n $('body')\r\n .on('dragover', (e: Event) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n })\r\n .on('dragenter', (e: Event) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n })\r\n .on('drop', (e: Event) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n });\r\n}\r\n"],"names":["_utils","_exception","global","_helpersBlockHelperMissing","_helpersEach","_helpersHelperMissing","_helpersIf","_helpersLog","_helpersLookup","_helpersWith","_decoratorsInline","_logger","_createNewLookupObject","helpers","decorators","_helpers","_decorators","_internalProtoAccess","_base","_internalWrapHelper","base","_handlebarsBase","_handlebarsSafeString","_handlebarsException","_handlebarsUtils","_handlebarsRuntime","_handlebarsNoConflict","require$$0","this","require","Session","Moment","Utils.getAuthString","Utils.getCurrentLanguage","_typeof","defineProperty","assertThisInitialized","setPrototypeOf","escape","Handlebars","Service.getRelevantHolidays","Service.logStatisticsEvent","Service.sendOrder","Service.requestPickup","Service.getProductsByOrder","Service.getProductsOrders","Router","Utils.getParameterFromUrl","Service.login","Service.isAcceptingConditionsRequired","Service.setUserConditionsAccepted","ShoppingCart","Retoure","Service.requestPasswordReset","Service.resetPasswordReset","Service.registerClient","Message","Service.checkUsername","Service.downloadDocument","Service.downloadFile","Service.downloadCleaningPlan","Service.getLastXDocuments","EmptyPreviewItem","Service.getLastXProducts","Service.getLastXCleaningPlans","Service.getLastXLabReports","Service.getProductsInfos","Service.getProductInfoUrl","Service.getLastXUserFiles","Service.getDatasheetUrl","docsPerPage","Service.getDocTypes","Service.getDocuments","Service.getCleaningPlanTypes","Service.getCleaningPlans","Service.getLabReports","Service.getProducts","Service.getProductsDistinct","Service.getProductsByArticle","Service.sendMessage","Service.updateUserInfo","Service.updateUserLogin","Service.updateClientInfo","Service.getUserFiles","Service.getUserFileVersion","Service.deleteUserFile","uploadFile","Service.uploadFile","Service.getClientData","Service.getAssignedSupporter","Service.getSupporterThumbUrl","Service.getAllowedClients","Service.logout","XHR","j18n"],"mappings":"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"}